From 579ef0f02a79f555b11c9b13af12ff3ca4d21bd4 Mon Sep 17 00:00:00 2001
From: Sergey Poznyakoff <gray@gnu.org.ua>
Date: Sat, 5 Sep 2009 23:22:35 +0300
Subject: [PATCH] Incorporate 1.0.PreAlpha30.0

---
 ChangeLog                      |   30 +-
 chkmts/smcert.pem              |  108 +-
 chkmts/smkey.pem               |   50 +-
 configure.ac                   |    6 +-
 doc/README.dvi                 |  Bin 290916 -> 0 bytes
 doc/README.html                | 8928 -----------------------------------
 doc/README.pdf                 |  Bin 484255 -> 0 bytes
 doc/README.ps                  |10229 ----------------------------------------
 doc/README.tex                 |   97 +-
 doc/README.txt                 | 4723 -------------------
 include/sm/map.h               |    9 +-
 include/sm/mapc.h              |    4 +-
 include/sm/mapcnf.h            |   11 +-
 include/sm/mapconf.h           |    6 +-
 include/sm/maps.h              |    3 +-
 include/sm/pmfapi.h            |    8 +-
 include/sm/sm-conf-byte.h      |   30 +-
 include/sm/sm-conf-time.h      |   24 +-
 include/sm/sscnf.h             |    3 +-
 include/sm/sscnfdef.h          |   10 +-
 include/sm/tls.h               |   17 +-
 include/stamp-h.in             |    1 -
 libcdb/cdbbf.c                 |    8 +-
 libconf/sm-conf-prtcnf.c       |   23 +-
 libdns/dnstsk.c                |    8 +-
 libmta/Makefile.am             |   12 +-
 libmta/badcert.pem             |   54 +
 libmta/bf.c                    |    8 +-
 libmta/bhtable.c               |   10 +-
 libmta/fclose.c                |    4 +-
 libmta/log.c                   |   34 +-
 libmta/smcert.c                |   46 +
 libmta/smtls.c                 |  157 +-
 libmta/t-cert-0.sh             |   38 +
 libmta/t-cert.c                |  150 +
 libmta/vfprintf.c              |    9 +-
 libpmilter/pmilter_init.c      |   35 +-
 libsmmap/Makefile.am           |   27 +-
 libsmmap/lookupaddr.c          |   46 +-
 libsmmap/mapcnfopen.c          |  134 +
 libsmmap/mapconffind.c         |   44 +
 libsmmap/mapconfopen.c         |   95 +-
 libsmmap/mapopt.c              |   41 +-
 libsmmap/sequence.c            |  130 +-
 libsmmap/sockmapimpl.c         |    5 +-
 libsmmap/t-conf-0.c            |  103 +-
 libsmmap/t-conf-0.sh           |   22 +-
 libsmmap/t-map-reopen-0.c      |   33 +-
 libsmmap/t-map-reopen-1.c      |  222 +
 libsmmap/t-mapaddr-0.c         |   23 +-
 libsmmap/t-mapdom-0.c          |    8 +-
 libsmmap/t-mapip-0.c           |    8 +-
 libsmmap/t-seq-1.c             |  330 +-
 libsmmap/t-seq-common.c        |  153 +
 libsmmap/t-sockmap-0.c         |   27 +-
 libsmmap/t-sockmap-0.sh        |   42 +-
 libsmmap/t-sockmapsrv.pl       |   29 +-
 mcp/inetd.c                    |   10 +-
 misc/Makefile.am               |   12 +-
 misc/metaconf.c                |  351 ++
 misc/smconf.c                  |   22 +-
 smar/smar_stop.c               |    2 +-
 smtpc/smclt.c                  |   53 +-
 smtps/smtpsrv.c                |  147 +-
 statethreads/examples/smtpc2.c |   19 +-
 statethreads/stamp-h.in        |    1 -
 66 files changed, 2198 insertions(+), 24834 deletions(-)
 delete mode 100644 doc/README.dvi
 delete mode 100644 doc/README.html
 delete mode 100644 doc/README.pdf
 delete mode 100644 doc/README.ps
 delete mode 100644 doc/README.txt
 create mode 100644 libmta/badcert.pem
 create mode 100644 libmta/smcert.c
 create mode 100755 libmta/t-cert-0.sh
 create mode 100644 libmta/t-cert.c
 create mode 100644 libsmmap/mapcnfopen.c
 create mode 100644 libsmmap/mapconffind.c
 create mode 100644 libsmmap/t-map-reopen-1.c
 create mode 100644 libsmmap/t-seq-common.c
 create mode 100644 misc/metaconf.c

diff --git a/ChangeLog b/ChangeLog
index ce06baa..5d7a2a8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,32 @@
-$Id: ChangeLog,v 1.338 2009/05/31 15:59:11 ca Exp $
+$Id: ChangeLog,v 1.343 2009/08/15 19:52:49 ca Exp $
+
+2009-08-15
+Log server address in SMTP client.  Based on patch from Sergey
+Poznyakoff.
+
+2009-08-06
+If a certificate contains a CN that cannot properly extracted, then
+use a descriptive error text instead. This deals with attacks on
+TLS where a CA may sign a certificate request with
+CN=good.domain\0bad.domain which was previously interpreted as
+CN=good.domain.  Patch inspired by fix for fetchmail.
+
+2009-07-05
+Add new return status for sequence map: NOMORE which can be used
+to instruct the caller to stop further lookups of variations of the
+key return NOTFOUND.  Patch from Sergey Poznyakoff.
+
+2009-06-23
+New smtps configuration option "greeting" to set initial ESMTP
+server greeting. Based on patch from Sergey Poznyakoff.
+
+2009-06-07
+Allow a pmilter to set libevthr configuration parameters
+minthr -- minimum number of threads
+maxthr -- maximum number of threads
+maxfd -- maximum number of file descriptors
+via pmilter_S. Note: this is a temporary solution and might be replaced
+later by some functions.  Based on patch from Sergey Poznyakoff.
 
 2009-05-31
 Enhance compatibility of milter-regex-parse.y with different yacc(1)
diff --git a/chkmts/smcert.pem b/chkmts/smcert.pem
index 07d73ae..a532dad 100644
--- a/chkmts/smcert.pem
+++ b/chkmts/smcert.pem
@@ -1,35 +1,35 @@
 Certificate:
     Data:
         Version: 3 (0x2)
-        Serial Number: 1 (0x1)
+        Serial Number: 0 (0x0)
         Signature Algorithm: md5WithRSAEncryption
         Issuer: C=US, ST=California, L=Berkeley, O=Example Org, OU=MTA, CN=CA/emailAddress=CA@example.org
         Validity
-            Not Before: Jul 12 20:18:32 2008 GMT
-            Not After : Jul 12 20:18:32 2009 GMT
+            Not Before: Aug  6 22:30:54 2009 GMT
+            Not After : Aug  6 22:30:54 2010 GMT
         Subject: C=US, ST=California, L=Berkeley, O=Example Org, OU=MTA, CN=host.example.org/emailAddress=cert@example.org
         Subject Public Key Info:
             Public Key Algorithm: rsaEncryption
             RSA Public Key: (2048 bit)
                 Modulus (2048 bit):
-                    00:bc:cf:6c:5b:be:50:6b:ad:b7:d2:6a:48:b0:a2:
-                    65:49:a3:3d:46:bd:9e:2c:69:f6:4a:54:77:63:07:
-                    e2:b2:94:6a:84:e6:50:34:f2:d7:ef:f3:94:3c:bf:
-                    ac:72:29:89:c6:9b:9e:1b:9a:65:fc:5f:b8:78:86:
-                    1b:5f:4a:b3:8f:49:27:08:02:a1:3b:4a:77:cb:13:
-                    13:fb:e4:f2:db:f2:4e:df:8e:eb:c9:1c:b4:54:b8:
-                    92:24:35:2f:bd:74:45:14:c1:11:aa:39:af:e8:ac:
-                    8a:87:32:9e:b3:a8:df:c7:46:1a:1c:2d:dc:14:5c:
-                    f2:9a:33:d6:78:8a:63:b3:37:d8:0b:7f:76:f2:66:
-                    f0:20:9f:f5:28:03:bd:ce:97:c8:8b:ab:ad:20:bc:
-                    02:96:e5:c8:21:eb:b8:c3:52:30:8f:dc:bb:f5:40:
-                    0a:d4:38:87:d4:38:a7:8d:a9:6a:a6:01:94:00:cb:
-                    68:bc:6e:b1:de:6a:1d:d6:7c:1d:2a:f6:07:b3:9b:
-                    a9:5a:57:3f:e3:90:0b:36:2e:58:db:1e:6e:e5:c4:
-                    90:7d:32:9d:4d:eb:d4:c7:05:97:1c:91:fd:88:53:
-                    0e:96:16:d6:13:32:82:63:43:7a:09:92:18:9d:e1:
-                    df:94:8c:4c:05:0a:1e:e2:dc:ee:ad:b3:eb:fa:dd:
-                    c2:77
+                    00:be:b6:30:18:6a:e4:ab:8a:e9:15:a3:87:59:67:
+                    2e:35:ec:14:3c:ef:17:61:bf:67:c5:e2:d0:df:48:
+                    f5:b4:e7:27:aa:37:95:34:e2:b1:44:59:f6:d6:0c:
+                    e4:37:53:2a:0f:65:7a:cf:72:df:12:9f:ec:7e:24:
+                    63:1c:06:50:b2:4a:97:9f:e9:ba:4a:b2:0b:2e:6e:
+                    2d:2b:28:ce:a7:84:24:40:e4:c6:0b:ea:6f:90:53:
+                    01:25:be:c2:91:44:57:12:6f:51:29:7a:ec:0e:20:
+                    83:17:ba:9d:46:76:8f:97:91:f0:4a:c8:e6:1d:2f:
+                    62:84:a5:dc:3a:b6:00:c4:d7:1c:12:a6:a4:f6:17:
+                    4d:fd:14:4b:3f:66:2b:8f:0e:e0:c2:99:fd:71:87:
+                    e7:b5:44:c9:40:38:14:fd:f1:fd:1d:29:8d:ee:bc:
+                    c8:47:53:dd:6e:de:bb:b4:ca:ae:3a:2a:88:38:4c:
+                    59:ec:3b:c1:58:4d:d1:5f:b3:4f:01:ae:3c:4c:80:
+                    29:2c:80:bc:b7:24:26:65:35:0f:f9:a3:fe:95:53:
+                    88:45:0a:b3:88:c5:85:1a:42:c9:ec:57:25:09:3c:
+                    8d:1d:fe:df:47:d7:29:94:17:ae:12:cc:77:8c:64:
+                    fd:ee:6c:23:61:a7:c1:b1:a6:07:9c:cd:fd:95:11:
+                    43:73
                 Exponent: 65537 (0x10001)
         X509v3 extensions:
             X509v3 Basic Constraints: 
@@ -37,53 +37,53 @@ Certificate:
             Netscape Comment: 
                 Example Org Certificate for STARTTLS
             X509v3 Subject Key Identifier: 
-                50:95:90:C1:94:7E:4F:A7:41:F6:60:BE:07:8C:5C:AA:5B:26:A1:91
+                DD:3C:63:84:B1:81:79:58:80:8F:B1:73:DD:61:A4:80:F2:B7:2D:5B
             X509v3 Authority Key Identifier: 
                 keyid:EE:60:9E:7B:DF:DF:44:9E:D6:23:2C:79:0C:EB:B0:07:6D:72:69:63
                 DirName:/C=US/ST=California/L=Berkeley/O=Example Org/OU=MTA/CN=CA/emailAddress=CA@example.org
                 serial:9C:C5:90:4C:15:AD:98:AA
 
     Signature Algorithm: md5WithRSAEncryption
-        66:20:f7:02:7f:5f:b9:89:61:8b:72:e9:b5:53:fc:f6:50:19:
-        41:10:23:3b:9c:3d:f2:ac:3c:36:4e:e7:a3:08:e4:6f:7a:52:
-        77:f2:87:a7:7b:8b:16:f8:4b:1a:2e:3d:bf:d6:0c:ca:7b:94:
-        b1:a6:ed:d2:c2:25:01:16:0b:d8:83:fa:86:ed:fd:c4:19:c4:
-        4d:62:70:de:39:c1:11:b7:4a:c4:c0:1e:16:c9:8c:73:3d:ed:
-        9f:65:b7:1d:e1:58:67:72:1c:92:4e:62:d2:c0:23:9c:fb:76:
-        d9:0b:a7:31:9d:3c:3c:84:c1:5b:c5:01:f4:39:5d:43:d2:6d:
-        ef:29:09:0b:c5:43:4c:86:a1:84:63:e6:14:37:b7:09:1b:8a:
-        01:8b:5e:c4:d6:21:69:c0:dc:c0:fe:bf:00:e3:6a:df:e9:ea:
-        8c:32:7f:0b:53:83:d6:02:84:f0:51:a1:2d:8c:ca:25:cc:5a:
-        5d:9a:ab:13:43:1e:e4:53:d2:0d:58:56:f6:9a:fa:0c:cd:a6:
-        57:f6:d8:7d:03:85:49:ee:e3:8d:f8:ab:27:d0:57:80:22:aa:
-        00:f6:88:6a:f6:56:b2:17:68:2a:b2:e3:e0:ad:17:40:bd:75:
-        de:40:c0:08:a5:25:3c:d6:40:f0:6a:ce:8a:5d:b5:2c:a5:90:
-        8a:33:75:cf
+        4e:77:52:4f:dc:34:08:59:19:e4:17:84:80:cb:aa:a2:6c:3d:
+        dc:ec:ac:49:0b:3f:b0:d8:fd:c6:40:52:73:a9:c9:2a:9e:93:
+        bb:d1:24:9f:6d:12:26:22:d1:41:79:0f:3a:9c:e5:b1:d1:ad:
+        f3:ac:dc:55:29:f2:e4:3b:ce:bc:47:ac:91:ed:f0:ff:3a:93:
+        58:ba:eb:20:29:69:62:b3:9e:20:d4:0a:1f:45:0d:e5:1c:c7:
+        90:3d:ba:2e:f0:cb:b2:71:7a:8b:79:0d:a9:01:cb:70:a1:9b:
+        41:85:9a:d9:be:7b:5f:70:82:ab:bc:f9:74:76:7c:60:d3:91:
+        39:23:3a:a5:c3:94:d6:a5:42:8d:d3:70:f7:54:ef:01:76:01:
+        89:d3:9a:af:36:99:26:41:44:a2:cc:af:dd:b1:3d:02:ca:c6:
+        43:b4:5c:45:ed:97:48:46:63:56:5a:67:c1:0f:42:5e:06:ba:
+        ef:b7:7b:9f:4a:d8:ec:20:32:8f:b6:fd:90:4a:43:54:d5:fa:
+        d8:29:f2:94:eb:30:4a:44:f9:6c:71:be:8b:fe:23:ba:3f:7a:
+        dc:a4:25:90:64:1c:3b:48:00:14:15:b2:f9:44:f8:93:1f:a0:
+        ca:00:98:95:43:36:af:bb:04:79:0c:26:dd:e4:ad:4a:90:7f:
+        48:22:cf:e7
 -----BEGIN CERTIFICATE-----
-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
+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
-SIb3DQEJARYOQ0FAZXhhbXBsZS5vcmcwHhcNMDgwNzEyMjAxODMyWhcNMDkwNzEy
-MjAxODMyWjCBlTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExETAP
+SIb3DQEJARYOQ0FAZXhhbXBsZS5vcmcwHhcNMDkwODA2MjIzMDU0WhcNMTAwODA2
+MjIzMDU0WjCBlTELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExETAP
 BgNVBAcTCEJlcmtlbGV5MRQwEgYDVQQKEwtFeGFtcGxlIE9yZzEMMAoGA1UECxMD
 TVRBMRkwFwYDVQQDExBob3N0LmV4YW1wbGUub3JnMR8wHQYJKoZIhvcNAQkBFhBj
 ZXJ0QGV4YW1wbGUub3JnMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
-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
+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
-A1UdDgQWBBRQlZDBlH5Pp0H2YL4HjFyqWyahkTCBugYDVR0jBIGyMIGvgBTuYJ57
+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
-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
-8GrOil21LKWQijN1zw==
+Q0FAZXhhbXBsZS5vcmeCCQCcxZBMFa2YqjANBgkqhkiG9w0BAQQFAAOCAQEATndS
+T9w0CFkZ5BeEgMuqomw93OysSQs/sNj9xkBSc6nJKp6Tu9Ekn20SJiLRQXkPOpzl
+sdGt86zcVSny5DvOvEeske3w/zqTWLrrIClpYrOeINQKH0UN5RzHkD26LvDLsnF6
+i3kNqQHLcKGbQYWa2b57X3CCq7z5dHZ8YNOROSM6pcOU1qVCjdNw91TvAXYBidOa
+rzaZJkFEosyv3bE9AsrGQ7RcRe2XSEZjVlpnwQ9CXga677d7n0rY7CAyj7b9kEpD
+VNX62CnylOswSkT5bHG+i/4juj963KQlkGQcO0gAFBWy+UT4kx+gygCYlUM2r7sE
+eQwm3eStSpB/SCLP5w==
 -----END CERTIFICATE-----
diff --git a/chkmts/smkey.pem b/chkmts/smkey.pem
index af471fb..900736f 100644
--- a/chkmts/smkey.pem
+++ b/chkmts/smkey.pem
@@ -1,27 +1,27 @@
 -----BEGIN RSA PRIVATE KEY-----
-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
+MIIEogIBAAKCAQEAvrYwGGrkq4rpFaOHWWcuNewUPO8XYb9nxeLQ30j1tOcnqjeV
+NOKxRFn21gzkN1MqD2V6z3LfEp/sfiRjHAZQskqXn+m6SrILLm4tKyjOp4QkQOTG
+C+pvkFMBJb7CkURXEm9RKXrsDiCDF7qdRnaPl5HwSsjmHS9ihKXcOrYAxNccEqak
+9hdN/RRLP2Yrjw7gwpn9cYfntUTJQDgU/fH9HSmN7rzIR1Pdbt67tMquOiqIOExZ
+7DvBWE3RX7NPAa48TIApLIC8tyQmZTUP+aP+lVOIRQqziMWFGkLJ7FclCTyNHf7f
+R9cplBeuEsx3jGT97mwjYafBsaYHnM39lRFDcwIDAQABAoIBAB7wX40WilJqDrY7
++VE/s/d7fS0FfL2W17b6vPf8ViAq//xVWBdkT23PSoQfQ0bWbxRgWjQdZqMW3r74
+GDwLqjvCbia7PEWx7K5zoVBHJn92qIr+kkKMndzEGoONFvOKKrYK6RfZoUIJdDr9
+Q1aTFWh5fIolXW+OqGTso3XC4Q0NsNsxvuRI8h6RuC+mli57b2lcsXBGSWKGzGu7
+H2wy/j6mpv6i0g9W1nEaFq1QMYduOoLlJI0jO5XS0bHqhkoKsy+m/X5FOnajG3U8
+5BIuu+6RA7Nv/LF6IYrHN5chsGLiiFAzm9dYo5lbtrRdEBYX1jPxuAnzxQf99+2U
+m3UI2UECgYEA7L9mjQ8fE0O11miChnAmzDOh4Zpi42A8q1ALtXXwZxlP1qanPDek
+yI9Pm8bP+vHtqBBjfEVg5DVvxmMOjuSPAA3gH9Ex40jlDe3doeqK5+3tcES/WmUb
+8g/+aHMUC2sGUPLA45eMf91ojBD8gkMa2aU0f7pzuRS5FumYfZnIZG0CgYEAzjhp
+pn4vW94Rb5sDGGG1eGp2ygwflVwnilNjAMaNLle3rYXfmFZbJmdZAIvEaFwViHvn
+JUD2AbWv0wLmC7Sx4/cbxWz2zTO/JDVDLDQDwJ10rcHLcP1brkZZIJk1DMtooETE
+VrrHOJgSuA+XOA0xMIXlfBOPXOSCnNJ/cX6+m18CgYBdeaTwBQxr+swM/+6pThbD
+gY9lGCP7SsApk81LtGlbC69uPRbCu+WgGpWAGBt+JY+EUBQ3uNzsvfyIBAx3dt7P
+UqsvZNWhu+JUgZqEl6qIsHSTY1F6S3mhNZdpfiZn67XuuCpYsjmTMsRYqUxJ0l0D
+misEU4Xlib0awtimntV0cQKBgEFZXyGDmz5hgOT9Gl3/mKIwGrSsYtXR/jW3dwgn
+41VsNqimY9TCiOACoBGsOPFZPPmjSfxkOZERIkacBIpxGG5FQGevwAYG/+tZdY/s
+a8P+IZtubinAH+16HYRXCJilXOJs6EsTpU4p4sSxLBp3E79sruxCxouJXlqT2g79
+OynBAoGAbc1xuhjs9xAXtFHW5oYhPRnNEoqXnq9CXQzYybpOZkCAfz2RQ4xpIt+h
+N0lfci+84iO3R9EpbYnx+o9UxODu35oGJ3vYcLna2hhmLgvr7F/PnLummKyemMZc
+0kWFZB9h3BWDZZ+yCz8fEMSRkhyGrh3Iov/Cst0Q+D9Kz4IybcQ=
 -----END RSA PRIVATE KEY-----
diff --git a/configure.ac b/configure.ac
index 1a0f67d..cb9231b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,10 +1,10 @@
 dnl Process this file with autoconf to produce a configure script
-# $Id: configure.ac,v 1.238 2009/06/02 14:05:43 ca Exp $
+# $Id: configure.ac,v 1.240 2009/08/10 05:18:42 ca Exp $
 # @start1
 define(mta_MAJOR, [1])
 define(mta_MINOR, [0])
 define(mta_TYPE, [PreAlpha])
-define(mta_TYPEVERSION, [29])
+define(mta_TYPEVERSION, [30])
 define(mta_LEVEL, [0])
 define(mta_TYPE_N, 
 ifelse(
@@ -19,7 +19,7 @@ AC_INIT(mta,
 [bugs (at) MeTA1.org])
 AC_PREREQ(2.52)
 AC_COPYRIGHT([Copyright (c) 2007-2009 Claus Assmann])
-AC_REVISION([$Id: configure.ac,v 1.238 2009/06/02 14:05:43 ca Exp $])
+AC_REVISION([$Id: configure.ac,v 1.240 2009/08/10 05:18:42 ca Exp $])
 AC_CONFIG_SRCDIR(smtps/smtps.c)
 AC_CONFIG_AUX_DIR(build)
 AC_CANONICAL_SYSTEM
diff --git a/doc/README.dvi b/doc/README.dvi
deleted file mode 100644
index 8da450a91621f4b3455819a31410cdf840c1cf0a..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 290916
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
McKV|=U(rARFORVE3;+NC

diff --git a/doc/README.html b/doc/README.html
deleted file mode 100644
index bb44fe0..0000000
--- a/doc/README.html
+++ /dev/null
@@ -1,8928 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.70)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>MeTA1 README</TITLE>
-<META NAME="description" CONTENT="MeTA1 README">
-<META NAME="keywords" CONTENT="README">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="README.css">
-
-</HEAD>
-
-<BODY >
-
-<P>
- 
-<P>
-
-<H1 ALIGN="CENTER">MeTA1 README</H1><DIV>
-
-<P ALIGN="CENTER"><I>Claus A&#223;mann</I></P>
-</DIV>
-
-<P>
-<BR>
-
-<H2><A NAME="SECTION00100000000000000000">
-Contents</A>
-</H2>
-<!--Table of Contents-->
-
-<UL>
-<LI><A NAME="tex2html166"
-  HREF="README.html#SECTION00200000000000000000">Introduction to MeTA1</A>
-<UL>
-<LI><A NAME="tex2html167"
-  HREF="README.html#SECTION00210000000000000000">MeTA1 is a Message Transfer Agent</A>
-<UL>
-<LI><A NAME="tex2html168"
-  HREF="README.html#SECTION00211000000000000000">Main Components of MeTA1</A>
-</UL>
-<LI><A NAME="tex2html169"
-  HREF="README.html#SECTION00220000000000000000">Documentation</A>
-<UL>
-<LI><A NAME="tex2html170"
-  HREF="README.html#SECTION00221000000000000000">Typographical Conventions</A>
-</UL>
-<LI><A NAME="tex2html171"
-  HREF="README.html#SECTION00230000000000000000">Version</A>
-<LI><A NAME="tex2html172"
-  HREF="README.html#SECTION00240000000000000000">Current State</A>
-<UL>
-<LI><A NAME="tex2html173"
-  HREF="README.html#SECTION00241000000000000000">Providing Feedback</A>
-</UL>
-<LI><A NAME="tex2html174"
-  HREF="README.html#SECTION00250000000000000000">For the Impatient</A>
-</UL><BR>
-<LI><A NAME="tex2html175"
-  HREF="README.html#SECTION00300000000000000000">Building, Testing, and Installing MeTA1</A>
-<UL>
-<LI><A NAME="tex2html176"
-  HREF="README.html#SECTION00310000000000000000">Verifying the Source Code Distribution</A>
-<LI><A NAME="tex2html177"
-  HREF="README.html#SECTION00320000000000000000">Building MeTA1</A>
-<UL>
-<LI><A NAME="tex2html178"
-  HREF="README.html#SECTION00321000000000000000">Compile-Time Configuration Options</A>
-</UL>
-<LI><A NAME="tex2html179"
-  HREF="README.html#SECTION00330000000000000000">Test Programs</A>
-<UL>
-<LI><A NAME="tex2html180"
-  HREF="README.html#SECTION00331000000000000000">Environment Variables used by Test Programs</A>
-<LI><A NAME="tex2html181"
-  HREF="README.html#SECTION00332000000000000000">Known Test Program Problems</A>
-</UL>
-<LI><A NAME="tex2html182"
-  HREF="README.html#SECTION00340000000000000000">Installing MeTA1</A>
-<UL>
-<LI><A NAME="tex2html183"
-  HREF="README.html#SECTION00341000000000000000">Directories, Files, and Permissions</A>
-<LI><A NAME="tex2html184"
-  HREF="README.html#SECTION00342000000000000000">Upgrading from earlier MeTA1 Versions</A>
-</UL>
-</UL><BR>
-<LI><A NAME="tex2html185"
-  HREF="README.html#SECTION00400000000000000000">Run-Time Configuration of MeTA1</A>
-<UL>
-<LI><A NAME="tex2html186"
-  HREF="README.html#SECTION00410000000000000000">Overview</A>
-<LI><A NAME="tex2html187"
-  HREF="README.html#SECTION00420000000000000000">Configuration File Syntax</A>
-<UL>
-<LI><A NAME="tex2html188"
-  HREF="README.html#SECTION00421000000000000000">Configuration File Values</A>
-</UL>
-<LI><A NAME="tex2html189"
-  HREF="README.html#SECTION00430000000000000000">Example Configuration File</A>
-<LI><A NAME="tex2html190"
-  HREF="README.html#SECTION00440000000000000000">Common Global Configuration</A>
-<LI><A NAME="tex2html191"
-  HREF="README.html#SECTION00450000000000000000">Common Configuration Options</A>
-<LI><A NAME="tex2html192"
-  HREF="README.html#SECTION00460000000000000000">Pathnames for Files, Directories, and Maps</A>
-<LI><A NAME="tex2html193"
-  HREF="README.html#SECTION00470000000000000000">Configuration for MCP</A>
-<LI><A NAME="tex2html194"
-  HREF="README.html#SECTION00480000000000000000">Configuration for QMGR</A>
-<UL>
-<LI><A NAME="tex2html195"
-  HREF="README.html#SECTION00481000000000000000">Configuration Map for QMGR</A>
-</UL>
-<LI><A NAME="tex2html196"
-  HREF="README.html#SECTION00490000000000000000">Configuration for SMAR</A>
-<UL>
-<LI><A NAME="tex2html197"
-  HREF="README.html#SECTION00491000000000000000">Declaring Maps for SMAR</A>
-<LI><A NAME="tex2html198"
-  HREF="README.html#SECTION00492000000000000000">Configuration Options for SMAR</A>
-<LI><A NAME="tex2html199"
-  HREF="README.html#SECTION00493000000000000000">Configuration Maps for SMAR</A>
-<LI><A NAME="tex2html200"
-  HREF="README.html#SECTION00494000000000000000">Greylisting</A>
-</UL>
-<LI><A NAME="tex2html201"
-  HREF="README.html#SECTION004100000000000000000">Configuration for SMTP Server</A>
-<UL>
-<LI><A NAME="tex2html202"
-  HREF="README.html#SECTION004101000000000000000">SMTP Server Session Configuration</A>
-<LI><A NAME="tex2html203"
-  HREF="README.html#SECTION004102000000000000000">Multiple SMTP Servers with different Configurations</A>
-<LI><A NAME="tex2html204"
-  HREF="README.html#SECTION004103000000000000000">Protecting Recipients</A>
-</UL>
-<LI><A NAME="tex2html205"
-  HREF="README.html#SECTION004110000000000000000">Configuration for SMTP Client</A>
-<UL>
-<LI><A NAME="tex2html206"
-  HREF="README.html#SECTION004111000000000000000">SMTP Client Session/Recipient Configuration</A>
-</UL>
-<LI><A NAME="tex2html207"
-  HREF="README.html#SECTION004120000000000000000">Lookup Orders</A>
-<UL>
-<LI><A NAME="tex2html208"
-  HREF="README.html#SECTION004121000000000000000">Lookup Orders in Maps</A>
-<LI><A NAME="tex2html209"
-  HREF="README.html#SECTION004122000000000000000">Lookup Orders for Anti-Spam Measures</A>
-<LI><A NAME="tex2html210"
-  HREF="README.html#SECTION004123000000000000000">Macro Replacements in RHS</A>
-</UL>
-<LI><A NAME="tex2html211"
-  HREF="README.html#SECTION004130000000000000000">STARTTLS Restrictions</A>
-<LI><A NAME="tex2html212"
-  HREF="README.html#SECTION004140000000000000000">VERP</A>
-</UL><BR>
-<LI><A NAME="tex2html213"
-  HREF="README.html#SECTION00500000000000000000">Running MeTA1</A>
-<UL>
-<LI><A NAME="tex2html214"
-  HREF="README.html#SECTION00510000000000000000">Starting MeTA1</A>
-<LI><A NAME="tex2html215"
-  HREF="README.html#SECTION00520000000000000000">Using MeTA1 only for Outgoing Mail</A>
-<LI><A NAME="tex2html216"
-  HREF="README.html#SECTION00530000000000000000">Using MeTA1 for Incoming Mail</A>
-<UL>
-<LI><A NAME="tex2html217"
-  HREF="README.html#SECTION00531000000000000000">Local Delivery and Specifying Local Domains</A>
-<LI><A NAME="tex2html218"
-  HREF="README.html#SECTION00532000000000000000">Specifying Valid Local Addresses</A>
-</UL>
-<LI><A NAME="tex2html219"
-  HREF="README.html#SECTION00540000000000000000">Using MeTA1 as Gateway</A>
-<LI><A NAME="tex2html220"
-  HREF="README.html#SECTION00550000000000000000">Using MeTA1 as Backup MX Server</A>
-<UL>
-<LI><A NAME="tex2html221"
-  HREF="README.html#SECTION00551000000000000000">Note about Backup MX Servers</A>
-</UL>
-<LI><A NAME="tex2html222"
-  HREF="README.html#SECTION00560000000000000000">Miscellaneous Programs</A>
-<UL>
-<LI><A NAME="tex2html223"
-  HREF="README.html#SECTION00561000000000000000">Do not run programs as root User</A>
-<LI><A NAME="tex2html224"
-  HREF="README.html#SECTION00562000000000000000">Displaying Content of Mail Queues</A>
-<LI><A NAME="tex2html225"
-  HREF="README.html#SECTION00563000000000000000">Interacting with QMGR</A>
-</UL>
-<LI><A NAME="tex2html226"
-  HREF="README.html#SECTION00570000000000000000">Reloading Maps</A>
-<LI><A NAME="tex2html227"
-  HREF="README.html#SECTION00580000000000000000">Logging</A>
-<UL>
-<LI><A NAME="tex2html228"
-  HREF="README.html#SECTION00581000000000000000">Logfile Rotation</A>
-</UL>
-<LI><A NAME="tex2html229"
-  HREF="README.html#SECTION00590000000000000000">Regular Checks</A>
-<LI><A NAME="tex2html230"
-  HREF="README.html#SECTION005100000000000000000">Dealing with Errors</A>
-<UL>
-<LI><A NAME="tex2html231"
-  HREF="README.html#SECTION005101000000000000000">Resource Problems</A>
-<LI><A NAME="tex2html232"
-  HREF="README.html#SECTION005102000000000000000">Database Problems</A>
-<LI><A NAME="tex2html233"
-  HREF="README.html#SECTION005103000000000000000">Writing Core Dumps</A>
-</UL>
-<LI><A NAME="tex2html234"
-  HREF="README.html#SECTION005110000000000000000">Replacements for Features available in other MTAs</A>
-</UL><BR>
-<LI><A NAME="tex2html235"
-  HREF="README.html#SECTION00600000000000000000">Policy Milter</A>
-<UL>
-<LI><A NAME="tex2html236"
-  HREF="README.html#SECTION00610000000000000000">Policy Milter Overview</A>
-<LI><A NAME="tex2html237"
-  HREF="README.html#SECTION00620000000000000000">Native Policy Milter API</A>
-<UL>
-<LI><A NAME="tex2html238"
-  HREF="README.html#SECTION00621000000000000000">Data Structures</A>
-<LI><A NAME="tex2html239"
-  HREF="README.html#SECTION00622000000000000000">Start and Stop</A>
-<LI><A NAME="tex2html240"
-  HREF="README.html#SECTION00623000000000000000">New SMTP Server</A>
-<LI><A NAME="tex2html241"
-  HREF="README.html#SECTION00624000000000000000">SMTP Session and Transaction</A>
-<LI><A NAME="tex2html242"
-  HREF="README.html#SECTION00625000000000000000">Set and Get pmilter Contexts</A>
-<LI><A NAME="tex2html243"
-  HREF="README.html#SECTION00626000000000000000">Accessing MTA Symbols</A>
-<LI><A NAME="tex2html244"
-  HREF="README.html#SECTION00627000000000000000">Sender Modification</A>
-<LI><A NAME="tex2html245"
-  HREF="README.html#SECTION00628000000000000000">Recipient Modifications</A>
-<LI><A NAME="tex2html246"
-  HREF="README.html#SECTION00629000000000000000">Header Modifications</A>
-<LI><A NAME="tex2html247"
-  HREF="README.html#SECTION006210000000000000000">Message Replacement</A>
-<LI><A NAME="tex2html248"
-  HREF="README.html#SECTION006211000000000000000">Further Capabilities</A>
-<LI><A NAME="tex2html249"
-  HREF="README.html#SECTION006212000000000000000">Miscellaneous Functions</A>
-<LI><A NAME="tex2html250"
-  HREF="README.html#SECTION006213000000000000000">Return Values</A>
-<LI><A NAME="tex2html251"
-  HREF="README.html#SECTION006214000000000000000">Implementation Notes</A>
-</UL>
-<LI><A NAME="tex2html252"
-  HREF="README.html#SECTION00630000000000000000">Policy Milter Examples</A>
-</UL><BR>
-<LI><A NAME="tex2html253"
-  HREF="README.html#SECTION00700000000000000000">Miscellaneous</A>
-<UL>
-<LI><A NAME="tex2html254"
-  HREF="README.html#SECTION00710000000000000000">Troubleshooting</A>
-<UL>
-<LI><A NAME="tex2html255"
-  HREF="README.html#SECTION00711000000000000000">Startup Problems</A>
-<LI><A NAME="tex2html256"
-  HREF="README.html#SECTION00712000000000000000">Logfile Entries</A>
-</UL>
-<LI><A NAME="tex2html257"
-  HREF="README.html#SECTION00720000000000000000">Caveats</A>
-<LI><A NAME="tex2html258"
-  HREF="README.html#SECTION00730000000000000000">Checks in SMTP Server</A>
-<UL>
-<LI><A NAME="tex2html259"
-  HREF="README.html#SECTION00731000000000000000">Strict RFC Compliance</A>
-<LI><A NAME="tex2html260"
-  HREF="README.html#SECTION00732000000000000000">Various Checks</A>
-</UL>
-<LI><A NAME="tex2html261"
-  HREF="README.html#SECTION00740000000000000000">Security Checks</A>
-<LI><A NAME="tex2html262"
-  HREF="README.html#SECTION00750000000000000000">Restrictions</A>
-<LI><A NAME="tex2html263"
-  HREF="README.html#SECTION00760000000000000000">Code Review, Enhancements, Patches</A>
-<LI><A NAME="tex2html264"
-  HREF="README.html#SECTION00770000000000000000">Porting</A>
-<LI><A NAME="tex2html265"
-  HREF="README.html#SECTION00780000000000000000">Version Naming</A>
-<UL>
-<LI><A NAME="tex2html266"
-  HREF="README.html#SECTION00781000000000000000">Snapshots</A>
-</UL>
-</UL><BR>
-<LI><A NAME="tex2html267"
-  HREF="README.html#SECTION00800000000000000000">Data Flow in MeTA1</A>
-<UL>
-<LI><A NAME="tex2html268"
-  HREF="README.html#SECTION00810000000000000000">Data Flow in MeTA1</A>
-</UL><BR>
-<LI><A NAME="tex2html269"
-  HREF="README.html#SECTION00900000000000000000">Advanced Configuration Options</A>
-<UL>
-<LI><A NAME="tex2html270"
-  HREF="README.html#SECTION00910000000000000000">Overview</A>
-<UL>
-<LI><A NAME="tex2html271"
-  HREF="README.html#SECTION00911000000000000000">Flags</A>
-</UL>
-<LI><A NAME="tex2html272"
-  HREF="README.html#SECTION00920000000000000000">Advanced Configuration for MCP</A>
-<LI><A NAME="tex2html273"
-  HREF="README.html#SECTION00930000000000000000">Advanced Configuration for QMGR</A>
-<LI><A NAME="tex2html274"
-  HREF="README.html#SECTION00940000000000000000">Advanced Configuration for SMAR</A>
-<LI><A NAME="tex2html275"
-  HREF="README.html#SECTION00950000000000000000">Advanced Configuration for SMTP Server</A>
-<LI><A NAME="tex2html276"
-  HREF="README.html#SECTION00960000000000000000">Advanced Configuration for SMTP Client</A>
-</UL><BR>
-<LI><A NAME="tex2html277"
-  HREF="README.html#SECTION001000000000000000000">Tuning</A>
-<UL>
-<LI><A NAME="tex2html278"
-  HREF="README.html#SECTION001010000000000000000">Size of Queues, Caches, and Databases</A>
-<LI><A NAME="tex2html279"
-  HREF="README.html#SECTION001020000000000000000">Disk I/O</A>
-<LI><A NAME="tex2html280"
-  HREF="README.html#SECTION001030000000000000000">Processes and Threads</A>
-</UL><BR>
-<LI><A NAME="tex2html281"
-  HREF="README.html#SECTION001100000000000000000">Format Specifications</A>
-<UL>
-<LI><A NAME="tex2html282"
-  HREF="README.html#SECTION001110000000000000000">Socket Map</A>
-<LI><A NAME="tex2html283"
-  HREF="README.html#SECTION001120000000000000000">Format of Session/Transaction Identifiers</A>
-<LI><A NAME="tex2html284"
-  HREF="README.html#SECTION001130000000000000000">Logfile Format</A>
-<LI><A NAME="tex2html285"
-  HREF="README.html#SECTION001140000000000000000">Format of Received Header</A>
-<LI><A NAME="tex2html286"
-  HREF="README.html#SECTION001150000000000000000">Format of DSNs</A>
-</UL><BR>
-<LI><A NAME="tex2html287"
-  HREF="README.html#SECTION001200000000000000000">Setup for STARTTLS</A>
-<UL>
-<LI><A NAME="tex2html288"
-  HREF="README.html#SECTION001210000000000000000">Certificates for STARTTLS</A>
-</UL><BR>
-<LI><A NAME="tex2html289"
-  HREF="README.html#SECTION001300000000000000000">More About Configuration, Compilation, Debugging, and Testing</A>
-<UL>
-<LI><A NAME="tex2html290"
-  HREF="README.html#SECTION001310000000000000000">Compile Time Options</A>
-<UL>
-<LI><A NAME="tex2html291"
-  HREF="README.html#SECTION001311000000000000000">Generic</A>
-<LI><A NAME="tex2html292"
-  HREF="README.html#SECTION001312000000000000000">QMGR</A>
-<LI><A NAME="tex2html293"
-  HREF="README.html#SECTION001313000000000000000">SMAR</A>
-<LI><A NAME="tex2html294"
-  HREF="README.html#SECTION001314000000000000000">SMTPS</A>
-<LI><A NAME="tex2html295"
-  HREF="README.html#SECTION001315000000000000000">Debugging Compile Time Options</A>
-</UL>
-<LI><A NAME="tex2html296"
-  HREF="README.html#SECTION001320000000000000000">Possible Compilation Problems or Warnings</A>
-<LI><A NAME="tex2html297"
-  HREF="README.html#SECTION001330000000000000000">More About Test Programs</A>
-<UL>
-<LI><A NAME="tex2html298"
-  HREF="README.html#SECTION001331000000000000000">More Environment Variables used by Test Programs</A>
-<LI><A NAME="tex2html299"
-  HREF="README.html#SECTION001332000000000000000">Other Potential Problems with Test Programs</A>
-</UL>
-</UL><BR>
-<LI><A NAME="tex2html300"
-  HREF="README.html#SECTION001400000000000000000">Licenses</A>
-<LI><A NAME="tex2html301"
-  HREF="README.html#SECTION001500000000000000000">Bibliography</A>
-<LI><A NAME="tex2html302"
-  HREF="README.html#SECTION001600000000000000000">Index</A>
-</UL>
-<!--End of Table of Contents-->
-<P>
-
-<H1><A NAME="SECTION00200000000000000000">
-Introduction to MeTA1</A>
-</H1>
-
-<H1><A NAME="SECTION00210000000000000000">
-MeTA1 is a Message Transfer Agent</A>
-</H1>
-
-<P>
-This distribution contains the source code for MeTA1
-which implements a message transfer agent (MTA).
-It supports the Simple Mail Transfer Protocol (SMTP)
-as specified by RFC 2821 [<A
- HREF="README.html#bib:rfc2821">Kle01</A>]
-and various extensions, e.g.,
-STARTTLS [<A
- HREF="README.html#bib:rfc2487">Hof99</A>],
-AUTH [<A
- HREF="README.html#bib:rfc2554">Mye99</A>],
-PIPELINING [<A
- HREF="README.html#bib:rfc2920">Fre00</A>], as well as other protocols, e.g.,
-LMTP [<A
- HREF="README.html#bib:rfc2033">Mye96</A>].
-
-<P>
-MeTA1 is intended to be used as a secure and efficient mail gateway.
-It does not provide any mail content modification capabilities,
-e.g., masquerading of addresses
-or changing (addition, removal) of headers.
-Later versions will probably add such capabilities.
-
-<P>
-
-<H2><A NAME="SECTION00211000000000000000"></A>
-<A NAME="MainComponentsofMTA"></A><BR>
-Main Components of MeTA1
-</H2>
-
-<P>
-MeTA1 is a modularized message transfer agent consisting of
-five (or more) persistent processes,
-four of which are multi-threaded.
-A central queue manager (QMGR) controls SMTP servers (SMTPS)
-and SMTP clients (SMTPC) to receive and send e-mails,
-an address resolver (SMAR) provides lookups in
-various maps including DNS for mail routing,
-and a main control program (MCP) starts the others processes
-and watches over their execution.
-The queue manager organizes the flow of messages through the system
-and provides measures to avoid overloading the local or remote systems
-by implementing a central control instance.
-
-<P>
-More information about each component will be given
-in the appropriate sections.
-Complete documentation and background information can be found in
-[<A
- HREF="README.html#bib:smxdoc">A&#223;mb</A>].
-Section <A HREF="#DataFlowinMTA">7.1</A> describes the data flow in MeTA1,
-the following is a brief summary.
-Figure <A HREF="#fig:arch:overall">1.1</A> shows the interaction of the various
-components and databases<A NAME="tex2html1"
-  HREF="#foot1612"><SUP>1.1</SUP></A>.
-Incoming messages are accepted by an SMTP server (SMTPS)
-which stores the messages in the content database (CDB).
-The envelope information, i.e., sender and recipients,
-is stored by the queue manager in an incoming queue (IQDB)
-and written to disk to the incoming queue backup database (IBDB).
-For a delivery, the envelope information must be transferred into
-the active queue (AQ).
-The scheduler in QMGR takes recipient envelopes from AQ
-and creates transactions which are given to an SMTP client (SMTPC)
-for delivery.
-An SMTP client takes the transaction information and tries to
-send a message whose content is read from CDB.
-After a successful delivery attempt a record is written to IBDB
-that logs this information.
-The deferred envelope database (DEFEDB)
-is only used if a message cannot be delivered during the first attempt.
-
-<P>
-
-<DIV ALIGN="CENTER"><A NAME="fig:arch:overall"></A><A NAME="1613"></A>
-<TABLE>
-<CAPTION ALIGN="BOTTOM"><STRONG>Figure 1.1:</STRONG>
-MeTA1: Overall Structure</CAPTION>
-<TR><TD><DIV ALIGN="CENTER">
-</DIV><TABLE  WIDTH="208">
-<TR><TD>
-<BR>
-<IMG
- WIDTH="539" HEIGHT="471" ALIGN="BOTTOM" BORDER="0"
- SRC="img1.png"
- ALT="\begin{picture}(120, 120)\epsfxsize 120mm
-\leavevmode
-\epsffile{overview1.eps}
-\end{picture}">
-<BR></TD></TR>
-</TABLE><DIV ALIGN="CENTER">
-</DIV></TD></TR>
-</TABLE>
-</DIV>
-
-<P>
-This version of MeTA1 does not come with
-a local delivery agent
-nor a mail submission program.
-See Sections <A HREF="#SpecifyingLocalDomains">4.3.1</A>
-and
-<A HREF="#RunningMTA:UsingMTAonlyforOutgoingMail">4.2</A>
-which programs can be used to achieve the desired functionality.
-
-<P>
-
-<H1><A NAME="SECTION00220000000000000000"></A>
-<A NAME="Documentation"></A><BR>
-Documentation
-</H1>
-
-<P>
-The document
-``sendmail X: Requirements, Architecture, and Functional Specification''
-[<A
- HREF="README.html#bib:smxdoc">A&#223;mb</A>]
-provides the background about the MeTA1 design,
-its architecture, as well as the functional specification,
-and details about the implementation.
-
-<P>
-
-<H2><A NAME="SECTION00221000000000000000">
-Typographical Conventions</A>
-</H2>
-
-<P>
-In this documentation,
-a command written as
-
-<P>
-<PRE>
-$ command
-</PRE>
-
-<P>
-should be executed as an unprivileged user.
-Only a command written as
-
-<P>
-<PRE>
-# command
-</PRE>
-
-<P>
-should be executed as the superuser.
-
-<P>
-If a command contains components that need to be replaced by values
-that depend on the environment or the local configuration, then it
-is usually written as a macro, e.g., <TT>$LOGFILE</TT>.
-
-<P>
-A number in parentheses behind a command or function
-refers to the manual section, e.g., <TT>syslog(3)</TT>,
-as it is usual for Unix documents.
-
-<P>
-
-<H1><A NAME="SECTION00230000000000000000">
-Version</A>
-</H1>
-
-<P>
-This document has been written for MeTA1-1.0.PreAlpha24.1,
-see also the greeting of the SMTP server
-and the version output of the main components.
-See Section <A HREF="#VersionNaming">6.8</A> for information
-about version naming.
-
-<P>
-
-<H1><A NAME="SECTION00240000000000000000">
-Current State</A>
-</H1>
-
-<P>
-There are still some error conditions which may not be handled gracefully,
-i.e., in case of some resource problems (e.g., out of memory or out
-of disk space) the system may abort;
-however, this is common for most open source MTAs which simply abort
-if they are running out of memory.
-See Section <A HREF="#DealingwithErrors:ResourceProblems">4.10.1</A>
-how to deal with those conditions.
-The software is running since 2004-01-01 as MTA on the main machine
-of the author without any significant problem,
-i.e., it never lost any mail.
-
-<P>
-
-<H2><A NAME="SECTION00241000000000000000"></A>
-<A NAME="feedback"></A><BR>
-Providing Feedback
-</H2>
-
-<P>
-Please report bugs and provide feedback either
-to the developers list[<A
- HREF="README.html#bib:smxrfh">A&#223;ma</A>]
-(if you are subscribed)
-or directly to<A NAME="tex2html3"
-  HREF="#foot1614"><SUP>1.2</SUP></A>:
-
-<P>
-<BLOCKQUOTE>
-<code>&lt; MeTA1 + feedback (at) MeTA1 . org &gt;</code>
-
-</BLOCKQUOTE>
-
-<P>
-Feedback about the code,
-the documentation (including typographical, syntactical,
-and grammatical errors,
-pointing out parts that are not well enough explained, etc.),
-as well as patches and enhancements are highly appreciated.
-
-<P>
-
-<H1><A NAME="SECTION00250000000000000000">
-For the Impatient</A>
-</H1>
-
-<P>
-For those who do not want to read the entire documentation,
-it is adviced to read at least sections
-<A HREF="#BuildingMTA">2.2</A> and
-<A HREF="#InstallingMTA">2.4</A>,
-and the appropriate section of Chapter
-<A HREF="#RunningMTA">4</A>.
-
-<P>
-
-<H1><A NAME="SECTION00300000000000000000">
-Building, Testing, and Installing MeTA1</A>
-</H1>
-
-<P>
-
-<H1><A NAME="SECTION00310000000000000000"></A>
-<A NAME="VerifyingtheSourceCodeDistribution"></A><BR>
-Verifying the Source Code Distribution
-</H1>
-
-<P>
-The source code is distributed as a (compressed) tar file
-and is accompanied by a PGP signature file which has the same
-name as the tar file plus the ending <TT>.sig</TT>.
-To verify the integrity of the source code
-PGP [<A
- HREF="README.html#bib:PGP">PGP</A>] or GPG [<A
- HREF="README.html#bib:GPG">Gnu</A>] are required
-as well as the MeTA1 PGP signing key [<A
- HREF="README.html#bib:MKEYS">MeT</A>]:
-
-<P>
-<TT>$ gpg -verify meta1-$VERSION.tar.gz.sig
-</TT>
-<BR>or:
-<BR><TT>$ pgp meta1-$VERSION.tar.gz.sig meta1-$VERSION.tar.gz
-</TT>
-
-<P>
-Further information, especially about warnings or possible errors,
-can be found in the documentation for PGP or GPG.
-
-<P>
-
-<H1><A NAME="SECTION00320000000000000000"></A>
-<A NAME="BuildingMTA"></A><BR>
-Building MeTA1
-</H1>
-
-<P>
-MeTA1 uses a <TT>configure</TT> file generated by GNU autoconf
-for configuration.
-Hence you can build it
-(after verifying and unpacking the distribution)
-as follows:
-
-<P>
-<PRE>
-$ mkdir obj.$OS &amp;&amp; cd obj.$OS &amp;&amp; $PATHTO/meta1-$VERSION/configure $OPTIONS \
-  &amp;&amp; make &amp;&amp; make check
-</PRE>
-
-<P>
-Obviously you have to replace <TT>$OS</TT>, <TT>$VERSION</TT>, <TT>$OPTIONS</TT>, 
-as well as <TT>$PATHTO</TT>.
-It is also possible to build MeTA1 in the source tree,
-however, this is discouraged:
-
-<P>
-<PRE>
-$ ./configure &amp;&amp; make &amp;&amp; make check
-</PRE>
-
-<P>
-Notes:
-do <EM>not</EM> run this as <TT>root</TT>;
-this is not just a basic security measure
-(<EM>only</EM> use a privileged account if it is really required),
-but most of the programs refuse to run with <TT>root</TT> privileges.
-It might be useful to save the output of these
-commands<A NAME="tex2html4"
-  HREF="#foot1615"><SUP>2.1</SUP></A>for later inspection.
-
-<P>
-
-<H2><A NAME="SECTION00321000000000000000"></A>
-<A NAME="CompileTimeConfigurationOptions"></A><BR>
-Compile-Time Configuration Options
-</H2>
-
-<P>
-Beside the usual <TT>configure</TT> options like
-<code>--prefix</code>
-a few MeTA1 specific configuration options are available:
-
-<P>
-<DL>
-<DT></DT>
-<DD><code>--enable-TLS</code>
-Enable check for STARTTLS support.
-The default is <TT>yes</TT>, i.e., <TT>configure</TT> tries to determine
-whether OpenSSL is available on the machine.
-Requires OpenSSL 0.9.6 or newer [<A
- HREF="README.html#bib:OpenSSL">Ope</A>].
-Note: check the OpenSSL website [<A
- HREF="README.html#bib:OpenSSL">Ope</A>] for security
-announcement and be aware that due to the complexity
-of the software it may cause (security) problems.
-
-<P>
-</DD>
-<DT></DT>
-<DD><code>--enable-SASL</code>
-Enable check for AUTH support.
-The default is <TT>yes</TT>, i.e., <TT>configure</TT> tries to determine
-whether Cyrus SASL v2 is available on the machine.
-Requires Cyrus SASL version 2.1.18 or newer [<A
- HREF="README.html#bib:CyrusSASL">Cyr</A>].
-Notes:
-
-<OL>
-<LI>check
-<TT>http://asg.web.cmu.edu/cyrus/</TT> and
-<TT>http://asg.web.cmu.edu/sasl/</TT>
-for security announcement and be aware that due to the complexity
-of the software it may cause (security) problems.
-</LI>
-<LI>If Cyrus SASL uses Berkeley DB then it is necessary
-that the version which has been used during compilation
-matches the version that it is linked against.
-</LI>
-</OL>
-
-<P>
-</DD>
-<DT></DT>
-<DD><code>--with-sasl-libdir=</code>path
-Path to directory containing Cyrus SASL v2 library.
-
-<P>
-</DD>
-<DT></DT>
-<DD><code>--with-sasl-incdir=</code>path
-Path to directory containing Cyrus SASL v2 include files.
-
-<P>
-</DD>
-<DT></DT>
-<DD><code>--disable-included-bdb</code>
-MeTA1 ships with a modified version of Berkeley DB 4.3.28
-which is built and used by default.
-To use a different version of Berkeley DB (it must be 4.3, 4.2, or 4.1),
-e.g., one that is part of the host OS,
-specify
-<code>--disable-included-bdb</code>.
-
-<P>
-Notes:
-
-<OL>
-<LI>If you do not use the Berkeley DB version that comes with MeTA1,
-make sure you run all the tests.
-For example, with Berkeley DB 4.2.50 on OpenBSD 3.2/i386 at least one of the
-test programs fails and hence this combination must <EM>not</EM> be used.
-Moreover, if you encounter a problem using some other BDB version
-then you must try to reproduce the problem with the shipped version
-before reporting a possible bug.
-</LI>
-<LI>Do not use Berkeley DB 4.3.27/28 in 64 bit mode on Solaris 5.8/9
-as it crashes at least in those configurations<A NAME="tex2html5"
-  HREF="#foot1616"><SUP>2.2</SUP></A>.
-This bug is fixed in the version that is distributed with MeTA1.
-</LI>
-</OL>
-
-<P>
-</DD>
-<DT></DT>
-<DD><code>--with-bdb-libdir</code>=path
-Path to directory containing Berkeley DB library.
-This option is only needed if
-<code>--disable-included-bdb</code>
-is used and Berkeley DB is not installed
-in a location that the compiler or linker use by default.
-Note: <TT>configure</TT> currently checks only for a static library.
-
-<P>
-</DD>
-<DT></DT>
-<DD><code>--with-bdb-incdir</code>=path
-Path to directory containing Berkeley DB include files.
-This option is only needed if
-<code>--disable-included-bdb</code>
-is used and Berkeley DB is not installed
-in a location that the compiler uses by default.
-Example:
-<PRE>
-$ B=/usr/local/BerkeleyDB.4.3
-$ $PATHTO/meta1-$VERSION/configure --with-bdb-libdir=$B/lib \
-  --with-bdb-incdir=$B/include --disable-included-bdb
-</PRE>
-
-<P>
-</DD>
-<DT></DT>
-<DD><code>--enable-pmilter</code>
-Enable policy milter protocol, see Chapter <A HREF="#PolicyMilter">5</A>.
-
-<P>
-</DD>
-<DT></DT>
-<DD><code>--enable-msp</code>
-Enable a simple mail submission program (MSP)
-that is currently not supported
-(located in <TT>contrib/</TT>).
-This is just a helper program for those who do not want to install
-a different MSP but need only some basic functionality
-(which does <EM>not</EM> include a queueing mechanism).
-Note: this will install the MSP as <TT>sendmail</TT>
-thus overriding any existing program of that name
-(as well as a man page).
-
-<P>
-</DD>
-<DT></DT>
-<DD><code>--enable-tinycdb</code>
-Enable support for <TT>cdb</TT> map type, based on <TT>tinycdb 0.75</TT>
-[<A
- HREF="README.html#bib:tinycdb">Tok</A>].
-</DD>
-</DL>
-
-<P>
-To get the current list of configuration options, use
-<code>configure --help</code>.
-
-<P>
-
-<H1><A NAME="SECTION00330000000000000000"></A>
-<A NAME="TestPrograms"></A><BR>
-Test Programs
-</H1>
-
-<P>
-<PRE>
-$ make check
-</PRE>
-
-<P>
-will run all test programs;
-currently those tests take about eighty minutes to run
-on a standard workstation.
-For each of the test programs one line is printed to denote
-whether the test succeeded, i.e., the output consists of lines with the marker
-<TT>PASS:</TT> or <TT>FAIL:</TT> and the name of the test program program.
-Additional output might be generated by the test programs themselves, e.g.,
-
-<P>
-<TT>2 of 2 tests completed successfully</TT>,
-
-<P>
-or some debug output.
-The debug output may even indicate an error, but only a final
-<TT>FAIL:</TT> indicates a test failure.
-Some tests depend on compilation options and are only conditionally enabled;
-others may depend on environment variables, see
-<A HREF="#TestPrograms:EnvironmentVariablesusedbyTestPrograms">2.3.1</A>.
-For disabled tests <TT>SKIP</TT> is shown.
-
-<P>
-Since some of the tests may fail
-(see Section <A HREF="#TestPrograms:KnownTestProgramProblems">2.3.2</A>)
-and <TT>make</TT> will usually stop
-after encountering an error, it might be required to use
-
-<P>
-<PRE>
-$ make -i check &gt;check.out 2&gt;&amp;1
-</PRE>
-
-<P>
-to perform all tests.
-
-<P>
-
-<H2><A NAME="SECTION00331000000000000000"></A>
-<A NAME="TestPrograms:EnvironmentVariablesusedbyTestPrograms"></A><BR>
-Environment Variables used by Test Programs
-</H2>
-
-<P>
-Environment variables can be used to
-disable some test programs if required
-or change the behavior of some test programs.
-These environment variables and their effects are:
-
-<P>
-
-<UL>
-<LI><code>MTA_NO_DNS_TEST</code><A NAME="148"></A>:
-disable tests that perform DNS lookups.
-These lookups may use domains that are under control of the MeTA1 author.
-
-<P>
-</LI>
-<LI><code>MTA_DNS_TIMEOUT</code><A NAME="149"></A>:
-can be used to set a different timeout than the default,
-however, it may not be obeyed by all DNS test programs.
-
-<P>
-</LI>
-<LI><code>MTA_TEST_DNS_TIMING</code><A NAME="150"></A>:
-run DNS tests that are timing dependent and may fail
-under certain conditions (e.g., network too slow).
-
-<P>
-</LI>
-<LI><code>MTA_TIMING</code><A NAME="151"></A>:
-run MTA tests that are timing dependent and may fail
-under certain conditions.
-
-<P>
-</LI>
-<LI><code>MTA_STOPONERROR</code><A NAME="152"></A>:
-causes most test scripts that perform multiple checks
-to stop on the first error that occurs instead of performing all checks.
-
-<P>
-</LI>
-<LI><code>MTA_NO_LOG_TEST</code><A NAME="153"></A>:
-disables some tests that use <TT>syslog(3)</TT>.
-
-<P>
-</LI>
-<LI><code>MTA_NO_SLOW_TEST</code><A NAME="155"></A>:
-disables some tests that take a very long time.
-</LI>
-</UL>
-
-<P>
-In this example the DNS timeout is set to 60 seconds and tests that
-take a very long time are disabled:
-<PRE>
-$ MTA_DNS_TIMEOUT=60
-$ MTA_NO_SLOW_TEST=1
-$ export MTA_DNS_TIMEOUT MTA_NO_SLOW_TEST
-$ make -i check
-</PRE>
-
-<P>
-
-<H2><A NAME="SECTION00332000000000000000"></A>
-<A NAME="TestPrograms:KnownTestProgramProblems"></A><BR>
-Known Test Program Problems
-</H2>
-
-<P>
-
-<UL>
-<LI><TT>connctl.sh</TT>
-	will fail on systems that have neither <TT>inet_pton(3)</TT>
-	nor <TT>inet_aton(3)</TT>.
-	Fix: upgrade your OS or write a replacement function
-	and put it into <TT>librepl/</TT>.
-</LI>
-<LI><TT>t-evthr-slp</TT>
-	can fail in some circumstances if the OS is busy with other tasks
-	as it depends on the OS scheduler.
-	Fix: just rerun the test.
-</LI>
-<LI><TT>t-evthr-sig.sh</TT>
-	fails on Linux systems that use a thread implementation
-	that is not POSIX compliant.
-	The test is currently disabled on all Linux versions.
-	Note: if you know a simple way to figure out whether the OS
-	actually provides POSIX compliant pthreads, please let me know.
-</LI>
-<LI><TT>t-hostname</TT>
-	fails on systems where <TT>gethostname()</TT>
-	does not return any FQHN at all
-	(e.g., default SunOS 4/5 installations).
-	Add the FQHN as alias to <TT>/etc/hosts</TT> (see <TT>hosts(5)</TT>
-	to solve this problem, e.g.,
-
-<P>
-<PRE>
-	10.1.2.3    myname myname.my.domain
-</PRE>
-	or
-<PRE>
-	10.1.2.3    myname.my.domain myname
-</PRE>
-
-<P>
-</LI>
-<LI><TT>t-parsesockstr</TT>
-	fails on systems like AIX which treat an empty string
-	as a valid IP address in <TT>inet_addr(3)</TT>.
-
-<P>
-</LI>
-<LI><TT>t-mts-icr.sh</TT> and <TT>t-mts-ocr-?.sh</TT>
-	try to test incoming/outgoing rate control.
-	They rely on the time it takes to send/receive mails
-	which may not work on machines that are significantly slower
-	or faster than the machines available to the author.
-
-<P>
-</LI>
-<LI><TT>t-smar-0.sh</TT>, <TT>t-smar-3.sh</TT>, and <TT>t-dns-1.sh</TT>
-	may fail sometimes due to DNS timeouts.
-	Run the tests again or increase the DNS timeout, see
-	Section <A HREF="#TestPrograms:EnvironmentVariablesusedbyTestPrograms">2.3.1</A>.
-</LI>
-</UL>
-
-<P>
-Note: DNS related test programs may fail
-if the first nameserver entry in <TT>/etc/resolv.conf</TT>
-does not respond properly (and reasonably fast) to DNS queries.
-See Section
-<A HREF="#MoreEnvironmentVariablesusedbyTestPrograms">12.3.1</A>
-how to override the default nameserver selection:
-<code>MTA_NAMESERVER</code>.
-
-<P>
-For more information about possible test program problems
-see Section <A HREF="#OtherPotentialProblemswithTestPrograms">12.3.2</A>.
-For problems with programs in the <TT>contrib/</TT> directory,
-see <TT>contrib/README</TT>.
-
-<P>
-
-<H1><A NAME="SECTION00340000000000000000"></A>
-<A NAME="InstallingMTA"></A><BR>
-Installing MeTA1
-</H1>
-
-<P>
-MeTA1 needs several users to provide separation of privileges
-and to enhance security.
-Currently there are four required accounts
-(the numbers for uid and gid are examples only);
-the last one listed below (<TT>meta1</TT>) is not really required:
-
-<P>
-<PRE>
-meta1s:*:260:260:meta1 SMTPS:/nonexistent:/sbin/nologin
-meta1q:*:261:261:meta1 QMGR:/nonexistent:/sbin/nologin
-meta1c:*:262:262:meta1 SMTPC:/nonexistent:/sbin/nologin
-meta1m:*:263:263:meta1 misc:/nonexistent:/sbin/nologin
-meta1:*:264:264:meta1 other:/nonexistent:/sbin/nologin
-</PRE>
-
-<P>
-with the corresponding groups:
-
-<P>
-<PRE>
-meta1s:*:260:
-meta1q:*:261:
-meta1c:*:262:meta1s
-meta1m:*:263:meta1s,meta1q
-meta1:*:264:
-</PRE>
-
-<P>
-Note: on some operating systems the star character is not a valid value
-for the password field.
-Check <TT>passwd(5)</TT><A NAME="tex2html6"
-  HREF="#foot198"><SUP>2.3</SUP></A>to determine which value to use to disable the password.
-
-<P>
-To check whether the required users and groups exist, run
-
-<P>
-<PRE>
-$ ./misc/sm.check.sh -p
-</PRE>
-
-<P>
-(in the build directory);
-see below how to override the default values for the user and group names.
-
-<P>
-A shell script to setup the directories, files, etc.&nbsp;as described
-below is available in <TT>misc/sm.setup.sh.in</TT>.
-This script is modified by <TT>configure</TT> to create
-<TT>misc/sm.setup.sh</TT> (in the build directory)
-which is invoked when
-
-<P>
-<TT># make install</TT>
-
-<P>
-is called.
-Most defaults in the installation script
-<TT>misc/sm.setup.sh</TT>
-can be overridden with environment variables
-(default is listed in square brackets):
-
-<UL>
-<LI><TT>MTACONFDIR</TT><A NAME="208"></A>:
-[<TT>/etc/meta1</TT>] configuration directory.
-</LI>
-<LI><TT>MTAQDIR</TT><A NAME="211"></A>:
-[<TT>/var/spool/meta1</TT>] queue directory;
-communication sockets are created in this directory by default too.
-</LI>
-<LI><TT>MTALOGDIR</TT><A NAME="214"></A>:
-[<TT>.</TT>] logging directory
-(relative to <TT>MTAQDIR</TT>).
-If logging is done via <TT>syslog(3)</TT> then this directory is not used.
-</LI>
-<LI><TT>MTAS</TT><A NAME="219"></A> [<TT>meta1s</TT>]
-SMTP Server user and group.
-</LI>
-<LI><TT>MTAC</TT><A NAME="222"></A> [<TT>meta1c</TT>]
-SMTP Client user and group.
-</LI>
-<LI><TT>MTAQ</TT><A NAME="225"></A> [<TT>meta1q</TT>]
-QMGR user and group.
-</LI>
-<LI><TT>MTAM</TT><A NAME="228"></A> [<TT>meta1m</TT>]
-address resolver (misc) user and group.
-</LI>
-<LI><TT>MTA</TT><A NAME="231"></A> [<TT>meta1</TT>]
-generic (configuration etc) user and group.
-</LI>
-<LI><TT>MTALG</TT><A NAME="234"></A>
-group for logfiles; the install program tries
-<TT>operator</TT>, <TT>sysadmin</TT>, and <TT>root</TT>.
-</LI>
-</UL>
-
-<P>
-<EM>Important Notes</EM>:
-
-<OL>
-<LI>The users and groups <EM>must</EM> be created before <TT>make install</TT> is invoked.
-
-<P>
-</LI>
-<LI><TT>misc/sm.setup.sh</TT> will not overwrite existing files or directories,
-hence it does not work for upgrading a system
-if configuration files or directory/file owners need to changed.
-</LI>
-</OL>
-
-<P>
-
-<H2><A NAME="SECTION00341000000000000000"></A>
-<A NAME="InstallingMTA:DirectoriesFilesandPermissions"></A><BR>
-Directories, Files, and Permissions
-</H2>
-
-<P>
-<TT>make install</TT> (i.e., <TT>misc/sm.setup.sh</TT>)
-will create all the required directories and files
-with the correct permissions provided the users and groups
-have been set up properly.
-This section explains what the created structure looks like.
-
-<P>
-The CDB directories (<TT>0</TT>-<TT>9</TT>, <TT>A</TT>-<TT>F</TT>)
-must be owned by <TT>meta1s</TT> and have group
-<TT>meta1q</TT> with the permissions <TT>0771</TT>:
-
-<P>
-<PRE>
-drwxrwx--x  2 meta1s  meta1q        0/
-</PRE>
-
-<P>
-Note: this means that everyone with access to the machine can guess
-the name of content files (see Section
-<A HREF="#FormatofSession_TransactionIdentifiers">10.2</A>
-for the format; the names can also be read from the logfiles
-if those are world-readable)
-and list (<TT>ls(1)</TT>) them,
-however, they cannot access the content files as those
-are owned by <TT>meta1s</TT> with mode <TT>0640</TT> and group <TT>meta1c</TT>,
-e.g.,
-
-<P>
-<PRE>
--rw-r-----  1 meta1s  meta1c  1993 Jul  9 21:19 2/S000000000006B1D200
-</PRE>
-
-<P>
-The main (DEFEDB)
-and incoming queues (IBDB)
-must belong to <TT>meta1q</TT> and should not
-accessible by anyone else:
-
-<P>
-<PRE>
-drwx------  2 meta1q  meta1q        defedb/
-drwx------  2 meta1q  meta1q        ibdb/
-drwx------  2 meta1q  meta1q        ibdb/ibdb/
-</PRE>
-
-<P>
-Mailertable, aliases map, and other maps for SMAR
-(see Section <A HREF="#ConfigurationMapsforSMAR">3.9.3</A>)
-should belong to <TT>meta1m</TT> and can be readable
-as local conventions require:
-
-<P>
-<PRE>
--rw-r--r--  1 meta1m  meta1m         mt
--rw-r--r--  1 meta1m  meta1m         aliases.db
-</PRE>
-
-<P>
-In general, maps should be owned by the user id of the program
-that uses them, e.g.,
-<TT>meta1q</TT> owns the QMGR configuration map <TT>qmgr_conf.db</TT>
-(see Section <A HREF="#ConfigurationMapforQMGR">3.8.1</A>).
-
-<P>
-The meta1 configuration file can either belong to <TT>root</TT>
-or the generic meta1 user:
-
-<P>
-<PRE>
--rw-r--r--  1 meta1   meta1          meta1.conf
-</PRE>
-
-<P>
-The directories in which the communication sockets between QMGR
-and the other programs are located must belong to <TT>meta1q</TT> and be
-group accessible for the corresponding program:
-
-<P>
-<PRE>
-drwxrws---  2 meta1q  meta1m        qmsmar/
-drwxrws---  2 meta1q  meta1c        qmsmtpc/
-drwxrws---  2 meta1q  meta1s        qmsmtps/
-</PRE>
-
-<P>
-The directory in which the communication socket between MCP
-and SMTPS is located must belong to <TT>meta1s</TT>:
-
-<P>
-<PRE>
-drwxr-x---  2 meta1s  meta1s        smtps/
-</PRE>
-
-<P>
-The logfiles must be owned by the corresponding user and may
-have relaxed group (or even world) read permissions:
-
-<P>
-<PRE>
--rw-r-----  1 meta1q  operator   qmgr.log
--rw-r-----  1 meta1m  operator   smar.log
--rw-r-----  1 meta1c  operator   smtpc.log
--rw-r-----  1 meta1s  operator   smtps.log
-</PRE>
-
-<P>
-To check whether an installation was successful, run
-
-<P>
-<PRE>
-# ./misc/sm.check.sh -P
-</PRE>
-
-<P>
-(in the build directory).
-Note: this script uses the same environment variables
-as the installation script.
-
-<P>
-
-<H2><A NAME="SECTION00342000000000000000">
-Upgrading from earlier MeTA1 Versions</A>
-</H2>
-
-<P>
-Currently there is no support for automated upgrades.
-If you have an earlier version of MeTA1 installed
-and want to upgrade, here are some tips
-(note: all programs should be run from the build directory
-unless mentioned otherwise):
-
-<P>
-
-<UL>
-<LI>To check whether an installation was successful, run
-
-<P>
-<PRE>
-# ./misc/sm.check.sh -P
-</PRE>
-
-<P>
-</LI>
-<LI>To check whether the configuration file needs changes, run
-
-<P>
-<PRE>
-$ ./misc/smconf /etc/meta1/meta1.conf
-</PRE>
-
-<P>
-If the file is syntactically invalid for this version of
-MeTA1 the program will show those errors.
-Use <TT>-h</TT> as argument to see the available option, e.g.,
-<TT>-u</TT> might be useful.
-
-<P>
-</LI>
-</UL>
-
-<P>
-
-<H1><A NAME="SECTION00400000000000000000">
-Run-Time Configuration of MeTA1</A>
-</H1>
-
-<H1><A NAME="SECTION00410000000000000000">
-Overview</A>
-</H1> 
-<P>
-Configuration of MeTA1 can be done
-via command line parameters or via a configuration file
-(the latter is preferred, the former offers only a small subset
-of the available configuration options).
-If a configuration file and command line options are specified,
-then the options are currently processed in order, i.e.,
-later settings override earlier ones for the same options.
-Information about the former is available by invoking a program
-with the option <TT>-h</TT>
-(MCP currently uses <TT>syslog(3)</TT> instead of <TT>stderr</TT>),
-it will show the usage as well as the default values.
-The syntax of the configuration files is specified in the following sections.
-To actually use a configuration file,
-the option <TT>-f $CONFIGFILE</TT> must be used,
-otherwise the programs use only the built-in default values,
-but not a configuration file.
-Option '<TT>-V</TT>' can be used to show version information,
-specifying '<TT>-V</TT>' multiple times shows more detail, e.g.,
-'<TT>-VVVVV</TT>' will show the configuration data including
-the default value for (almost) every option, and
-'<TT>-VVVVVV</TT>' will also show all available flags.
-
-<P>
-Some configuration options can be set via maps,
-these maps are:
-<TT>qmgr_conf</TT> for QMGR
-(see Section <A HREF="#ConfigurationMapforQMGR">3.8.1</A>)
-and
-<TT>access</TT> for SMTPS (indirectly via the address resolver,
-see Section <A HREF="#ConfigurationMapsforSMAR">3.9.3</A>).
-
-<P>
-
-<H1><A NAME="SECTION00420000000000000000"></A>
-<A NAME="ConfigurationFileSyntax"></A><BR>
-Configuration File Syntax
-</H1>
-
-<P>
-The grammar for a MeTA1 configuration file is very simple:
-
-<P>
-<TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT">conf</TD>
-<TD ALIGN="CENTER">::=</TD>
-<TD ALIGN="LEFT">entries</TD>
-</TR>
-<TR><TD ALIGN="LEFT">entries</TD>
-<TD ALIGN="CENTER">::=</TD>
-<TD ALIGN="LEFT">entry *</TD>
-</TR>
-<TR><TD ALIGN="LEFT">entry</TD>
-<TD ALIGN="CENTER">::=</TD>
-<TD ALIGN="LEFT">option <IMG
- WIDTH="8" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
- SRC="img2.png"
- ALT="$\vert$"> section</TD>
-</TR>
-<TR><TD ALIGN="LEFT">section</TD>
-<TD ALIGN="CENTER">::=</TD>
-<TD ALIGN="LEFT">keyword [name ] "{" entries "}" [";"]</TD>
-</TR>
-<TR><TD ALIGN="LEFT">option</TD>
-<TD ALIGN="CENTER">::=</TD>
-<TD ALIGN="LEFT">option-name "=" rhs</TD>
-</TR>
-<TR><TD ALIGN="LEFT">rhs</TD>
-<TD ALIGN="CENTER">::=</TD>
-<TD ALIGN="LEFT">value ";" <IMG
- WIDTH="8" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
- SRC="img2.png"
- ALT="$\vert$"> "{" value-list "}" [";"]</TD>
-</TR>
-</TABLE>
-
-<P>
-A configuration file consists of <I>entries</I>,
-each <I>entry</I> is either an <I>option</I> or a <I>section</I>.
-An option has a <I>name</I>, an equal sign,
-and a <I>value</I> terminated by a semicolon
-or a (bracketed) list of values separated by comma<A NAME="tex2html7"
-  HREF="#foot322"><SUP>3.1</SUP></A>.
-A <I>section</I> consists of a <I>keyword</I>, an optional <I>name</I>,
-and a (bracketed) sequence of <I>entries</I>.
-Keywords and options are not case sensitive.
-The layout of a configuration file does not matter,
-i.e., indentation and line breaks are irrelevant
-(in general, but see below for strings).
-
-<P>
-
-<H2><A NAME="SECTION00421000000000000000"></A>
-<A NAME="ConfigurationFileValues"></A><BR>
-Configuration File Values
-</H2>
-
-<P>
-Values in a configuration file are usually strings or numbers.
-If a string is used, then it should be quoted, unless it contains
-no special characters which are treated specially by the grammar.
-If a string is very long it can be broken into substrings
-spread out over several lines (just like strings in ANSI C), e.g.,
-
-<P>
-<PRE>
-  somemessage = "this is a very long string which is spread "
-     "out over several lines because otherwise it is too "
-     "hard too read.";
-</PRE>
-
-<P>
-Numeric values can have the usual prefixes
-(known from the programming language C) of
-<TT>0x</TT> for hexadecimal
-(with digits <TT>0</TT> to <TT>9</TT>, <TT>A</TT> to <TT>F</TT>, and
-<TT>a</TT> to <TT>f</TT>)
-and
-<TT>0</TT> for octal (with digits <TT>0</TT> to <TT>7</TT>).
-Valid boolean values are
-<TT>0</TT>, <TT>false</TT>, <TT>off</TT> for false, and
-<TT>1</TT>, <TT>true</TT>, <TT>on</TT> for true (case insensitive).
-
-<P>
-In some cases it is possible to have <I>units</I> for values.
-Currently time and size values make use of this feature.
-Valid time units are
-<TT>w</TT> for weeks,
-<TT>d</TT> for days,
-<TT>h</TT> for hours,
-<TT>m</TT> for minutes,
-and
-<TT>s</TT> for seconds.
-Valid units for size are
-<TT>B</TT> for bytes,
-<TT>KB</TT> for kilo bytes,
-<TT>MB</TT> for mega bytes,
-and
-<TT>GB</TT> for giga bytes.
-It is allowed to specify a sequence of numbers and units, e.g.,
-<TT>1h 5m 12s</TT>.
-Unless otherwise specified, the default units for times and sizes
-in a configuration file are <TT>s</TT> and <TT>B</TT>, respectively;
-for those values these units can be used.
-
-<P>
-
-<H1><A NAME="SECTION00430000000000000000"></A>
-<A NAME="ExampleConfigurationFile"></A><BR>
-Example Configuration File
-</H1>
-
-<P>
-The installation script creates the file <TT>meta1.conf</TT>
-in the configuration directory (<TT>/etc/meta1</TT>,
-see Section <A HREF="#InstallingMTA">2.4</A>).
-Check the comments in the file and edit it if required.
-A configuration file for meta1 contains several sections:
-a global section which specifies the locations of sockets
-and directories that are used by multiple components,
-and one section each for QMGR, SMAR, SMTP server, and SMTP client.
-Other sections may define services that are started by MCP,
-e.g., a local mailer.
-
-<P>
-<PRE>
-CDB_base_directory = "/var/spool/meta1/";
-
-qmgr {
-  AQ_max_entries = 8192;
-  smtpc { initial_connections = 19; max_connections = 101; }
-  smtps { max_connections = 5; max_connection_rate=160; }
-  max_errors_per_DSN=16;
-  wait_for_server = 4; wait_for_client = 4;
-  start_action = wait; user = meta1q;
-  restart_dependencies = { smtps, smtpc, smar };
-  path = "/usr/libexec/qmgr"; arguments = "qmgr -f /etc/meta1/meta1.conf";
-}
-
-smtps { flags = {8bitmime}; CDB_gid = 261; IO_timeout = 5m3s;
-  listen_socket { type = inet; port = 25; }
-  start_action = pass; pass_fd_socket = smtps/smtpsfd;
-  user = meta1s; path = /usr/libexec/smtps;
-  arguments = "smtps -f /etc/meta1/meta1.conf"; }
-
-smtpc {
-  Log_Level = 12; IO_timeout = 6m; wait_for_server = 4;
-  start_action = wait; user = meta1c; path = "/usr/libexec/smtpc";
-  arguments = "smtpc -f /etc/meta1/meta1.conf"; }
-
-smar {
-  Log_Level = 12;
-  nameserver = {10.10.10.9, 127.0.0.1};
-  DNS_timeout = 6;
-  start_action = wait; user = meta1m; restart_dependencies = { smtps, qmgr };
-  path = "/usr/libexec/smar"; arguments = "smar -f /etc/meta1/meta1.conf";
-}
-</PRE>
-
-<P>
-
-<H1><A NAME="SECTION00440000000000000000"></A>
-<A NAME="CommonGlobalConfiguration"></A><BR>
-Common Global Configuration
-</H1>
-
-<P>
-All of the following options have defaults and should only
-be changed if necessary.
-
-<P>
-
-<OL>
-<LI><code>hostname</code><A NAME="370"></A>:
-set the hostname to use for the various components.
-This can be set if <TT>gethostbyname(3)</TT> does not return
-a valid (fully qualified) hostname (format: string).
-</LI>
-<LI><A NAME="CommonGlobalConfiguration:CDBbasedirectory"></A><code>CDB_base_directory</code><A NAME="373"></A>:
-base directory of CDB (format: string);
-this should either be empty (which is the default)
-or a path to a directory including a trailing slash;
-the CDB library currently simply appends the directory names
-(see Section <A HREF="#InstallingMTA:DirectoriesFilesandPermissions">2.4.1</A>)
-to it.
-It might be useful to move some subdirectories to different disks
-(by creating (symbolic) links (<TT>ln(1)</TT>))
-to spread the I/O load.
-</LI>
-<LI><code>SMAR_socket</code><A NAME="376"></A>:
-socket created by the address resolver over which clients
-(SMTPS, QMGR) can send requests (format: string).
-</LI>
-<LI><code>SMTPC_socket</code><A NAME="377"></A>:
-communication socket between SMTPC and QMGR (format: string).
-</LI>
-<LI><code>SMTPS_socket</code><A NAME="378"></A>:
-communication socket between SMTPS and QMGR (format: string).
-</LI>
-</OL>
-
-<P>
-The sockets are currently Unix domain sockets only,
-hence the value is simply the pathname of the socket.
-
-<P>
-
-<H1><A NAME="SECTION00450000000000000000"></A>
-<A NAME="CommonConfigurationOptions"></A><BR>
-Common Configuration Options
-</H1>
-
-<P>
-There is currently one configuration option which is the same across
-all modules but is not specified in the global section because
-it is specific to the individual modules.
-
-<P>
-
-<OL>
-<LI><A NAME="CommonConfigurationOptions:log"></A><code>log</code><A NAME="384"></A>:
-this is a section with the following options:
-
-<OL>
-<LI><code>facility</code><A NAME="386"></A>:
-see <TT>syslog(3)</TT>
-for valid facilities, here are some valid options provided the OS offers them:
-<TT>daemon</TT>, <TT>mail</TT>, <TT>auth</TT>, <TT>local0</TT>, etc.
-</LI>
-<LI><code>ident</code><A NAME="392"></A>:
-identification string for <TT>openlog(3)</TT>, defaults to name of the modules.
-It might be useful to chose other identifiers, e.g., <TT>MeTA1</TT>
-or <TT>MeTA1QMGR</TT>.
-</LI>
-<LI><code>options</code><A NAME="396"></A>:
-options for <TT>openlog(3)</TT> (without the leading <TT>LOG_</TT>)
-as provided by the OS, e.g.,
-<TT>pid</TT> or <TT>ndelay</TT>.
-</LI>
-</OL>
-
-<P>
-Example:
-
-<P>
-<PRE>
-qmgr { log { facility = daemon; ident=meta1-qmgr; } }
-smtps { log { facility = mail; ident=meta1-MTA; } }
-</PRE>
-
-<P>
-Note: debug output is currently sent to <TT>stdout</TT>;
-<TT>syslog(3)</TT> is not used for debugging.
-
-<P>
-</LI>
-</OL>
-
-<P>
-All modules have an option to set the amount of logging
-(<code>log_level</code>) that should be done.
-The larger the value the more information is logged.
-For normal operation a value of 9 is recommended.
-During testing values of 12 to 14 are useful.
-
-<P>
-
-<H1><A NAME="SECTION00460000000000000000"></A>
-<A NAME="conffilesrelativepaths"></A><BR>
-Pathnames for Files, Directories, and Maps
-</H1>
-
-<P>
-Most names of files (including maps) and directories
-in the configuration file
-have a default name (compiled into the binary)
-without an absolute path, e.g., <TT>aliases.db</TT>.
-If a pathname is not explicitly set in the configuration file
-or does not use a absolute path (i.e., begins with a slash),
-then the default is relative to either
-
-<OL>
-<LI><A NAME="confdir"></A>the configuration directory:
-maps and configuration files,
-e.g., <TT>aliases.db</TT> and <code>cert_file</code>.
-</LI>
-<LI><A NAME="rundir"></A>the main queue directory:
-pathnames of sockets,
-and databases to store envelope information (IBDB, DEFEDB)
-or message contents (CDB).
-</LI>
-</OL>
-
-<P>
-The paths for files mentioned in case <A HREF="#confdir">1</A>
-are taken relative to the path of the configuration file
-which is passed via the <TT>-f</TT> option to the various modules.
-For example: if SMAR is started as
-
-<P>
-<TT>/usr/libexec/smar -f /etc/meta1/meta1.conf</TT>
-
-<P>
-then the pathname used for the aliases map is
-<TT>/etc/meta1/aliases.db</TT>.
-This applies to
-the SMAR maps aliases, mailertable, and access
-(<A HREF="#ConfigurationOptionsforSMAR">3.9.2</A>),
-the QMGR <TT>qmgr_conf</TT> map
-(<A HREF="#ConfigurationMapforQMGR">3.8.1</A>),
-and the STARTTLS related files and directories used by
-the SMTP server (<A HREF="#ConfigurationforSMTPServer">3.10</A>)
-and client (<A HREF="#ConfigurationforSMTPClient">3.11</A>).
-
-<P>
-The paths for files mentioned in case <A HREF="#rundir">2</A>
-are taken relative to the execution directory.
-All MeTA1 modules should be started (via MCP)
-in the main queue directory
-(default: <TT>/var/spool/meta1</TT>, see
-Section <A HREF="#InstallingMTA">2.4</A>).
-
-<P>
-See the various configuration options explained below how
-to override the defaults.
-Note: relative pathnames specified in the configuration file
-are (currently) always relative to the main queue directory.
-
-<P>
-
-<H1><A NAME="SECTION00470000000000000000"></A>
-<A NAME="ConfigurationforMCP"></A><BR>
-Configuration for MCP
-</H1>
-
-<P>
-Every section in a MeTA1 configuration file that refers
-to one of its four main components
-(QMGR, SMTPS, SMTPC, and SMAR;
-see Section <A HREF="#MainComponentsofMTA">1.1.1</A>)
-has some options that are relevant for MCP.
-These MCP options are:
-
-<P>
-
-<OL>
-<LI><code>start_action</code><A NAME="431"></A>:
-one of <code>nostartaccept</code>, <code>accept</code>, <code>pass</code>, <code>wait</code>
-(required).
-
-<P>
-</LI>
-<LI><code>listen_socket</code><A NAME="432"></A>:
-this is a subsection that specifies the socket on which
-a process should listen.
-It must be specified for any
-<code>start_action</code> except <code>wait</code>.
-There are two different socket types available:
-
-<P>
-
-<OL>
-<LI><code>type = inet</code>
-
-<OL>
-<LI><code>port</code><A NAME="435"></A>:
-port number on which process should listen (format: numeric).
-</LI>
-<LI><code>address</code><A NAME="436"></A>:
-IP address on which process should listen,
-if none is specified the process listens on all local (IPv4) addresses
-(format: IPv4 address).
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>type = unix</code>
-
-<OL>
-<LI><code>path</code><A NAME="439"></A>:
-pathname of Unix Domain socket on which process should listen
-(format: string).
-</LI>
-<LI><code>umask</code><A NAME="440"></A>:
-<TT>umask</TT> for socket (format: numeric).
-</LI>
-<LI><code>user</code><A NAME="442"></A>:
-owner of socket (format: string).
-</LI>
-<LI><code>group</code><A NAME="443"></A>:
-group of socket (format: string).
-</LI>
-</OL>
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>pass_fd_socket</code><A NAME="446"></A>:
-pathname of Unix Domain socket to pass a file descriptor to the process.
-</LI>
-<LI><code>user</code><A NAME="447"></A>:
-user name to run process.
-</LI>
-<LI><code>group</code><A NAME="448"></A>:
-group name to run process.
-</LI>
-<LI><code>restart_dependencies</code><A NAME="449"></A>:
-list of other MeTA1 components
-that need to be restarted when this one is restarted
-(or crashes).
-</LI>
-<LI><code>path</code><A NAME="450"></A>:
-path to program to execute
-(required).
-</LI>
-<LI><code>arguments</code><A NAME="451"></A>:
-arguments (argv), must start with name of program, see <TT>execv(2)</TT>
-(required).
-</LI>
-<LI><code>pass_id</code><A NAME="453"></A>:
-option to use to pass a unique, numeric identifier to the spawned
-process via the command line.
-The option will be inserted as first argument.
-Example:
-<PRE>
-smtpc { pass_id = "-i"; min_processes = 4; max_processes = 4;
-  path = /usr/libexec/smtpc; arguments = "smtpc -f meta1.conf"; }
-</PRE>
-will cause MCP to start four <TT>smtpc</TT> processes, each with the options
-<TT>-i <IMG
- WIDTH="26" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
- SRC="img3.png"
- ALT="$ID$"> -f meta1.conf</TT>
-where <IMG
- WIDTH="26" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
- SRC="img3.png"
- ALT="$ID$"> is replaced with a unique identifier.
-</LI>
-</OL>
-
-<P>
-Notes about <code>start_action</code>:
-
-<UL>
-<LI>For <code>start_action = pass</code>
-the option
-<code>pass_fd_socket</code> must be specified;
-in this case MCP binds to the specified socket (<code>listen_socket</code>)
-and passes it via the Unix domain socket
-(<code>pass_fd_socket</code>)
-to the started process.
-</LI>
-<LI>For <code>start_action = nostartaccept</code> MCP waits for incoming connections,
-and then starts a process to handle a single connection.
-</LI>
-<LI>For <code>start_action = accept</code> MCP binds to the socket
-and then starts a process to handle the connections
-without waiting for an actual request.
-</LI>
-<LI>For <code>start_action = wait</code> MCP simply starts the requested number of
-processes without passing them any open connections.
-This is intended for processes that do not communicate
-with external clients.
-</LI>
-</UL>
-
-<P>
-MCP is currently a generic control program that does <EM>not</EM> have any
-<I>builtin knowledge</I> about the various MeTA1 modules.
-Hence the MCP options for each MeTA1 component must be specified properly,
-there are no builtin defaults that could be associated with the
-functionality of the various MeTA1 modules.
-The default configuration file created by the installation program
-contains the correct defaults.
-These should only be changed if really necessary.
-
-<P>
-
-<H1><A NAME="SECTION00480000000000000000"></A>
-<A NAME="ConfigurationforQMGR"></A><BR>
-Configuration for QMGR
-</H1>
-
-<P>
-The following configuration options are valid for QMGR:
-
-<P>
-
-<OL>
-<LI><A NAME="ConfigurationforQMGR:AQmaxentries"></A><code>AQ_max_entries</code><A NAME="467"></A>:
-maximum number of entries in AQ (active queue)
-(unit: entries).
-Note: this value must be larger than the largest number of recipients
-accepted by a single transaction.
-</LI>
-<LI><A NAME="ConfigurationforQMGR:confmap"></A><code>conf</code><A NAME="469"></A>:
-name of configuration map (including extension), see
-Section <A HREF="#ConfigurationMapforQMGR">3.8.1</A> for details.
-See also Section <A HREF="#conffilesrelativepaths">3.6</A> about relative pathnames.
-</LI>
-<LI><code>control_socket</code><A NAME="472"></A>:
-<A NAME="ConfigurationforQMGR:controlsocket"></A>specify pathname of ``control'' socket (for querying and
-making requests).
-This socket can be used by the query/control program
-<TT>qmgrctl</TT>, see Section
-<A HREF="#RunningMTA:MiscellaneousPrograms:qmgrctl">4.6.3</A>.
-
-<P>
-</LI>
-<LI><A NAME="ConfigurationforQMGR:DEFEDB"></A>subsection <code>DEFEDB</code>:
-
-<OL>
-<LI><A NAME="ConfigurationforQMGR:DEFEDB:basedirectory"></A><code>base_directory</code><A NAME="479"></A>:
-home directory for DEFEDB.
-</LI>
-<LI><A NAME="ConfigurationforQMGR:DEFEDB:logdirectory"></A><code>log_directory</code><A NAME="481"></A>:
-log directory for DEFEDB.
-For better performance, this directory can be set to point to a different
-disk than the base directory of DEFEDB.
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI>subsection <code>DSN_handling</code>:
-
-<OL>
-<LI><code>merge_delay_max</code><A NAME="484"></A>:
-maximum time to wait for merging multiple DSNs into one
-(unit: s).
-</LI>
-<LI><code>flags</code><A NAME="485"></A>:
-configuration flags:
-
-<OL>
-<LI><code>header_only</code><A NAME="487"></A>:
-include only the headers in a DSN;
-by default the first bounce includes the entire message
-and subsequent ones include only the headers.
-</LI>
-<LI><A NAME="ConfigurationforQMGR:MIMEFormat"></A><code>MIME_Format</code><A NAME="489"></A>:
-use MIME to structure a DSN.
-Note: this is not (yet) a DSN in the format specified by RFC 3464
-[<A
- HREF="README.html#bib:rfc3464">MV03</A>].
-</LI>
-</OL>
-</LI>
-<LI><code>max_errors_per_DSN</code><A NAME="492"></A>:
-maximum number of error messages (failed recipients) in a bounce (DSN)
-(unit: entries).
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>double_bounce_address</code><A NAME="494"></A>:
-RFC 2821 address for double bounces;
-defaults to
-<code>&lt;postmaster@</code>hostname<code>&gt;</code>.
-</LI>
-<LI>subsection <code>IBDB</code>:
-
-<OL>
-<LI><code>max_commit_delay</code><A NAME="496"></A>:
-maximum time between commits to IBDB
-(unit: <IMG
- WIDTH="14" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
- SRC="img4.png"
- ALT="$\mu$">s)
-</LI>
-<LI><code>size</code><A NAME="497"></A>:
-maximum size of each IBDB file
-(unit: B).
-</LI>
-<LI><code>max_open_TAs</code><A NAME="498"></A>:
-maximum number of open transactions in IBDB before a commit is performed
-(unit: entries).
-</LI>
-</OL>
-
-<P>
-Note:
-the configuration file offers no way to specify a base directory
-for IBDB, however, the directory can be easily moved elsewhere and
-a (symbolic) link (<TT>ln(1)</TT>) can be added.
-
-<P>
-</LI>
-<LI>subsection <code>IQDB</code>:
-<A NAME="ConfigurationforQMGR:IQDB"></A>
-<OL>
-<LI><A NAME="ConfigurationforQMGR:IQDB:maxcacheentries"></A><code>max_cache_entries</code><A NAME="504"></A>:
-maximum number of entries in IQDB cache
-(unit: entries).
-This must be larger than the sum of all recipients in open transactions.
-</LI>
-<LI><code>hash_table_entries</code><A NAME="505"></A>:
-size of hash table for IQDB
-(unit: entries).
-This must be larger than <code>max_cache_entries</code>.
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>log_level</code><A NAME="507"></A>:
-logging level.
-</LI>
-<LI><code>min_disk_space</code><A NAME="508"></A>:
-minimum amount of free disk space
-(unit: KB).
-This value should be significantly larger than the maximum size of
-a message to be accepted by the SMTP server,
-it should be as large as the maximum message size multiplied by
-the maximum number of incoming connections.
-</LI>
-<LI><code>OCC_max_entries</code><A NAME="509"></A>:
-size of outgoing (SMTPC) connection cache
-(unit: entries).
-This should be large enough to keep track of outgoing connections
-over a time span that is at least as long as the maximum retry time.
-</LI>
-<LI><code>ok_disk_space</code><A NAME="510"></A>:
-amount of free disk space at which normal operation continues
-(unit: KB).
-Must be larger than
-<code>min_disk_space</code>.
-</LI>
-<LI><code>queue_return_timeout</code><A NAME="511"></A>:
-maximum time in queue
-(unit: s).
-</LI>
-<LI><code>queue_delay_timeout</code><A NAME="512"></A>:
-send delay warning (``delayed DSN'')
-if the mail is still in the queue
-after at least this duration
-(unit: s).
-To turn off delayed DSNs set this to a value bigger than
-<code>queue_return_timeout</code>.
-Note: based on the retry schedule the delayed DSN might be sent
-later than the option specifies.
-</LI>
-<LI><code>retry_max_delay</code><A NAME="513"></A>:
-maximum time for retrying a delivery
-(unit: s).
-</LI>
-<LI><code>retry_min_delay</code><A NAME="514"></A>:
-minimum time for retrying a delivery
-(unit: s).
-
-<P>
-</LI>
-<LI>subsection <code>smtpc</code>:
-
-<OL>
-<LI><code>initial_connections</code><A NAME="516"></A>:
-maximum initial number of outgoing connections to a single host
-(unit: entries).
-The sliding window for the slow start algorithm (see Section
-<A HREF="#QMGRslowstart">3.8.1</A>)
-is initialized with this value.
-</LI>
-<LI><code>max_connections</code><A NAME="518"></A>:
-maximum number of outgoing connections to a single host
-(unit: entries).
-</LI>
-<LI><code>lmtp_max_rcpts_per_transaction</code><A NAME="519"></A>:
-maximum number of recipients per transaction for mail sent via LMTP
-(unit: entries).
-</LI>
-<LI><code>smtp_max_rcpts_per_transaction</code><A NAME="520"></A>:
-maximum number of recipients per transaction for mail sent via (E)SMTP
-(unit: entries).
-
-<P>
-</LI>
-<LI><code>flags</code><A NAME="521"></A>:
-configuration flags:
-
-<OL>
-<LI><A NAME="ConfigurationforQMGR:smtpc:lookuprcptconf"></A><code>lookup_rcpt_conf</code><A NAME="524"></A>:
-Look up recipient configuration data
-(see Section <A HREF="#ConfigurationforSMTPClient:smtpcrcptconf">3.11.1</A>)
-in the access map
-(see Section <A HREF="#AccessMap">3.9.3</A>)
-
-<P>
-</LI>
-<LI><code>lookup_session_conf</code><A NAME="527"></A>:
-Look up session configuration data
-(see Section <A HREF="#ConfigurationforSMTPClient:smtpcrcptconf">3.11.1</A>)
-in the configuration map
-(see item <A HREF="#ConfigurationforQMGR:confmap">2</A>).
-
-<P>
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>rcpt_conf_lookup_flags</code><A NAME="531"></A>:
-If recipient configuration data
-(see item <A HREF="#ConfigurationforQMGR:smtpc:lookuprcptconf">17(e)i</A>)
-is looked up in the access map, then these flags determine which
-kind of lookups should be performed.
-
-<P>
-
-<OL>
-<LI><code>full_adress</code>: use the full address as key.
-</LI>
-<LI><code>detail_plus</code>: lookup also
-``<TT>user++@subdomain</TT>''.
-</LI>
-<LI><code>detail_star</code>: lookup also
-``<TT>user+*@subdomain</TT>''.
-</LI>
-<LI><code>star</code>: lookup also 
-``<TT>user*@subdomain</TT>''.
-</LI>
-<LI><code>domain</code>: lookup domain part.
-</LI>
-<LI><code>dotsubdomain</code>: iterate through subdomains.
-</LI>
-<LI><code>dot</code>: lookup also ``.''.
-</LI>
-</OL>
-
-<P>
-The default is to perform all lookups.
-
-<P>
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI>subsection <code>smtps</code>:
-
-<OL>
-<LI><code>max_connection_rate</code><A NAME="540"></A>:
-<A NAME="ConfigurationforQMGR:SMTPS:maxconnectionrate"></A>maximum incoming connection rate from a single host
-(unit: connections/60s).
-</LI>
-<LI><code>max_connections</code><A NAME="542"></A>:
-<A NAME="ConfigurationforQMGR:SMTPS:maxconnections"></A>maximum number of open incoming connection from a single host
-(unit: entries).
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>wait_for_client</code><A NAME="545"></A>:
-maximum amount of time to wait for a client to become available
-(unit: s)
-</LI>
-<LI><code>wait_for_server</code><A NAME="546"></A>:
-maximum amount of time to wait for a server to become available
-(unit: s)
-</LI>
-</OL>
-
-<P>
-
-<H2><A NAME="SECTION00481000000000000000"></A>
-<A NAME="ConfigurationMapforQMGR"></A><BR>
-Configuration Map for QMGR
-</H2>
-
-<P>
-QMGR implements a ``slow start'' algorithm to control the number of
-<A NAME="QMGRslowstart"></A>concurrent connections to one IP address.
-Initially, it will at most create a (small) number of open connections
-up to a specified initial limit.
-For each successful delivery, the allowed number is increased up
-to specified maximum limit.
-
-<P>
-For incoming connections, QMGR establishes two limits:
-the connection rate and the number of open connections.
-
-<P>
-The Berkeley DB hash map <TT>qmgr_conf.db</TT>
-(the file should be owned by <TT>meta1q</TT>)
-can have the following entries:
-
-<OL>
-<LI><TT>oci:</TT> this key specifies the initial number of
-concurrent outgoing connection to an IP address.
-</LI>
-<LI><TT>ocm:</TT> this key specifies the maximum number of
-concurrent outgoing connection to an IP address.
-</LI>
-<LI><TT>octo:</TT>
-specify the timeout for an entry in the outgoing connection cache.
-</LI>
-<LI><TT>icr:</TT> this key specifies the maximum rate for incoming connections
-(per 60s).
-</LI>
-<LI><TT>icm:</TT> this key specifies the maximum number of concurrently open
-incoming sessions.
-</LI>
-<LI><TT>smtpc_session_conf:</TT>
-see Section <A HREF="#ConfigurationforSMTPClient:smtpcrcptconf">3.11.1</A>
-</LI>
-</OL>
-
-<P>
-<TT>oci:</TT>, <TT>ocm:</TT>,
-<TT>icr:</TT>,
-<TT>icm:</TT>, and
-<TT>smtpc_session_conf:</TT>
-take an IP address/net as parameter such that
-the limits can be imposed per IP address/net.
-For example:
-
-<P>
-<PRE>
-oci:127.0.0.1      5
-ocm:127.0.0.1     10
-oci:10            10
-ocm:10            50
-oci:               1
-ocm:               4
-icr:10             5
-icr:127.0.0.1    100
-icm:127.0.0.1    120
-</PRE>
-
-<P>
-Note, however, that the limits apply only to single IP addresses,
-they are not aggregated for nets.
-That is, for the example every single host in the IP net 10.x.y.z can
-have a maximum incoming connection rate of 5 messages per minute.
-
-<P>
-The default values for these configuration options are set in the binary
-and can be changed via command line options
-or the configuration file (see Section <A HREF="#ConfigurationforQMGR">3.8</A>):
-
-<P>
-
-<OL>
-<LI><TT>-C n</TT> maximum number of concurrent connections to one IP address
-[default: 100]
-</LI>
-<LI><TT>-c n</TT> initial number of concurrent connections to one IP address
-[default: 10]
-</LI>
-<LI><TT>-O R=n</TT>     maximum connection rate per 60s (SMTPS) [default: 100]
-</LI>
-<LI><TT>-O O=n</TT>     maximum number of open connections (SMTPS) [default: 100]
-</LI>
-</OL>
-
-<P>
-
-<H1><A NAME="SECTION00490000000000000000"></A>
-<A NAME="ConfigurationforSMAR"></A><BR>
-Configuration for SMAR
-</H1>
-
-<P>
-
-<H2><A NAME="SECTION00491000000000000000"></A>
-<A NAME="DeclaringMapsforSMAR"></A><BR>
-Declaring Maps for SMAR
-</H2>
-
-<P>
-In general, maps must be declared before they can get used.
-Each map declaration in a configuration file is
-a named subsection - the name is used for later references -
-<TT>map</TT> in the <TT>smar</TT> section with the following options:
-
-<OL>
-<LI><code>type</code><A NAME="583"></A>:
-type of the map; currently one of
-<TT>hash</TT> (Berkeley DB hash),
-<TT>cdb</TT> (tinycdb),
-<TT>sequence</TT>,
-<TT>socket</TT>,
-and
-<TT>passwd</TT>.
-</LI>
-<LI><code>file</code><A NAME="589"></A>:
-the filename of
-the <TT>db</TT> file (including the extension)
-(for type <TT>hash</TT>, <TT>cdb</TT>).
-</LI>
-<LI><code>mapname</code><A NAME="593"></A>:
-name of the map used in the protocol
-(type <TT>socket</TT> only).
-</LI>
-<LI><code>address</code><A NAME="595"></A>:
-IPv4 address of inet socket.
-(type <TT>socket</TT> only).
-</LI>
-<LI><code>path</code><A NAME="597"></A>:
-the pathname of the Unix domain socket
-(for type <TT>socket</TT>).
-</LI>
-<LI><code>port</code><A NAME="599"></A>:
-port for inet socket
-(type <TT>socket</TT> only).
-</LI>
-<LI><code>maps</code><A NAME="601"></A>:
-list of map names to use in the map
-(type <TT>sequence</TT> only).
-</LI>
-</OL>
-
-<P>
-Note:
-for <TT>socket</TT> maps either
-a Unix domain socket (<code>path</code>)
-or an inet socket (<code>address</code> and <code>port</code>)
-must be specified.
-
-<P>
-Example:
-
-<P>
-<PRE>
-map localusers { type = hash; file = "/etc/meta1/localusr.db"; }
-map otherusers { type = cdb; file = "/etc/meta1/otherusr.cdb"; }
-map password { type = passwd; }
-map seq1 { type = sequence; maps = { localusers, otherusers }; }
-map seq2 { type = sequence; maps = { password, otherusers }; }
-</PRE>
-
-<P>
-
-<H2><A NAME="SECTION00492000000000000000"></A>
-<A NAME="ConfigurationOptionsforSMAR"></A><BR>
-Configuration Options for SMAR
-</H2>
-
-<P>
-The following configuration options are valid for SMAR:
-
-<P>
-
-<OL>
-<LI><code>access_map</code><A NAME="610"></A>:
-this is a subsection that specifies the access control map.
-See Section <A HREF="#AccessMap">3.9.3</A> for details.
-
-<P>
-Note: only one of <code>file</code>
-(<A HREF="#ConfigurationOptionsforSMAR:access:file">1a</A>)
-and <code>name</code>
-(<A HREF="#ConfigurationOptionsforSMAR:access:name">1b</A>)
-must be specified.
-
-<P>
-
-<OL>
-<LI><code>file</code><A NAME="615"></A>:
-filename of access map (including extension)
-[default: <TT>access.db</TT>].
-<A NAME="ConfigurationOptionsforSMAR:access:file"></A></LI>
-<LI><code>name</code><A NAME="618"></A>:
-name of access map
-<A NAME="ConfigurationOptionsforSMAR:access:name"></A>.
-This can be used if a different map type should be used,
-in which case the map must be declared as explained in
-Section <A HREF="#DeclaringMapsforSMAR">3.9.1</A>.
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>address_delimiter</code><A NAME="622"></A>:
-list of delimiters (specified as string) for address extensions in local part,
-[default: <TT>"+"</TT>].
-Note: if <code>address_delimiter</code> has more than one character,
-the first one that is found in the local part of an address is
-used as delimiter in map lookups (see Section <A HREF="#LookupOrders">3.12</A>).
-For example:
-if the following option is used in the configuration file:
-
-<P>
-<code>address_delimiter = "/_-";</code>
-
-<P>
-then for the address
-``<TT><IMG
- WIDTH="16" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
- SRC="img5.png"
- ALT="$&lt;$">user/ext-list@dom.ain<IMG
- WIDTH="16" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
- SRC="img6.png"
- ALT="$&gt;$"></TT>'',
-the delimiter for map lookups is ``<TT>/</TT>''
-and the address detail is ``<TT>ext-list</TT>'',
-while for the address
-``<TT><IMG
- WIDTH="16" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
- SRC="img5.png"
- ALT="$&lt;$">user-ext_list@dom.ain<IMG
- WIDTH="16" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
- SRC="img6.png"
- ALT="$&gt;$"></TT>'',
-the delimiter for map lookups is ``<TT>-</TT>''
-and the address detail is ``<TT>ext_list</TT>''.
-
-<P>
-</LI>
-<LI><code>aliases</code><A NAME="631"></A>:
-this is a subsection that specifies the parameters for aliases.
-
-<P>
-Note: only one of <code>file</code>
-(<A HREF="#ConfigurationOptionsforSMAR:aliases:file">3a</A>)
-and <code>name</code>
-(<A HREF="#ConfigurationOptionsforSMAR:aliases:name">3b</A>)
-must be specified.
-
-<P>
-
-<OL>
-<LI><code>file</code><A NAME="635"></A>:
-filename of aliases map (including extension)
-[default: <TT>aliases.db</TT>].
-<A NAME="ConfigurationOptionsforSMAR:aliases:file"></A></LI>
-<LI><code>name</code><A NAME="638"></A>:
-name of aliases map
-<A NAME="ConfigurationOptionsforSMAR:aliases:name"></A>.
-This can be used if a different map type should be used,
-in which case the map must be declared as explained in
-Section <A HREF="#DeclaringMapsforSMAR">3.9.1</A>.
-</LI>
-<LI><code>flags</code><A NAME="641"></A>:
-<A NAME="ConfigurationOptionsforSMAR:aliases:flags"></A>
-<OL>
-<LI><code>localpart</code><A NAME="644"></A>:
-the aliases map contains only localparts of addresses
-and those are only looked up for local addresses.
-</LI>
-<LI><A NAME="ConfigurationOptionsforSMAR:aliases:flags:localdomains"></A><code>local_domains</code><A NAME="646"></A>:
-the aliases map contains fully qualified addresses
-which are only looked up for local addresses.
-This can be used similar to virtual users in sendmail 8, e.g.,<TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-vuser1@virt1.tld: </TT></TD>
-<TD ALIGN="LEFT"><TT> user1 </TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-vuser2@virt1.tld: </TT></TD>
-<TD ALIGN="LEFT"><TT> user2 </TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-vuser3@virt2.tld: </TT></TD>
-<TD ALIGN="LEFT"><TT> user3 </TT></TD>
-</TR>
-</TABLE>
-
-<P>
-</LI>
-<LI><code>all_domains</code><A NAME="650"></A>:
-the aliases map contains fully qualified addresses
-which are looked up for all domains.
-</LI>
-<LI><code>implicitly_match_detail</code><A NAME="651"></A>:
-the items are looked up according to the algorithm
-specified in Section <A HREF="#LookupOrdersinMaps">3.12.1</A>.
-and additionally
-<TT>+detail</TT> is implicitly matched when the pattern is
-``<TT>user@hostname</TT>''.
-That is, it overrides the default matching explained in case
-<A HREF="#LookupOrdersinMaps:userathostname">1e</A>
-in Section
-<A HREF="#LookupOrdersinMaps">3.12.1</A>.
-</LI>
-<LI><code>replace_macros</code><A NAME="657"></A>:
-replace macros in the RHS of the map entries by the appropriate value,
-see Section
-<A HREF="#MacroReplacementsinRHS">3.12.3</A>.
-</LI>
-<LI><code>preserve_domain</code><A NAME="659"></A>:
-if the RHS of an entry is an unqualified address, do not append
-the local hostname to it but the domain of the original address,
-i.e., preserve the original domain.
-</LI>
-</OL>
-</LI>
-</OL>
-</LI>
-<LI><code>DNS</code><A NAME="662"></A>:
-this subsection contains DNS related options.
-
-<OL>
-<LI><A NAME="nameservers"></A><code>nameservers</code><A NAME="665"></A>:
-list of up to four IPv4
-addresses<A NAME="tex2html8"
-  HREF="#foot1618"><SUP>3.2</SUP></A>of nameservers.
-Note: it is important that all of these nameserves work properly.
-Currently they are used ``round robin'' without excluding nameservers
-that do not answer<A NAME="tex2html9"
-  HREF="#foot667"><SUP>3.3</SUP></A>.
-</LI>
-<LI><code>retries</code><A NAME="668"></A>:
-maximum number of retries.
-A value of 0 means one query only, i.e., no retry.
-</LI>
-<LI><code>timeout</code><A NAME="669"></A>:
-the default timeout for a single DNS query
-(unit: s).
-Notes:
-
-<UL>
-<LI>the timeout for a DNS request is the product of the number of tries
-and the individual timeout, i.e.,
-<TT>(retries + 1) * timeout</TT>.
-</LI>
-<LI>this value is only the default timeout
-which can be overridden by an application.
-For example, QMGR dynamically increases the timeout for addresses
-which did not resolve in earlier tries.
-</LI>
-</UL>
-</LI>
-<LI><code>flags</code><A NAME="673"></A>:
-The flag
-<code>use_resolvconf</code><A NAME="674"></A>
-causes the list of nameservers (see <A HREF="#nameservers">4a</A>)
-to be read from <TT>/etc/resolv.conf</TT>.
-This flag is set by default unless the
-<code>nameservers</code> option is used.
-Note: the list of nameservers is not updated when
-<TT>/etc/resolv.conf</TT> is changed,
-<TT>smar</TT> needs to be restarted to achieve that.
-
-<P>
-More flags can be found in Section <A HREF="#AdvancedConfigurationforSMAR">8.4</A>.
-
-<P>
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>dnsbl</code><A NAME="681"></A>:
-specify a DNS based blacklist<A NAME="tex2html10"
-  HREF="#foot1619"><SUP>3.4</SUP></A>.
-This section can be specified multiple times<A NAME="tex2html11"
-  HREF="#foot1620"><SUP>3.5</SUP></A>;
-it has the following required options:
-
-<UL>
-<LI><code>domain</code><A NAME="685"></A>:
-specify the domain to use for DNS lookups, e.g.,
-<TT>dnsbl.tld</TT>.
-</LI>
-<LI><code>tag</code><A NAME="687"></A>:
-specify the tag to use for lookups in the access map
-(which must be enabled, see
-Section <A HREF="#ConfigurationforSMTPServer">3.10</A>,
-<A HREF="#ConfigurationforSMTPServer:access">3b</A>).
-</LI>
-</UL>
-The client IPv4 address <I>A.B.C.D</I> is looked up via DNS as
-<I>D.C.B.A.<code>domain</code></I> querying for an A record.
-If an A record <I>W.X.Y.Z</I> is found, then it is looked up in
-the access map as
-<code>tag</code>:<I>W.X.Y.Z</I>.
-for temporary and permanent DNS lookup failures the entries that will
-be checked in the access map are
-<code>tag</code>:<TT>temp</TT> and
-<code>tag</code>:<TT>perm</TT>, respectively.
-
-<P>
-Notes:
-
-<UL>
-<LI>DNS lookups in blacklists can be disabled via entries in the access
-map using the tag <TT>cltaddr</TT>, see Section
-<A HREF="#ConfigurationMapsforSMAR">3.9.3</A>.
-</LI>
-<LI>Some DNS blacklists return multiple A records.
-For those the A records are checked
-(in the order returned by the DNS server)
-until an access map entry is found.
-This is an intermediate solution as it may cause random results
-if multiple access map entries for a DNS blacklist exist.
-However, as long as all of them have the same return code type
-(i.e., temporary or permanent), this behavior is sufficient.
-</LI>
-<LI>currently a colon is added as delimiter after <code>tag</code>,
-this may be removed in later versions to allow for more flexibility;
-e.g., the configuration option itself can include a delimiter.
-</LI>
-</UL>
-
-<P>
-The access map entry should have one of the usual rejection RHSs
-as explained in <A HREF="#ConfigurationMapsforSMAR:access:RHS">3.9.3</A>.
-Example:
-configuration file:
-<PRE>
-smar { dnsbl { domain = dnsbl.tld; tag = dnsbltld; } }
-</PRE>
-
-<P>
-access map:
-<PRE>
-dnsbltld:127.0.0.1  error:550 5.7.1 listed at dnsbl.tld as open relay
-dnsbltld:127.0.0.2  error:550 5.7.1 listed at dnsbl.tld as spam source
-dnsbltld:127.0.0.9  error:451 4.7.1 listed at dnsbl.tld as suspicious
-dnsbltld:temp       error:451 4.7.1 temporary lookup failure at dnsbl.tld
-</PRE>
-
-<P>
-If multiple DNS based blacklists are specified, the DNS queries are
-made concurrently but the lookups in the access map are performed
-in the order in which the blacklists are given;
-the first successful lookup is used as result,
-no further priorization is performed.
-
-<P>
-</LI>
-<LI><code>greylisting</code><A NAME="706"></A>:
-<A NAME="ConfigurationOptionsforSMAR:greylisting"></A>specify greylisting options,
-see Section <A HREF="#Greylisting">3.9.4</A> for details.
-
-<OL>
-<LI><code>grey_wait</code><A NAME="710"></A>:
-how long before greylisted can be confirmed.
-</LI>
-<LI><code>grey_expire</code><A NAME="711"></A>:
-timeout for greylisted entries (did not confirm within that time).
-</LI>
-<LI><code>white_expire</code><A NAME="712"></A>:
-expire whitelisted entries after this time if necessary.
-</LI>
-<LI><code>white_timeout</code><A NAME="713"></A>:
-force whitelisted entries to reconfirm after this time.
-</LI>
-<LI><code>main_DB_name</code><A NAME="714"></A>:
-name of main database (including .db extension).
-</LI>
-<LI><code>secondary_DB_name</code><A NAME="715"></A>:
-name of secondary database (including .db extension).
-</LI>
-<LI><code>expire_limit</code><A NAME="716"></A>:
-try to expire entries when this limit is reached.
-</LI>
-<LI><code>netmask</code><A NAME="717"></A>:
-by default the entire IPv4 address is used as a key,
-however, by specifying a netmask, e.g., <TT>0xFFFFFF00</TT>,
-the least significant bits can be cut off.
-This can be used to deal with server farms, see Section
-<A HREF="#PossibleProblemswithGreylisting">3.9.4</A>,
-e.g., if those are in the same class C subnet.
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><A NAME="ConfigurationforSMAR:localusers"></A><code>local_user_map</code><A NAME="722"></A>:
-this is a subsection that specifies a map of valid local addresses.
-
-<OL>
-<LI><code>name</code><A NAME="724"></A>:
-Name of the map of valid local addresses;
-the map must have been declared as explained in
-Section <A HREF="#DeclaringMapsforSMAR">3.9.1</A>.
-</LI>
-<LI><code>flags</code><A NAME="726"></A>:
-
-<OL Type="i">
-<LI><code>implicitly_match_detail</code><A NAME="728"></A>:
-<TT>+detail</TT> is implicitly matched when the pattern is
-``<TT>user@hostname</TT>''.
-That is, it overrides the default matching explained in case
-<A HREF="#LookupOrdersinMaps:userathostname">1e</A>
-in Section
-<A HREF="#LookupOrdersinMaps">3.12.1</A>.
-</LI>
-</OL>
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>log_level</code><A NAME="735"></A>:
-logging level.
-
-<P>
-</LI>
-<LI><code>mailertable</code><A NAME="736"></A>:
-<A NAME="mt"></A>this is a subsection that specifies a mailertable,
-currently you can specify exactly one of the following two options:
-
-<OL>
-<LI><A NAME="mt:file"></A><code>file</code><A NAME="740"></A>:
-filename of mailertable
-[default: <TT>mt</TT>].
-In this case a plain text file is read during startup
-and placed in an internal hash table. </LI>
-<LI><A NAME="mt:name"></A><code>name</code><A NAME="743"></A>:
-name of a mailertable map that has been declared before
-(see Section <A HREF="#DeclaringMapsforSMAR">3.9.1</A>).
-
-<P>
-</LI>
-<LI><code>flags</code><A NAME="745"></A>:
-these flags can be used to select a subset of the matching described in
-Section <A HREF="#LookupOrdersinMaps">3.12.1</A>.
-
-<OL>
-<LI><code>full_adress</code>: use the full address as key.
-</LI>
-<LI><code>detail_plus</code>: lookup also
-``<TT>user++@subdomain</TT>''.
-</LI>
-<LI><code>detail_star</code>: lookup also
-``<TT>user+*@subdomain</TT>''.
-</LI>
-<LI><code>star</code>: lookup also 
-``<TT>user*@subdomain</TT>''.
-</LI>
-<LI><code>domain</code>: lookup domain part.
-</LI>
-<LI><code>dotsubdomain</code>: iterate through subdomains.
-</LI>
-<LI><code>dot</code>: lookup also ``.''.
-</LI>
-</OL>
-
-<P>
-The default is
-<code>domain</code>,
-<code>dotsubdomain</code>,
-<code>dot</code>.
-
-<P>
-</LI>
-</OL>
-
-<P>
-The format of entries in the map is explained in
-Section <A HREF="#mailertable">3.9.3</A>.
-Note:
-reloading mailertable
-(Section <A HREF="#ReloadingMaps">4.7</A>)
-while SMAR is running can be done
-only if it is declared as Berkeley DB
-(case <A HREF="#mt:name">9b</A> with the proper map)
-</LI>
-</OL>
-
-<P>
-
-<H2><A NAME="SECTION00493000000000000000"></A>
-<A NAME="ConfigurationMapsforSMAR"></A><BR>
-Configuration Maps for SMAR
-</H2>
-
-<P>
-SMAR requires a mailertable, and it can make use of
-an alias map
-as well as an access map,
-all of which are described in the subsequent sections.
-
-<P>
-
-<H3><A NAME="SECTION00493100000000000000"></A>
-<A NAME="AccessMap"></A><BR>
-Access Map
-</H3>
-
-<P>
-To activate the access map
-the flag <code>access</code>
-(see Section <A HREF="#ConfigurationforSMTPServer">3.10</A>,
-item <A HREF="#ConfigurationforSMTPServer:access">3b</A>)
-(or the option <TT>-a</TT>)
-must be given to the SMTP servers.
-All entries consist of a left hand side (LHS, key)
-which in turn has a tag and a (partial) address
-and a right hand side (RHS, value).
-Valid tags are:
-
-<P>
-<TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT">Tag</TD>
-<TD ALIGN="LEFT">refers to</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>from:</TT></TD>
-<TD ALIGN="LEFT">envelope sender address (MAIL)</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>to:</TT></TD>
-<TD ALIGN="LEFT">envelope recipient address (RCPT)</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>cltaddr:</TT></TD>
-<TD ALIGN="LEFT">client IPv4 address</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>cltname:</TT></TD>
-<TD ALIGN="LEFT">client host name</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>cltresolve:</TT></TD>
-<TD ALIGN="LEFT">result of forward and reverse client lookup</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>mxbadip:</TT></TD>
-<TD ALIGN="LEFT">IPv4 addresses that are not allowed for MX - A records</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>certissuer:</TT></TD>
-<TD ALIGN="LEFT">DN of CA cert that signed that presented cert</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>certsubject:</TT></TD>
-<TD ALIGN="LEFT">DN of presented cert</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>protectedrcpt:</TT></TD>
-<TD ALIGN="LEFT">restrictions for recipient address
-	(see Section <A HREF="#ProtectingRecipients">3.10.3</A>)</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>smtps_session_conf:</TT></TD>
-<TD ALIGN="LEFT">configuration options for a session in the SMTP server
-(see Section <A HREF="#ConfigurationforSMTPServer:smtpssessionconf">3.10.1</A>)</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>smtpc_rcpt_conf:</TT></TD>
-<TD ALIGN="LEFT">configuration options for recipient in the SMTP client
-(see Section <A HREF="#ConfigurationforSMTPClient:smtpcrcptconf">3.11.1</A>)</TD>
-</TR>
-</TABLE>
-
-<P>
-Valid addresses for <TT>from:</TT> and <TT>to:</TT> are RFC 2821 addresses
-without the angle backets (<TT>localpart@domain</TT>)
-as well as partial addresses in the form
-<TT>localpart</TT> and <TT>@domain</TT>, i.e.,
-domains must be preceeded with an at (<TT>@</TT>) sign.
-Valid addresses for <TT>cltaddr:</TT> and <TT>mxbadip:</TT>
-are IPv4 addresses and (sub)nets,
-and for <TT>cltname:</TT> host names.
-The client host name is determined by performing a reverse lookup
-(PTR record) for its IP address.
-The resulting names are looked up as A records.
-Only if one of the A records matches the client IP address,
-the host name is set.
-Note: the host name has a trailing dot after DNS resolution,
-this dot must be included in the entry.
-The result of these lookups can be used for
-<TT>cltresolve:</TT> where the following keys are valid:
-
-<P>
-<TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>ok</TT></TD>
-<TD ALIGN="LEFT">reverse and forward lookup match</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>no</TT></TD>
-<TD ALIGN="LEFT">reverse and forward lookup do not match</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>tempptr</TT></TD>
-<TD ALIGN="LEFT">reverse lookup (PTR) caused a temporary error</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>tempa</TT></TD>
-<TD ALIGN="LEFT">forward lookup (A) caused a temporary error</TD>
-</TR>
-</TABLE>
-
-<P>
-Valid values for RHS are
-<A NAME="ConfigurationMapsforSMAR:access:RHS"></A>
-<P>
-<TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>relay</TT></TD>
-<TD ALIGN="LEFT">allow relaying; currently only for <TT>to:</TT>, <TT>cltaddr:</TT>,</TD>
-</TR>
-<TR><TD ALIGN="LEFT">&nbsp;</TD>
-<TD ALIGN="LEFT"><TT>cltname:</TT>, <TT>certissuer:</TT>, and <TT>certsubject:</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>ok</TT></TD>
-<TD ALIGN="LEFT">accept command</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>error:</TT><I>XYZ</I> <I>A.B.C.D</I> <I>text</I></TD>
-<TD ALIGN="LEFT">return an error consisting of SMTP reply code <I>XYZ</I>,</TD>
-</TR>
-<TR><TD ALIGN="LEFT">&nbsp;</TD>
-<TD ALIGN="LEFT">enhanced status code <I>A.B.C.D</I>, and <I>text</I>,</TD>
-</TR>
-<TR><TD ALIGN="LEFT">&nbsp;</TD>
-<TD ALIGN="LEFT">i.e., the part after <TT>error:</TT> is returned to the client.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>reject</TT></TD>
-<TD ALIGN="LEFT">same as <TT>error:550 5.7.0 Rejected.</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>discard</TT></TD>
-<TD ALIGN="LEFT">accept command but silently discard its effects.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>cont</TT></TD>
-<TD ALIGN="LEFT">stop current check (e.g., map lookup), but continue others.</TD>
-</TR>
-</TABLE>
-
-<P>
-Some tags may allow for other RHS values, these are explained
-when those tags are discussed in more detail.
-
-<P>
-<A NAME="ConfigurationMapsforSMAR:access:quick"></A>Optionally a RHS can be preceeded by the modifier <TT>quick:</TT>.
-For an <TT>error:</TT> entry it causes an immediate rejection
-when the entry matches.
-Otherwise rejections can be delayed to the <TT>RCPT</TT> stage
-- if SMTPS is configured appropriately,
-see Section <A HREF="#ConfigurationforSMTPServer">3.10</A>,
-item <A HREF="#ConfigurationforSMTPServer:delaychecks">3c</A> -
-and can be overridden using the modifier <TT>quick:</TT> together with
-<TT>ok</TT> or <TT>relay</TT> in the access map
-for the recipient address with the <TT>to:</TT> tag.
-Using the modifier <TT>quick:</TT> together with <TT>relay</TT> for
-an entry with the <TT>cltaddr:</TT> tag causes it to override
-all other access map checks.
-<TT>quick:ok</TT> for an entry with the <TT>cltaddr:</TT> tag causes it to override
-other access map checks unless they are necessary to allow relaying.
-
-<P>
-Domain names (<TT>@domain</TT>) must have an exact match,
-subdomain matching can be specified with a leading dot, i.e.,
-<TT>@.domain</TT>,
-see Section <A HREF="#LookupOrdersinMaps">3.12.1</A>.
-
-<P>
-Examples:
-
-<P><TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-cltresolve:tempptr	</TT></TD>
-<TD ALIGN="LEFT"><TT> error:451 4.7.1 reverse lookup failed	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-mxbadip:127.0.0.1	</TT></TD>
-<TD ALIGN="LEFT"><TT> error:551 5.7.1 Bad IP address 127.0.0.1 in MX/A list	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-mxbadip:192.168.255.255	</TT></TD>
-<TD ALIGN="LEFT"><TT> error:551 5.7.1 Bad IP address 192.168.255.255 in MX/A list	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-from:@spammer.domain	</TT></TD>
-<TD ALIGN="LEFT"><TT> error:551 5.7.1 No spammers	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-from:@.spammer.domain	</TT></TD>
-<TD ALIGN="LEFT"><TT> error:551 5.7.1 No spammers in subdomains either </TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-to:root			</TT></TD>
-<TD ALIGN="LEFT"><TT> error:551 5.7.1 No mail to root	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-to:abuse		</TT></TD>
-<TD ALIGN="LEFT"><TT> quick:ok	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-cltaddr:10		</TT></TD>
-<TD ALIGN="LEFT"><TT> error:551 5.7.1 No direct mail from 10.x.y.z	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-cltname:spammer.domain.	</TT></TD>
-<TD ALIGN="LEFT"><TT> quick:error:551 5.7.1 No mail from spammers	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-to:@primary.domain	</TT></TD>
-<TD ALIGN="LEFT"><TT> relay	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-cltaddr:10		</TT></TD>
-<TD ALIGN="LEFT"><TT> relay	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-cltaddr:127.0.0.1	</TT></TD>
-<TD ALIGN="LEFT"><TT> quick:relay	</TT></TD>
-</TR>
-</TABLE>
-
-<P>
-
-<H4><A NAME="SECTION00493110000000000000"></A>
-<A NAME="access:discard"></A><BR>
-Discard
-</H4>
-
-<P>
-The effect of <TT>discard</TT> depends on the protocol stage
-in which it is returned.
-If it is returned for a session, e.g., when a client connects,
-all transactions in the session are discarded.
-If it is returned for <TT>MAIL</TT> only that transaction is discarded.
-If it is returned for <TT>RCPT</TT> only that recipient is discarded;
-however, if no valid recipients are left, the entire transaction is discarded.
-Moreover, if <TT>quick:discard</TT> is returned for one recipient
-the entire transaction is discarded too.
-
-<P>
-
-<H3><A NAME="SECTION00493200000000000000"></A>
-<A NAME="mailertable"></A><BR>
-Mailertable
-</H3>
-
-<P>
-The address resolver implements an asynchronous DNS resolver and
-by default it uses a file called <TT>mt</TT> (mailertable)
-(see Section <A HREF="#ConfigurationOptionsforSMAR">3.9.2</A>, item <A HREF="#mt">9</A>)
-which consists of domain
-parts of e-mail addresses and corresponding IP addresses
-(in square brackets) or domain/host names.
-An entry consists (as usual in a map) of a LHS and a RHS;
-in the case of a flat text file, i.e., case <A HREF="#mt:file">9a</A> of
-Section <A HREF="#ConfigurationOptionsforSMAR">3.9.2</A>,
-those are separated by one or more whitespace characters.
-
-<P>
-<TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT">LHS</TD>
-<TD ALIGN="CENTER">::=</TD>
-<TD ALIGN="LEFT">[ local "@" ] [ "." ] hostname <IMG
- WIDTH="8" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
- SRC="img2.png"
- ALT="$\vert$"> "."</TD>
-</TR>
-<TR><TD ALIGN="LEFT">RHS</TD>
-<TD ALIGN="CENTER">::=</TD>
-<TD ALIGN="LEFT">[[ port "<code>^</code>" ] ["<TT>esmtp:</TT>"]] hosts
-	<IMG
- WIDTH="8" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
- SRC="img2.png"
- ALT="$\vert$"> "<TT>lmtp:</TT>"
-	<IMG
- WIDTH="8" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
- SRC="img2.png"
- ALT="$\vert$"> port "<code>^</code>"<TT>lmtp:</TT>" hosts</TD>
-</TR>
-<TR><TD ALIGN="LEFT">port</TD>
-<TD ALIGN="CENTER">::=</TD>
-<TD ALIGN="LEFT">integer</TD>
-</TR>
-<TR><TD ALIGN="LEFT">hosts</TD>
-<TD ALIGN="CENTER">::=</TD>
-<TD ALIGN="LEFT">hostname  <IMG
- WIDTH="8" HEIGHT="32" ALIGN="MIDDLE" BORDER="0"
- SRC="img2.png"
- ALT="$\vert$"> iplist</TD>
-</TR>
-<TR><TD ALIGN="LEFT">iplist</TD>
-<TD ALIGN="CENTER">::=</TD>
-<TD ALIGN="LEFT">"[" IPv4-address "]" [ " " iplist ]</TD>
-</TR>
-</TABLE>
-
-<P>
-The key (LHS) is an address (without angle brackets),
-a hostname, or a dot (denoting the default entry),
-the value (RHS) consists of an optional port number,
-an optional (<TT>esmtp</TT>) mailer
-and a hostname or a list of IPv4 addreses (in square brackets)
-which are separated by spaces.
-If LMTP should be used, then the <TT>lmtp</TT> mailer must be selected.
-There are two cases: just <TT>lmtp:</TT> by itself means the delivery agent
-will use the Unix domain socket specified in the configuration file
-(see Section <A HREF="#ConfigurationforSMTPClient">3.11</A>,
-item <A HREF="#ConfigurationforSMTPClient:LMTPsocket">2</A>),
-if an inet socket should be used then a port and a host
-must be specified.
-A hostname is subject to MX lookups.
-
-<P>
-Example:
-
-<P><TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-localhost           </TT></TD>
-<TD ALIGN="LEFT"><TT> lmtp:	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-SPAM.FILTER.DOMAIN  </TT></TD>
-<TD ALIGN="LEFT"><TT> 2525<code>^</code>esmtp:[127.0.0.1]	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-LMTPHOST.MY.DOMAIN  </TT></TD>
-<TD ALIGN="LEFT"><TT> 525<code>^</code>lmtp:[10.11.12.13]	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-MY.DOMAIN           </TT></TD>
-<TD ALIGN="LEFT"><TT> esmtp:[10.1.2.3]	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-ANOTHER.DOMAIN      </TT></TD>
-<TD ALIGN="LEFT"><TT> esmtp:MTA.SERVER	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-.TLD                </TT></TD>
-<TD ALIGN="LEFT"><TT> esmtp:GATE.WAY	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-.                   </TT></TD>
-<TD ALIGN="LEFT"><TT> esmtp:SMART.HOST	</TT></TD>
-</TR>
-</TABLE>
-
-<P>
-Note: currently this file must exist, even if there are no entries
-(it is created during installation).
-
-<P>
-
-<H3><A NAME="SECTION00493300000000000000"></A>
-<A NAME="Aliases"></A><BR>
-Aliases
-</H3>
-
-<P>
-To specify aliases for local addresses the map <TT>aliases.db</TT>
-(Section <A HREF="#ConfigurationOptionsforSMAR">3.9.2</A>, item
-<A HREF="#ConfigurationOptionsforSMAR:aliases:file">3a</A>)
-is used.
-The key in the map must be
-
-<UL>
-<LI>the local part of a valid (local) e-mail address,
-</LI>
-<LI>or a complete local e-mail address,
-</LI>
-<LI>or any e-mail address,
-</LI>
-</UL>
-based on the <code>flags</code> of the <code>aliases</code> option
-(see Section <A HREF="#ConfigurationOptionsforSMAR">3.9.2</A>,
-<A HREF="#ConfigurationOptionsforSMAR:aliases:flags">3c</A>).
-The value (RHS) for an alias entry
-is a list of one or more RFC 2821 addresses
-(including the angle brackets)
-separated by spaces (<EM>not</EM> commas).
-If the RHS has only a single address
-which does not start with an angle bracket,
-then it is converted into an RFC 2821 address by SMAR,
-i.e., SMAR will append the hostname
-of the machine and put angle brackets around the string.
-Example:
-
-<P><TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-myalias: localuser	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-mylist:  &lt;user1@my.dom&gt; &lt;user2@my.dom&gt; &lt;localuser@local.host&gt;	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-owner-mylist:  someuser	</TT></TD>
-</TR>
-</TABLE>
-
-<P>
-For mailing lists, the <TT>owner-</TT> notation is supported, i.e.,
-if there are aliases <I>list</I> and <TT>owner-</TT><I>list</I> then mail
-sent to <I>list</I> will use <TT>owner-</TT><I>list</I> as envelope sender address;
-the original domain will be preserved.
-
-<P>
-Example for the flag 
-<code>local_domains</code> (see
-<A HREF="#ConfigurationOptionsforSMAR">3.9.2</A>,
-<A HREF="#ConfigurationOptionsforSMAR:aliases:flags:localdomains">3(c)ii</A>).
-Let two domains be local, i.e., in mailertable:
-
-<P><TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-first.dom     </TT></TD>
-<TD ALIGN="LEFT"><TT> lmtp:	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-second.dom     </TT></TD>
-<TD ALIGN="LEFT"><TT> lmtp:	</TT></TD>
-</TR>
-</TABLE>
-
-<P>
-and these entries be in aliases:
-
-<P><TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-myalias@first.dom: user1	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-another@second.dom: user2	</TT></TD>
-</TR>
-</TABLE>
-
-<P>
-Then mail to
-<TT>&lt;myalias@second.dom&gt;</TT> and
-<TT>&lt;another@first.dom&gt;</TT>
-would be rejected while mail to
-<TT>&lt;myalias@first.dom&gt;</TT> or
-<TT>&lt;another@second.dom&gt;</TT>
-would be accepted.
-
-<P>
-Aliases can be nested (currently up to 5 levels, see <TT>smar/rcpts.c</TT>).
-
-<P>
-
-<H2><A NAME="SECTION00494000000000000000"></A>
-<A NAME="Greylisting"></A><BR>
-Greylisting
-</H2>
-
-<P>
-MeTA1 supports a very simple form of greylisting
-[<A
- HREF="README.html#bib:grey">Hara</A>] which only uses the client IP address as key
-[<A
- HREF="README.html#bib:gray">Posa</A>] instead of a tuple consisting of
-client IP address, envelope sender, and envelope recipient.
-The idea behind greylisting is simple:
-do not accept mail from an unknown source on the first connection,
-but reject it with a temporary error.
-Any MTA that conforms to RFC 2821 [<A
- HREF="README.html#bib:rfc2821">Kle01</A>]
-will try to send the mail later on,
-however, spamming systems often do not do that.
-An IP address can be in three different states:
-<I>unknown</I>: the client has not connected before or the entry is expired
-from the database,
-<I>greylisted</I>: the client has connected before but it did not yet
-connect again within the configured time interval,
-<I>whitelisted</I>: the client has connected before and it connected
-again within the configured time interval.
-The time interval is specified by its lower limit
-<code>grey_wait</code>
-and its upper limit
-<code>grey_expire</code>.
-A lower limit is used to prevent system from getting accepted
-that just send a single message within a few seconds again and again.
-The upper limit is used to avoid filling up the database.
-If an entry has made it to the <I>whitelisted</I> state,
-it will stay there for (at least) up to the timeout specified
-by <code>white_expire</code>.
-The greylisting algorithm implemented in MeTA1 uses another
-timeout <code>white_timeout</code> after which a
-<I>whitelisted</I> entry is considered stale and must go through
-the greylisting stages again, i.e., it is considered to be in state
-<I>unknown</I>.
-Each time a mail is sent from a whitelisted host,
-the entry is updated,
-to avoid that systems which regularly sent mail become greylisted again.
-
-<P>
-Greylisting is performed at the <TT>RCPT</TT> stage of the SMTP dialogue.
-It is only done when a valid recipient is specified,
-i.e., all other checks must have been successful.
-Hence clients that do not try to send mail
-or just try invalid recipient addresses
-will not be added to the greylisting database.
-If a transaction is subject to greylisting then the session
-is aborted with an 421 error.
-If a server uses callbacks to verify the sender address, then the option
-<code>delay_greylisting_error_until_DATA</code>
-(see Section
-<A HREF="#ConfigurationforSMTPServer">3.10</A>,
-item
-<A HREF="#ConfigurationforSMTPServer:delaygreylistingerroruntilDATA">3d</A>)
-is useful to avoid unnecessary delays.
-Here is an example:
-host A is the main MX server for domain <TT>example.com</TT>
-and it uses greylisting,
-host B is the main MX server for domain <TT>example.net</TT> and it
-uses sender callbacks.
-If a mail is sent to host B for
-<TT>&lt;rcpt@example.net&gt;</TT>
-with the sender address
-<TT>&lt;user@example.com&gt;</TT>
-then host B will connect to host A to test whether
-<TT>&lt;user@example.com&gt;</TT> is a valid recipient.
-However, if host A does not have host B in its whitelist, it will
-return a 421 error after the
-<TT>RCPT To:&lt;user@example.com&gt;</TT>
-command, which
-(depending on the implementation of the sender callback)
-will cause host B to temporarily reject the mail for
-<TT>&lt;rcpt@example.net&gt;</TT>.
-By specifying the option
-<code>delay_greylisting_error_until_DATA</code>
-on host A the <TT>RCPT</TT> command will succeed and the original mail to
-<TT>&lt;rcpt@example.net&gt;</TT>
-will go through without delay.
-
-<P>
-The greylisting implementation uses two persistent databases
-(specified by
-<code>main_DB_name</code> and <code>secondary_DB_name</code>),
-where the second DB is just a secondary index (by expiration time)
-for the main DB.
-These databases should be on a filesystem with sufficient free disk space
-depending on how many connections from different clients the MTA receives.
-Entries are only removed from the DB if there are more than
-<code>expire_limit</code>
-elements.
-However, if none of the entries are expired yet,
-then the number of elements can exceed that limit.
-
-<P>
-
-<H3><A NAME="SECTION00494100000000000000"></A>
-<A NAME="Greylisting:Whitelisting"></A><BR>
-Greylisting: Whitelisting
-</H3>
-
-<P>
-Greylisting can be disabled for selected hosts by adding them
-to the access map (see Section <A HREF="#AccessMap">3.9.3</A>), e.g.,
-
-<P><TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-cltaddr:10		</TT></TD>
-<TD ALIGN="LEFT"><TT> relay	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-cltaddr:127.0.0.1	</TT></TD>
-<TD ALIGN="LEFT"><TT> quick:relay	</TT></TD>
-</TR>
-</TABLE>
-
-<P>
-
-<H3><A NAME="SECTION00494200000000000000"></A>
-<A NAME="PossibleProblemswithGreylisting"></A><BR>
-Possible Problems with Greylisting
-</H3>
-
-<P>
-Some <I>legitimate</I> mailers do not behave properly
-and will not retry a mail that had a temporary error.
-This can cause mail loss in various situations, e.g.,
-because the receiving system is currently out of some resources.
-However, to minimize the impact of greylisting on these
-misbehaving mailers it might be useful to explicitly whitelist
-them as:
-
-<P><TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-cltaddr:12.107.209.244	</TT></TD>
-<TD ALIGN="LEFT"><TT> ok	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-cltaddr:64.12.137	</TT></TD>
-<TD ALIGN="LEFT"><TT> ok	</TT></TD>
-</TR>
-</TABLE>
-
-<P>
-A list of such broken mailers can be found at
-<TT>http://cvs.puremagic.com/viewcvs/greylisting/schema/whitelist_ip.txt</TT>
-[<A
- HREF="README.html#bib:grey:white">Harb</A>].
-A related problem are server farms where a mail might be resent
-from a different IP address.
-These should probably be whitelisted too;
-some of these can be found at the URL given before.
-However, entries in that file which have the comment
-``unique sender per attempt''
-do not need to be whitelisted as this implementation does not use
-the sender address.
-
-<P>
-Note: if a client authenticates via STARTTLS or AUTH
-such that relaying is allowed then greylisting is disabled for that client.
-
-<P>
-
-<H1><A NAME="SECTION004100000000000000000"></A>
-<A NAME="ConfigurationforSMTPServer"></A><BR>
-Configuration for SMTP Server
-</H1>
-
-<P>
-The following configuration options are valid for SMTPS:
-
-<P>
-
-<OL>
-<LI><code>auth</code><A NAME="943"></A>:
-this is a subsection that specifies the parameters for <TT>AUTH</TT> support.
-It is only available if the system has been configured with the option
-<code>--enable-SASL</code>, see Section
-<A HREF="#CompileTimeConfigurationOptions">2.2.1</A>.
-
-<OL>
-<LI><code>flags</code><A NAME="947"></A>:
-flags for SMTP AUTH
-
-<P>
-See the Cyrus SASL documentation for the meaning of these flags:
-<TT>noplaintext</TT>,
-<TT>noactive</TT>,
-<TT>nodictionary</TT>,
-<TT>forward_secrecy</TT>,
-<TT>noanonymous</TT>,
-<TT>pass_credentials</TT>,
-<TT>mutual_auth</TT>.
-
-<P>
-</LI>
-<LI><code>trusted_mechanisms</code><A NAME="955"></A>:
-list of SASL mechanisms for which relaying is allowed if a client
-successfully authenticated using one of those
-</LI>
-</OL>
-
-<P>
-Note: the name for the Cyrus-SASL configuration file is currently
-<TT>meta1.conf</TT>.
-That file can be used to adjust the list of mechanisms
-(option <TT>mech_list</TT>)
-that should be advertised (besides many other things),
-hence this option is not in the SMTP server itself.
-
-<P>
-</LI>
-<LI><code>CDB_gid</code><A NAME="959"></A>:
-(numeric) group id for CDB files,
-i.e., the group id of <TT>meta1c</TT>,
-see Section <A HREF="#InstallingMTA:DirectoriesFilesandPermissions">2.4.1</A>.
-</LI>
-<LI><code>flags</code><A NAME="962"></A>:
-<A NAME="ConfigurationforSMTPServer:flags"></A>
-<OL>
-<LI><code>8bitmime</code><A NAME="965"></A>:
-offer <TT>8BITMIME</TT>: MeTA1 is 8 bit transparent,
-but it does not perform any conversion,
-so this option should only be used
-if all communication partners can deal with 8 bit data.
-</LI>
-<LI><A NAME="ConfigurationforSMTPServer:access"></A><code>access</code><A NAME="968"></A>:
-use access map (in SMAR).
-Note: currently this flag is required to perform a reverse lookup for
-a client IP address to get the hostname of the client
-which then can be used for logging and the <TT>Received:</TT> header.
-</LI>
-<LI><code>delay_checks</code><A NAME="970"></A>:
-<A NAME="ConfigurationforSMTPServer:delaychecks"></A>delay acceptance check until <TT>RCPT</TT> stage
-(unless explicitly overridden, see Section
-<A HREF="#ConfigurationMapsforSMAR:access:quick">3.9.3</A>).
-</LI>
-<LI><A NAME="ConfigurationforSMTPServer:delaygreylistingerroruntilDATA"></A><code>delay_greylisting_error_until_DATA</code><A NAME="975"></A>:
-if greylisting (<A HREF="#ConfigurationforSMTPServer:greylisting">3e</A>)
-is enabled then wait until the <TT>DATA</TT> command
-to return an error;
-see Section <A HREF="#Greylisting">3.9.4</A> for details.
-</LI>
-<LI><A NAME="ConfigurationforSMTPServer:greylisting"></A><code>greylisting</code><A NAME="980"></A>:
-enable greylisting
-(which must also be enabled in SMAR,
-see Section
-<A HREF="#ConfigurationOptionsforSMAR">3.9.2</A>
-item
-<A HREF="#ConfigurationOptionsforSMAR:greylisting">6</A>),
-see Section <A HREF="#Greylisting">3.9.4</A> for details.
-</LI>
-<LI><code>lmtp_does_not_imply_relaying</code><A NAME="984"></A>:
-<A NAME="ConfigurationforSMTPServer:lmtpdoesnotimplyrelaying"></A>even if a domain in the mailertable has <TT>lmtp:</TT> as RHS do not implicitly allow relaying to it,
-i.e., do not consider the domain as ``local'' with respect to relaying.
-This is useful for an MSA to avoid external mail to local domains
-without authentication.
-</LI>
-<LI><code>soft_bounce</code><A NAME="987"></A>:
-change permanent (5xy) SMTP error replies into temporary (4xy) errors.
-This is a useful feature for testing to avoid bounces
-due to misconfigurations.
-</LI>
-<LI><code>require_EHLO_before_MAIL</code><A NAME="988"></A>:
-require <TT>EHLO</TT> (or <TT>HELO</TT>) before a <TT>MAIL</TT> command.
-</LI>
-<LI><code>strict_EHLO_checks</code><A NAME="992"></A>:
-perform a strict syntax check on the argument for
-<TT>EHLO</TT> (or <TT>HELO</TT>).
-
-<P>
-</LI>
-<LI><code>xverp</code><A NAME="995"></A>:
-<A NAME="ConfigurationforSMTPServer:xverp"></A>offer <TT>XVERP</TT> extension to turn on <TT>VERP</TT> [<A
- HREF="README.html#bib:VERP">Ber97</A>]
-support for a transaction.
-This is a parameter for the <TT>MAIL</TT> command, e.g.
-
-<P>
-<TT>MAIL From:&lt;sender@some.domain&gt; XVERP</TT>
-</LI>
-<LI><code>allow_data_before_greeting</code><A NAME="1002"></A>:
-<A NAME="ConfigurationforSMTPServer:allowdatabeforegreeting"></A>allow a client to send data before the initial 220 greeting.
-
-<P>
-</LI>
-<LI><code>prdr</code><A NAME="1004"></A>:
-<TT>PRDR</TT> is an SMTP extension [<A
- HREF="README.html#bib:drafthallprdr00">Hal07</A>]
-to return individual <TT>RCPT</TT> status after the end of data
-(similar to LMTP).
-This feature is turned on if a policy milter is configured
-(see item <A HREF="#ConfigurationforSMTPServer:pmilter">17</A>).
-
-<P>
-</LI>
-<LI><code>lookup_session_conf</code><A NAME="1009"></A>:
-Look up session configuration data
-(see Section <A HREF="#ConfigurationforSMTPServer:smtpssessionconf">3.10.1</A>)
-in the access map
-(which must be activated, see <A HREF="#ConfigurationforSMTPServer:access">3b</A>).
-
-<P>
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>id</code><A NAME="1013"></A>:
-<A NAME="ConfigurationforSMTPServer:id"></A>unique identifier for SMTP server (0);
-see Section <A HREF="#MultipleSMTPServers">3.10.2</A>.
-</LI>
-<LI><code>io_timeout</code><A NAME="1016"></A>:
-timeout for SMTP operations.
-</LI>
-<LI><code>max_threads</code><A NAME="1017"></A>:
-maximum number of threads.
-</LI>
-<LI><code>max_bad_commands_per_session</code><A NAME="1018"></A>:
-maximum number of bad, i.e., unknown, SMTP commands per session accepted
-by server.
-After this limit is reached the connection is terminated with an 421 error.
-</LI>
-<LI><code>max_invalid_addresses_per_session</code><A NAME="1019"></A>
-maximum number of invalid, e.g., unknown, RCPT addresses per session
-accepted by server.
-After this limit is reached the connection is terminated with an 421 error.
-</LI>
-<LI><code>max_nop_commands_between_transactions</code><A NAME="1020"></A>:
-maximum number of NOOP, RSET, and related SMTP commands
-between two successful transactions accepted by server.
-After this limit is reached the connection is terminated with an 421 error.
-</LI>
-<LI><code>max_bad_commands_per_transaction</code><A NAME="1021"></A>:
-maximum number of bad, i.e., unknown, SMTP commands per transaction accepted
-by server.
-After this limit is reached the connection is terminated with an 421 error.
-</LI>
-<LI><code>max_nop_commands_in_transaction</code><A NAME="1022"></A>:
-maximum number of NOOP and related SMTP commands in a single transaction
-accepted by server.
-After this limit is reached the connection is terminated with an 421 error.
-</LI>
-<LI><code>max_invalid_addresses_per_transaction</code><A NAME="1023"></A>
-maximum number of invalid, e.g., unknown, RCPT addresses per transaction
-accepted by server.
-After this limit is reached the connection is terminated with an 421 error.
-</LI>
-<LI><code>max_recipients_per_session</code><A NAME="1024"></A>:
-maximum number of recipients per session.
-</LI>
-<LI><code>max_recipients_per_transaction</code><A NAME="1025"></A>:
-maximum number of recipients per transaction.
-</LI>
-<LI><code>max_hops</code><A NAME="1026"></A>:
-maximum number of hops (Received: headers).
-If this value is exceeded the incoming mail is rejected
-because it is considered a possible mail loop.
-</LI>
-<LI><code>max_message_size</code><A NAME="1027"></A>:
-maximum message size (unit: KB).
-</LI>
-<LI><code>policy_milter</code><A NAME="1028"></A>:
-<A NAME="ConfigurationforSMTPServer:pmilter"></A>this is a subsection that specifies the parameters for pmilter support
-(see Section <A HREF="#PolicyMilter">5</A>).
-It is only available if it has been enabled during <TT>configure</TT>
-(<code>--enable-pmilter</code>, see Section <A HREF="#CompileTimeConfigurationOptions">2.2.1</A>).
-
-<OL>
-<LI><code>socket</code><A NAME="1034"></A>:
-this is a subsection that specifies the socket to communicate
-with policy milter.
-The type (option <code>type</code>) of the socket
-must be either <TT>inet</TT> or <TT>unix</TT>.
-
-<OL>
-<LI><code>type = inet</code>
-
-<OL>
-<LI><code>port</code><A NAME="1039"></A>:
-port number for connection.
-</LI>
-<LI><code>address</code><A NAME="1040"></A>:
-IP address for connection.
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>type = unix</code>
-
-<OL Type="A">
-<LI><code>path</code><A NAME="1043"></A>:
-pathname of Unix Domain socket.
-</LI>
-</OL>
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>timeout</code><A NAME="1046"></A>:
-maximum amount of time to wait for a reply from a policy milter.
-</LI>
-<LI><code>flags</code>:
-policy milter flags.
-If the connection to pmilter fails then SMTPS will ignore pmilter by default.
-This behavior can be changed by setting one of following two flags:
-
-<OL>
-<LI><code>abort</code><A NAME="1048"></A>:
-if the connection to pmilter fails then abort the current session with
-a 421 error.
-</LI>
-<LI><code>accept_but_reconnect</code><A NAME="1049"></A>:
-if the connection to pmilter fails then continue the current session
-but try to reconnect for the next session.
-</LI>
-</OL>
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>processes</code><A NAME="1052"></A>:
-number of processes to start.
-</LI>
-<LI><A NAME="ConfigurationforSMTPServer:protectedrecipients"></A><code>protected_recipients</code><A NAME="1054"></A>:
-this is a subsection which provides
-a few simple options to <EM>protect</EM> recipients
-by restricting who can send mail to them.
-
-<OL>
-<LI><A NAME="ConfigurationforSMTPServer:protectedrecipients:allowby"></A><code>allow_by</code><A NAME="1058"></A>:
-this is a required subsection which has two possible flags
-(at least one must be specified).
-
-<OL>
-<LI><code>sender</code><A NAME="1060"></A>:
-allow sending mail based on the envelope sender (<TT>MAIL</TT>) address.
-Even though this address can be forged it provides some basic protection.
-</LI>
-<LI><code>client_ip</code><A NAME="1062"></A>:
-allow sending mail based on the client IP address.
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>match_type</code><A NAME="1064"></A>:
-<A NAME="ConfigurationforSMTPServer:protectedrecipients:matchtype"></A>this specifies what type of matching should be done.
-By default, exact matches are required.
-Alternatively, one of the following two options can be selected:
-
-<OL>
-<LI><code>generic_lookup</code><A NAME="1067"></A>:
-the items are looked up according to the algorithm
-specified in Section <A HREF="#LookupOrdersinMaps">3.12.1</A>.
-</LI>
-<LI><code>implicitly_match_detail</code><A NAME="1069"></A>:
-the items are looked up according to the algorithm
-specified in Section <A HREF="#LookupOrdersinMaps">3.12.1</A>.
-and additionally
-<TT>+detail</TT> is implicitly matched when the pattern is
-``<TT>user@hostname</TT>''.
-That is, it overrides the default matching explained in case
-<A HREF="#LookupOrdersinMaps:userathostname">1e</A>
-in Section
-<A HREF="#LookupOrdersinMaps">3.12.1</A>.
-</LI>
-</OL>
-</LI>
-</OL>
-
-<P>
-See Section <A HREF="#ProtectingRecipients">3.10.3</A> for details.
-</LI>
-<LI><code>max_transactions</code><A NAME="1078"></A>:
-maximum number of transactions per session.
-
-<P>
-</LI>
-<LI><A NAME="ConfigurationforSMTPServer:tls"></A><code>tls</code><A NAME="1080"></A>:
-this is a subsection that specifies the parameters for <TT>STARTTLS</TT> support.
-It is only available if the system been configured with the option
-<code>--enable-TLS</code>, see Section
-<A HREF="#CompileTimeConfigurationOptions">2.2.1</A>.
-See Section <A HREF="#CertificatesforSTARTTLS">11.1</A> for some background
-information about these options.
-
-<P>
-
-<OL>
-<LI><code>cache_size</code><A NAME="1085"></A>:
-size of TLS session session cache
-(0: disable cache).
-</LI>
-<LI><code>cache_timeout</code><A NAME="1086"></A>:
-timeout for entries in TLS session session cache.
-</LI>
-<LI><code>cert_file</code><A NAME="1087"></A>:
-file with certificate in PEM format.
-</LI>
-<LI><code>key_file</code><A NAME="1088"></A>:
-file with private key for certificate in PEM format.
-</LI>
-<LI><code>CAcert_file</code><A NAME="1089"></A>:
-file with CA certificate in PEM format.
-</LI>
-<LI><code>CAcert_directory</code><A NAME="1090"></A>:
-directory with (symbolic links for) CA certificates in PEM format.
-
-<P>
-</LI>
-<LI><code>flags</code><A NAME="1091"></A>:
-some flags are available to influence the behavior of the SMTP server
-with respect to STARTTLS.
-
-<OL>
-<LI><code>allow_relaying_if_verified</code><A NAME="1093"></A>:
-if the client presented a certificate that can be verified
-by the CA certificates that are available to the server
-(see above:
-<code>CAcert_file</code> and <code>CAcert_directory</code>),
-then relaying is allowed for the SMTP session.
-
-<P>
-</LI>
-<LI><code>check_access_map_for_relaying</code><A NAME="1094"></A>:
-if this flag is set then the access map
-(which must be activated, see <A HREF="#ConfigurationforSMTPServer:access">3b</A>)
-is checked to see whether relaying should be allowed for a client
-which presented a certificate that has been verified (see above).
-For this purpose,
-the DN of the cert issuer is looked up in the access map using the
-tag <TT>certissuer:</TT>.
-If the resulting value is <TT>relay</TT>, relaying is allowed.
-If it is <TT>cont</TT>,
-the DN of the cert subject is looked up next in the
-access map using the tag <TT>certsubject:</TT>.
-If the value is <TT>relay</TT>, relaying is allowed; every other value
-is currently ignored.
-
-<P>
-To avoid problems with the DN names in map lookups,
-they are modified as follows:
-each non-printable character and the characters
-'<code>&lt;</code>',
-'<code>&gt;</code>',
-'<code>(</code>',
-'<code>)</code>',
-'<code>"</code>',
-'<code>+</code>',
-'<code> </code>'
-are replaced
-by their hexadecimal ASCII value with a leading '<code>+</code>'.
-For example:
-
-<P>
-<TT>/C=US/ST=California/O=endmail.org/OU=private/CN=
-<BR>Darth Mail (Cert)/emailAddress=darth+cert@endmail.org
-</TT>
-
-<P>
-is encoded as:
-
-<P>
-<TT>/C=US/ST=California/O=endmail.org/OU=private/CN=
-<BR>Darth+20Mail+20+28Cert+29/emailAddress=darth+2Bcert@endmail.org
-</TT>
-
-<P>
-Examples:
-
-<P>
-To allow relaying for everyone who can present a cert signed by
-
-<P>
-<TT>/C=US/ST=California/O=endmail.org/OU=private/CN=
-<BR>Darth+20Mail+20+28Cert+29/emailAddress=darth+2Bcert@endmail.org
-</TT>
-
-<P>
-simply use:
-
-<P><TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-certissuer:/C=US/ST=California/O=endmail.org/OU=private/CN=	</TT></TD>
-<TD></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-Darth+20Mail+20+28Cert+29/emailAddress=darth+2Bcert@endmail.org </TT></TD>
-<TD ALIGN="LEFT"><TT> relay	</TT></TD>
-</TR>
-</TABLE>
-
-<P>
-To allow relaying only for a subset of machines that have a cert signed by
-
-<P>
-<TT>/C=US/ST=California/O=endmail.org/OU=private/CN=
-<BR>Darth+20Mail+20+28Cert+29/emailAddress=darth+2Bcert@endmail.org
-</TT>
-
-<P>
-use:
-
-<P><TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-certissuer:/C=US/ST=California/O=endmail.org/OU=private/CN=	</TT></TD>
-<TD></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-Darth+20Mail+20+28Cert+29/emailAddress=darth+2Bcert@endmail.org </TT></TD>
-<TD ALIGN="LEFT"><TT> cont	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-CertSubject:/C=US/ST=California/O=endmail.org/OU=private/CN=	</TT></TD>
-<TD></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-DeathStar/emailAddress=deathstar@endmail.org	</TT></TD>
-<TD ALIGN="LEFT"><TT> relay	</TT></TD>
-</TR>
-</TABLE>
-
-<P>
-Notes:
-
-<UL>
-<LI>line breaks have been inserted after <TT>CN=</TT> for readability,
-each tagged entry must be one (long) line in the access map.
-</LI>
-<LI>if OpenSSL 0.9.6 is used then the
-<TT>emailAddress=</TT>
-part of a DN
-is replaced by
-<TT>Email=</TT>.
-</LI>
-</UL>
-
-<P>
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><A NAME="ConfigurationforSMTPServer:requirementsviolation"></A><code>requirements_violation</code><A NAME="1122"></A>:
-This option decides how to (globally) handle TLS requirement violations
-(see Section <A HREF="#ConfigurationforSMTPServer:smtpssessionconf">3.10.1</A>).
-Possible values are:
-<code>permfail</code>: generate permanent failure,
-<code>tempfail</code>: generate temporary failure,
-<code>abort</code>: abort session.
-These option take effect when a <TT>MAIL</TT> command is issued
-by the client.
-
-<P>
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><A NAME="ConfigurationforSMTPServer:sessionfeatures"></A><code>session_features</code><A NAME="1127"></A>:
-This section can be used to define classes of features
-for an SMTP server session
-which then can be referenced via the access map.
-Available flags are a subset of those listed in item
-<A HREF="#ConfigurationforSMTPServer:flags">3</A>:
-<code>starttls</code>,
-<code>auth</code>,
-<code>delay_checks</code>,
-<code>allow_data_before_greeting</code>,
-<code>require_EHLO_before_MAIL</code>,
-<code>strict_EHLO_checks</code>,
-<code>check_EHLO</code>.
-
-<P>
-Example: to turn off
-<TT>STARTTLS</TT> for some clients,
-declare a <TT>notls</TT> class in the configuration file:
-
-<P>
-<PRE>
-session_features  notls { flags = { -starttls }}
-</PRE>
-
-<P>
-and reference it in the access map for those clients:
-
-<P>
-<PRE>
-smtps_session_conf:217.126.135.148	session_feature=notls;
-</PRE>
-
-<P>
-</LI>
-</OL>
-
-<P>
-
-<H2><A NAME="SECTION004101000000000000000"></A>
-<A NAME="ConfigurationforSMTPServer:smtpssessionconf"></A><BR>
-SMTP Server Session Configuration
-</H2>
-
-<P>
-Some options can be set via the access map
-(see Section <A HREF="#AccessMap">3.9.3</A>, tag <TT>smtps_session_conf</TT>)
-because they apply to a session, not globally.
-Currently available are:
-STARTTLS requirements (<code>tls_requirements</code>)
-(see Section <A HREF="#STARTTLSRestrictions">3.13</A>)
-and
-<code>session_features</code>
-(see Section
-<A HREF="#ConfigurationforSMTPServer">3.10</A>,
-item
-<A HREF="#ConfigurationforSMTPServer:sessionfeatures">22</A>).
-
-<P>
-
-<H2><A NAME="SECTION004102000000000000000"></A>
-<A NAME="MultipleSMTPServers"></A><BR>
-Multiple SMTP Servers with different Configurations
-</H2>
-
-<P>
-The normal way to run multiple SMTP servers is to
-let MCP start several SMTP servers.
-Each SMTP server must given a unique identifier
-(see Section <A HREF="#ConfigurationforSMTPServer">3.10</A>, item
-<A HREF="#ConfigurationforSMTPServer:id">4</A>)
-and each SMTP server section in <TT>meta1.conf</TT> must have
-a unique name (e.g., MTA and MSA),
-which is passed via the option <TT>-N <I>name</I></TT> to <TT>smtps</TT>.
-Example:
-<TT>meta1.conf</TT>:
-
-<P>
-<PRE>
-smtps MTA {
-  id = 0;
-  listen_socket { type=inet; port = 25; }
-  start_action = pass; pass_fd_socket = smtps/mtafd;
-  user = meta1s;
-  path = /usr/libexec/smtps;
-  arguments = "smtps -N MTA -f /etc/meta1/meta1.conf";
-  log { facility = mail; ident=meta1-MTA; }
-}
-
-smtps MSA {
-  id = 1;
-  listen_socket { type=inet; port = 587; }
-  start_action = pass; pass_fd_socket = smtps/msafd;
-  user = meta1s;
-  path = /usr/libexec/smtps;
-  arguments = "smtps -N MSA -f /etc/meta1/meta1.conf";
-  log { facility = mail; ident=meta1-MSA; }
-  auth { trusted_mechanisms = "CRAM-MD5 DIGEST-MD5";
-         flags = { noplaintext }; } }
-</PRE>
-
-<P>
-For tests it is also possible to
-let MCP start only one SMTP server which creates several copies of itself
-if multiple daemon addresses are specified
-(see Section <A HREF="#ConfigurationforSMTPServer">3.10</A>, item
-<A HREF="#ConfigurationforSMTPServer:daemonaddress">1</A>).
-Note: this only works for unprivileged ports because
-the SMTP server does not run as root.
-
-<P>
-
-<H2><A NAME="SECTION004103000000000000000"></A>
-<A NAME="ProtectingRecipients"></A><BR>
-Protecting Recipients
-</H2>
-
-<P>
-A few simple features are available to <EM>protect</EM> recipients
-by restricting who can send mail to them.
-To do this the configuration section
-<code>protected_recipients</code>
-must be turned on and at least one of the two flags
-<code>sender</code> and
-<code>client_ip</code>
-must be selected (see Section
-<A HREF="#ConfigurationforSMTPServer">3.10</A>, item
-<A HREF="#ConfigurationforSMTPServer:protectedrecipients:allowby">19a</A>).
-If this is done, then every recipient is looked up in the
-access map
-(which must be activated, see Section
-<A HREF="#ConfigurationforSMTPServer">3.10</A>,
-item
-<A HREF="#ConfigurationforSMTPServer:access">3b</A>),
-using the tag
-<TT>protectedrcpt:</TT>.
-If a matching entry is found, it must have a list of (one or more)
-restrictions, each of which must be one of the following:
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1">
-<TR><TD ALIGN="LEFT">restriction</TD>
-<TD ALIGN="LEFT">required <code>allow_by</code> flag</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>from:</TT>sender</TD>
-<TD ALIGN="LEFT"><code>sender</code></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>cltaddr:</TT>IPv4-address</TD>
-<TD ALIGN="LEFT"><code>client_ip</code></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>list:</TT>alias</TD>
-<TD ALIGN="LEFT"><code>sender</code></TD>
-</TR>
-</TABLE>
-
-<P>
-The meaning of the first two restriction types should be obvious,
-the third one is interesting:
-it refers to an alias (in the aliases map, see Section <A HREF="#Aliases">3.9.3</A>)
-and requires that the sender address matches one of the entries to which
-the alias expands.
-This can be used to allow only subscribed members of a mailing list
-to send mail to it.
-
-<P>
-The restrictions are evaluated sequentially,
-if there is a match, the recipient is accepted (<EM>sequential OR</EM>).
-If none of them matches, the recipient is rejected.
-
-<P>
-By default exact matches are required.
-However, if the flag
-<code>generic_lookup</code>
-is set
-(see Section
-<A HREF="#ConfigurationforSMTPServer">3.10</A>, item
-<A HREF="#ConfigurationforSMTPServer:protectedrecipients:matchtype">19b</A>),
-the items are looked up as
-specified in Section <A HREF="#LookupOrdersinMaps">3.12.1</A>.
-The flag <code>implicitly_match_detail</code> is useful for the
-<TT>list:</TT> restriction if a sender uses <TT>+detail</TT> without
-having that specified during subscription.
-
-<P>
-Examples: consider the following aliases map:
-
-<P><TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-list1: </TT></TD>
-<TD ALIGN="LEFT"><TT> &lt;user1-1@l1-1.dom&gt; &lt;user2-1@l1-1.dom&gt; &lt;list2@local.dom&gt; </TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-list2: </TT></TD>
-<TD ALIGN="LEFT"><TT> &lt;user1-2@l2-1.dom&gt; &lt;user2-2@l2-2.dom&gt; </TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-list3: </TT></TD>
-<TD ALIGN="LEFT"><TT> &lt;user1-3@l3-1.dom&gt; &lt;user2-3@l3-2.dom&gt; </TT></TD>
-</TR>
-</TABLE>
-
-<P>
-together with this access map:
-
-<P><TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-protectedrcpt:list1@local.dom </TT></TD>
-<TD ALIGN="LEFT"><TT> list:&lt;list1@local.dom&gt; </TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-protectedrcpt:list3 </TT></TD>
-<TD ALIGN="LEFT"><TT> from:&lt;moderator3@local.dom&gt; cltaddr:1.2.3.4 cltaddr:10 </TT></TD>
-</TR>
-</TABLE>
-
-<P>
-The mails to
-<TT>&lt;list1@local.dom&gt;</TT>
-are only accepted from
-<TT>&lt;user1-1@l1-1.dom&gt;</TT> and <TT>&lt;user2-1@l1-1.dom&gt;</TT>.
-Note: the list is not recursively expanded, i.e., members of
-<TT>list2</TT> are not allowed,
-that restriction must be listed in the access map.
-Mails to
-<TT>&lt;list3@local.dom&gt;</TT>
-are only accepted from
-<TT>&lt;moderator3@local.dom&gt;</TT>,
-the client with the IPv4 address 1.2.3.4,
-or clients in the IPv4 net 10.
-The latter requires that the flag
-<code>generic_lookup</code>
-is turned on too.
-
-<P>
-
-<H1><A NAME="SECTION004110000000000000000"></A>
-<A NAME="ConfigurationforSMTPClient"></A><BR>
-Configuration for SMTP Client
-</H1>
-
-<P>
-The following configuration options are valid for SMTPC:
-
-<P>
-
-<OL>
-<LI><code>io_timeout</code><A NAME="1191"></A>:
-timeout for SMTP operations
-(unit: s).
-</LI>
-<LI><A NAME="ConfigurationforSMTPClient:LMTPsocket"></A><code>LMTP_socket</code><A NAME="1193"></A>:
-Unix domain socket to use for LMTP [default: <TT>lmtpsock</TT>].
-</LI>
-<LI><code>log_level</code><A NAME="1195"></A>:
-logging level.
-
-<P>
-</LI>
-<LI><code>tls</code><A NAME="1196"></A>:
-this is a subsection that specifies the parameters for <TT>STARTTLS</TT> support.
-It is only available if the system been configured with the option
-<code>--enable-TLS</code>, see Section
-<A HREF="#CompileTimeConfigurationOptions">2.2.1</A>.
-See Section <A HREF="#CertificatesforSTARTTLS">11.1</A> for some background
-information about these options.
-
-<OL>
-<LI><code>cert_file</code><A NAME="1201"></A>:
-file with certificate in PEM format.
-</LI>
-<LI><code>key_file</code><A NAME="1202"></A>:
-file with private key for certificate in PEM format.
-</LI>
-<LI><code>CAcert_file</code><A NAME="1203"></A>:
-file with CA certificate in PEM format.
-</LI>
-<LI><code>CAcert_directory</code><A NAME="1204"></A>:
-directory with (symbolic links for) CA certificates in PEM format.
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>wait_for_server</code><A NAME="1206"></A>:
-maximum amount of time to wait for a server (QMGR) to become available
-(unit: s).
-
-<P>
-</LI>
-</OL>
-
-<P>
-
-<H2><A NAME="SECTION004111000000000000000"></A>
-<A NAME="ConfigurationforSMTPClient:smtpcrcptconf"></A><BR>
-SMTP Client Session/Recipient Configuration
-</H2>
-
-<P>
-The following options can only be set via the access map
-(see Section <A HREF="#AccessMap">3.9.3</A>, tag <TT>smtpc_rcpt_conf</TT>)
-or the configuration map for QMGR
-(see <A HREF="#ConfigurationMapforQMGR">3.8.1</A>, tag <TT>smtpc_session_conf</TT>)
-not in the SMTP client configuration section itself,
-as they apply to a session or recipient, not globally.
-Currently only STARTTLS requirements are available
-which are documented in Section
-<A HREF="#STARTTLSRestrictions">3.13</A>,
-more option might be added later on.
-Note: as more options might be added, the structure of this may
-change a bit.
-
-<P>
-
-<H1><A NAME="SECTION004120000000000000000"></A>
-<A NAME="LookupOrders"></A><BR>
-Lookup Orders
-</H1>
-
-<P>
-
-<H2><A NAME="SECTION004121000000000000000"></A>
-<A NAME="LookupOrdersinMaps"></A><BR>
-Lookup Orders in Maps
-</H2>
-
-<P>
-In many cases an item is not just looked up verbatim in a map,
-but it may be split into logical parts and then less significant
-parts are iteratively removed and the remaining data is looked up
-until either a match is found or the data is empty;
-in the latter case a default key may be looked up depending on the map.
-These steps can be controlled by flags that are specified
-in the configuration file for the map.
-These flags are listed below for the various lookup steps.
-
-<P>
-For domain names of the form ``<TT>sub2.sub1.tld</TT>''
-the lookup order is
-``<TT>sub2.sub1.tld</TT>'',
-``<TT>.sub1.tld</TT>'',
-``<TT>.tld</TT>'', and
-``<TT>.</TT>''
-(without the quotes).
-The subdomains are tried if the flag
-<code>dotsubdomain</code>
-is set.
-The last lookup (``<TT>.</TT>'') is only done if the flag
-<code>dot</code>
-is set, as it is the default for mailertable.
-Obviously this schema is extended if more components are specified.
-As the sequence shows there is no implicit ``match all subdomains'' lookup,
-instead entries in a map must have a leading dot for subdomains matches.
-To reiterate: ``<TT>sub2.sub1.tld</TT>'' does neither match the entry
-``<TT>sub1.tld</TT>'' nor
-``<TT>tld</TT>''.
-
-<P>
-For IPv4 addresses of the form ``<TT>A.B.C.D</TT>'', the lookup order is
-``<TT>A.B.C.D</TT>'', ``<TT>A.B.C</TT>'', ``<TT>A.B</TT>'', and ``<TT>A</TT>''
-(without the quotes).
-In contrast to domain lookups, no trailing dots are required (nor checked)
-to denote subnet matches, because the number of components of an IPv4
-address is fixed (and known) in contrast to the number of components
-in a host name or domain name.
-
-<P>
-For RFC 2821 addresses of the form
-``<TT><IMG
- WIDTH="16" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
- SRC="img5.png"
- ALT="$&lt;$">user+detail@domain<IMG
- WIDTH="16" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
- SRC="img6.png"
- ALT="$&gt;$"></TT>'',
-where ``<TT>+detail</TT>'' is optional
-and ``<TT>+</TT>'' is the first delimiter in the localpart
-that was found in the
-<code>address_delimiter</code> string (see Section
-<A HREF="#ConfigurationOptionsforSMAR">3.9.2</A>),
-the lookups are done according to the following sequence:
-
-<P>
-
-<OL>
-<LI>Repeat the following lookups for each subdomain of domain
-(as explained above):
-
-<OL>
-<LI>``<TT>user+detail@subdomain</TT>'' if ``<TT>+detail</TT>'' exists;
-this is a verbatim match.
-Flag:
-<code>full_adress</code>.
-</LI>
-<LI>``<TT>user++@subdomain</TT>'' if ``<TT>+detail</TT>'' exists and
-``<TT>detail</TT>'' is not empty;
-this matches any non-empty ``<TT>+detail</TT>''.
-Note: the second ``<TT>+</TT>'' character is a fixed metacharacter,
-it does not depend on
-<code>address_delimiter</code>; it is a modelled after the ``<TT>+</TT>'' operator
-in regular expressions etc to denote a non-empty sequence of items.
-Flag:
-<code>detail_plus</code>
-</LI>
-<LI>``<TT>user+*@subdomain</TT>'' if ``<TT>+detail</TT>'' exists;
-this matches any ``<TT>+detail</TT>'' (including just ``<TT>+</TT>'').
-Flag:
-<code>detail_star</code>
-</LI>
-<LI>``<TT>user*@subdomain</TT>'';
-this matches ``<TT>user@subdomain</TT>'' as well as
-``<TT>user+detail@subdomain</TT>'' (``<TT>detail</TT>'' can be empty).
-<EM>Note</EM>: ``<TT>*</TT>'' is not a generic metacharacter here,
-it matches only a token beginning with
-<code>address_delimiter</code>
-or an empty sequence,
-it does <EM>not</EM> match any other character sequence.
-For example: the input
-``<TT>user1@subdomain</TT>'' does not match the LHS
-``<TT>user*@subdomain</TT>''.
-Flag:
-<code>star</code>
-</LI>
-<LI><A NAME="LookupOrdersinMaps:userathostname"></A>``<TT>user@subdomain</TT>'';
-this does <EM>not</EM> match if ``<TT>+detail</TT>'' exists,
-unless the flag
-<code>implicitly_match_detail</code>
-is selected for the map to implicitly match a detail even
-if there is no wildcard in the pattern.
-</LI>
-<LI>``<TT>@subdomain</TT>''.
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI>If nothing has been found and the map type requests it,
-then try localpart only (with the same meaning as above):
-
-<OL>
-<LI>``<TT>user+detail</TT>'' if <TT>detail</TT> exists
-</LI>
-<LI>``<TT>user++</TT>'' if <TT>detail</TT> exists and is not empty,
-</LI>
-<LI>``<TT>user+*</TT>'' if <TT>detail</TT> exists,
-</LI>
-<LI>``<TT>user*</TT>'',
-</LI>
-<LI>``<TT>user</TT>''
-</LI>
-</OL>
-</LI>
-</OL>
-
-<P>
-
-<H2><A NAME="SECTION004122000000000000000"></A>
-<A NAME="LookupOrdersforAntiSpamMeasures"></A><BR>
-Lookup Orders for Anti-Spam Measures
-</H2>
-
-<P>
-Map lookups for anti-spam measures are performed according to
-the SMTP dialogue, i.e.,
-connection information (<TT>cltaddr:</TT> and <TT>cltname:</TT>),
-<TT>MAIL</TT> command (<TT>from:</TT>), and
-<TT>RCPT</TT> command (<TT>to:</TT>).
-Whether a rejection has an immediate effect depends on
-the result of the lookup, e.g., the <TT>quick:</TT> modifier,
-and whether the option <code>delay_checks</code> is set.
-If multiple checks are performed
-during a single stage of the SMTP dialogue
-then they are done sequentially
-until one of them returns something else than <TT>cont</TT>.
-
-<P>
-Note: in the description of the algorithms below some items are
-marked as <I>check:</I>.
-Only those can change the result value,
-other steps perform just operations that may be needed later on
-but have no immediate effect on the outcome of the checks.
-
-<P>
-
-<H3><A NAME="SECTION004122100000000000000"></A>
-<A NAME="LookupOrdersforAntiSpamMeasures:Connect"></A><BR>
-Connect
-</H3>
-
-<P>
-During connect the following operations are performed
-if the <TT>access</TT> flag (see Section
-<A HREF="#ConfigurationforSMTPServer">3.10</A>,
-item
-<A HREF="#ConfigurationforSMTPServer:access">3b</A>)
-is enabled:
-
-<P>
-
-<OL>
-<LI><I>check:</I>
-look up client IP address using tag <TT>cltaddr:</TT>
-(as explained in <A HREF="#LookupOrdersinMaps">3.12.1</A>)
-</LI>
-<LI>start DNS blacklist queries,
-</LI>
-<LI>map client IP address to client hostname returning the tuple
-(<TT>clientresolve</TT>, <TT>clientname</TT>).
-</LI>
-<LI><I>check:</I>
-look up <TT>cltresolve:clientresolve</TT>
-</LI>
-<LI><I>check:</I>
-look up <TT>cltname:clientname</TT>
-(as explained in <A HREF="#LookupOrdersinMaps">3.12.1</A>)
-</LI>
-<LI><I>check:</I>
-look up results of DNS blacklists in access map.
-</LI>
-</OL>
-
-<P>
-
-<H3><A NAME="SECTION004122200000000000000"></A>
-<A NAME="LookupOrdersforAntiSpamMeasures:MAIL"></A><BR>
-MAIL
-</H3>
-
-<P>
-After a <TT>MAIL</TT> command has been received the following
-checks are performed
-unless the address is <TT>&lt;&gt;</TT>
-or a session check resulted in
-<TT>quick:relay</TT> or <TT>quick:ok</TT>:
-
-<P>
-
-<OL>
-<LI><I>check:</I>
-is the address routeable?
-That is, if the sender address would be used as a recipient address
-(as it would be necessary if a DSN must be sent)
-is it possible to find a host that will deal with the address?
-This means that the domain part must have a valid MX or A record
-or that routing is specified via mailertable.
-</LI>
-<LI><I>check:</I>
-if the domain of sender address is local:
-is the local part valid?
-</LI>
-<LI><I>check:</I>
-look up the address in the access map (provided it is enabled)
-with the tag <TT>from:</TT>.
-</LI>
-<LI><I>check:</I>
-look up the IP addresses that were found when trying to determine
-whether the address is routeable with the tag <TT>mxbadip:</TT>
-in the access map.
-</LI>
-</OL>
-
-<P>
-
-<H3><A NAME="SECTION004122300000000000000"></A>
-<A NAME="LookupOrdersforAntiSpamMeasures:RCPT"></A><BR>
-RCPT
-</H3>
-
-<P>
-A <TT>RCPT</TT> command causes different checks
-(note: these are sequential checks, not exclusive, i.e.,
-if the first one applies and it does not return a decision,
-the second one is performed):
-
-<OL>
-<LI><A NAME="LookupOrdersforAntiSpamMeasures:RCPT:relay"></A>is this a relaying attempt and if so, is it authorized?
-Relaying can be allowed for the entire session, e.g.,
-due to the client IP address or other authorization based on some
-authentication (STARTTLS, AUTH).
-</LI>
-<LI><A NAME="LookupOrdersforAntiSpamMeasures:RCPT:check"></A>are there any other restrictions for the recipient address?
-</LI>
-</OL>
-
-<P>
-For case
-<A HREF="#LookupOrdersforAntiSpamMeasures:RCPT:relay">1</A>
-the following tests are performed:
-
-<P>
-
-<OL>
-<LI><I>check:</I>
-is the recipient local and does the address exist?
-If yes, it is not a relaying attempt and hence allowed.
-</LI>
-<LI><I>check:</I>
-look up the recipient address with the tag <TT>to:</TT>
-(provided the access map is enabled)
-(provided the access map is enabled)
-and check whether the RHS is <TT>relay</TT>,
-otherwise reject the <TT>RCPT</TT> command as unauthorized relaying attempt
-unless the RHS is an <TT>error</TT> entry which is then used as reply.
-</LI>
-</OL>
-
-<P>
-For case
-<A HREF="#LookupOrdersforAntiSpamMeasures:RCPT:check">2</A>
-the following steps are taken:
-
-<P>
-
-<OL>
-<LI>look up address with tag <TT>protectedrcpt:</TT>,
-if found perform all the necessary checks
-as explained in Section <A HREF="#ProtectingRecipients">3.10.3</A>.
-</LI>
-<LI><I>check:</I>
-look up the address using the tag <TT>to:</TT>
-if all of the following three conditions are met:
-
-<OL>
-<LI>the access map is enabled.
-</LI>
-<LI>a session check did not result in <TT>quick:relay</TT>.
-</LI>
-<LI>a session check did not result in <TT>quick:ok</TT>
-and relaying is allowed by other means.
-</LI>
-</OL>
-</LI>
-<LI><I>check:</I>
-perform greylisting unless the session is marked as <TT>ok</TT> or <TT>relay</TT>
-or the <TT>RCPT</TT> lookup returned <TT>quick:ok</TT> or <TT>quick:relay</TT>.
-</LI>
-</OL>
-
-<P>
-
-<H2><A NAME="SECTION004123000000000000000"></A>
-<A NAME="MacroReplacementsinRHS"></A><BR>
-Macro Replacements in RHS
-</H2>
-
-<P>
-The alias map allows the use of macro in the right hand side of map entries.
-Macros have the form ``<TT>${name}</TT>'' (without the quotes).
-Available macros are:
-<TT>user</TT>,
-<TT>detail</TT>,
-<TT>domain</TT>,
-<TT>tag</TT>,
-<TT>delimiter</TT>,
-<TT>subdomain</TT>,
-<TT>extension</TT>.
-They have the obvious meaning;
-<TT>subdomain</TT> refers to the part of the domain before the dot, i.e.,
-if the pattern is <TT>@.domain</TT> and the input is <TT>user@host.domain</TT>
-then
-<TT>subdomain</TT> refers to <TT>host</TT>,
-<TT>extension</TT> is the delimiter and the detail together
-(provided the address contains them).
-
-<P>
-Example:
-
-<P>
-<PRE>
-alias*@.domain     user${extension}@${subdomain}.domain
-</PRE>
-
-<P>
-provides the following mappings:
-
-<P>
-<PRE>
-alias@host.domain             user@host.domain
-alias+detail@host2.domain     user+detail@host2.domain
-</PRE>
-
-<P>
-
-<H1><A NAME="SECTION004130000000000000000"></A>
-<A NAME="STARTTLSRestrictions"></A><BR>
-STARTTLS Restrictions
-</H1>
-
-<P>
-STARTTLS requirements can be set for the SMTP server
-and
-SMTP client via map entries
-(see Sections
-<A HREF="#ConfigurationforSMTPServer:smtpssessionconf">3.10.1</A>
-and
-<A HREF="#ConfigurationforSMTPClient:smtpcrcptconf">3.11.1</A>).
-These restrictions are listed in a section called
-<code>tls_requirements</code>.
-
-<P>
-
-<OL>
-<LI><code>common_name</code>:
-require that the CN (Common Name) of the presented
-TLS certificate matches the specified value.
-</LI>
-<LI><code>cert_subject</code>
-require that the CS (CERT subject) of the presented
-TLS certificate matches the specified value.
-</LI>
-<LI><code>cert_issuer</code>
-require that the DN (Distinguised Name) of the issuer of the
-presented TLS certificate matches the specified value.
-</LI>
-<LI><code>min_cipher_bits</code>
-require that the effective keylength (in bits)
-of the symmetric encryption algorithm used for a TLS  connection
-is at least as big as the specified value.
-</LI>
-<LI><code>flags</code>:
-available flags are currently:
-
-<OL>
-<LI><code>verified</code>:
-the TLS connection must be verified, i.e.,
-the cert issuer must be listed in
-<code>CAcert_file</code> or <code>CAcert_directory</code>
-(see Section
-<A HREF="#ConfigurationforSMTPServer">3.10</A>,
-item
-<A HREF="#ConfigurationforSMTPServer:tls">21</A>).
-</LI>
-<LI><code>encrypted</code>
-the TLS connection must be encrypted (i.e.,
-the effective keylength (in bits)
-of the symmetric encryption algorithm used for a TLS  connection
-is greater than zero.
-</LI>
-</OL>
-</LI>
-<LI><code>requirements_violation</code>
-See Section <A HREF="#ConfigurationforSMTPServer">3.10</A>,
-item <A HREF="#ConfigurationforSMTPServer:requirementsviolation">21h</A>,
-for possible values.
-</LI>
-</OL>
-
-<P>
-Example (note: the entry must be currently written in a single
-line to be properly processed by
-<TT>createmap(8)</TT>):
-
-<P>
-<PRE>
-smtpc_rcpt_conf:@meta.org	tls_requirements { cert_issuer="/C=US/ST=Berkeley/L=Endmail+20Org/O=MTA/CN=Claus+20Assmann+20CA+20RSA+202007/emailAddress=ca+ca-rsa2007@esmtp.org"; }
-</PRE>
-
-<P>
-
-<H1><A NAME="SECTION004140000000000000000"></A>
-<A NAME="VERP"></A><BR>
-VERP
-</H1>
-
-<P>
-There are two ways to enable VERP [<A
- HREF="README.html#bib:VERP">Ber97</A>]:
-
-<OL>
-<LI>Via the XVERP extension in the SMTP server
-(see Section
-<A HREF="#ConfigurationforSMTPServer">3.10</A>,
-item
-<A HREF="#ConfigurationforSMTPServer:xverp">3j</A>).
-</LI>
-<LI>Via an entry in aliases marking a list with <TT>verp-</TT>:
-
-<P><TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-otherlist:  &lt;user5@my.dom&gt; &lt;user6@other.dom&gt; &lt;user7@local.host&gt;	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-verp-otherlist:  something	</TT></TD>
-</TR>
-</TABLE>
-
-<P>
-</LI>
-</OL>
-
-<P>
-
-<H1><A NAME="SECTION00500000000000000000"></A>
-<A NAME="RunningMTA"></A><BR>
-Running MeTA1
-</H1>
-
-<P>
-
-<H1><A NAME="SECTION00510000000000000000"></A>
-<A NAME="RunningMTA:MCP"></A><BR>
-Starting MeTA1
-</H1>
-
-<P>
-All components of MeTA1 are under control of the MCP
-which must be started as <TT>root</TT> in the directory <TT>/var/spool/meta1</TT>
-(i.e., the main queue directory,
-see Section <A HREF="#InstallingMTA">2.4</A>: <TT>MTAQDIR</TT>)
-using
-
-<P>
-<PRE>
-# ./mcp.sh start
-</PRE>
-
-<P>
-The script contains the runtime path for MCP based on the
-data used by <TT>configure</TT>
-as well as a reference to the MeTA1 configuration file.
-
-<P>
-To stop all MeTA1 components use
-<PRE>
-# ./mcp.sh stop
-</PRE>
-or simply terminate the MCP,
-it will forward the signal to all processes it started.
-
-<P>
-The MCP provides some restart functionality:
-if a process terminates (e.g., crashes),
-it will restart it unless the exit code
-indicates that a restart is useless, e.g., <TT>EX_USAGE</TT>.
-Moreover, the processes listed in the restart dependencies will
-be stopped and started too.
-
-<P>
-
-<H1><A NAME="SECTION00520000000000000000"></A>
-<A NAME="RunningMTA:UsingMTAonlyforOutgoingMail"></A><BR>
-Using MeTA1 only for Outgoing Mail
-</H1>
-
-<P>
-MeTA1 can be used in combination with
-a MUA that speaks (E)SMTP directly
-or with the sendmail 8 MSP (Mail Submission Program) for outgoing mail.
-For the latter add this to your sendmail 8 <TT>submit.mc</TT> file
-(see also <TT>misc/sm8.submit.mc</TT>):
-
-<P>
-<PRE>
-LOCAL_RULE_0
-R$* + X&lt;@$*&gt;    $#meta1 $@ localhost $: $1 &lt;@$2&gt;
-
-LOCAL_RULESETS
-SHdrToSMTP
-R$+                     $: $&gt;PseudoToReal $1            sender/recipient common
-R$+                     $: $&gt;MasqSMTP $1                qualify unqual'ed names
-R$* + X&lt;@$*&gt;            $: $1 &lt; @ $2 &gt;
-R$* &lt; @ *LOCAL* &gt; $*    $: $1 &lt; @ $j . &gt; $2
-
-MAILER_DEFINITIONS
-Mmeta1,   P=[IPC], F=kmDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP/HdrToSMTP,
-        E=\r\n, L=990, T=DNS/RFC822/SMTP,
-        A=TCP $h 2009
-</PRE>
-
-<P>
-and run the SMTP server of MeTA1 as listener on <TT>localhost:2009</TT>.
-Then mail to
-<IMG
- WIDTH="16" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
- SRC="img5.png"
- ALT="$&lt;$">user<TT>+X</TT>@domain<IMG
- WIDTH="16" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
- SRC="img6.png"
- ALT="$&gt;$">
-will be sent via MeTA1, i.e., by adding the sequence <TT>+X</TT>
-to the address
-<IMG
- WIDTH="16" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
- SRC="img5.png"
- ALT="$&lt;$">user@domain<IMG
- WIDTH="16" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
- SRC="img6.png"
- ALT="$&gt;$">
-the mail will be redirected to MeTA1 (and <TT>+X</TT> will be removed).
-After initial testing the <TT>relay</TT> mailer can be changed to use
-port 2009 by default hence the local additions shown above can be removed.
-
-<P>
-There are also other programs available as substitute for
-the command line invocation of <TT>sendmail</TT> as mail submission program,
-e.g., <TT>mini_sendmail</TT> [<A
- HREF="README.html#bib:minsendmail">Posb</A>].
-
-<P>
-
-<H1><A NAME="SECTION00530000000000000000"></A>
-<A NAME="UsingMTAforIncomingMail"></A><BR>
-Using MeTA1 for Incoming Mail
-</H1>
-
-<P>
-
-<H2><A NAME="SECTION00531000000000000000"></A>
-<A NAME="SpecifyingLocalDomains"></A><BR>
-Local Delivery and Specifying Local Domains
-</H2>
-
-<P>
-If the domain of a recipient address matches an entry in mailertable
-(see Section <A HREF="#mailertable">3.9.3</A>)
-with the right hand side
-<code>lmtp:</code><A NAME="tex2html12"
-  HREF="#foot1634"><SUP>4.1</SUP></A>then SMTPC talks LMTP over the local socket
-<TT>lmtpsock</TT>
-(see <A HREF="#ConfigurationforSMTPClient">3.11</A>).
-If you have an LDA that runs as daemon and can talk LMTP over a local socket
-you can use it for local delivery.
-It is also possible to use <TT>procmail</TT> [<A
- HREF="README.html#bib:procmail">vdBG</A>]
-in LMTP mode
-and start it from <TT>mcp</TT>,
-see <TT>meta1.conf</TT>.
-See <TT>contrib/procmail.lmtp.p0</TT> for a patch<A NAME="tex2html13"
-  HREF="#foot1635"><SUP>4.2</SUP></A>for procmail 3.22
-to allow handling of addresses with extensions (<TT>+detail</TT>)
-in LMTP mode.
-A mailertable for local delivery via LMTP should look like this:
-
-<P><TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-localhost     </TT></TD>
-<TD ALIGN="LEFT"><TT> lmtp:	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-MY.DOM        </TT></TD>
-<TD ALIGN="LEFT"><TT> lmtp:	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-HOST.MY.DOM   </TT></TD>
-<TD ALIGN="LEFT"><TT> lmtp:	</TT></TD>
-</TR>
-</TABLE>
-
-<P>
-By default mail to addresses whose domain part is listed in mailertable
-with RHS <TT>lmtp:</TT> is allowed,
-i.e., those domains are considered local and hence relaying
-(even though technically this might not be called relaying)
-to them is allowed.
-This behavior can be turned off
-(see Section
-<A HREF="#ConfigurationforSMTPServer">3.10</A>,
-item
-<A HREF="#ConfigurationforSMTPServer:lmtpdoesnotimplyrelaying">3f</A>)
-in which case
-it is necessary to also allow relaying to these domains
-which can be done either via the access map
-(see
-Section <A HREF="#ConfigurationforSMTPServer">3.10</A>,
-<A HREF="#ConfigurationforSMTPServer:access">3b</A>),
-or the command line option <TT>-T</TT> for SMTPS.
-This allows for treating (some of) these domains as <EM>private</EM>
-by not allowing relaying to them, hence they will be only reachable
-from systems from which relaying is allowed.
-
-<P>
-
-<H2><A NAME="SECTION00532000000000000000"></A>
-<A NAME="UsingMTAforIncomingMail:LocalDelivery:SpecifyingValidLocalAddresses"></A><BR>
-Specifying Valid Local Addresses
-</H2>
-
-<P>
-To validate addresses for local domains,
-SMAR uses the map <TT>aliases.db</TT>
-(Section <A HREF="#ConfigurationOptionsforSMAR">3.9.2</A>, item
-<A HREF="#ConfigurationOptionsforSMAR:aliases:file">3a</A>),
-which can be created using <TT>createmap</TT>,
-or a map specified by the option
-<code>local_user_map</code>
-(see Section <A HREF="#ConfigurationOptionsforSMAR">3.9.2</A>,
-item <A HREF="#ConfigurationforSMAR:localusers">7</A>).
-The key in the map must be the local part of a valid (local) e-mail address.
-If the local part cannot be found in either map, the address is rejected.
-
-<P>
-To list valid local addresses in the alias map the right hand
-side must be the string ``<TT>local:</TT>'', e.g.,
-
-<P><TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-postmaster:  </TT></TD>
-<TD ALIGN="LEFT"><TT>  <IMG
- WIDTH="16" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
- SRC="img5.png"
- ALT="$&lt;$">user@host.domain<IMG
- WIDTH="16" HEIGHT="29" ALIGN="MIDDLE" BORDER="0"
- SRC="img6.png"
- ALT="$&gt;$">	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-abuse:       </TT></TD>
-<TD ALIGN="LEFT"><TT>  user+abuse	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-user++:      </TT></TD>
-<TD ALIGN="LEFT"><TT>  local:	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-user:        </TT></TD>
-<TD ALIGN="LEFT"><TT>  local:	</TT></TD>
-</TR>
-</TABLE>
-
-<P>
-Note: local addresses are checked for the envelope recipient and sender.
-
-<P>
-
-<H1><A NAME="SECTION00540000000000000000"></A>
-<A NAME="UsingMTAasGateway"></A><BR>
-Using MeTA1 as Gateway
-</H1>
-
-<P>
-MeTA1 can easily be used as an internet gateway.
-To override routing, mailertable entries (see Section <A HREF="#mailertable">3.9.3</A>)
-can be specified.
-A list of valid addresses can be made available via the access map
-by allowing relaying to those addresses instead of entire domains,
-e.g.,
-
-<P><TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-to:user1@my.domain	</TT></TD>
-<TD ALIGN="LEFT"><TT> relay	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-to:user2@my.domain	</TT></TD>
-<TD ALIGN="LEFT"><TT> relay	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-to:postmaster@my.domain	</TT></TD>
-<TD ALIGN="LEFT"><TT> relay	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-cltaddr:10.12		</TT></TD>
-<TD ALIGN="LEFT"><TT> relay	</TT></TD>
-</TR>
-</TABLE>
-
-<P>
-
-<H1><A NAME="SECTION00550000000000000000"></A>
-<A NAME="UsingMTAasBackupMXServer"></A><BR>
-Using MeTA1 as Backup MX Server
-</H1>
-
-<P>
-The previous section showed how to specify valid remote addresses
-if all of them are known.
-However, for systems that act as backup MX servers it might not be
-simple to always keep such a list up to date.
-In that case, a default entry for a domain should be made, e.g.,
-
-<P><TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>
-to:user1@other.domain		</TT></TD>
-<TD ALIGN="LEFT"><TT> relay	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-to:user2@other.domain		</TT></TD>
-<TD ALIGN="LEFT"><TT> relay	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-to:postmaster@other.domain	</TT></TD>
-<TD ALIGN="LEFT"><TT> relay	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-to:@other.domain		</TT></TD>
-<TD ALIGN="LEFT"><TT> error:451 4.3.3 Try main MX server	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-cltaddr:10.12			</TT></TD>
-<TD ALIGN="LEFT"><TT> quick:relay	</TT></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT> 
-cltaddr:127.0.0.1		</TT></TD>
-<TD ALIGN="LEFT"><TT> quick:relay	</TT></TD>
-</TR>
-</TABLE>
-
-<P>
-The last two entries allow local systems to send mail to any user
-at <TT>other.domain</TT>; without those entries mail to unlisted users
-will be (temporarily) rejected and hence cannot be delivered
-via this system.
-
-<P>
-
-<H2><A NAME="SECTION00551000000000000000">
-Note about Backup MX Servers</A>
-</H2>
-
-<P>
-It is not a good idea to run a backup MX server <TT>B</TT> for a host <TT>A</TT>
-that has stronger anti-spam measures;
-if mails are sent to <TT>A</TT> via <TT>B</TT>,
-then <TT>B</TT> may accept them for delivery,
-but <TT>A</TT> may reject them and hence <TT>B</TT> has to sent bounces,
-which, in case of spam, are most likely to forged addresses,
-hence those bounces will only cause additional problems.
-The opposite case (<TT>B</TT> has stronger anti-spam measures than <TT>A</TT>)
-can cause the rejection of mail that <TT>A</TT> actually wanted to receive.
-Hence <TT>B</TT> and <TT>A</TT> should have the same anti-spam measures;
-i.e., a system that acts as backup MX server for another one should
-perform the same anti-spam checks as the main MX server(s).
-
-<P>
-
-<H1><A NAME="SECTION00560000000000000000"></A>
-<A NAME="RunningMTA:MiscellaneousPrograms"></A><BR>
-Miscellaneous Programs
-</H1>
-
-<P>
-
-<H2><A NAME="SECTION00561000000000000000"></A>
-<A NAME="RunningMTA:MiscellaneousPrograms:DonotrunprogramsasrootUser"></A><BR>
-Do not run programs as <TT>root</TT> User
-</H2>
-
-<P>
-Almost all MeTA1 programs (except for MCP)
-refuse to run with <TT>root</TT> privileges.
-To run a program as a different user
-the utility <TT>misc/runas</TT> can be used, e.g.,
-after installation in <TT>/usr/local/bin/</TT>
-<PRE>
-# /usr/local/bin/runas meta1q mailq -V
-</PRE>
-(specify <TT>-h</TT> to see the usage).
-
-<P>
-
-<H2><A NAME="SECTION00562000000000000000"></A>
-<A NAME="RunningMTA:MiscellaneousPrograms:mailq"></A><BR>
-Displaying Content of Mail Queues
-</H2>
-
-<P>
-The program <TT>mailq</TT> displays the content of the mail queues
-(<TT>defedb</TT> and <TT>ibdb</TT>).
-Currently its output is in a similar format as the sendmail 8 version.
-The option <TT>-h</TT> shows how to use the program;
-see the previous section about using <TT>runas</TT> for <TT>mailq</TT>.
-A simple shell script wrapper <TT>mailq.sh</TT> is available
-that invokes <TT>mailq</TT> via <TT>runas</TT>.
-Note: the output of this program might not be accurate due to
-internal buffering by QMGR.
-Moreover, this program reads DEFEDB in such a way that only
-entries that have been <EM>checkpointed</EM> (see Section
-<A HREF="#AdvancedConfigurationforMCP">8.2</A> about options for checkpoints)
-are shown.
-This is done to avoid interference with the operation of QMGR.
-
-<P>
-
-<H2><A NAME="SECTION00563000000000000000"></A>
-<A NAME="RunningMTA:MiscellaneousPrograms:qmgrctl"></A><BR>
-Interacting with QMGR
-</H2>
-
-<P>
-The program <TT>qmgrctl</TT> allows to interact with the QMGR
-via the control socket (see Section
-<A HREF="#ConfigurationforQMGR">3.8</A>, item
-<A HREF="#ConfigurationforQMGR:controlsocket">3</A>).
-Invoke <TT>qmgrctl -h</TT> to see the available options.
-By default the program will show the current status of QMGR.
-If QMGR has been compiled with the option <TT>QMGR_STATS</TT>
-(see Section <A HREF="#CompileTimeOptions">12.1</A>)
-then additional statistics is available, e.g., the number of
-transactions and recipients that has been handled.
-
-<P>
-Enhancement to this program are welcome to provide more functionality.
-
-<P>
-
-<H1><A NAME="SECTION00570000000000000000"></A>
-<A NAME="ReloadingMaps"></A><BR>
-Reloading Maps
-</H1>
-
-<P>
-Maps (for SMAR and QMGR) can be reloaded
-by moving the old db file out of the way,
-creating a new file
-and then sending a <TT>USR1</TT> signal to the appropriate process to
-reopen the map.
-
-<P>
-<PRE>
-# mv $MAP.db $MAP.old.db
-# /usr/local/bin/runas meta1q createmap -F $MAP.db &lt; $MAP
-# kill -USR1 $PID
-</PRE>
-
-<P>
-Note: for QMGR it is also possible to use
-<TT>qmgrctl -r</TT> instead, see Section
-<A HREF="#RunningMTA:MiscellaneousPrograms:qmgrctl">4.6.3</A>.
-
-<P>
-
-<H1><A NAME="SECTION00580000000000000000"></A>
-<A NAME="Logging"></A><BR>
-Logging
-</H1>
-
-<P>
-Logging is done via <TT>syslog(3)</TT>
-(see Section <A HREF="#CommonConfigurationOptions">3.5</A>,
-<A HREF="#CommonConfigurationOptions:log">1</A>)
-or to <TT>stdout/stderr</TT>,
-which is redirected by the default MCP configuration to <TT>PROG.log</TT>.
-The logging format is not yet completely consistent across programs.
-Moreover, the logging entries might
-not be easy to understand because they contain some details which
-are not interesting to a potential postmaster, but to developers.
-Nevertheless, the logging entries should show the flow of mail
-through the system.
-See Section <A HREF="#LogfileFormat">10.3</A>
-for an explanation of the format of logfile entries.
-
-<P>
-Note: logfiles <EM>must</EM> exist with the proper owner and permissions
-to be used.
-Neither MCP nor the modules will currently create logfiles.
-This is done by <TT>make install</TT>, i.e.,
-<TT>misc/sm.setup.sh</TT>, which parses
-<TT>meta1.conf</TT> to extract the section titles/names and <TT>user</TT> entries
-to create the logfiles with the correct name and owner.
-This does not (yet) properly work if unique logfile names are created,
-see Section <A HREF="#AdvancedConfigurationforMCP">8.2</A>,
-<A HREF="#ConfigurationforMCP:useidinlogfilename">3</A>.
-
-<P>
-
-<H2><A NAME="SECTION00581000000000000000">
-Logfile Rotation</A>
-</H2>
-
-<P>
-Unless <TT>syslog(3)</TT> is used
-(see Section <A HREF="#CommonConfigurationOptions">3.5</A>,
-<A HREF="#CommonConfigurationOptions:log">1</A>),
-logfile rotation can be achieved by copying the existing logfile
-to a backup file, e.g.,
-
-<P>
-<PRE>
-# cp qmgr.log qmgr.log.0
-</PRE>
-
-<P>
-and sending a <TT>USR2</TT> signal which will cause the processes to
-rewind the logfile.
-Note: the author is aware that this is not an optimal solution,
-however, using <TT>syslog(3)</TT> will usually provide a better way.
-
-<P>
-
-<H1><A NAME="SECTION00590000000000000000"></A>
-<A NAME="Checks"></A><BR>
-Regular Checks
-</H1>
-
-<P>
-There are at least two things that should be done regularly:
-
-<P>
-
-<OL>
-<LI>Check the logfile for errors<A NAME="tex2html14"
-  HREF="#foot1641"><SUP>4.3</SUP></A>:
-
-<P>
-<PRE>
-$ egrep 'sev=(ALERT|CRIT|ERR|FAIL)|\&lt;assertion\&gt;' $LOGFILE
-</PRE>
-
-<P>
-</LI>
-<LI>Keep track of the size of the processes, e.g,
-
-<P>
-<PRE>
-$ date &gt;&gt; $MTAPROCS
-$ ps axuww | grep '^meta1' | sort &gt;&gt; $MTAPROCS
-</PRE>
-
-<P>
-If one of the processes continuously grows then MeTA1
-should be compiled with <TT>-DSM_HEAP_CHECK</TT>
-(see Section <A HREF="#DebuggingCompileTimeOptions">12.1.5</A>)
-and a heap dump should be taken regularly by sending the
-<TT>USR1</TT> signal to the process.
-By comparing subsequent heap dumps it should be possible to locate
-a possible memory leak.
-
-<P>
-</LI>
-</OL>
-
-<P>
-Please report problems that cannot be resolved locally,
-see Section <A HREF="#feedback">1.4.1</A>.
-
-<P>
-
-<H1><A NAME="SECTION005100000000000000000"></A>
-<A NAME="DealingwithErrors"></A><BR>
-Dealing with Errors
-</H1>
-
-<P>
-
-<H2><A NAME="SECTION005101000000000000000"></A>
-<A NAME="DealingwithErrors:ResourceProblems"></A><BR>
-Resource Problems
-</H2>
-
-<P>
-Resource problems in certain parts of the code can lead to a stop
-of the involved program.
-In such a case it will be restarted automatically
-but if the resource problem has not been taken care of
-the MTA may stop again.
-In that case manual interaction is required.
-The simple solution to a resource problem is of course to add more
-resources (RAM/disk) or to free up some resources, e.g.,
-stopping programs that do not need to run or deleting unused files.
-There are also ways to control resource usage within MeTA1:
-
-<P>
-
-<UL>
-<LI>memory shortage:
-the memory usage of MeTA1 can be controlled by restricting
-the size of various data structures,
-see Section <A HREF="#ConfigurationforQMGR">3.8</A>, e.g.,
-<code>AQ_max_entries</code>, <code>IQDB</code>, and <code>OCC_max_entries</code>.
-However, setting these values too low will result in a very slow MTA
-that may operate in a degraded state which is not acceptable.
-</LI>
-<LI>disk shortage:
-MeTA1 has options that let it decide how much free disk space
-is needed for operation,
-see Section <A HREF="#ConfigurationforQMGR">3.8</A>:
-<code>ok_disk_space</code> and <code>min_disk_space</code>.
-However, if there is not enough space to store the envelope databases
-(DEFEDB and IBDB) then the system cannot work, hence sufficiently
-free disk space is essential for proper operation.
-</LI>
-</UL>
-
-<P>
-
-<H2><A NAME="SECTION005102000000000000000"></A>
-<A NAME="DealingwithErrors:DatabaseProblems"></A><BR>
-Database Problems
-</H2>
-
-<P>
-See Section <A HREF="#DataFlowinMTA">7.1</A> for some background information
-about the usage of the various databases before trying to fix any
-possible problems.
-
-<P>
-If the deferred database is corrupted then the Berkeley DB utilities
-to deal with such situations should be tried [<A
- HREF="README.html#bib:bdbdoc">Sleb</A>],
-e.g., <code>db_recover</code>.
-
-<P>
-Currently messages stored in CDB have the transaction identifier
-(<code>ss_ta</code>, see Section <A HREF="#LogfileFormat">10.3</A>)
-as filename.
-In the worst case, i.e., if IBDB or DEFEDB are destroyed,
-this allows to reconstruct the envelope data
-together with the logfile entries.
-See the script <TT>misc/rcvrenvfromlog.sh</TT> for an example,
-here is a description of its operation.
-First, check which messages are still in CDB:
-in the CDB directory
-(<A HREF="#CommonGlobalConfiguration">3.4</A>: <code>CDB_base_directory</code>)
-issue:
-
-<P>
-<PRE>
-# ls -1 [0-9A-F]/S*
-</PRE>
-
-<P>
-Then search for each of those transaction ids
-(<TT>$TAID</TT>)
-in the logfile
-(<TT>$LOG</TT>):
-
-<P>
-<PRE>
-$ egrep "ss_ta=$TAID, (mail|rcpt)=" $LOG | \
-  sed -e 's;^.*\(mail=&lt;.*&gt;\), .*;\1;' -e 's;^.*\(rcpt=&lt;.*&gt;\), .*;\1;'
-</PRE>
-
-<P>
-will show the sender (<TT>mail=</TT>) and the recipients (<TT>rcpt=</TT>).
-Based on this data it is possible to resend the messages.
-
-<P>
-Note: contributions in this area are welcome, e.g.,
-better scripts that perform more checks and maybe allow for completely
-automatic recovery.
-
-<P>
-
-<H2><A NAME="SECTION005103000000000000000"></A>
-<A NAME="DealingwithErrors:WritingCoreDumps"></A><BR>
-Writing Core Dumps
-</H2>
-
-<P>
-By default, all MeTA1 processes are executed
-in the main queue directory.
-As those processes are running with different user and group ids
-not all of them can write a core dump into that directory
-if a fatal error occurs.
-Some operating systems have commands (e.g., <TT>coreadm(1M)</TT> on SunOS 5.x)
-to specify a different directory in which a core dump is written.
-On operating systems where such a command is not available,
-the option
-<code>working_directory</code>
-can be used
-(see Section <A HREF="#AdvancedConfigurationforMCP">8.2</A>,
-item <A HREF="#AdvancedConfigurationforMCP:workingdirectory">4</A>).
-
-<P>
-
-<H1><A NAME="SECTION005110000000000000000">
-Replacements for Features available in other MTAs</A>
-</H1>
-
-<P>
-MeTA1 does currently not offer some of the features that are available
-in other MTAs.
-This section describes replacements or workarounds for some of those
-features.
-
-<P>
-
-<OL>
-<LI>Address Masquerading:
-The best way to use the correct e-mail addresses is to properly configure
-your MUA.
-Some MUAs offer more flexibility for this than the default masquerading features
-of sendmail 8,
-e.g., mutt [<A
- HREF="README.html#bib:mutt">mut</A>]
-allows to select sender addresses based on recipient addresses.
-
-<P>
-Alternatively a mail submission program (MSP) can be used which offers
-address rewriting capabilities, e.g., the MSP from sendmail 8.
-
-<P>
-</LI>
-<LI><A NAME="forward"></A><TT>.forward</TT>:
-<TT>procmail</TT> can be used as LDA
-(see Section <A HREF="#SpecifyingLocalDomains">4.3.1</A>)
-and its configuration file
-<TT>.procmailrc</TT>
-allows to implement the same functionality as a
-<TT>.forward</TT> from sendmail 8 and some other MTAs.
-
-<P>
-</LI>
-<LI>Sending mail to programs:
-see previous item <A HREF="#forward">2</A>:
-this can be done with the help of <TT>procmail</TT>.
-
-<P>
-</LI>
-<LI>Appending mails to files:
-see item <A HREF="#forward">2</A>:
-this can be done with the help of <TT>procmail</TT>.
-
-<P>
-</LI>
-</OL>
-
-<P>
-
-<H1><A NAME="SECTION00600000000000000000"></A>
-<A NAME="PolicyMilter"></A><BR>
-Policy Milter
-</H1>
-
-<P>
-
-<H1><A NAME="SECTION00610000000000000000"></A>
-<A NAME="PolicyMilterOverview"></A><BR>
-Policy Milter Overview
-</H1>
-
-<P>
-MeTA1 has support for a policy milter
-which is similar to a milter in sendmail 8.
-The API is slightly different, however, it should be possible to
-write an compatibility layer to emulate the sendmail 8 API.
-Another difference is that MeTA1 itself only talks to a single pmilter.
-Support for multiple pmilters should be implemented in a <I>multiplexor</I>
-that connects to multiple pmilters and coordinates their responses.
-
-<P>
-
-<H1><A NAME="SECTION00620000000000000000"></A>
-<A NAME="func:Milter:ExternalInterfaces:NativePolicyMilterAPI"></A><BR>
-Native Policy Milter API
-</H1>
-
-<P>
-Note: this API may evolve over time.
-
-<P>
-Naming conventions:
-A <I>policy milter</I> (also called <I>pmilter</I>)
-is a program that uses the API provided by <I>libpmilter</I>.
-The latter interacts with the SMTP servers via
-an internal protocol, i.e., this protocol can be changed
-without changing the visible API and should not directly be accessed
-by a user application.
-
-<P>
-
-<H2><A NAME="SECTION00621000000000000000"></A>
-<A NAME="func:Milter:ExternalInterfaces:NativePolicyMilterAPI:DataStructures"></A><BR>
-Data Structures
-</H2>
-
-<P>
-libpmilter itself uses three context structures all of which
-must be treated by a milter as opaque.
-
-<P>
-
-<OL>
-<LI><TT>pmg_ctx</TT>: ``global'' libpmilter context
-(only one per process).
-</LI>
-<LI><TT>pmss_ctx</TT>: libpmilter context per SMTP server
-that connects to this instance.
-There can be multiple SMTP servers connecting to one libpmilter instance.
-</LI>
-<LI><TT>pmse_ctx</TT>: libpmilter context per SMTP session.
-</LI>
-</OL>
-
-<P>
-Any of the libpmilter functions takes one of these contexts as parameter;
-e.g., all SMTP session oriented functions have a parameter of type
-<TT>pmse_ctx_P</TT>.
-
-<P>
-A milter can have its own contexts for each of these three environments,
-see Section
-<A HREF="#func:Milter:ExternalInterfaces:NativePolicyMilterAPI:pmilterContexts">5.2.5</A>.
-
-<P>
-
-<H2><A NAME="SECTION00622000000000000000"></A>
-<A NAME="func:Milter:ExternalInterfaces:NativePolicyMilterAPI:StartandStop"></A><BR>
-Start and Stop
-</H2>
-
-<P>
-The functions in this section return <TT>SM_SUCCESS</TT> (0) on success
-and a negative value in case of an error.
-
-<P>
-First libpmilter must be initialized;
-a pmilter must specify a variable
-<TT>pmg_ctx_P pmg_ctx;</TT>
-which is passed per reference to the initialization function:
-
-<P>
-<TT>sm_ret_T sm_pmfi_init(pmg_ctx_P *pmg_ctx)</TT>
-
-<P>
-The pmilter global context must be treated as opaque data structure,
-it is passed to subsequent libpmilter function calls.
-
-<P>
-Next pmilter starts libpmilter by handing control over to the library;
-the pmilter passes a description of its requirements and functionality:
-
-<P>
-<TT>sm_ret_T sm_pmfi_start(pmg_ctx_P pmg_ctx, pmilter_P pmilter)</TT>
-
-<P>
-A milter can stop by calling:
-
-<P>
-<TT>sm_ret_T sm_pmfi_stop(pmg_ctx_P pmg_ctx)</TT>
-
-<P>
-There are various functions to set some options which can be called
-after libpmilter is initialized but before it is started.
-To set the path of the Unix domain socket over which the SMTP servers
-(see Section <A HREF="#ConfigurationforSMTPServer">3.10</A>,
-item <A HREF="#ConfigurationforSMTPServer:pmilter">17</A>)
-and libpmilter communicate:
-
-<P>
-<TT>sm_ret_T sm_pmfi_setconn(pmg_ctx_P pmg_ctx, const char *path)</TT>
-
-<P>
-The backlog parameter of the <TT>listen(2)</TT> function can be set:
-
-<P>
-<TT>sm_ret_T sm_pmfi_setbacklog(pmg_ctx_P pmg_ctx, int backlog)</TT>
-
-<P>
-The debug level of libpmilter might be set via
-(this requires knowledge of the internals of the library
-which can be acquired by looking at the source code):
-
-<P>
-<TT>sm_ret_T sm_pmfi_setdbg(pmg_ctx_P pmg_ctx, int debuglevel)</TT>
-
-<P>
-To set the communication timeout:
-
-<P>
-<TT>sm_ret_T sm_pmfi_settimeout(pmg_ctx_P pmg_ctx, int timeout)</TT>
-
-<P>
-
-<H2><A NAME="SECTION00623000000000000000"></A>
-<A NAME="func:Milter:ExternalInterfaces:NativePolicyMilterAPI:NewSMTPServer"></A><BR>
-New SMTP Server
-</H2>
-
-<P>
-Whenever an SMTP server connects to a milter an option negotiation
-is performed (similar to ESMTP itself).
-A pmilter can 
-check whether server capabilities are acceptable and return
-the options that it wants:
-
-<P>
-<TT>sm_ret_T pmfi_negotiate(pmss_ctx_P pmss_ctx, uint32_t srv_cap, uint32_t srv_fct, uint32_t srv_feat, uint32_t srv_misc, uint32_t *pm_cap, uint32_t *pm_fct, uint32_t *pm_feat, uint32_t *pm_misc)</TT>
-
-<P>
-Currently only the capabilities field is used:
-<TT>srv_cap</TT> is set by the SMTP server to a list (implemented as bit field)
-of phases of the ESMTP dialogue that can be passed to a pmilter.
-In turn the pmilter must set
-<TT>*pm_cap</TT>
-to includes those
-phases of the ESMTP dialogue that it wants to receive.
-For details, see <TT>include/sm/pmilter.h</TT>.
-For each of those phases a callback is invoked (see Section
-<A HREF="#func:Milter:ExternalInterfaces:NativePolicyMilterAPI:SMTPSessionandTransaction">5.2.4</A>)
-which must be set by the pmilter in its description structure
-<TT>struct pmilter_S</TT> (see <TT>include/sm/pmfapi.h</TT>).
-
-<P>
-
-<H2><A NAME="SECTION00624000000000000000"></A>
-<A NAME="func:Milter:ExternalInterfaces:NativePolicyMilterAPI:SMTPSessionandTransaction"></A><BR>
-SMTP Session and Transaction
-</H2>
-
-<P>
-The protocol steps from ESMTP are forwarded to
-the policy milter which can decide to accept or reject them.
-
-<P>
-
-<UL>
-<LI>New SMTP session:
-
-<P>
-<TT>sfsistat_T pmfi_connect(pmse_ctx_P pmse_ctx, const char *hostname, sm_sock_addr_T *hostaddr)</TT>
-
-<P>
-<TT>hostname</TT>: host name, as determined by a reverse lookup
-on the host IP address;
-<TT>hostaddr</TT>: host address, as determined by a <TT>getpeername(2)</TT>
-call on the SMTP socket.
-
-<P>
-</LI>
-<LI>SMTP <TT>HELO</TT>/<TT>EHLO</TT> command:
-
-<P>
-<TT>sfsistat_T pmfi_helo(pmse_ctx_P pmse_ctx, const char *helohost, bool ehlo)</TT>
-
-<P>
-<TT>helohost</TT>: Value passed to <TT>HELO</TT>/<TT>EHLO</TT> command,
-which should be the domain name of the sending host.
-<TT>ehlo</TT>: <TT>true</TT> iff <TT>EHLO</TT> was used.
-
-<P>
-</LI>
-<LI><TT>MAIL</TT> (envelope sender):
-
-<P>
-<TT>sfsistat_T pmfi_mail(pmse_ctx_P pmse_ctx, const char *mail, char **argv)</TT>
-
-<P>
-<TT>mail</TT>: envelope mail address;
-<TT>argv</TT>: null-terminated <TT>MAIL</TT> command arguments.
-
-<P>
-</LI>
-<LI><TT>RCPT</TT> (envelope recipient):
-
-<P>
-<TT>sfsistat_T pmfi_rcpt(pmse_ctx_P pmse_ctx, const char *rcpt, char **argv)</TT>
-
-<P>
-<TT>rcpt</TT>: envelope recipient address;
-<TT>argv</TT>: null-terminated <TT>RCPT</TT> command arguments.
-
-<P>
-</LI>
-<LI><TT>DATA</TT>:
-
-<P>
-<TT>sfsistat_T pmfi_data(pmse_ctx_P pmse_ctx)</TT>
-
-<P>
-</LI>
-<LI>unknown/not implemented SMTP command:
-
-<P>
-<TT>sfsistat_T pmfi_unknown(pmse_ctx_P pmse_ctx, const char *cmd)</TT>
-
-<P>
-<TT>cmd</TT>: SMTP command.
-Note: this is not yet implemented.
-
-<P>
-</LI>
-<LI>For each chunk of a message:
-
-<P>
-<TT>sfsistat_T pmfi_msg(pmse_ctx_P pmse_ctx, unsigned char *msgp, size_t msglen)</TT>
-
-<P>
-<TT>msgp</TT>: pointer to message data;
-<TT>msglen</TT>: length of message data.
-There may be multiple message chunks passed to the filter.
-End-of-lines are represented as received from SMTP
-(normally Carriage-Return/Line-Feed; CRLF).
-Notes:
-
-<UL>
-<LI>the last message chunk contains the final dot of the SMTP transmission,
-i.e., ``CRLF.CRLF''
-</LI>
-<LI>the message is not modified in any form,
-i.e., dots at the begin of a line are duplicated (by the SMTP client)
-as specified in section 4.5.2 of RFC 2821 [<A
- HREF="README.html#bib:rfc2821">Kle01</A>]
-which must be undone by the application if so desired.
-</LI>
-<LI>the message is <I>streamed</I> while being received.
-That is, the mail is not first stored on disk and then sent to the filter,
-but each part received from the client is sent directly to the filter
-(at the same speed as received from the network which might be slow).
-This may mean that the filter does not receive the entire message as
-the transmission may get interrupted
-or the SMTP server may decide to skip the rest of the message because
-it exceeds the maximum size.
-</LI>
-<LI>the return code is ignored unless
-<TT>SM_SCAP_PM_MSG_RC</TT>
-is set, see Section
-<A HREF="#func:Milter:ExternalInterfaces:NativePolicyMilterAPI:FurtherCapabilities">5.2.11</A>,
-item
-<A HREF="#func:Milter:ExternalInterfaces:NativePolicyMilterAPI:FurtherCapabilities:SMSCAPPMMSGRC">2</A>.
-</LI>
-</UL>
-
-<P>
-</LI>
-<LI>End of message (final dot of message has been received):
-
-<P>
-<TT>sfsistat_T pmfi_eom(pmse_ctx_P pmse_ctx)</TT>
-
-<P>
-</LI>
-<LI>Message is aborted outside of the control of the filter,
-for example, if the SMTP client issues an RSET command.
-
-<P>
-<TT>sm_ret_T pmfi_abort(pmse_ctx_P pmse_ctx)</TT>
-
-<P>
-</LI>
-<LI><TT>QUIT</TT> (end of an SMTP session):
-
-<P>
-<TT>sm_ret_T pmfi_close(pmse_ctx_P pmse_ctx)</TT>
-
-<P>
-This is called when an SMTP session ends.
-
-<P>
-</LI>
-</UL>
-
-<P>
-
-<H2><A NAME="SECTION00625000000000000000"></A>
-<A NAME="func:Milter:ExternalInterfaces:NativePolicyMilterAPI:pmilterContexts"></A><BR>
-Set and Get pmilter Contexts
-</H2>
-
-<P>
-As explained in Section
-<A HREF="#func:Milter:ExternalInterfaces:NativePolicyMilterAPI:DataStructures">5.2.1</A>
-a milter can have a ``global'' context <TT>pmilter_g_ctx</TT>,
-a context per SMTP server <TT>pmilter_ss_ctx</TT>,
-and a context per SMTP session <TT>pmilter_se_ctx</TT>.
-The following functions are provided to set and get these contexts.
-
-<P>
-Set the ``global'' context <TT>pmilter_g_ctx</TT>:
-
-<P>
-<TT>sm_ret_T sm_pmfi_set_ctx_g(pmg_ctx_P pmg_ctx, void *pmilter_g_ctx)</TT>.
-
-<P>
-This must be done after libpmilter has been initialized
-but before control is transferred to it.
-
-<P>
-To retrieve the ``global'' context invoke:
-
-<P>
-<TT>void *sm_pmfi_get_ctx_g(pmg_ctx_P pmg_ctx)</TT>
-
-<P>
-Note: this requires the ``global'' libpmilter context which is
-not usually passed to pmilter functions in callbacks.
-See below how to access the ``global'' context <TT>pmilter_g_ctx</TT>
-from other places.
-
-<P>
-To set the pmilter context per SMTP server <TT>pmilter_ss_ctx</TT> use:
-
-<P>
-<TT>sm_ret_T sm_pmfi_set_ctx_ss(pmss_ctx_P pmss_ctx, void *pmilter_ss_ctx)</TT>;
-
-<P>
-to retrieve it call:
-
-<P>
-<TT>void *sm_pmfi_get_ctx_ss(pmss_ctx_P pmss_ctx)</TT>
-
-<P>
-The ``global'' pmilter context <TT>pmilter_g_ctx</TT> can be retrieved
-from the libpmilter context per SMTP server:
-
-<P>
-<TT>void *sm_pmfi_get_ctx_g_ss(pmss_ctx_P pmss_ctx)</TT>
-
-<P>
-At the lowest level a context per SMTP session <TT>pmilter_se_ctx</TT>
-can be set via:
-
-<P>
-<TT>sm_ret_T sm_pmfi_set_ctx_se(pmse_ctx_P pmse_ctx, void *pmilter_se_ctx)</TT>
-
-<P>
-and retrieved by:
-
-<P>
-<TT>void *sm_pmfi_get_ctx_se(pmse_ctx_P pmse_ctx)</TT>.
-
-<P>
-Just as before there is a function to retrieve
-the pmilter context per SMTP server <TT>pmilter_ss_ctx</TT>
-from the libpmilter context per SMTP session:
-
-<P>
-<TT>void *sm_pmfi_get_ctx_ss_se(pmse_ctx_P pmse_ctx)</TT>
-
-<P>
-Note: if a pmilter uses these contexts, then it is useful
-that each ``lower level'' context contains a link
-to its ``higher level'' context.
-That is,
-each pmilter context per SMTP session <TT>pmilter_se_ctx</TT>
-should have a pointer to its
-pmilter context per SMTP server <TT>pmilter_ss_ctx</TT>
-which in turn should have a pointer to the
-``global'' pmilter context <TT>pmilter_g_ctx</TT>.
-This allows access from a function that is specific to a SMTP session
-to each relevant context.
-
-<P>
-
-<H2><A NAME="SECTION00626000000000000000"></A>
-<A NAME="func:Milter:ExternalInterfaces:NativePolicyMilterAPI:AccessingMTASymbols"></A><BR>
-Accessing MTA Symbols
-</H2>
-
-<P>
-A pmilter can set a list of symbols it wants to receive from the MTA
-by calling
-
-<P>
-<TT>sm_pmfi_setmaclist(pmss_ctx_P pmss_ctx, uint where, ...)</TT>
-
-<P>
-during the option negotiation, i.e., in <TT>pmfi_negotiate()</TT>.
-The parameter <TT>where</TT> denotes the stage of the ESMTP dialogue
-when the value of the symbol should be sent.
-It must be one of
-
-<P>
-<TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>PM_SMST_CONNECT</TT></TD>
-<TD ALIGN="LEFT">Session start</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>PM_SMST_EHLO</TT></TD>
-<TD ALIGN="LEFT">EHLO or HELO command</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>PM_SMST_MAIL</TT></TD>
-<TD ALIGN="LEFT">MAIL command</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>PM_SMST_RCPT</TT></TD>
-<TD ALIGN="LEFT">RCPT command</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>PM_SMST_DATA</TT></TD>
-<TD ALIGN="LEFT">DATA command</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>PM_SMST_DOT</TT></TD>
-<TD ALIGN="LEFT">Final dot of mail body</TD>
-</TR>
-</TABLE>
-
-<P>
-A sequence of up to <TT>PM_MAX_MACROS</TT> macros can be requested which
-must end with <TT>PMM_END</TT>.
-Valid values are:
-
-<P>
-
-<OL>
-<LI><TT>PMM_SRVHOSTNAME</TT>
-hostname of SMTP server.
-</LI>
-<LI><TT>PMM_SEID</TT>	
-session id.
-</LI>
-<LI><TT>PMM_CLIENT_RESOLVE</TT>
-result of client lookups.
-</LI>
-<LI><TT>PMM_MAIL_TAID</TT>	
-transaction id.
-</LI>
-<LI><TT>PMM_DOT_MSGID</TT>	
-Message-Id.
-</LI>
-<LI><TT>PMM_TLS_VERSION</TT>	
-TLS/SSL version used.
-</LI>
-<LI><TT>PMM_TLS_CIPHER_SUITE</TT>
-cipher suite used.
-</LI>
-<LI><TT>PMM_TLS_CIPHER_BITS</TT>
-effective key length of the symmetric encryption algorithm.
-</LI>
-<LI><TT>PMM_TLS_ALG_BITS</TT>
-maximum key length of the symmetric encryption algorithm.
-This may be less than the effective key length
-for <I>export controlled</I> algorithms.
-</LI>
-<LI><TT>PMM_TLS_VRFY</TT>	
-the result of the verification of the presented cert.
-</LI>
-<LI><TT>PMM_TLS_CERT_SUBJECT</TT>
-the DN (distinguished name) of the presented certificate.
-</LI>
-<LI><TT>PMM_TLS_CERT_ISSUER</TT>
-the DN (distinguished name) of the CA (certifcate authority)
-that signed the presented certificate (the cert issuer).
-</LI>
-<LI><TT>PMM_TLS_CN_SUBJECT</TT>
-the CN (common name) of the presented certificate.
-</LI>
-<LI><TT>PMM_TLS_CN_ISSUER</TT>
-the CN (common name) of the CA that signed the presented certificate.
-</LI>
-</OL>
-
-<P>
-Notes:
-
-<UL>
-<LI><TT>PMM_MAIL_TAID</TT> cannot be requested before <TT>PM_SMST_MAIL</TT>
-and
-<TT>PMM_DOT_MSGID</TT> can only be requested at stage
-<TT>PM_SMST_DOT</TT>.
-</LI>
-<LI>All macros beginning with <TT>PMM_TLS</TT> are only valid
-after a <TT>STARTTLS</TT> command.
-</LI>
-</UL>
-
-<P>
-To retrieve the value of a symbol the function
-
-<P>
-<TT>sm_pmfi_getmac(pmse_ctx_P pmse_ctx, uint32_t macro, char **pvalue)</TT>
-
-<P>
-can be used in the various callback functions of the ESMTP dialogue.
-If the macro was not in the request list, an error will be returned.
-If the macro has not yet been received, <TT>*pvalue</TT> will be <TT>NULL</TT>.
-Otherwise <TT>*pvalue</TT> will point to the value of the macro.
-Note: the string to which <TT>*pvalue</TT> points must <EM>not</EM> be changed.
-
-<P>
-
-<H2><A NAME="SECTION00627000000000000000"></A>
-<A NAME="func:Milter:ExternalInterfaces:NativePolicyMilterAPI:SenderModification"></A><BR>
-Sender Modification
-</H2>
-
-<P>
-The sender address (<TT>MAIL</TT>) can be replaced:
-
-<P>
-<TT>sm_ret_T sm_pmfi_mail_rplc(pmse_ctx_P pmse_ctx, const char *mail_pa, char **argv)</TT>
-
-<P>
-This function must only be called during <TT>pmfi_eom()</TT>.
-The address <TT>mail_pa</TT> must be in RFC 2821 format.
-The argument <TT>argv</TT> can be used to specify SMTP parameters for
-the sender address, however,
-this is currently not implemented,
-hence it must be set to <TT>NULL</TT> for now.
-
-<P>
-
-<H2><A NAME="SECTION00628000000000000000"></A>
-<A NAME="func:Milter:ExternalInterfaces:NativePolicyMilterAPI:RecipientModifications"></A><BR>
-Recipient Modifications
-</H2>
-
-<P>
-Recipients can be added:
-
-<P>
-<TT>sm_ret_T sm_pmfi_rcpt_add(pmse_ctx_P pmse_ctx, const char *rcpt_pa, char **argv)</TT>
-
-<P>
-or deleted:
-
-<P>
-<TT>sm_ret_T sm_pmfi_rcpt_del(pmse_ctx_P pmse_ctx, const char *rcpt_pa, rcpt_idx_T rcpt_idx)</TT>
-
-<P>
-These functions must only be called during <TT>pmfi_eom()</TT>.
-The addresses <TT>rcpt_pa</TT> must be in RFC 2821 format.
-The argument <TT>argv</TT> can be used to specify SMTP parameters for
-the recipient address, however,
-this is currently not implemented,
-hence it must be set to <TT>NULL</TT> for now.
-As the MTA does not remove identical recipient addresses,
-the address itself is not sufficient to identify one <TT>RCPT</TT>,
-but its index must be specified too.
-This index can be retrieved during a <TT>RCPT</TT> command
-(<TT>pmfi_rcpt()</TT>)
-using
-
-<P>
-<TT>sm_ret_T sm_pmfi_getrcpt_idx(pmse_ctx_P pmse_ctx, rcpt_idx_T *prcpt_idx)</TT>
-
-<P>
-Note: it is invalid to remove all recipients of a transaction.
-To discard a transaction, return <TT>SMTP_R_DISCARD</TT>
-as a result of one of the transaction oriented callbacks, e.g.,
-<TT>pmfi_eom()</TT>.
-
-<P>
-
-<H2><A NAME="SECTION00629000000000000000"></A>
-<A NAME="func:Milter:ExternalInterfaces:NativePolicyMilterAPI:HeaderModifications"></A><BR>
-Header Modifications
-</H2>
-
-<P>
-To request modifications of the header of a mail being sent, the function
-
-<P>
-<TT>sm_pmfi_hdr_mod(pmse_ctx_P pmse_ctx, uint type, uint pos, const unsigned char *header)</TT>
-
-<P>
-can be used.
-This function must only be called during <TT>pmfi_eom()</TT>.
-The argument <TT>type</TT> specifies which kind of modification is requested,
-legitimate values are defined in <TT>include/sm/hdrmoddef.h</TT>;
-these are:
-<TT>SM_HDRMOD_T_PREPEND</TT>,
-<TT>SM_HDRMOD_T_INSERT</TT>,
-<TT>SM_HDRMOD_T_REPLACE</TT>,
-<TT>SM_HDRMOD_T_REMOVE</TT>, and
-<TT>SM_HDRMOD_T_APPEND</TT>.
-
-<P>
-The argument <TT>header</TT> must be a complete header line including the
-proper line ending (CRLF).
-The argument <TT>pos</TT> specifies the position for the types
-<TT>SM_HDRMOD_T_INSERT</TT>,
-<TT>SM_HDRMOD_T_REPLACE</TT>, and
-<TT>SM_HDRMOD_T_REMOVE</TT>.
-The first header of the original mail has position one;
-zero is the <TT>Received:</TT> header added by the SMTP server.
-
-<P>
-
-<H2><A NAME="SECTION006210000000000000000"></A>
-<A NAME="func:Milter:ExternalInterfaces:NativePolicyMilterAPI:MessageReplacement"></A><BR>
-Message Replacement
-</H2>
-
-<P>
-If a pmilter wants to replace the entire message, the function
-<TT>pmfi_eom()</TT>
-must return the value
-<TT>SMTP_R_RPLCMSG</TT>.
-This will cause the invocation of the callback
-
-<P>
-<TT>sfsistat_T pmfi_msg_rplc(pmse_ctx_P pmse_ctx, const unsigned char **pmsgchunk, size_t *pmsglen)</TT>
-
-<P>
-which then must set a pointer to a message chunk and its length.
-Multiple chunks can be sent by returning
-<TT>SMTP_R_CONT</TT>
-as result of the callback.
-For the last chunk,
-<TT>SMTP_R_OK</TT>
-should be returned.
-The size of each chunk (<TT>pmsglen</TT>) must be less than
-<TT>PMILTER_CHUNK_SIZE</TT>
-as defined in
-<TT>include/sm/pmfapi.h</TT>.
-
-<P>
-libpmilter will thereafter invoke the callback
-
-<P>
-<TT>sfsistat_T pmfi_msg_rplc_stat(pmse_ctx_P pmse_ctx, sm_ret_T status)</TT>
-
-<P>
-to give the pmilter a chance to clean up after the transaction,
-and to let it know whether the message replacement was successful.
-
-<P>
-Notes:
-
-<UL>
-<LI>as the entire message is replaced and by default only the data that
-is received from the SMTP client is sent to a pmilter,
-the <TT>Received:</TT> header field that smtps generates is lost.
-To avoid this, a pmilter can request to receive that header field
-by setting
-<TT>SM_SCAP_PM_SND_RCVD</TT>
-and sending it as first chunk of the message replacement.
-</LI>
-<LI>the message must be in SMTP format, i.e., lines must end in CRLF
-and the final chunk should have the usual SMTP end of message indication:
-CRLF dot CRLF
-(<TT>&#92;r&#92;n.&#92;r&#92;n</TT>),
-however, it can also just end in CRLF.
-</LI>
-<LI>if
-<TT>pmfi_msg_rplc()</TT>
-encounters an error, e.g.,
-due to an API violation or due to a communication error with smtps,
-then it will invoke
-<TT>pmfi_msg_rplc_stat()</TT>
-directly without waiting for the entire message
-even if it consists of more chunks.
-</LI>
-</UL>
-
-<P>
-
-<H2><A NAME="SECTION006211000000000000000"></A>
-<A NAME="func:Milter:ExternalInterfaces:NativePolicyMilterAPI:FurtherCapabilities"></A><BR>
-Further Capabilities
-</H2>
-
-<P>
-In addition to selecting which SMTP commands to send to pmilter
-(see Section
-<A HREF="#func:Milter:ExternalInterfaces:NativePolicyMilterAPI:NewSMTPServer">5.2.3</A>),
-there are some more capabilities available:
-
-<P>
-
-<OL>
-<LI><A NAME="func:Milter:ExternalInterfaces:NativePolicyMilterAPI:FurtherCapabilities:SMSCAPPMRCPTST"></A><TT>SM_SCAP_PM_RCPT_ST</TT>
-causes the MTA to send <TT>RCPT</TT> information
-even if the command has been rejected,
-e.g., because the recipient is unknown, the recipient has been rejected
-due to access map checks, or relaying has been denied.
-Note: <TT>RCPT</TT> commands that are rejected for other reasons, e.g.,
-because the address is syntactically invalid, or some limit
-(maximum number of recipients) is exceeded,
-will not be sent to pmilter.
-
-<P>
-The function
-
-<P>
-<TT>sm_ret_T sm_pmfi_getstatus(pmse_ctx_P pmse_ctx, sfsistat_T *pstatus)</TT>
-
-<P>
-should be used in that case to access the current SMTP reply code
-for the command.
-This functionality is useful for a pmilter that wants
-to keep track of all recipients, not just those which are accepted,
-e.g., to deal with dictionary attacks.
-
-<P>
-</LI>
-<LI><A NAME="func:Milter:ExternalInterfaces:NativePolicyMilterAPI:FurtherCapabilities:SMSCAPPMMSGRC"></A><TT>SM_SCAP_PM_MSG_RC</TT>
-allows a pmilter to return a reply code
-as specified in
-<A HREF="#func:Milter:ExternalInterfaces:NativePolicyMilterAPI:ReturnValues">5.2.13</A>
-from <TT>pmfi_msg()</TT>.
-This is useful if a pmilter can make a decision about the mail
-without having to read the entire message.
-If this capability is turned on,
-<TT>pmfi_msg()</TT>
-must return
-<TT>SMTP_R_CONT</TT>
-for each message chunk by default to receive subsequent parts.
-Otherwise <TT>pmfi_eom()</TT> will not be called but the return code from
-<TT>pmfi_msg()</TT>
-will be used at the end of the message (in response to the final dot).
-</LI>
-</OL>
-
-<P>
-
-<H2><A NAME="SECTION006212000000000000000"></A>
-<A NAME="func:Milter:ExternalInterfaces:NativePolicyMilterAPI:MiscellaneousFunctions"></A><BR>
-Miscellaneous Functions
-</H2>
-
-<P>
-To set a reply text in an SMTP session or transaction oriented callback
-in addition to the reply code use:
-
-<P>
-<TT>sm_ret_T sm_pmfi_setreply(pmse_ctx_P pmse_ctx, const char *reply)</TT>
-
-<P>
-Note: the reply string <EM>must</EM> contain the full SMTP reply, i.e., it
-must be of the form
-
-<P>
-<TT>XYZ D.S.N text&#92;r&#92;n</TT>
-
-<P>
-where
-<TT>XYZ</TT> is a valid SMTP reply code (see RFC 2821 [<A
- HREF="README.html#bib:rfc2821">Kle01</A>])
-which <EM>must</EM> match the return code of the function from which
-<TT>sm_pmfi_setreply()</TT> is called,
-<TT>D.S.N</TT> is an enhanced status code as defined in RFC 3463
-[<A
- HREF="README.html#bib:rfc3463">Vau03</A>]
-and the rest is an explanation of the status including CRLF
-(<TT>&#92;r&#92;n</TT>).
-The text can be a multi-line reply in the form:
-
-<P>
-<PRE>
-XYZ-D.S.N text1
-XYZ-D.S.N text2
-XYZ D.S.N text3
-</PRE>
-
-<P>
-which must be specified in the format required by SMTP:
-
-<P>
-<TT>XYZ-D.S.N text1&#92;r&#92;nXYZ-D.S.N text2&#92;r&#92;nXYZ D.S.N text3&#92;r&#92;n</TT>
-
-<P>
-To set reply codes for commands that need multiple reply values
-the function:
-
-<P>
-<TT>sm_ret_T sm_pmfi_setreplies(pmse_ctx_P pmse_ctx, uint nreplies,
-int *rcodes, const char **rtexts)</TT>
-
-<P>
-must be used.
-Currently this function makes only sense if
-<TT>PRDR</TT>
-is available in the SMTP server and actually used by the client.
-A pmilter can determine the latter by parsing the arguments of the
-<TT>MAIL</TT>
-command (see <TT>pmfi_mail()</TT>).
-Note: currently the argument <TT>rtexts</TT> is ignored,
-only the array of reply codes (<TT>rcodes</TT>) is used.
-The size of this array must be <TT>nreplies</TT>
-which must match the number of valid <TT>RCPT</TT>s for this transaction.
-The reply codes in that array must be in the same order
-in which the <TT>RCPT</TT>s have been received.
-
-<P>
-Return version number of libpmilter:
-
-<P>
-<TT>sm_ret_T sm_pmfi_version(pmg_ctx_P pmg_ctx, uint32_t *major, uint32_t *minor, uint32_t *patchlevel)</TT>
-
-<P>
-This can be used to compare the version number of the library against
-which pmilter is linked
-with the version number against which pmilter is compiled.
-The major version numbers must match otherwise the program will not run.
-
-<P>
-Signal handler callback:
-
-<P>
-<TT>sm_ret_T pmfi_signal(pmg_ctx_P pmg_ctx, int sig)</TT>
-
-<P>
-This function will be called when a USR1 or USR2 signal is received;
-it is not called within a signal handler, i.e., the code does not have
-to be signal-safe.
-Note: this is not yet implemented.
-
-<P>
-
-<H2><A NAME="SECTION006213000000000000000"></A>
-<A NAME="func:Milter:ExternalInterfaces:NativePolicyMilterAPI:ReturnValues"></A><BR>
-Return Values
-</H2>
-
-<P>
-SMTP Session and transaction oriented functions
-use 
-<TT>sfsistat_T</TT>
-as return type.
-Allowed values for this type are (as defined in
-<TT>include/sm/smreplycodes.h</TT>):
-
-<UL>
-<LI><TT>SMTP_R_OK</TT>: accept command.
-</LI>
-<LI><TT>SMTP_R_ACCEPT</TT>: accept entire transaction or session
-depending on where this value is returned.
-Note: this is just a shortcut for
-<TT>SMTP_R_SET_QUICK(SMTP_R_OK)</TT>.
-</LI>
-<LI><TT>SMTP_R_DISCARD</TT>: discard effect of command.
-</LI>
-<LI><TT>SMTP_R_CONT</TT>: continue other checks.
-</LI>
-<LI><TT>SMTP_R_SSD</TT>: shut down SMTP session.
-</LI>
-<LI><TT>SMTP_R_TEMP</TT>: reject command with a temporary error.
-</LI>
-<LI><TT>SMTP_R_SYNTAX</TT>: syntax error.
-</LI>
-<LI><TT>SMTP_R_PERM</TT>: reject command with a permanent error.
-</LI>
-<LI>other valid SMTP reply codes
-[<A
- HREF="README.html#bib:rfc2821">Kle01</A>].
-</LI>
-</UL>
-
-<P>
-Additionally return values can be modified by using
-<TT>SMTP_R_SET_QUICK(returnvalue)</TT>.
-See Section <A HREF="#ConfigurationMapsforSMAR:access:quick">3.9.3</A>
-for the effects of this.
-
-<P>
-For functions that use <TT>sm_ret_T</TT> as return type
-a successful call returns <TT>SM_SUCCESS</TT> (0)
-and a negative value in case of an error.
-
-<P>
-
-<H2><A NAME="SECTION006214000000000000000"></A>
-<A NAME="PolicyMilter:ImplementationNotes"></A><BR>
-Implementation Notes
-</H2>
-
-<P>
-As <TT>libpmilter</TT> currently does not keep track of the status
-of a transaction or session,
-the functions
-<TT>pmfi_abort()</TT> and
-<TT>pmfi_close()</TT>
-may be called even if no transaction or session is currently active.
-This can happen if an SMTP server unexpectedly aborts the connection
-to a policy milter.
-An application must be aware of this and keep track of its state properly.
-
-<P>
-
-<H1><A NAME="SECTION00630000000000000000"></A>
-<A NAME="PolicyMilterExamples"></A><BR>
-Policy Milter Examples
-</H1>
-
-<P>
-The program <TT>libpmilter/example-pmilter-0.c</TT> is a simple example
-how to write a policy milter.
-It might be useful as a template for other milters.
-
-<P>
-Also available is a policy milter <TT>contrib/milter-spamd.c</TT>
-that offers an interface to <TT>spamd(1)</TT>
-which is a daemonized version of <TT>spamassassin(1)</TT>.
-<TT>milter-spamd.c</TT> is written by Daniel Hartmeier [<A
- HREF="README.html#bib:milterspamd">Harc</A>]
-(see the file itself for the Copyright) for sendmail 8
-and modified to work with the policy milter API of MeTA1.
-
-<P>
-
-<H1><A NAME="SECTION00700000000000000000">
-Miscellaneous</A>
-</H1>
-
-<P>
-
-<H1><A NAME="SECTION00710000000000000000"></A>
-<A NAME="Troubleshooting"></A><BR>
-Troubleshooting
-</H1>
-
-<P>
-If something goes wrong then the component which fails usually logs
-an error message.
-Depending on the configuration,
-an error is either logged via <TT>syslog(3)</TT>
-or printed into a logfile
-(as explained in Section <A HREF="#Logging">4.8</A>).
-Note: even if the system is configured to use <TT>syslog(3)</TT>
-(Section <A HREF="#CommonGlobalConfiguration">3.4</A>,
-item <A HREF="#CommonConfigurationOptions:log">1</A>)
-errors at startup are printed to the logfile if those errors
-occur before the configuration is read,
-hence those files need to be checked too.
-
-<P>
-
-<H2><A NAME="SECTION00711000000000000000"></A>
-<A NAME="StartupProblems"></A><BR>
-Startup Problems
-</H2>
-
-<P>
-If MeTA1 fails to start properly the reason should be logged
-as explained before.
-Some possible reasons are
-
-<OL>
-<LI>invalid configuration file:
-use <TT>misc/smconf</TT> to check the syntax before deploying
-a new configuration file.
-
-<P>
-</LI>
-<LI>wrong permissions:
-check the permissions as explained in
-Section <A HREF="#InstallingMTA">2.4</A>:
-<PRE>
-$ ./misc/sm.check.sh
-</PRE>
-
-<P>
-</LI>
-<LI>missing or invalid maps:
-make sure maps are created properly with <TT>createmap(8)</TT>.
-
-<P>
-</LI>
-</OL>
-
-<P>
-
-<H2><A NAME="SECTION00712000000000000000"></A>
-<A NAME="LogfileEntries"></A><BR>
-Logfile Entries
-</H2>
-
-<P>
-Most logfile entries should be self-explaining.
-However, some are more subtle and indicate only indirectly what might be wrong.
-Example:
-
-<P>
-<PRE>
-smtps: ... client_name=Hostname_Not_Determined
-</PRE>
-
-<P>
-indicates that the access map
-(Section <A HREF="#ConfigurationforSMTPServer">3.10</A>,
-<A HREF="#ConfigurationforSMTPServer:access">3b</A>)
-is not used which might point to a misconfiguration.
-
-<P>
-
-<H1><A NAME="SECTION00720000000000000000">
-Caveats</A>
-</H1>
-
-<P>
-The following problems exist in this version of MeTA1:
-
-<P>
-
-<UL>
-<LI>If the system runs out of memory then the MTA may not act gracefully
-in all cases, see Section
-<A HREF="#DealingwithErrors:ResourceProblems">4.10.1</A>.
-
-<P>
-</LI>
-<LI>If a disk that is used for one of the queues becomes full,
-some errors may not be handled gracefully,
-see Section <A HREF="#DealingwithErrors:ResourceProblems">4.10.1</A>.
-To avoid this, MeTA1 has some limits for the amount of available
-disk space that is required to accept mail
-(see Section <A HREF="#ConfigurationforQMGR">3.8</A>).
-</LI>
-</UL>
-
-<P>
-
-<H1><A NAME="SECTION00730000000000000000">
-Checks in SMTP Server</A>
-</H1>
-
-<P>
-The SMTP server has some builtin checks which are explained in the following.
-
-<P>
-
-<H2><A NAME="SECTION00731000000000000000"></A>
-<A NAME="StrictRFCCompliance"></A><BR>
-Strict RFC Compliance
-</H2>
-
-<P>
-The SMTP server currently enforces fairly strict RFC 2821 compliance.
-For example, a <TT>MAIL</TT> command must be given in the following format
-
-<P>
-<PRE>
-MAIL From:&lt;user@some.domain&gt;
-</PRE>
-
-<P>
-i.e., the angle brackets are required, there must be no space after ":",
-etc.
-This has the useful side effect of catching some spam programs:
-
-<P>
-<PRE>
-5.5.0 Syntax error., input=MAIL FROM: &lt;blafwhoyqjywvu@asia.com&gt;
-</PRE>
-
-<P>
-Moreover, the server requires that lines end in CRLF
-(&#92;r&#92;n),
-it will not accept command input without the correct line ending,
-i.e., trying to do that will cause a read error.
-
-<P>
-Another requirement is that MX records <EM>must</EM> point to hostnames,
-not IP addresses [<A
- HREF="README.html#bib:rfc1035">Moc87</A>].
-This applies to receiving mail
-- a <TT>MAIL</TT> address using a domain whose MX record points
-to an IP address will be rejected
-(<TT>553 5.1.8 Sender address does not exist</TT>) -
-as well as to sending mail
-- a <TT>RCPT</TT> address with a domain whose MX record points
-to an IP address is not resolved by SMAR.
-
-<P>
-
-<H2><A NAME="SECTION00732000000000000000">
-Various Checks</A>
-</H2>
-
-<P>
-The <TT>EHLO</TT> parameter is checked against the local hostname unless
-the connection comes from localhost (IP address 127.0.0.1)
-or the access map returned <TT>quick:ok</TT> or <TT>quick:relay</TT>, see
-Section <A HREF="#ConfigurationMapsforSMAR:access:quick">3.9.3</A>.
-Violations will be logged with a status text of <TT>Identity_Theft</TT>.
-
-<P>
-The SMTP server checks for ``illegal pipelining'', i.e.,
-whether a client sends commands before it is allowed to do so.
-Moreover, it also checks whether the client sends a command
-before the initial greeting.
-Note: according to RFC 2821 the client SHOULD wait for the greeting,
-but this is not (yet) a requirement.
-To turn this off, use
-<code>allow_data_before_greeting</code>
-(Section
-<A HREF="#ConfigurationforSMTPServer">3.10</A>,
-item
-<A HREF="#ConfigurationforSMTPServer:allowdatabeforegreeting">3k</A>.)
-
-<P>
-
-<H1><A NAME="SECTION00740000000000000000">
-Security Checks</A>
-</H1>
-
-<P>
-There are currently no additional security checks when creating/accessing
-files or directories besides those provided by the operating system.
-This could be a problem if MCP is misconfigured because it runs as <TT>root</TT>.
-Hence it will simply overwrite existing files if those are specified
-in the configuration file.
-The other modules run as non-privileged users,
-hence the OS provides sufficient access checks
-- unless the system is misconfigured and the MeTA1 accounts
-are misused for other purposes too.
-
-<P>
-
-<H1><A NAME="SECTION00750000000000000000">
-Restrictions</A>
-</H1>
-
-<P>
-Besides the obviously missing functionality there are
-some other things that may restrict the use of MeTA1
-in certain environments.
-Here is an incomplete list:
-
-<P>
-
-<UL>
-<LI>DNS lookups currently use only UDP by default, hence answers
-that exceed the UDP packet size will cause problems.
-However, such DNS packets are really rare (because they cause
-operational problems in various places, e.g., some firewalls
-may block TCP for port 53).
-A possible workaround might be to force TCP
-(see Section
-<A HREF="#ConfigurationOptionsforSMAR">3.9.2</A>, item
-<A HREF="#ConfigurationOptionsforSMAR:DNSflags:useTCP">1(a)i</A>),
-the correct way is a change in the DNS library to retry with TCP,
-but this has not yet been implemented.
-
-<P>
-</LI>
-<LI>Map lookups convert keys to lower case before checking an entry.
-In general this is not a problem unless local addresses rely on
-preserving the case of the local parts of addresses.
-That is, local addresses which require upper case characters do not work.
-
-<P>
-</LI>
-<LI>Multi-line replies from an SMTP server are currently
-neither stored (for a possible DSN) nor logged,
-instead just the last line is used for that purpose.
-
-<P>
-</LI>
-</UL>
-
-<P>
-Everything that is not described in the documentation does either
-not exist in the current version of MeTA1,
-or is unlikely to work.
-However, there may be omissions in the documentation, please inform
-the author of such bugs.
-
-<P>
-
-<H1><A NAME="SECTION00760000000000000000">
-Code Review, Enhancements, Patches</A>
-</H1>
-
-<P>
-Source code inspection as well as patches and suggestions are very welcome.
-
-<P>
-Enhancements and extensions are very welcome too, especially to extend
-the basic functionality of the current MeTA1 release.
-
-<P>
-
-<H1><A NAME="SECTION00770000000000000000">
-Porting</A>
-</H1>
-
-<P>
-Porting to currently unsupported platforms including non-Unix systems
-is encouraged.
-Note that the destination system must support statethreads
-[<A
- HREF="README.html#bib:statethreads">SGI01</A>]
-and Berkeley DB 4.x.
-It might be necessary to port those first.
-
-<P>
-
-<H1><A NAME="SECTION00780000000000000000"></A>
-<A NAME="VersionNaming"></A><BR>
-Version Naming
-</H1>
-
-<P>
-Each MeTA1 version has a name in the following format:
-
-<P>
-MeTA1-major.minor.[qualifier]qualifier-version.patchlevel
-
-<P>
-The major number changes between releases when new features are introduced
-(<EM>major</EM> changes, but see below about the development phases).
-The minor number changes when no new features are introduced, but
-bugfixes and (portability) enhancements are made.
-That is, no configuration changes are needed when going from one
-minor version to the next.
-The patchlevel number is used for intermediate patches between
-releases, e.g., if something is broken but it is not important
-enough for a new release because it is barely used or encountered.
-
-<P>
-There are several different qualifiers:
-
-<P>
-
-<OL>
-<LI>PreAlpha:
-This means the software is not feature complete
-and hence might be missing some functionality that is considered
-important by different users.
-Additionally, there is most likely no compatibility in data structures
-stored on disk between different pre-alpha versions,
-e.g., when upgrading from PreAlpha16 to PreAlpha17
-the main queue format may have changed without checks in the software
-for this.
-Hence old queues must be drained before upgrading.
-Moreover, the protocols used for communication between MeTA1 modules
-may have changed without providing backward compatibility,
-therefore modules from different releases must <EM>not</EM> be used together.
-Such incompatibilities are usually stated in the list of changes
-<TT>ChangeLog</TT>.
-
-<P>
-Do not run this on a production server unless you are aware of
-the possible consequences.
-The software is still under development and not fully functional.
-Moreover, it may not be sufficiently tested.
-
-<P>
-</LI>
-<LI>Alpha:
-In this state the software is ready for public testing
-but its features may still change.
-
-<P>
-</LI>
-<LI>Beta:
-Feature changes are unlikely, but still possible if required.
-Usually only bugfixes occur between beta versions.
-
-<P>
-</LI>
-<LI>Gamma:
-This is a release candidate.
-Usually only critical bugfixes occur between gamma versions.
-There might be no gamma versions at all if beta testing
-was considered successful and sufficient.
-
-<P>
-</LI>
-<LI>A release version does not have an explicit qualifier.
-
-<P>
-</LI>
-</OL>
-
-<P>
-The qualifier-version is used to distinguish between different
-version of the same qualifier, e.g., PreAlpha16 and PreAlpha17.
-It is 0 for a release version.
-
-<P>
-Examples for version names:
-MeTA1-0.0.PreAlpha19.0,
-MeTA1-1.0.0.0.
-
-<P>
-See the file <TT>include/sm/version.h</TT> how the version string
-is converted into a 32 bit number that denotes the version number.
-
-<P>
-
-<H2><A NAME="SECTION00781000000000000000">
-Snapshots</A>
-</H2>
-
-<P>
-From time to time snapshots may be made available.
-Those are marked with a date in the distribution file name,
-e.g.,
-<TT>meta1-0.0.16.0-20040928.tar.gz</TT>.
-The name indicates that it is a snapshot of what will become version
-<TT>meta1-0.0.16.0</TT>,
-i.e., the next release will have the given version number
-(without the date).
-The only other indication in the distribution is the inclusion of
-an <TT>s</TT> in the version number that is shown
-in the version output of the main components.
-A snapshot did not go through the usual release cycle and
-is made available as <EM>technology preview</EM>.
-
-<P>
-
-<H1><A NAME="SECTION00800000000000000000">
-Data Flow in MeTA1</A>
-</H1>
-
-<H1><A NAME="SECTION00810000000000000000"></A>
-<A NAME="DataFlowinMTA"></A><BR>
-Data Flow in MeTA1
-</H1>
-
-<P>
-This Section explains how MeTA1 stores information about messages
-that are transferred.
-It gives some background information which is useful for troubleshooting.
-Details about the operation of MeTA1 can be found in [<A
- HREF="README.html#bib:smxdoc">A&#223;mb</A>].
-
-<P>
-MeTA1 uses two different databases
-on disk to store envelope information (sender and recipients):
-IBDB: incoming backup database,
-DEFEDB: deferred envelope database,
-and one database to store message contents:
-CDB: content database.
-See Section <A HREF="#InstallingMTA:DirectoriesFilesandPermissions">2.4.1</A>
-about the location and layout of these databases<A NAME="tex2html15"
-  HREF="#foot4717"><SUP>7.1</SUP></A>.
-The queue manager additionally uses two internal envelope databases:
-IQDB (Incoming Queue DataBase) and AQ (Active Queue).
-
-<P>
-Incoming mails are accepted by the SMTP servers
-which store the content in the CDB
-(complete messages including headers in the format as received).
-The envelope information, i.e.,
-sender (<TT>MAIL</TT>) and recipients (<TT>RCPT</TT>),
-is stored by the queue manager in IQDB and written to IBDB
-which is just a log of envelope data and what happened to it.
-That is, the files in IBDB are written sequentially and
-are continuously growing.
-If a file reaches its size limit
-(see Section <A HREF="#ConfigurationforQMGR">3.8</A>: <code>IBDB</code>),
-then it is closed and a new file is opened.
-For a delivery, the envelope information must be transferred into AQ.
-For incoming mail this happens as soon as a transaction is accepted,
-in which case the data is moved from IQDB to AQ.
-A transaction is only accepted if the message is safely written to CDB
-and the envelope information has been committed to IBDB,
-i.e., all information is committed to persistent storage<A NAME="tex2html16"
-  HREF="#foot4328"><SUP>7.2</SUP></A>.
-
-<P>
-The scheduler in QMGR takes recipient envelopes from AQ
-and creates transactions which are given to the SMTP clients
-for delivery.
-An SMTP client takes the transaction information and tries to
-send a message whose content is read from CDB.
-After a successful delivery attempt a record is written to IBDB
-that logs this information.
-A cleanup task removes periodically old IBDB files
-which contain only data that is no longer referenced.
-
-<P>
-The deferred envelope database is only used if a message cannot be
-delivered during the first attempt.
-In that case the appropriate envelope data is added to DEFEDB
-and a record is written to IBDB stating that the data has been
-transferred to DEFEDB.
-Entries in DEFEDB contain a timestamp called next-time-to-try
-at which QMGR reads them from the database into AQ and the scheduler
-tries another delivery attempt.
-If that succeeds, the entries are removed from DEFEDB,
-otherwise they are either requeued with a new next-time-to-try
-(in case of a temporary error)
-or a DSN (bounce message) is generated
-(in case of a permanent error).
-
-<P>
-
-<H1><A NAME="SECTION00900000000000000000">
-Advanced Configuration Options</A>
-</H1>
-
-<P>
-
-<H1><A NAME="SECTION00910000000000000000"></A>
-<A NAME="AdvancedConfigurationOptions:Overview"></A><BR>
-Overview
-</H1>
-
-<P>
-Some configuration options are only needed in special situations
-and may require background knowledge of the involved systems.
-Those advanced configuration options are explained
-in the subsequent sections.
-
-<P>
-
-<H2><A NAME="SECTION00911000000000000000"></A>
-<A NAME="AdvancedConfigurationOptions:Overview:Flags"></A><BR>
-Flags
-</H2>
-
-<P>
-Usually flags are not set and hence a configuration file only
-needs to turn on flags (if required).
-However, in some cases flags are set by default
-and under some rare circumstances need to be disabled.
-To achieve this, the name of the flag can be prefixed with one of
-<TT>not_</TT>, <TT>dont_</TT>, <TT>no_</TT>, <TT>-</TT>, <TT>!</TT>, or <code>~</code>,
-e.g.,
-<code>~remove_unused_logfiles</code> or
-<code>dont_remove_unused_logfiles</code>.
-
-<P>
-
-<H1><A NAME="SECTION00920000000000000000"></A>
-<A NAME="AdvancedConfigurationforMCP"></A><BR>
-Advanced Configuration for MCP
-</H1>
-
-<P>
-
-<OL>
-<LI><A NAME="AdvancedConfigurationforMCP:maxprocesses"></A><code>max_processes</code><A NAME="4343"></A>:
-maximum number of processes to start [default: 1].
-</LI>
-<LI><code>min_processes</code><A NAME="4344"></A>:
-minimum number of processes to start [default: 1].
-</LI>
-<LI><code>use_id_in_logfile_name</code><A NAME="4345"></A>:
-<A NAME="ConfigurationforMCP:useidinlogfilename"></A>if more than one process can be started then it might be useful to
-have unique logfiles unless the processes use <TT>syslog(3)</TT>.
-If set, this (boolean) option causes MCP to include a unique identifier
-(the same as for <code>pass_id</code>, which must be used too)
-in the logfile name.
-By default the logfile has the name of the section (or the section keyword
-if no section name is given), preceeded by the log directory
-(option <TT>-L</TT> for MCP), and <TT>.log</TT> appended.
-If <code>use_id_in_logfile_name</code> is turned on, then the numeric id
-is added before the extension, e.g., <TT>/var/log/meta1/mailer0.log</TT>
-for <TT>-L /var/log/meta1/</TT> and a section with the name <TT>mailer</TT>.
-</LI>
-<LI><code>working_directory</code><A NAME="4353"></A>:
-<A NAME="AdvancedConfigurationforMCP:workingdirectory"></A>perform a <TT>chdir(2)</TT> to the specified directory before executing
-the process.
-Note: this option essentially requires that all relevant pathnames
-in the configuration file are absolute,
-otherwise it is very easy to misconfigure some pathnames,
-especially those shared between different processes.
-</LI>
-</OL>
-
-<P>
-Note:
-the number of processes for almost all MeTA1 modules should be 1.
-It <EM>must</EM> be 1 for QMGR and SMAR,
-it can be larger than 1 for SMTPC.
-For SMTPS it should be 1 in the default setup
-as the file descriptor to which MCP binds on behalf of SMTPS
-can be passed to only one process.
-
-<P>
-
-<H1><A NAME="SECTION00930000000000000000"></A>
-<A NAME="AdvancedConfigurationforQMGR"></A><BR>
-Advanced Configuration for QMGR
-</H1>
-
-<P>
-
-<OL>
-<LI><code>connection_control_hash_table_size</code><A NAME="4361"></A>:
-size of the hash table used for connection control, i.e.,
-number of incoming connections
-and connection rate
-(see Section <A HREF="#ConfigurationforQMGR">3.8</A>,
-<A HREF="#ConfigurationforQMGR:SMTPS:maxconnectionrate">18a</A> and
-<A HREF="#ConfigurationforQMGR:SMTPS:maxconnections">18b</A>)
-</LI>
-<LI><code>debug_level</code><A NAME="4365"></A>:
-debug level (only if compiled with QMGR_DEBUG).
-
-<P>
-</LI>
-<LI>subsection <code>DEFEDB</code>:
-Note:
-The Berkeley DB documentation [<A
- HREF="README.html#bib:bdbdoc">Sleb</A>]
-should be consulted before modifying
-any of these options.
-
-<OL>
-<LI><code>page_size</code><A NAME="4368"></A>:
-DB page size (this can only be set when the DB is initially created).
-</LI>
-<LI><code>cache_size</code><A NAME="4369"></A>:
-DB cache size.
-</LI>
-<LI><code>KBytes_written_for_checkpointing</code><A NAME="4370"></A>:
-If non-zero, a checkpoint will be done if more than the amount of KBytes
-of log data have been written since the last checkpoint
-(unit: KB).
-</LI>
-<LI><code>delay_between_2_checkpoints</code><A NAME="4371"></A>:
-Minimum delay between two checkpoints
-(unit: s).
-</LI>
-<LI><code>flags</code><A NAME="4372"></A>:
-flags for DEFEDB:
-
-<OL Type="i">
-<LI><code>remove_unused_logfiles</code><A NAME="4374"></A>:
-this is on by default, hence to turn it off one of the forms explained in
-Section
-<A HREF="#AdvancedConfigurationOptions:Overview:Flags">8.1.1</A>, e.g.,
-<code>dont_remove_unused_logfiles</code>,
-can be used.
-This should only be done if the Berkeley DB logfiles are removed some
-other way, e.g., after archiving.
-</LI>
-</OL>
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>delivery_timeout</code><A NAME="4378"></A>:
-timeout for a single delivery attempt
-(unit: s).
-This value should be large enough that even big mails can be delivered
-over a slow link before the QMGR considers the delivery attempt a failure
-because the delivery agent did not return a result yet.
-
-<P>
-</LI>
-<LI><code>flags</code><A NAME="4379"></A>:
-configuration flags:
-
-<OL Type="a">
-<LI><code>reuse_connection</code><A NAME="4381"></A>:
-try to reuse open SMTP connections for delivery.
-Note: this feature is still experimental.
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>max_fds</code><A NAME="4383"></A>:
-maximum number of file descriptors.
-This sets an upper limit on the number of clients that can connect to QMGR.
-
-<P>
-</LI>
-<LI><code>max_threads</code><A NAME="4384"></A>:
-maximum number of threads.
-</LI>
-<LI><code>min_threads</code><A NAME="4385"></A>:
-minimum number of threads.
-
-<P>
-</LI>
-<LI><code>scheduler_timeout</code><A NAME="4386"></A>:
-as a safety measure against unforseen problems an item is removed from
-AQ after the specified timeout.
-This timeout must be large enough to allow for scheduling delays if
-all delivery agents are busy which can happen if deliveries are slow
-or if there are fewer delivery agents available than entries in the
-active queue.
-
-<P>
-</LI>
-<LI><code>SMAR_timeout</code><A NAME="4387"></A>:
-timeout in address resolver, i.e., how long to wait for a result from SMAR
-(unit: s).
-Note: this value must be larger than the total DNS timeout
-and it must take alias expansion into account.
-
-<P>
-</LI>
-<LI>subsection <code>smtps</code>:
-
-<OL Type="a">
-<LI><code>connection_control_cache_size</code><A NAME="4389"></A>:
-size of connection control hash table.
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>tests</code><A NAME="4391"></A>:
-testing only
-(available if QMGR is compiled with <TT>-DQMGR_TEST</TT>).
-See the source code for details.
-</LI>
-</OL>
-
-<P>
-
-<H1><A NAME="SECTION00940000000000000000"></A>
-<A NAME="AdvancedConfigurationforSMAR"></A><BR>
-Advanced Configuration for SMAR
-</H1>
-
-<P>
-
-<OL>
-<LI><code>DNS</code><A NAME="4397"></A>:
-this subsection contains DNS related options.
-
-<OL>
-<LI><code>flags</code><A NAME="4399"></A>:
-valid flags are:
-
-<OL>
-<LI><code>use_TCP</code><A NAME="4401"></A>:
-<A NAME="ConfigurationOptionsforSMAR:DNSflags:useTCP"></A>use TCP instead of UDP for connections to a nameserver.
-Note: currently the DNS resolver does not automatically fall back to
-a TCP connection if the reply was too big.
-This may be added in a later version.
-</LI>
-<LI><code>use_connect</code><A NAME="4403"></A>:
-use <TT>connect(2)</TT> even if using UDP.
-This is required on systems like FreeBSD <TT>jail(8)</TT>.
-</LI>
-</OL>
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>max_fds</code><A NAME="4408"></A>:
-maximum number of file descriptors.
-This sets an upper limit on the number of clients that can connect to SMAR.
-
-<P>
-</LI>
-<LI><code>max_threads</code><A NAME="4409"></A>:
-maximum number of threads.
-</LI>
-<LI><code>min_threads</code><A NAME="4410"></A>:
-minimum number of threads.
-
-<P>
-</LI>
-</OL>
-
-<P>
-
-<H1><A NAME="SECTION00950000000000000000"></A>
-<A NAME="AdvancedConfigurationforSMTPServer"></A><BR>
-Advanced Configuration for SMTP Server
-</H1>
-
-<P>
-
-<OL>
-<LI><code>daemon_address</code><A NAME="4415"></A>:
-<A NAME="ConfigurationforSMTPServer:daemonaddress"></A>address for daemon to listen on;
-this should not be used in normal operation.
-Current (preliminary) format is:
-<TT>host:port</TT>,
-<TT>:port</TT> (listen on 0.0.0.0)
-<TT>host</TT> (port defaults to 8000).
-Up to 16 addresses<A NAME="tex2html17"
-  HREF="#foot4718"><SUP>8.1</SUP></A>can be specified.
-See the notes below.
-
-<P>
-</LI>
-<LI><code>flags</code><A NAME="4421"></A>:
-
-<OL>
-<LI><code>background</code><A NAME="4423"></A>:
-<TT>fork(2)</TT> after start; this should not be used in normal operation.
-</LI>
-<LI><code>serialize_accept</code><A NAME="4425"></A>:
-serialize <TT>accept(2)</TT> calls,
-see the statethreads documentation [<A
- HREF="README.html#bib:statethreads">SGI01</A>] for details.
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>listen_queue</code><A NAME="4429"></A>:
-length of <TT>listen(2)</TT> queue;
-this must not be used in normal operation, i.e., if MCP is used.
-
-<P>
-</LI>
-<LI><code>max_wait_threads</code><A NAME="4431"></A>:
-maximum number of waiting threads.
-</LI>
-<LI><code>min_wait_threads</code><A NAME="4432"></A>:
-minimum number of waiting threads.
-
-<P>
-</LI>
-<LI><code>module_timeout</code><A NAME="4433"></A>:
-timeout for communication with other modules.
-
-<P>
-</LI>
-<LI><A NAME="AdvancedConfigurationforSMTPServer:processes"></A><code>processes</code><A NAME="4435"></A>:
-number of processes to start.
-
-<P>
-</LI>
-<LI><code>tls</code><A NAME="4436"></A>:
-
-<OL>
-<LI><code>DSA_cert_file</code><A NAME="4438"></A>:
-file with DSA certificate in PEM format.
-</LI>
-<LI><code>DSA_key_file</code><A NAME="4439"></A>:
-file with private key for DSA certificate in PEM format.
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>wait_for_smar</code><A NAME="4441"></A>:
-maximum amount of time to wait for a reply from SMAR.
-</LI>
-</OL>
-
-<P>
-Notes:
-only one of <code>daemon_address</code> and <code>pass_fd_socket</code> must be specified.
-In normal operation it is almost always <code>pass_fd_socket</code> because
-the SMTP server cannot bind to privileged ports, hence the file descriptor
-must be passed from MCP.
-
-<P>
-
-<H1><A NAME="SECTION00960000000000000000"></A>
-<A NAME="AdvancedConfigurationforSMTPClient"></A><BR>
-Advanced Configuration for SMTP Client
-</H1>
-
-<P>
-
-<OL>
-<LI><code>connect_only_to</code><A NAME="4446"></A>:
-Specify an IP address to which all outgoing mail is sent.
-This can be used for testing with otherwise real data, i.e., addresses,
-by running an SMTP sink<A NAME="tex2html18"
-  HREF="#foot4719"><SUP>8.2</SUP></A>on a computer and specifying its IP address.
-Then all mails that should be sent via SMTP will go to that host instead
-of the addresses determined by SMAR.
-Note: it is nevertheless a good idea to use firewall rules to prevent
-mail going out to the internet,
-i.e., prohibit connections to port 25 to external hosts.
-
-<P>
-</LI>
-<LI><code>debug_level</code><A NAME="4448"></A>:
-debug level (only if compiled with SMTPC_DEBUG).
-
-<P>
-</LI>
-<LI><code>flags</code><A NAME="4449"></A>:
-
-<OL>
-<LI><code>read_QUIT_reply</code><A NAME="4451"></A>:
-read the reply to the <TT>QUIT</TT> command instead of just closing
-the connection after sending it.
-</LI>
-<LI><code>separate_final_dot_and_QUIT</code><A NAME="4453"></A>:
-send the final dot of a message and the <TT>QUIT</TT> command
-in different TCP packages even if <TT>PIPELINING</TT> is offered.
-This can avoid problems with some broken servers or firewalls.
-</LI>
-<LI><code>talk_to_myself</code><A NAME="4456"></A>:
-do not check whether server greets with the hostname of the machine
-on which smtpc runs.
-</LI>
-</OL>
-
-<P>
-</LI>
-<LI><code>max_wait_threads</code><A NAME="4458"></A>:
-maximum number of waiting threads.
-</LI>
-<LI><code>min_wait_threads</code><A NAME="4459"></A>:
-minimum number of waiting threads.
-
-<P>
-</LI>
-<LI><code>module_timeout</code><A NAME="4460"></A>:
-timeout for communication with QMGR.
-
-<P>
-</LI>
-<LI><code>remote_port</code><A NAME="4461"></A>:
-port to which connections should be made.
-Note: if multiple SMTP clients are specified, all of them
-<EM>must</EM> use the same value for
-<code>remote_port</code>.
-Currently the scheduler requires that all SMTP clients behave the same.
-If different ports are required, then those must be listed in mailertable
-entries.
-
-<P>
-</LI>
-<LI><code>tls</code><A NAME="4463"></A>:
-
-<OL>
-<LI><code>DSA_cert_file</code><A NAME="4465"></A>:
-file with DSA certificate in PEM format.
-</LI>
-<LI><code>DSA_key_file</code><A NAME="4466"></A>:
-file with private key for DSA certificate in PEM format.
-</LI>
-</OL>
-
-<P>
-</LI>
-</OL>
-
-<P>
-
-<H1><A NAME="SECTION001000000000000000000"></A>
-<A NAME="Tuning"></A><BR>
-Tuning
-</H1>
-
-<P>
-
-<H1><A NAME="SECTION001010000000000000000"></A>
-<A NAME="Tuning:SizeofQueuesCachesandDatabases"></A><BR>
-Size of Queues, Caches, and Databases
-</H1>
-
-<P>
-All data structures in QMGR have some maximum size.
-This is not just done to avoid resource exhaustion in high load situations
-but also to provide a feedback loop between
-SMTP servers (producers)
-and
-SMTP clients (consumers).
-This feedback loop helps to avoid flooding the system with mails
-that it cannot deliver fast enough.
-The incoming queue (IQDB) and
-the active queue (AQ) implement this feedback loop.
-As explained in Section <A HREF="#DataFlowinMTA">7.1</A> the data from
-the SMTP servers is stored in the incoming queue first
-which has a fixed size.
-If more data is produced than taken out
-(by the scheduler into the active queue)
-the queue will fill up and the QMGR will throttle the SMTP servers
-by dynamically reducing the number of available threads.
-Throttling the SMTP servers is done based on various resources,
-e.g., IQDB, AQ, available disk space, and much more.
-Hence by limiting the size of IQDB
-(see Section <A HREF="#ConfigurationforQMGR">3.8</A>, item
-<A HREF="#ConfigurationforQMGR:IQDB:maxcacheentries">8a</A>)
-and of course the maximum number of threads in the SMTP servers
-the incoming flow of messages can be controlled.
-The size of IQDB should be greater than
-the maximum number of threads in the SMTP servers multiplied by
-the average number of recipients,
-otherwise transaction will be rejected before all threads are busy.
-
-<P>
-The active queue should be large enough
-to provide enough work for all SMTP clients (threads)
-and it must be larger than the largest number of recipients
-accepted by a single transaction
-(see Section <A HREF="#ConfigurationforQMGR">3.8</A>,
-item <A HREF="#ConfigurationforQMGR:AQmaxentries">1</A>).
-
-<P>
-
-<H1><A NAME="SECTION001020000000000000000"></A>
-<A NAME="Tuning:DiskIO"></A><BR>
-Disk I/O
-</H1>
-
-<P>
-In most MTAs disk I/O is the limiting factor unless special hardware
-is used which employs battery backed RAM cache to achieve high I/O rates
-(IOP: I/O operations).
-If multiple disks are available, they can be used to spread the load.
-Disk files
-(see Section <A HREF="#InstallingMTA:DirectoriesFilesandPermissions">2.4.1</A>)
-are used for:
-
-<P>
-
-<OL>
-<LI>IBDB:
-the directory can be linked to a different disk.
-</LI>
-<LI>DEFEDB:
-the base directory can be changed via an option
-(Section <A HREF="#ConfigurationforQMGR">3.8</A>, item
-<A HREF="#ConfigurationforQMGR:DEFEDB:basedirectory">4a</A>),
-as well as the directory for logfiles
-(Section <A HREF="#ConfigurationforQMGR">3.8</A>, item
-<A HREF="#ConfigurationforQMGR:DEFEDB:logdirectory">4b</A>).
-</LI>
-<LI>CDB:
-the base directory can be changed via an option
-(see Section <A HREF="#CommonGlobalConfiguration">3.4</A>,
-item <A HREF="#CommonGlobalConfiguration:CDBbasedirectory">2</A>).
-Individual subdirectories
-(see Section <A HREF="#InstallingMTA:DirectoriesFilesandPermissions">2.4.1</A>)
-can be linked to different disks.
-</LI>
-</OL>
-
-<P>
-
-<H1><A NAME="SECTION001030000000000000000"></A>
-<A NAME="Tuning:ProcessesandThreads"></A><BR>
-Processes and Threads
-</H1>
-
-<P>
-The main MeTA1 processes are multi-threaded.
-However, two different threading implementations are used:
-POSIX threads (pthreads) for QMGR and SMAR and
-statethreads [<A
- HREF="README.html#bib:statethreads">SGI01</A>] for SMTP server and client.
-Statethreads only switch between threads on network I/O operations
-as it is a threading implementation in user space without kernel support.
-Hence operations that can take a long time, e.g.,
-computations for asymmetric cryptography
-(as required during the STARTTLS handshake)
-or in some cases even synchronous disk I/O,
-will not just stop a single thread but the entire process.
-If this happens it is possible to start multiple SMTP servers,
-see Section <A HREF="#AdvancedConfigurationforSMTPServer">8.5</A>, item
-<A HREF="#AdvancedConfigurationforSMTPServer:processes">7</A>.
-If it becomes necessary to start multiple SMTP clients,
-then the MCP can be instructed to do so, see
-Section <A HREF="#AdvancedConfigurationforMCP">8.2</A>,
-item <A HREF="#AdvancedConfigurationforMCP:maxprocesses">1</A>.
-
-<P>
-
-<H1><A NAME="SECTION001100000000000000000">
-Format Specifications</A>
-</H1>
-
-<P>
-
-<H1><A NAME="SECTION001110000000000000000"></A>
-<A NAME="FormatSpecifications:SocketMap"></A><BR>
-Socket Map
-</H1>
-
-<P>
-The socket map uses a simple request/reply protocol over TCP or
-UNIX domain sockets to query an external server.
-Both requests and replies are text based and encoded as netstrings,
-i.e., a string ``hello  there'' becomes:
-
-<P>
-<PRE>
-11:hello there,
-</PRE>
-
-<P>
-Note: neither requests nor replies end with CRLF.
-
-<P>
-The request consists of the database map name
-and the lookup key separated by a space character:
-
-<P>
-<I>mapname</I> ' ' <I>key</I>
-
-<P>
-The server responds with a status indicator
-and the result (if any):
-
-<P>
-<I>status</I> ' ' <I>result</I>
-
-<P>
-The status indicator is one of the following
-upper case words:
-
-<P>
-<TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>OK</TT></TD>
-<TD ALIGN="LEFT">the key was found, result contains the looked up value</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>NOTFOUND</TT></TD>
-<TD ALIGN="LEFT">the key was not found, the result is empty</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>TEMP</TT></TD>
-<TD ALIGN="LEFT">a temporary failure occured</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>TIMEOUT</TT></TD>
-<TD ALIGN="LEFT">a timeout occured on the server side</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>PERM</TT></TD>
-<TD ALIGN="LEFT">a permanent failure occured</TD>
-</TR>
-</TABLE>
-
-<P>
-In case of errors (status <TT>TEMP</TT>, <TT>TIMEOUT</TT> or <TT>PERM</TT>)
-the result field may contain an explanatory message.
-
-<P>
-Example replies:
-
-<P>
-<PRE>
-31:OK resolved.address@example.com,
-</PRE>
-
-<P>
-in case of a successful lookup, or:
-
-<P>
-<PRE>
-8:NOTFOUND,
-</PRE>
-
-<P>
-in case the key was not found, or:
-
-<P>
-<PRE>
-55:TEMP this text explains that we had a temporary failure,
-</PRE>
-
-<P>
-in case of a failure.
-
-<P>
-
-<H1><A NAME="SECTION001120000000000000000"></A>
-<A NAME="FormatofSession_TransactionIdentifiers"></A><BR>
-Format of Session/Transaction Identifiers
-</H1>
-
-<P>
-The format of session and transaction identifiers is specified in
-<TT>include/sm/mta.h</TT>.
-For the SMTP server it consists of a leading 'S',
-a 64 bit counter and an 8 bit ``process'' identifier,
-both of which are printed in hexadecimal format.
-For the SMTP client it consists of a leading 'C',
-an 8 bit ``process'' identifier, a 32 bit counter,
-and a 32 bit thread index, all
-of which are printed in hexadecimal format.
-
-<P>
-Examples:
-<TT>S00000000407CE49200</TT>,
-<TT>C010000137D00000000</TT>.
-
-<P>
-SMTP server session/transaction identifiers are unique
-until the 64 bit counter wraps around,
-SMTP client session/transaction identifiers are unique only
-within a single invocation of QMGR.
-
-<P>
-Note: the format may change between different release of MeTA1,
-hence the identifiers should be considered opaque.
-
-<P>
-
-<H1><A NAME="SECTION001130000000000000000"></A>
-<A NAME="LogfileFormat"></A><BR>
-Logfile Format
-</H1>
-
-<P>
-The general format of entries in a logfile is a sequence of
-named fields which are separated by commas.
-Each field consists of a name, an equal sign, and a value.
-If the value is a text field that is received from an external
-(untrusted) source, then all non-printable characters,
-commas, and percent signs are shown
-as their two digit hexadecimal ASCII representation with a leading
-percent sign.
-For example, the text
-<PRE>
-550 5.7.1 no, not now, 99% usage
-</PRE>
-is encoded as
-<PRE>
-550 5.7.1 no%2C not now%2C 99%25 usage
-</PRE>
-
-<P>
-This encoding allows a logfile analyzer to use the comma symbol as
-a delimiter of fields without having to perform complicated parsing,
-e.g, the Unix <TT>awk</TT> utility can be used with comma as field separator.
-Note: suggestions for a better encoding or different solution for the
-problem are welcome (more details can be found in [<A
- HREF="README.html#bib:smxdoc">A&#223;mb</A>]).
-
-<P>
-Logfiles use the identifiers described earlier such that
-transactions and sessions can be easily recognized.
-For the following examples logfile entries have been slightly edited
-and line breaks have been inserted.
-
-<P>
-Here is one example of a session in an SMTP server:
-
-<P>
-<PRE>
-ss_sess=S00000000407EAE3800, client_ipv4=127.0.0.1,
-  client_name=localhost.endmail.org.
-ss_sess=S00000000407EAE3800, where=connection, starttls=successful
-ss_sess=S00000000407EAE3800, ss_ta=S00000000407EAE4E00,
-  mail=&lt;SENDER@meta1.org&gt;, stat=0
-ss_sess=S00000000407EAE3800, ss_ta=S00000000407EAE4E00,
-  rcpt=&lt;RECIPIENT@meta1.org&gt;, idx=0, stat=0
-ss_sess=S00000000407EAE3800, ss_ta=S00000000407EAE4E00,
-  rcpt=&lt;SOMEONE@SOME.DOMAIN&gt;, idx=1, stat=0
-ss_sess=S00000000407EAE3800, ss_ta=S00000000407EAE4E00,
-  msgid=&lt;20040916050457.GG54961@endmail.org&gt;, size=1177, stat=0
-</PRE>
-
-<P>
-The first entry shows a successful session creation including
-the IPv4 address and the hostname of the client.
-The second entry indicates that STARTTLS has been used.
-A new transaction is shown in the third entry
-and two recipients are given thereafter (along with the index <TT>idx</TT>).
-The last entry shows that the transaction was successful
-(<TT>status=0</TT>; 0 is used instead of 250 or other SMTP reply codes
-that indicate success)
-and the size of the received mail (in bytes) as well as its Message-Id.
-
-<P>
-Here is one example of a session in an SMTP client:
-
-<P>
-<PRE>
-da_sess=C01000006C800000002, status=connected, port=25, addr=64.81.247.36
-da_sess=C01000006C800000002, where=connection, starttls=successful
-da_sess=C01000006C800000002, da_ta=C01000006C900000002,
-  ss_ta=S00000000407EAE4E00, mail=&lt;SENDER@meta1.org&gt;, stat=0,
-  reply=250 2.5.0 MAIL command succeeded
-da_sess=C01000006C800000002, da_ta=C01000006C900000002,
-  ss_ta=S00000000407EAE4E00, rcpt=&lt;RECIPIENT@meta1.org&gt;, stat=0,
-  reply=250 2.1.5 RCPT ok
-da_sess=C01000006C800000002, da_ta=C01000006C900000002,
-  ss_ta=S00000000407EAE4E00, where=final_dot, size=1177, stat=0
-</PRE>
-
-<P>
-This is very similar to the format of the entries entries in
-the SMTP server and should not require an explanation.
-In addition to the delivery agent session and transaction ids
-(<TT>da_sess</TT> and <TT>da_ta</TT>)
-the SMTP server transaction id (<TT>ss_ta</TT>) is logged too.
-This makes it simple to track a message through the MTA.
-Obviously <TT>ss_ta</TT> can be used for multiple outgoing messages
-if the incoming message has been sent to multiple recipients
-(maybe indirectly via an alias), hence this is not a unique
-identifier in the SMTP client log.
-
-<P>
-QMGR can also log the delay time for each recipient, e.g.,
-<PRE>
-func=q_upd_rcpt_ok, rcpt_id=S00000000407EAE4E00-000000,
-  rcpt=&lt;RECIPIENT@meta1.org&gt;, xdelay=0, delay=1
-</PRE>
-where <TT>xdelay</TT> is the time for this delivery attempt,
-and <TT>delay</TT> is the total delivery time.
-
-<P>
-
-<H1><A NAME="SECTION001140000000000000000">
-Format of Received Header</A>
-</H1>
-
-<P>
-The format of the <TT>Received:</TT> header added by the SMTP server
-is specified in
-<TT>smtps/smtps.c</TT>.
-
-<P>
-<PRE>
-Received: from EHLO-NAME (CLIENT-NAME [CLIENT-ADDR])
-        by HOST-NAME (SM-X-VERSION) with PROTOCOL
-        id SMTP-TA-ID; DATE
-</PRE>
-
-<P>
-where <TT>PROTOCOL</TT> is one of
-<TT>ESMTP</TT>,
-<TT>ESMTPS</TT>,
-<TT>ESMTPA</TT>,
-<TT>ESMTPSA</TT>,
-or <TT>SMTP</TT> [<A
- HREF="README.html#bib:rfc3848">New04</A>].
-If STARTTLS is active, then
-<TT>(TLS=TLSVERSION, cipher=CIPHERSUITE, bits=CIPHERBITS,
-verify=VERIFYRESULT)</TT>
-is placed before <TT>id</TT>,
-where
-TLSVERSION is the TLS protocol version,
-e.g., TLSv1, SSLv3, SSLv2;
-CIPHERSUITE is the cipher suite that was in use, e.g.,
-AES256-SHA, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CBC-SHA,
-CIPHERBITS denotes the
-effective keylength (in bits) of the symmetric encryption algorithm
-of the TLS connection,
-and
-VERIFYRESULT is one of the following:
-
-<P>
-<TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT">OK</TD>
-<TD ALIGN="LEFT">verification succeeded.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">NO</TD>
-<TD ALIGN="LEFT">no cert presented.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">NOT</TD>
-<TD ALIGN="LEFT">no cert requested.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">FAIL</TD>
-<TD ALIGN="LEFT">cert presented but could not be verified,
-e.g., the signing CA cert is missing.</TD>
-</TR>
-</TABLE>
-
-<P>
-Note: the name of the client is only shown if the access map
-feature is activated
-(see
-Section <A HREF="#ConfigurationforSMTPServer">3.10</A>,
-<A HREF="#ConfigurationforSMTPServer:access">3b</A>),
-otherwise the time-consuming DNS lookups (PTR and A records)
-are not performed.
-
-<P>
-
-<H1><A NAME="SECTION001150000000000000000">
-Format of DSNs</A>
-</H1>
-
-<P>
-DSNs (<I>bounces</I>) are currently not compliant to RFC 1891ff,
-however, a configuration option
-(Section <A HREF="#ConfigurationforQMGR">3.8</A>,
-item <A HREF="#ConfigurationforQMGR:MIMEFormat">5(b)ii</A>)
-can be set to send DSNs in MIME format,
-i.e.,
-<TT>Content-Type: multipart/mixed</TT>
-with
-<TT>Content-Type: message/rfc822</TT>
-for the original message.
-The format looks like this:
-
-<P>
-<PRE>
-From: Mailer-Daemon@HOST.NAME
-Subject: Undeliverable mail
-
-A mail from you could not be delivered. See below for details.
-</PRE>
-
-<P>
-and then a list of recipients and the reasons for the failure, e.g.,
-
-<P>
-<PRE>
-Recipient:
-&lt;user@example.com&gt;
-Remote-MTA:
-10.2.3.4
-Reason:
-550 5.7.1 &lt;user@example.com&gt;... Access denied
-during RCPT
-</PRE>
-
-<P>
-
-<H1><A NAME="SECTION001200000000000000000">
-Setup for STARTTLS</A>
-</H1>
-
-<P>
-
-<H1><A NAME="SECTION001210000000000000000"></A>
-<A NAME="CertificatesforSTARTTLS"></A><BR>
-Certificates for STARTTLS
-</H1>
-
-<P>
-When acting as a server,
-MeTA1
-requires X.509 certificates to support STARTTLS:
-one as certificate for the server,
-at least one root CA
-(<code>CAcert_file</code>),
-i.e., a certificate that is used to sign other certificates,
-and a path to a directory which contains certs of other CAs
-(<code>CAcert_directory</code>).
-The file specified via
-<code>CAcert_file</code>
-can contain several certificates of CAs.
-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; e.g.,
-<PRE>
-error:14094417:SSL routines:SSL3_READ_BYTES:
-sslv3 alert illegal parameter:s3_pkt.c:964:SSL alert number 47
-</PRE>
-You should probably put only the CA cert into that file
-that signed your own cert(s), or at least only those you trust.
-The directory specified via <code>CAcert_directory</code>
-must contain the hashes of each CA certificate as filenames
-(or as links to them).
-Symbolic links can be generated with the following
-two (Bourne) shell commands:
-<PRE>
-C=FileName_of_CA_Certificate
-ln -s $C `openssl x509 -noout -hash &lt; $C`.0
-</PRE>
-An X.509 certificate is also required for authentication in client mode,
-however,
-MeTA1 will always use STARTTLS when offered by a server.
-The client and server certificates can be identical.
-Certificates can be obtained from a certificate authority
-or created with the help of OpenSSL.
-The required format for certificates and private keys is PEM.
-To allow for automatic startup of MeTA1, private keys
-must be stored unencrypted.
-The keys are only protected by the permissions of the file system,
-hence they should not be readable by anyone but the owner.
-If server and client share the same key it is ok to make the
-key group readable however.
-Never make a private key available to a third party.
-
-<P>
-<PRE>
--r--r--r--  1 root     wheel       CAcert.pem
--r--r--r--  1 meta1s   meta1c      smcert.pem
--r--r-----  1 meta1s   meta1c      smkey.pem
-drwxr-xr-x  2 root     wheel       certs/
-</PRE>
-
-<P>
-
-<H1><A NAME="SECTION001300000000000000000">
-More About Configuration, Compilation, Debugging, and Testing</A>
-</H1>
-
-<P>
-
-<H1><A NAME="SECTION001310000000000000000"></A>
-<A NAME="CompileTimeOptions"></A><BR>
-Compile Time Options
-</H1>
-
-<P>
-There are several compile time parameters
-which might be useful in some situations that are listed below.
-Compile time options to turn on additional debugging
-are listed in section
-<A HREF="#DebuggingCompileTimeOptions">12.1.5</A>.
-
-<P>
-
-<H2><A NAME="SECTION001311000000000000000"></A>
-<A NAME="CompileTimeOptions:Generic"></A><BR>
-Generic
-</H2>
-
-<P>
-To further restrict the length of
-<TT>syslog(3)</TT>
-messages
-the compile time options
-<code>MTA_LOG_LEN</code>
-and
-<code>MTA_LOG_LEN_MAX</code>
-can be used
-(see
-<TT>libmta/log.c</TT>
-for the defaults).
-The macro
-<code>MTA_LOG_LEN_MAX</code>
-sets the maximum length of a
-<TT>syslog(3)</TT>
-message,
-<code>MTA_LOG_LEN</code>
-needs only be set if
-<code>MTA_LOG_LEN_MAX</code>
-is less than the default value of
-<code>MTA_LOG_LEN</code>.
-
-<P>
-
-<H2><A NAME="SECTION001312000000000000000"></A>
-<A NAME="CompileTimeOptions:QMGR"></A><BR>
-QMGR
-</H2>
-
-<P>
-To enable QMGR statistics, e.g.,
-number of transactions and recipients that have been handled,
-set <TT>QMGR_STATS</TT>.
-
-<P>
-
-<H2><A NAME="SECTION001313000000000000000"></A>
-<A NAME="CompileTimeOptions:SMAR"></A><BR>
-SMAR
-</H2>
-
-<P>
-The address resolver imposes limits on the number of MX and A records
-that it accepts when it does routing lookups.
-These macros are:
-
-<UL>
-<LI><TT>MTA_DNS_MX_MAX</TT>: maximum number of MX records for a domain,
-</LI>
-<LI><TT>MTA_DNS_A_PER_MX_MAX</TT>: maximum number of A records for one MX record,
-</LI>
-<LI><TT>MTA_DNS_A_MAX</TT>: maximum number of A records for a domain
-(after performing MX lookups).
-</LI>
-</UL>
-
-<P>
-
-<H2><A NAME="SECTION001314000000000000000"></A>
-<A NAME="CompileTimeOptions:SMTPS"></A><BR>
-SMTPS
-</H2>
-
-<P>
-
-<UL>
-<LI><TT>SS_EHLO_ACCESS_CHK</TT>
-enables lookups of the
-<TT>EHLO</TT>/<TT>HELO</TT> argument in the access map
-(Section <A HREF="#ConfigurationforSMTPServer">3.10</A>,
-<A HREF="#ConfigurationforSMTPServer:access">3b</A>).
-This must be enabled at runtime via the flag
-<TT>check_ehlo</TT>.
-
-<P>
-</LI>
-</UL>
-
-<P>
-
-<H2><A NAME="SECTION001315000000000000000"></A>
-<A NAME="DebuggingCompileTimeOptions"></A><BR>
-Debugging Compile Time Options
-</H2>
-
-<P>
-There are several compile time parameters to support debugging.
-An option that applies to all modules (as they use the same libraries) is
-<TT>MTA_HEAP_CHECK</TT>
-which turns on various heap checks and keep track of memory usage.
-
-<P>
-Other options are specific to a module
-and can be used to turn on debugging output.
-Since currently no logging abstraction is in use,
-the output is done on a per-module basis
-(whatever is simplest for the individual module).
-These compile time options are:
-
-<P>
-<TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT"><TT>SC_DEBUG</TT></TD>
-<TD ALIGN="LEFT">SMTPC	debugging</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>SSQ_DEBUG</TT></TD>
-<TD ALIGN="LEFT">SMTPS - QMGR communication debugging</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>SS_DATA_DEBUG</TT></TD>
-<TD ALIGN="LEFT">SMTPS DATA stage debugging</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>QMGR_DEBUG</TT></TD>
-<TD ALIGN="LEFT">QMGR debugging</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>SMAR_DEBUG</TT></TD>
-<TD ALIGN="LEFT">SMAR debugging</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>MTA_LIBDNS_DEBUG</TT></TD>
-<TD ALIGN="LEFT">libdns debugging</TD>
-</TR>
-</TABLE>
-
-<P>
-For details see the source code.
-
-<P>
-Note: it is possible to set different debug levels for different debug
-categories in QMGR.
-For a list of categories see <TT>include/sm/qmgrdbg.h</TT>.
-To set a debug level <I>n</I> for a category <I>c</I> use the option
-<TT>-x</TT><I>c</I>.<I>n</I>.
-The general syntax for the parameters is:
-
-<P>
-<TABLE CELLPADDING=3>
-<TR><TD ALIGN="LEFT">debugoptions</TD>
-<TD ALIGN="CENTER">::=</TD>
-<TD ALIGN="LEFT">debugoption [ "," debugoptions ]</TD>
-</TR>
-<TR><TD ALIGN="LEFT">debugoption</TD>
-<TD ALIGN="CENTER">::=</TD>
-<TD ALIGN="LEFT">range [ "." level ]</TD>
-</TR>
-<TR><TD ALIGN="LEFT">range</TD>
-<TD ALIGN="CENTER">::=</TD>
-<TD ALIGN="LEFT">first [ "-" last ]</TD>
-</TR>
-</TABLE>
-
-<P>
-If <TT>level</TT> is omitted, it defaults to <TT>1</TT>.
-Example: <TT>-x1-3.4,5.3,9-11</TT>
-
-<P>
-A simple way to set compile time options is to use:
-
-<P>
-<PRE>
-$ CFLAGS="-DSM_HEAP_CHECK" $PATHTO/meta1-$VERSION/configure
-</PRE>
-
-<P>
-A more complicated example is:
-
-<P>
-<PRE>
-$ CFLAGS="-O -g -DSM_HEAP_CHECK -I/usr/local/include" \
- LDFLAGS="-L/usr/local/lib" \
- $PATHTO/meta1-$VERSION/configure
-</PRE>
-
-<P>
-Hint: it is useful to write the command line into a local file
-that can be reused for subsequent builds and versions.
-
-<P>
-Note: if <TT>configure</TT> has problems with OpenSSL because you do not have
-KerberosV installed, add
-
-<P>
-<PRE>
-$ CPPFLAGS="-DOPENSSL_NO_KRB5"
-</PRE>
-
-<P>
-
-<H1><A NAME="SECTION001320000000000000000">
-Possible Compilation Problems or Warnings</A>
-</H1>
-
-<P>
-
-<OL>
-<LI>If gcc is used as C compiler and full checking is turned on warnings
-like these are produced:
-
-<P>
-<PRE>
-warning: unknown conversion type character `N' in format
-warning: unsigned int format, sm_str_P arg (arg 3)
-warning: too many arguments for format
-</PRE>
-
-<P>
-Unfortunately gcc cannot be told about additional format specifiers
-and hence the misleading warning might be generated.
-
-<P>
-</LI>
-<LI>On some systems the following warning is generated by the compiler:
-
-<P>
-<PRE>
-`sys_nerr' is deprecated; use `strerror' or `strerror_r' instead
-</PRE>
-
-<P>
-<code>sys_nerr</code> is used to determine whether it makes sense to invoke
-<TT>strerror(3)</TT> at all.
-The systems that generate this error do not provide
-an alternative way to perform this check.
-Just ignore the warning or ask the authors of that warning
-for an alternative way to determine the range of defined error codes.
-
-<P>
-</LI>
-</OL>
-
-<P>
-
-<H1><A NAME="SECTION001330000000000000000"></A>
-<A NAME="MoreaboutTestPrograms"></A><BR>
-More About Test Programs
-</H1>
-
-<P>
-
-<H2><A NAME="SECTION001331000000000000000"></A>
-<A NAME="MoreEnvironmentVariablesusedbyTestPrograms"></A><BR>
-More Environment Variables used by Test Programs
-</H2>
-
-<P>
-
-<UL>
-<LI><code>MTA_NAMESERVER</code><A NAME="4661"></A>:
-can be used to set a specific nameserver (IPv4 address)
-in case the simple script which extracts the first line
-beginning with <TT>nameserver</TT> from the file <TT>/etc/resolv.conf</TT>
-does not give the desired result.
-
-<P>
-</LI>
-<LI><code>MTA_PMILTER_REGEX_TEST</code><A NAME="4664"></A>:
-can be used to enable the tests
-(<TT>make check</TT> in <TT>chkmts/</TT>)
-for the policy milter <TT>milter-regex</TT>
-provided it is enabled and compiled.
-Notes:
-
-<UL>
-<LI>this requires that
-<TT>make check</TT> is executed in <TT>contrib/</TT> before
-<TT>make check</TT> in <TT>chkmts/</TT>.
-</LI>
-<LI><TT>make check</TT> in <TT>contrib/</TT> may fail
-due to a compilation error for <TT>milter-regex.c</TT>.
-If your OS has <TT>yacc(1)</TT> (or <TT>bison(1)</TT> installed
-then remove that file (<TT>milter-regex.c</TT>) and try again.
-You may have to tell <TT>configure</TT> to use <TT>yacc(1)</TT>,
-e.g.,
-<PRE>
-YACC=yacc ./configure ...
-</PRE>
-</LI>
-</UL>
-
-<P>
-</LI>
-<LI>Some test programs use SMTP servers and sinks listening on an INET port.
-The default values for these ports are specified in <TT>chkmts/common.sh</TT>.
-If one of the default ports is used by another program,
-then the corresponding environment variable must be set
-as otherwise all related test programs will fail.
-
-<P>
-
-<UL>
-<LI><code>MTA_SNKPORT</code><A NAME="4686"></A>:
-set the port on which the SMTP sink is listening.
-
-<P>
-</LI>
-<LI><code>MTA_SRVPORT</code><A NAME="4687"></A>:
-set the port on which the SMTP test server is listening.
-</LI>
-</UL>
-
-<P>
-</LI>
-</UL>
-
-<P>
-
-<H2><A NAME="SECTION001332000000000000000"></A>
-<A NAME="OtherPotentialProblemswithTestPrograms"></A><BR>
-Other Potential Problems with Test Programs
-</H2>
-
-<P>
-Some of the test programs may generate warnings,
-e.g., most of the tree related programs cause compilers on 32 bit systems
-to emit a warning
-<code>integer constant too large</code>
-which can be ignored.
-
-<P>
-
-<H3><A NAME="SECTION001332100000000000000"></A>
-<A NAME="TestPrograms:KnownTestProgramProblemsspecifictoanOSsetup"></A><BR>
-Known Test Program Problems specific to an OS/setup
-</H3>
-
-<P>
-FreeBSD systems when running in a <TT>jail(8)</TT> exhibit the
-following problems:
-
-<P>
-
-<UL>
-<LI>The test programs for SMAR which perform DNS lookups
-can fail because UDP does not work in a <TT>jail(8)</TT> as expected.
-A workaround for this is to use the <TT>-U</TT> option for <TT>smar</TT>
-which can be achieved by setting the environment variable
-<TT>SMAROPTS</TT> to that value.
-
-<P>
-</LI>
-<LI>Connections from localhost to the SMTP server do not have
-<TT>127.0.0.1</TT> as source IP address, but the IP address of a NIC.
-Hence relaying must be allowed for it by setting the environment variable
-<TT>MTA_SERVER_OPTIONS</TT> to the option <TT>-C</TT> and the IP address, e.g.,
-<TT>-C 10.2.3.4</TT>.
-Moreover, because the tests
-<TT>chkmts/t-mts-icr.sh</TT> and
-<TT>chkmts/t-mts-ocr.sh</TT>
-rely on connections coming from
-<TT>127.0.0.1</TT>
-they will fail too.
-
-<P>
-</LI>
-</UL>
-
-<P>
-MacOS 10.3.4 has a problem with <TT>sigwait(3)</TT>, see Apple's bug 3675391;
-hence MeTA1 does not work on this OS (and other versions that
-have the same bug).
-
-<P>
-
-<H1><A NAME="SECTION001400000000000000000">
-Licenses</A>
-</H1>
-
-<P>
-The main licenses for MeTA1 can be found in the file
-<TT>LICENSE</TT>
-and in the directory
-<TT>license/</TT>.
-Additionally, MeTA1 contains code from other projects
-whose licenses can be either found in the respective source files
-or in
-<TT>statethreads/README</TT> for the statethreads library
-and
-<TT>db-4.3.28.NC/LICENSE</TT> for Berkeley DB.
-Some source code is licensed under a BSD license which can be found
-at the begin of those files.
-
-<P>
-
-<H2><A NAME="SECTION001500000000000000000">
-Bibliography</A>
-</H2><DL COMPACT><DD><P></P><DT><A NAME="bib:smxrfh">A&#223;ma</A>
-<DD>
-Claus A&#223;mann.
-<BR>Sendmail X.
-<BR><TT>http://www.sendmail.org/%7Eca/email/sm-9-rfh.html</TT>.
-
-<P></P><DT><A NAME="bib:smxdoc">A&#223;mb</A>
-<DD>
-Claus A&#223;mann.
-<BR>Sendmail X: Requirements, Architecture, Functional Specification,
-  Implementation, and Performance.
-<BR><TT>http://www.sendmail.org/%7Eca/email/sm-X/</TT>.
-
-<P></P><DT><A NAME="bib:VERP">Ber97</A>
-<DD>
-Dan Bernstein.
-<BR>VERP: Variable Envelope Return Paths, 1997.
-<BR><TT>http://cr.yp.to/proto/verp.txt</TT>.
-
-<P></P><DT><A NAME="bib:CyrusSASL">Cyr</A>
-<DD>
-Project Cyrus.
-<BR><TT>http://asg.web.cmu.edu/cyrus/</TT>, <TT>  http://asg.web.cmu.edu/sasl/</TT>.
-
-<P></P><DT><A NAME="bib:rfc2920">Fre00</A>
-<DD>
-N.&nbsp;Freed.
-<BR>SMTP service extension for command pipelining.
-<BR>RFC 2920, Internet Engineering Task Force, 2000.
-
-<P></P><DT><A NAME="bib:GPG">Gnu</A>
-<DD>
-GnuPG.
-<BR>GNU Privacy Guard.
-<BR><TT>http://www.gnupg.org/</TT>.
-
-<P></P><DT><A NAME="bib:drafthallprdr00">Hal07</A>
-<DD>
-Eric&nbsp;A. Hall.
-<BR>Smtp service extension for per-recipient data responses (prdr).
-<BR>Draft, Internet Engineering Task Force, 2007.
-
-<P></P><DT><A NAME="bib:grey">Hara</A>
-<DD>
-Evan Harris.
-<BR>The next step in the spam control war: Greylisting.
-<BR><TT>http://greylisting.org/articles/whitepaper.shtml</TT>.
-
-<P></P><DT><A NAME="bib:grey:white">Harb</A>
-<DD>
-Evan Harris.
-<BR>Whitelisting.
-<BR><TT>http://greylisting.org/whitelisting.shtml</TT>.
-
-<P></P><DT><A NAME="bib:milterspamd">Harc</A>
-<DD>
-Daniel Hartmeier.
-<BR>benzedrine.cx - milter-spamd.
-<BR><TT>http://www.benzedrine.cx/milter-spamd.html</TT>.
-
-<P></P><DT><A NAME="bib:rfc2487">Hof99</A>
-<DD>
-P.&nbsp;Hoffman.
-<BR>SMTP service extension for secure SMTP over TLS.
-<BR>RFC 2487, Internet Engineering Task Force, 1999.
-
-<P></P><DT><A NAME="bib:rfc2821">Kle01</A>
-<DD>
-Simple mail transfer protocol.
-<BR>RFC 2821, Internet Engineering Task Force, 2001.
-
-<P></P><DT><A NAME="bib:MKEYS">MeT</A>
-<DD>
-PGP keys.
-<BR><TT>http://www.MeTA1.org/security/PGPKEYS</TT>.
-
-<P></P><DT><A NAME="bib:rfc1035">Moc87</A>
-<DD>
-P.V. Mockapetris.
-<BR>Domain names - implementation and specification.
-<BR>RFC 1035, Internet Engineering Task Force, 1987.
-
-<P></P><DT><A NAME="bib:mutt">mut</A>
-<DD>
-mutt.
-<BR><TT>http://www.mutt.org/</TT>.
-
-<P></P><DT><A NAME="bib:rfc3464">MV03</A>
-<DD>
-K.&nbsp;Moore and G.&nbsp;Vaudreuil.
-<BR>An Extensible Message Format for Delivery Status Notifications.
-<BR>RFC 3464, Internet Engineering Task Force, 2003.
-
-<P></P><DT><A NAME="bib:rfc2033">Mye96</A>
-<DD>
-John Myers.
-<BR>Local mail transfer protocol.
-<BR>RFC 2033, Internet Engineering Task Force, 1996.
-
-<P></P><DT><A NAME="bib:rfc2554">Mye99</A>
-<DD>
-J.&nbsp;Myers.
-<BR>SMTP service extension for authentication.
-<BR>RFC 2554, Internet Engineering Task Force, 1999.
-
-<P></P><DT><A NAME="bib:rfc3848">New04</A>
-<DD>
-Chris Newman.
-<BR>ESMTP and LMTP Transmission Types Registration.
-<BR>RFC 3848, Internet Engineering Task Force, 2004.
-
-<P></P><DT><A NAME="bib:OpenSSL">Ope</A>
-<DD>
-OpenSSL.
-<BR><TT>http://www.openssl.org/</TT>.
-
-<P></P><DT><A NAME="bib:PGP">PGP</A>
-<DD>
-PGP.
-<BR><TT>http://www.pgp.com/</TT>.
-
-<P></P><DT><A NAME="bib:gray">Posa</A>
-<DD>
-Jef Poskanzer.
-<BR>graymilter - simple graylist mail filter module.
-<BR><TT>http://www.acme.com/software/graymilter/</TT>.
-
-<P></P><DT><A NAME="bib:minsendmail">Posb</A>
-<DD>
-Jef Poskanzer.
-<BR>mini_sendmail - accept email on behalf of real sendmail.
-<BR><TT>http://www.acme.com/software/mini_sendmail/</TT>.
-
-<P></P><DT><A NAME="bib:statethreads">SGI01</A>
-<DD>
-SGI.
-<BR>State threads for internet applications, 2001.
-<BR><TT>http://state-threads.sourceforge.net/</TT>.
-
-<P></P><DT><A NAME="bib:bdb44x">Slea</A>
-<DD>
-Berkeley DB 4.4.XX Change Log.
-<BR><TT>http://www.sleepycat.com/update/4.4.XX/if.4.4.XX.html</TT>.
-
-<P></P><DT><A NAME="bib:bdbdoc">Sleb</A>
-<DD>
-Berkeley DB Tutorial and Reference Guide, version 4.3.28.
-<BR><TT>http://www.sleepycat.com/docs/</TT>.
-
-<P></P><DT><A NAME="bib:tinycdb">Tok</A>
-<DD>
-Michael Tokarev.
-<BR>tinycdb: A package for maintenance of constant databases.
-<BR><TT>ftp://ftp.corpit.ru/pub/tinycdb/</TT>.
-
-<P></P><DT><A NAME="bib:rfc3463">Vau03</A>
-<DD>
-G.&nbsp;Vaudreuil.
-<BR>Enhanced mail system status codes.
-<BR>RFC 3463, Internet Engineering Task Force, 2003.
-
-<P></P><DT><A NAME="bib:procmail">vdBG</A>
-<DD>
-S.R. van&nbsp;den Berg and Philip Guenther.
-<BR>procmail.
-<BR><TT>http://www.procmail.org/</TT>.
-</DL>
-<BR>
-
-<H2><A NAME="SECTION001600000000000000000">
-Index</A>
-</H2><DL COMPACT>
-<DT><STRONG>8bitmime</STRONG>
-<DD><A HREF="README.html#965">Configuration for SMTP Server</A>
-<DT><STRONG>abort</STRONG>
-<DD><A HREF="README.html#1048">Configuration for SMTP Server</A>
-<DT><STRONG>accept_but_reconnect</STRONG>
-<DD><A HREF="README.html#1049">Configuration for SMTP Server</A>
-<DT><STRONG>access</STRONG>
-<DD><A HREF="README.html#968">Configuration for SMTP Server</A>
-<DT><STRONG>access_map</STRONG>
-<DD><A HREF="README.html#610">Configuration Options for SMAR</A>
-<DT><STRONG>address</STRONG>
-<DD><A HREF="README.html#436">Configuration for MCP</A>
- | <A HREF="README.html#595">Declaring Maps for SMAR</A>
- | <A HREF="README.html#1040">Configuration for SMTP Server</A>
-<DT><STRONG>address_delimiter</STRONG>
-<DD><A HREF="README.html#622">Configuration Options for SMAR</A>
-<DT><STRONG>aliases</STRONG>
-<DD><A HREF="README.html#631">Configuration Options for SMAR</A>
-<DT><STRONG>all_domains</STRONG>
-<DD><A HREF="README.html#650">Configuration Options for SMAR</A>
-<DT><STRONG>allow_by</STRONG>
-<DD><A HREF="README.html#1058">Configuration for SMTP Server</A>
-<DT><STRONG>allow_data_before_greeting</STRONG>
-<DD><A HREF="README.html#1002">Configuration for SMTP Server</A>
-<DT><STRONG>allow_relaying_if_verified</STRONG>
-<DD><A HREF="README.html#1093">Configuration for SMTP Server</A>
-<DT><STRONG>AQ_max_entries</STRONG>
-<DD><A HREF="README.html#467">Configuration for QMGR</A>
-<DT><STRONG>arguments</STRONG>
-<DD><A HREF="README.html#451">Configuration for MCP</A>
-<DT><STRONG>auth</STRONG>
-<DD><A HREF="README.html#943">Configuration for SMTP Server</A>
-<DT><STRONG>background</STRONG>
-<DD><A HREF="README.html#4423">Advanced Configuration for SMTP</A>
-<DT><STRONG>base_directory</STRONG>
-<DD><A HREF="README.html#479">Configuration for QMGR</A>
-<DT><STRONG>CAcert_directory</STRONG>
-<DD><A HREF="README.html#1090">Configuration for SMTP Server</A>
- | <A HREF="README.html#1204">Configuration for SMTP Client</A>
-<DT><STRONG>CAcert_file</STRONG>
-<DD><A HREF="README.html#1089">Configuration for SMTP Server</A>
- | <A HREF="README.html#1203">Configuration for SMTP Client</A>
-<DT><STRONG>cache_size</STRONG>
-<DD><A HREF="README.html#1085">Configuration for SMTP Server</A>
- | <A HREF="README.html#4369">Advanced Configuration for QMGR</A>
-<DT><STRONG>cache_timeout</STRONG>
-<DD><A HREF="README.html#1086">Configuration for SMTP Server</A>
-<DT><STRONG>CDB_base_directory</STRONG>
-<DD><A HREF="README.html#373">Common Global Configuration</A>
-<DT><STRONG>CDB_gid</STRONG>
-<DD><A HREF="README.html#959">Configuration for SMTP Server</A>
-<DT><STRONG>cert_file</STRONG>
-<DD><A HREF="README.html#1087">Configuration for SMTP Server</A>
- | <A HREF="README.html#1201">Configuration for SMTP Client</A>
-<DT><STRONG>check_access_map_for_relaying</STRONG>
-<DD><A HREF="README.html#1094">Configuration for SMTP Server</A>
-<DT><STRONG>client_ip</STRONG>
-<DD><A HREF="README.html#1062">Configuration for SMTP Server</A>
-<DT><STRONG>conf</STRONG>
-<DD><A HREF="README.html#469">Configuration for QMGR</A>
-<DT><STRONG>connect_only_to</STRONG>
-<DD><A HREF="README.html#4446">Advanced Configuration for SMTP</A>
-<DT><STRONG>connection_control_cache_size</STRONG>
-<DD><A HREF="README.html#4389">Advanced Configuration for QMGR</A>
-<DT><STRONG>connection_control_hash_table_size</STRONG>
-<DD><A HREF="README.html#4361">Advanced Configuration for QMGR</A>
-<DT><STRONG>control_socket</STRONG>
-<DD><A HREF="README.html#472">Configuration for QMGR</A>
-<DT><STRONG>daemon_address</STRONG>
-<DD><A HREF="README.html#4415">Advanced Configuration for SMTP</A>
-<DT><STRONG>debug_level</STRONG>
-<DD><A HREF="README.html#4365">Advanced Configuration for QMGR</A>
- | <A HREF="README.html#4448">Advanced Configuration for SMTP</A>
-<DT><STRONG>delay_between_2_checkpoints</STRONG>
-<DD><A HREF="README.html#4371">Advanced Configuration for QMGR</A>
-<DT><STRONG>delay_checks</STRONG>
-<DD><A HREF="README.html#970">Configuration for SMTP Server</A>
-<DT><STRONG>delay_greylisting_error_until_DATA</STRONG>
-<DD><A HREF="README.html#975">Configuration for SMTP Server</A>
-<DT><STRONG>delivery_timeout</STRONG>
-<DD><A HREF="README.html#4378">Advanced Configuration for QMGR</A>
-<DT><STRONG>DNS</STRONG>
-<DD><A HREF="README.html#662">Configuration Options for SMAR</A>
- | <A HREF="README.html#4397">Advanced Configuration for SMAR</A>
-<DT><STRONG>dnsbl</STRONG>
-<DD><A HREF="README.html#681">Configuration Options for SMAR</A>
-<DT><STRONG>domain</STRONG>
-<DD><A HREF="README.html#685">Configuration Options for SMAR</A>
-<DT><STRONG>double_bounce_address</STRONG>
-<DD><A HREF="README.html#494">Configuration for QMGR</A>
-<DT><STRONG>DSA_cert_file</STRONG>
-<DD><A HREF="README.html#4438">Advanced Configuration for SMTP</A>
- | <A HREF="README.html#4465">Advanced Configuration for SMTP</A>
-<DT><STRONG>DSA_key_file</STRONG>
-<DD><A HREF="README.html#4439">Advanced Configuration for SMTP</A>
- | <A HREF="README.html#4466">Advanced Configuration for SMTP</A>
-<DT><STRONG>expire_limit</STRONG>
-<DD><A HREF="README.html#716">Configuration Options for SMAR</A>
-<DT><STRONG>facility</STRONG>
-<DD><A HREF="README.html#386">Common Configuration Options</A>
-<DT><STRONG>file</STRONG>
-<DD><A HREF="README.html#589">Declaring Maps for SMAR</A>
- | <A HREF="README.html#615">Configuration Options for SMAR</A>
- | <A HREF="README.html#635">Configuration Options for SMAR</A>
- | <A HREF="README.html#740">Configuration Options for SMAR</A>
-<DT><STRONG>flags</STRONG>
-<DD><A HREF="README.html#485">Configuration for QMGR</A>
- | <A HREF="README.html#521">Configuration for QMGR</A>
- | <A HREF="README.html#641">Configuration Options for SMAR</A>
- | <A HREF="README.html#673">Configuration Options for SMAR</A>
- | <A HREF="README.html#726">Configuration Options for SMAR</A>
- | <A HREF="README.html#745">Configuration Options for SMAR</A>
- | <A HREF="README.html#947">Configuration for SMTP Server</A>
- | <A HREF="README.html#962">Configuration for SMTP Server</A>
- | <A HREF="README.html#1091">Configuration for SMTP Server</A>
- | <A HREF="README.html#4372">Advanced Configuration for QMGR</A>
- | <A HREF="README.html#4379">Advanced Configuration for QMGR</A>
- | <A HREF="README.html#4399">Advanced Configuration for SMAR</A>
- | <A HREF="README.html#4421">Advanced Configuration for SMTP</A>
- | <A HREF="README.html#4449">Advanced Configuration for SMTP</A>
-<DT><STRONG>generic_lookup</STRONG>
-<DD><A HREF="README.html#1067">Configuration for SMTP Server</A>
-<DT><STRONG>grey_expire</STRONG>
-<DD><A HREF="README.html#711">Configuration Options for SMAR</A>
-<DT><STRONG>grey_wait</STRONG>
-<DD><A HREF="README.html#710">Configuration Options for SMAR</A>
-<DT><STRONG>greylisting</STRONG>
-<DD><A HREF="README.html#706">Configuration Options for SMAR</A>
- | <A HREF="README.html#980">Configuration for SMTP Server</A>
-<DT><STRONG>group</STRONG>
-<DD><A HREF="README.html#443">Configuration for MCP</A>
- | <A HREF="README.html#448">Configuration for MCP</A>
-<DT><STRONG>hash_table_entries</STRONG>
-<DD><A HREF="README.html#505">Configuration for QMGR</A>
-<DT><STRONG>header_only</STRONG>
-<DD><A HREF="README.html#487">Configuration for QMGR</A>
-<DT><STRONG>hostname</STRONG>
-<DD><A HREF="README.html#370">Common Global Configuration</A>
-<DT><STRONG>id</STRONG>
-<DD><A HREF="README.html#1013">Configuration for SMTP Server</A>
-<DT><STRONG>ident</STRONG>
-<DD><A HREF="README.html#392">Common Configuration Options</A>
-<DT><STRONG>implicitly_match_detail</STRONG>
-<DD><A HREF="README.html#651">Configuration Options for SMAR</A>
- | <A HREF="README.html#728">Configuration Options for SMAR</A>
- | <A HREF="README.html#1069">Configuration for SMTP Server</A>
-<DT><STRONG>initial_connections</STRONG>
-<DD><A HREF="README.html#516">Configuration for QMGR</A>
-<DT><STRONG>io_timeout</STRONG>
-<DD><A HREF="README.html#1016">Configuration for SMTP Server</A>
- | <A HREF="README.html#1191">Configuration for SMTP Client</A>
-<DT><STRONG>KBytes_written_for_checkpointing</STRONG>
-<DD><A HREF="README.html#4370">Advanced Configuration for QMGR</A>
-<DT><STRONG>key_file</STRONG>
-<DD><A HREF="README.html#1088">Configuration for SMTP Server</A>
- | <A HREF="README.html#1202">Configuration for SMTP Client</A>
-<DT><STRONG>listen_queue</STRONG>
-<DD><A HREF="README.html#4429">Advanced Configuration for SMTP</A>
-<DT><STRONG>listen_socket</STRONG>
-<DD><A HREF="README.html#432">Configuration for MCP</A>
-<DT><STRONG>lmtp_does_not_imply_relaying</STRONG>
-<DD><A HREF="README.html#984">Configuration for SMTP Server</A>
-<DT><STRONG>lmtp_max_rcpts_per_transaction</STRONG>
-<DD><A HREF="README.html#519">Configuration for QMGR</A>
-<DT><STRONG>LMTP_socket</STRONG>
-<DD><A HREF="README.html#1193">Configuration for SMTP Client</A>
-<DT><STRONG>local_domains</STRONG>
-<DD><A HREF="README.html#646">Configuration Options for SMAR</A>
-<DT><STRONG>local_user_map</STRONG>
-<DD><A HREF="README.html#722">Configuration Options for SMAR</A>
-<DT><STRONG>localpart</STRONG>
-<DD><A HREF="README.html#644">Configuration Options for SMAR</A>
-<DT><STRONG>log</STRONG>
-<DD><A HREF="README.html#384">Common Configuration Options</A>
-<DT><STRONG>log_directory</STRONG>
-<DD><A HREF="README.html#481">Configuration for QMGR</A>
-<DT><STRONG>log_level</STRONG>
-<DD><A HREF="README.html#507">Configuration for QMGR</A>
- | <A HREF="README.html#735">Configuration Options for SMAR</A>
- | <A HREF="README.html#1195">Configuration for SMTP Client</A>
-<DT><STRONG>lookup_rcpt_conf</STRONG>
-<DD><A HREF="README.html#524">Configuration for QMGR</A>
-<DT><STRONG>lookup_session_conf</STRONG>
-<DD><A HREF="README.html#527">Configuration for QMGR</A>
- | <A HREF="README.html#1009">Configuration for SMTP Server</A>
-<DT><STRONG>mailertable</STRONG>
-<DD><A HREF="README.html#736">Configuration Options for SMAR</A>
-<DT><STRONG>main_DB_name</STRONG>
-<DD><A HREF="README.html#714">Configuration Options for SMAR</A>
-<DT><STRONG>mapname</STRONG>
-<DD><A HREF="README.html#593">Declaring Maps for SMAR</A>
-<DT><STRONG>maps</STRONG>
-<DD><A HREF="README.html#601">Declaring Maps for SMAR</A>
-<DT><STRONG>match_type</STRONG>
-<DD><A HREF="README.html#1064">Configuration for SMTP Server</A>
-<DT><STRONG>max_bad_commands_per_session</STRONG>
-<DD><A HREF="README.html#1018">Configuration for SMTP Server</A>
-<DT><STRONG>max_bad_commands_per_transaction</STRONG>
-<DD><A HREF="README.html#1021">Configuration for SMTP Server</A>
-<DT><STRONG>max_cache_entries</STRONG>
-<DD><A HREF="README.html#504">Configuration for QMGR</A>
-<DT><STRONG>max_commit_delay</STRONG>
-<DD><A HREF="README.html#496">Configuration for QMGR</A>
-<DT><STRONG>max_connection_rate</STRONG>
-<DD><A HREF="README.html#540">Configuration for QMGR</A>
-<DT><STRONG>max_connections</STRONG>
-<DD><A HREF="README.html#518">Configuration for QMGR</A>
- | <A HREF="README.html#542">Configuration for QMGR</A>
-<DT><STRONG>max_errors_per_DSN</STRONG>
-<DD><A HREF="README.html#492">Configuration for QMGR</A>
-<DT><STRONG>max_fds</STRONG>
-<DD><A HREF="README.html#4383">Advanced Configuration for QMGR</A>
- | <A HREF="README.html#4408">Advanced Configuration for SMAR</A>
-<DT><STRONG>max_hops</STRONG>
-<DD><A HREF="README.html#1026">Configuration for SMTP Server</A>
-<DT><STRONG>max_invalid_addresses_per_session</STRONG>
-<DD><A HREF="README.html#1019">Configuration for SMTP Server</A>
-<DT><STRONG>max_invalid_addresses_per_transaction</STRONG>
-<DD><A HREF="README.html#1023">Configuration for SMTP Server</A>
-<DT><STRONG>max_message_size</STRONG>
-<DD><A HREF="README.html#1027">Configuration for SMTP Server</A>
-<DT><STRONG>max_nop_commands_between_transactions</STRONG>
-<DD><A HREF="README.html#1020">Configuration for SMTP Server</A>
-<DT><STRONG>max_nop_commands_in_transaction</STRONG>
-<DD><A HREF="README.html#1022">Configuration for SMTP Server</A>
-<DT><STRONG>max_open_TAs</STRONG>
-<DD><A HREF="README.html#498">Configuration for QMGR</A>
-<DT><STRONG>max_processes</STRONG>
-<DD><A HREF="README.html#4343">Advanced Configuration for MCP</A>
-<DT><STRONG>max_recipients_per_session</STRONG>
-<DD><A HREF="README.html#1024">Configuration for SMTP Server</A>
-<DT><STRONG>max_recipients_per_transaction</STRONG>
-<DD><A HREF="README.html#1025">Configuration for SMTP Server</A>
-<DT><STRONG>max_threads</STRONG>
-<DD><A HREF="README.html#1017">Configuration for SMTP Server</A>
- | <A HREF="README.html#4384">Advanced Configuration for QMGR</A>
- | <A HREF="README.html#4409">Advanced Configuration for SMAR</A>
-<DT><STRONG>max_transactions</STRONG>
-<DD><A HREF="README.html#1078">Configuration for SMTP Server</A>
-<DT><STRONG>max_wait_threads</STRONG>
-<DD><A HREF="README.html#4431">Advanced Configuration for SMTP</A>
- | <A HREF="README.html#4458">Advanced Configuration for SMTP</A>
-<DT><STRONG>merge_delay_max</STRONG>
-<DD><A HREF="README.html#484">Configuration for QMGR</A>
-<DT><STRONG>MIME_Format</STRONG>
-<DD><A HREF="README.html#489">Configuration for QMGR</A>
-<DT><STRONG>min_disk_space</STRONG>
-<DD><A HREF="README.html#508">Configuration for QMGR</A>
-<DT><STRONG>min_processes</STRONG>
-<DD><A HREF="README.html#4344">Advanced Configuration for MCP</A>
-<DT><STRONG>min_threads</STRONG>
-<DD><A HREF="README.html#4385">Advanced Configuration for QMGR</A>
- | <A HREF="README.html#4410">Advanced Configuration for SMAR</A>
-<DT><STRONG>min_wait_threads</STRONG>
-<DD><A HREF="README.html#4432">Advanced Configuration for SMTP</A>
- | <A HREF="README.html#4459">Advanced Configuration for SMTP</A>
-<DT><STRONG>module_timeout</STRONG>
-<DD><A HREF="README.html#4433">Advanced Configuration for SMTP</A>
- | <A HREF="README.html#4460">Advanced Configuration for SMTP</A>
-<DT><STRONG>MTA</STRONG>
-<DD><A HREF="README.html#231">Installing MeTA1</A>
-<DT><STRONG>MTA_DNS_TIMEOUT</STRONG>
-<DD><A HREF="README.html#149">Environment Variables used by</A>
-<DT><STRONG>MTA_NAMESERVER</STRONG>
-<DD><A HREF="README.html#4661">More Environment Variables used</A>
-<DT><STRONG>MTA_NO_DNS_TEST</STRONG>
-<DD><A HREF="README.html#148">Environment Variables used by</A>
-<DT><STRONG>MTA_NO_LOG_TEST</STRONG>
-<DD><A HREF="README.html#153">Environment Variables used by</A>
-<DT><STRONG>MTA_NO_SLOW_TEST</STRONG>
-<DD><A HREF="README.html#155">Environment Variables used by</A>
-<DT><STRONG>MTA_PMILTER_REGEX_TEST</STRONG>
-<DD><A HREF="README.html#4664">More Environment Variables used</A>
-<DT><STRONG>MTA_SNKPORT</STRONG>
-<DD><A HREF="README.html#4686">More Environment Variables used</A>
-<DT><STRONG>MTA_SRVPORT</STRONG>
-<DD><A HREF="README.html#4687">More Environment Variables used</A>
-<DT><STRONG>MTA_STOPONERROR</STRONG>
-<DD><A HREF="README.html#152">Environment Variables used by</A>
-<DT><STRONG>MTA_TEST_DNS_TIMING</STRONG>
-<DD><A HREF="README.html#150">Environment Variables used by</A>
-<DT><STRONG>MTA_TIMING</STRONG>
-<DD><A HREF="README.html#151">Environment Variables used by</A>
-<DT><STRONG>MTAC</STRONG>
-<DD><A HREF="README.html#222">Installing MeTA1</A>
-<DT><STRONG>MTACONFDIR</STRONG>
-<DD><A HREF="README.html#208">Installing MeTA1</A>
-<DT><STRONG>MTALG</STRONG>
-<DD><A HREF="README.html#234">Installing MeTA1</A>
-<DT><STRONG>MTALOGDIR</STRONG>
-<DD><A HREF="README.html#214">Installing MeTA1</A>
-<DT><STRONG>MTAM</STRONG>
-<DD><A HREF="README.html#228">Installing MeTA1</A>
-<DT><STRONG>MTAQ</STRONG>
-<DD><A HREF="README.html#225">Installing MeTA1</A>
-<DT><STRONG>MTAQDIR</STRONG>
-<DD><A HREF="README.html#211">Installing MeTA1</A>
-<DT><STRONG>MTAS</STRONG>
-<DD><A HREF="README.html#219">Installing MeTA1</A>
-<DT><STRONG>name</STRONG>
-<DD><A HREF="README.html#618">Configuration Options for SMAR</A>
- | <A HREF="README.html#638">Configuration Options for SMAR</A>
- | <A HREF="README.html#724">Configuration Options for SMAR</A>
- | <A HREF="README.html#743">Configuration Options for SMAR</A>
-<DT><STRONG>nameservers</STRONG>
-<DD><A HREF="README.html#665">Configuration Options for SMAR</A>
-<DT><STRONG>netmask</STRONG>
-<DD><A HREF="README.html#717">Configuration Options for SMAR</A>
-<DT><STRONG>OCC_max_entries</STRONG>
-<DD><A HREF="README.html#509">Configuration for QMGR</A>
-<DT><STRONG>ok_disk_space</STRONG>
-<DD><A HREF="README.html#510">Configuration for QMGR</A>
-<DT><STRONG>options</STRONG>
-<DD><A HREF="README.html#396">Common Configuration Options</A>
-<DT><STRONG>page_size</STRONG>
-<DD><A HREF="README.html#4368">Advanced Configuration for QMGR</A>
-<DT><STRONG>pass_fd_socket</STRONG>
-<DD><A HREF="README.html#446">Configuration for MCP</A>
-<DT><STRONG>pass_id</STRONG>
-<DD><A HREF="README.html#453">Configuration for MCP</A>
-<DT><STRONG>path</STRONG>
-<DD><A HREF="README.html#439">Configuration for MCP</A>
- | <A HREF="README.html#450">Configuration for MCP</A>
- | <A HREF="README.html#597">Declaring Maps for SMAR</A>
- | <A HREF="README.html#1043">Configuration for SMTP Server</A>
-<DT><STRONG>policy_milter</STRONG>
-<DD><A HREF="README.html#1028">Configuration for SMTP Server</A>
-<DT><STRONG>port</STRONG>
-<DD><A HREF="README.html#435">Configuration for MCP</A>
- | <A HREF="README.html#599">Declaring Maps for SMAR</A>
- | <A HREF="README.html#1039">Configuration for SMTP Server</A>
-<DT><STRONG>prdr</STRONG>
-<DD><A HREF="README.html#1004">Configuration for SMTP Server</A>
-<DT><STRONG>preserve_domain</STRONG>
-<DD><A HREF="README.html#659">Configuration Options for SMAR</A>
-<DT><STRONG>processes</STRONG>
-<DD><A HREF="README.html#1052">Configuration for SMTP Server</A>
- | <A HREF="README.html#4435">Advanced Configuration for SMTP</A>
-<DT><STRONG>protected_recipients</STRONG>
-<DD><A HREF="README.html#1054">Configuration for SMTP Server</A>
-<DT><STRONG>queue_delay_timeout</STRONG>
-<DD><A HREF="README.html#512">Configuration for QMGR</A>
-<DT><STRONG>queue_return_timeout</STRONG>
-<DD><A HREF="README.html#511">Configuration for QMGR</A>
-<DT><STRONG>rcpt_conf_lookup_flags</STRONG>
-<DD><A HREF="README.html#531">Configuration for QMGR</A>
-<DT><STRONG>read_QUIT_reply</STRONG>
-<DD><A HREF="README.html#4451">Advanced Configuration for SMTP</A>
-<DT><STRONG>remote_port</STRONG>
-<DD><A HREF="README.html#4461">Advanced Configuration for SMTP</A>
-<DT><STRONG>remove_unused_logfiles</STRONG>
-<DD><A HREF="README.html#4374">Advanced Configuration for QMGR</A>
-<DT><STRONG>replace_macros</STRONG>
-<DD><A HREF="README.html#657">Configuration Options for SMAR</A>
-<DT><STRONG>require_EHLO_before_MAIL</STRONG>
-<DD><A HREF="README.html#988">Configuration for SMTP Server</A>
-<DT><STRONG>requirements_violation</STRONG>
-<DD><A HREF="README.html#1122">Configuration for SMTP Server</A>
-<DT><STRONG>restart_dependencies</STRONG>
-<DD><A HREF="README.html#449">Configuration for MCP</A>
-<DT><STRONG>retries</STRONG>
-<DD><A HREF="README.html#668">Configuration Options for SMAR</A>
-<DT><STRONG>retry_max_delay</STRONG>
-<DD><A HREF="README.html#513">Configuration for QMGR</A>
-<DT><STRONG>retry_min_delay</STRONG>
-<DD><A HREF="README.html#514">Configuration for QMGR</A>
-<DT><STRONG>reuse_connection</STRONG>
-<DD><A HREF="README.html#4381">Advanced Configuration for QMGR</A>
-<DT><STRONG>scheduler_timeout</STRONG>
-<DD><A HREF="README.html#4386">Advanced Configuration for QMGR</A>
-<DT><STRONG>secondary_DB_name</STRONG>
-<DD><A HREF="README.html#715">Configuration Options for SMAR</A>
-<DT><STRONG>sender</STRONG>
-<DD><A HREF="README.html#1060">Configuration for SMTP Server</A>
-<DT><STRONG>separate_final_dot_and_QUIT</STRONG>
-<DD><A HREF="README.html#4453">Advanced Configuration for SMTP</A>
-<DT><STRONG>serialize_accept</STRONG>
-<DD><A HREF="README.html#4425">Advanced Configuration for SMTP</A>
-<DT><STRONG>session_features</STRONG>
-<DD><A HREF="README.html#1127">Configuration for SMTP Server</A>
-<DT><STRONG>size</STRONG>
-<DD><A HREF="README.html#497">Configuration for QMGR</A>
-<DT><STRONG>SMAR_socket</STRONG>
-<DD><A HREF="README.html#376">Common Global Configuration</A>
-<DT><STRONG>SMAR_timeout</STRONG>
-<DD><A HREF="README.html#4387">Advanced Configuration for QMGR</A>
-<DT><STRONG>smtp_max_rcpts_per_transaction</STRONG>
-<DD><A HREF="README.html#520">Configuration for QMGR</A>
-<DT><STRONG>SMTPC_socket</STRONG>
-<DD><A HREF="README.html#377">Common Global Configuration</A>
-<DT><STRONG>SMTPS_socket</STRONG>
-<DD><A HREF="README.html#378">Common Global Configuration</A>
-<DT><STRONG>socket</STRONG>
-<DD><A HREF="README.html#1034">Configuration for SMTP Server</A>
-<DT><STRONG>soft_bounce</STRONG>
-<DD><A HREF="README.html#987">Configuration for SMTP Server</A>
-<DT><STRONG>start_action</STRONG>
-<DD><A HREF="README.html#431">Configuration for MCP</A>
-<DT><STRONG>strict_EHLO_checks</STRONG>
-<DD><A HREF="README.html#992">Configuration for SMTP Server</A>
-<DT><STRONG>tag</STRONG>
-<DD><A HREF="README.html#687">Configuration Options for SMAR</A>
-<DT><STRONG>talk_to_myself</STRONG>
-<DD><A HREF="README.html#4456">Advanced Configuration for SMTP</A>
-<DT><STRONG>tests</STRONG>
-<DD><A HREF="README.html#4391">Advanced Configuration for QMGR</A>
-<DT><STRONG>timeout</STRONG>
-<DD><A HREF="README.html#669">Configuration Options for SMAR</A>
- | <A HREF="README.html#1046">Configuration for SMTP Server</A>
-<DT><STRONG>tls</STRONG>
-<DD><A HREF="README.html#1080">Configuration for SMTP Server</A>
- | <A HREF="README.html#1196">Configuration for SMTP Client</A>
- | <A HREF="README.html#4436">Advanced Configuration for SMTP</A>
- | <A HREF="README.html#4463">Advanced Configuration for SMTP</A>
-<DT><STRONG>trusted_mechanisms</STRONG>
-<DD><A HREF="README.html#955">Configuration for SMTP Server</A>
-<DT><STRONG>type</STRONG>
-<DD><A HREF="README.html#583">Declaring Maps for SMAR</A>
-<DT><STRONG>umask</STRONG>
-<DD><A HREF="README.html#440">Configuration for MCP</A>
-<DT><STRONG>use_connect</STRONG>
-<DD><A HREF="README.html#4403">Advanced Configuration for SMAR</A>
-<DT><STRONG>use_id_in_logfile_name</STRONG>
-<DD><A HREF="README.html#4345">Advanced Configuration for MCP</A>
-<DT><STRONG>use_resolvconf</STRONG>
-<DD><A HREF="README.html#674">Configuration Options for SMAR</A>
-<DT><STRONG>use_TCP</STRONG>
-<DD><A HREF="README.html#4401">Advanced Configuration for SMAR</A>
-<DT><STRONG>user</STRONG>
-<DD><A HREF="README.html#442">Configuration for MCP</A>
- | <A HREF="README.html#447">Configuration for MCP</A>
-<DT><STRONG>wait_for_client</STRONG>
-<DD><A HREF="README.html#545">Configuration for QMGR</A>
-<DT><STRONG>wait_for_server</STRONG>
-<DD><A HREF="README.html#546">Configuration for QMGR</A>
- | <A HREF="README.html#1206">Configuration for SMTP Client</A>
-<DT><STRONG>wait_for_smar</STRONG>
-<DD><A HREF="README.html#4441">Advanced Configuration for SMTP</A>
-<DT><STRONG>white_expire</STRONG>
-<DD><A HREF="README.html#712">Configuration Options for SMAR</A>
-<DT><STRONG>white_timeout</STRONG>
-<DD><A HREF="README.html#713">Configuration Options for SMAR</A>
-<DT><STRONG>working_directory</STRONG>
-<DD><A HREF="README.html#4353">Advanced Configuration for MCP</A>
-<DT><STRONG>xverp</STRONG>
-<DD><A HREF="README.html#995">Configuration for SMTP Server</A>
-
-</DL>
-<BR><HR><H4>Footnotes</H4>
-<DL>
-<DT><A NAME="foot1612">... databases</A><A
- HREF="README.html#tex2html1"><SUP>1.1</SUP></A></DT>
-<DD>the term
-<I>database</I> is used loosely here
-
-</DD>
-<DT><A NAME="foot1614">... to</A><A
- HREF="README.html#tex2html3"><SUP>1.2</SUP></A></DT>
-<DD>Sorry for the obfuscation,
-replace <TT>(at)</TT> with <TT>@</TT> and remove the spaces, but not the plus sign.
-
-</DD>
-<DT><A NAME="foot1615">...
-commands</A><A
- HREF="README.html#tex2html4"><SUP>2.1</SUP></A></DT>
-<DD>using <TT>script(1)</TT> or redirecting it to some file.
-
-</DD>
-<DT><A NAME="foot1616">... configurations</A><A
- HREF="README.html#tex2html5"><SUP>2.2</SUP></A></DT>
-<DD>``Private
-database environments on 64-bit machines no longer
-drop core because of 64-bit address truncation. [11983]''
-[<A
- HREF="README.html#bib:bdb44x">Slea</A>]
-
-</DD>
-<DT><A NAME="foot198">...<TT>passwd(5)</TT></A><A
- HREF="README.html#tex2html6"><SUP>2.3</SUP></A></DT>
-<DD>On some systems
-the man page is in another section, e.g., 4.
-
-</DD>
-<DT><A NAME="foot322">... comma</A><A
- HREF="README.html#tex2html7"><SUP>3.1</SUP></A></DT>
-<DD>A
-trailing comma is allowed to make writing of lists simpler.
-
-</DD>
-<DT><A NAME="foot1618">...
-addresses</A><A
- HREF="README.html#tex2html8"><SUP>3.2</SUP></A></DT>
-<DD>4 is the default value for the compile time option
-<TT>MTA_DNS_MAX_TSKS</TT>
-
-</DD>
-<DT><A NAME="foot667">... answer</A><A
- HREF="README.html#tex2html9"><SUP>3.3</SUP></A></DT>
-<DD>This needs to be enhanced in a later version,
-a patch is welcome!
-
-</DD>
-<DT><A NAME="foot1619">... blacklist</A><A
- HREF="README.html#tex2html10"><SUP>3.4</SUP></A></DT>
-<DD>This option is modelled after
-<TT>dnsblaccess</TT> written by Neil Rickert for sendmail 8.
-
-</DD>
-<DT><A NAME="foot1620">... times</A><A
- HREF="README.html#tex2html11"><SUP>3.5</SUP></A></DT>
-<DD>Compile time
-option <TT>MTA_MAX_DNSBL</TT>: currently set to 8.
-
-</DD>
-<DT><A NAME="foot1634">...
-<code>lmtp:</code></A><A
- HREF="README.html#tex2html12"><SUP>4.1</SUP></A></DT>
-<DD>currently internally encoded as <TT>127.0.0.255</TT>
-
-</DD>
-<DT><A NAME="foot1635">... patch</A><A
- HREF="README.html#tex2html13"><SUP>4.2</SUP></A></DT>
-<DD>if
-the patch fails to apply,
-make sure you use a working <TT>patch(1)</TT> program,
-e.g., most SunOS 5.x versions ship with a broken program
-
-</DD>
-<DT><A NAME="foot1641">... errors</A><A
- HREF="README.html#tex2html14"><SUP>4.3</SUP></A></DT>
-<DD>See <TT>egrep(1)</TT> for the correct
-syntax for word delimiters on your OS.
-
-</DD>
-<DT><A NAME="foot4717">... databases</A><A
- HREF="README.html#tex2html15"><SUP>7.1</SUP></A></DT>
-<DD>the term
-<I>database</I> is used loosely here,
-only DEFEDB is a real database, the others are just ways to
-store some information and access them in some way.
-
-</DD>
-<DT><A NAME="foot4328">... storage</A><A
- HREF="README.html#tex2html16"><SUP>7.2</SUP></A></DT>
-<DD>If
-non-persistent storage is used for these databases
-mail can of course be lost.
-
-</DD>
-<DT><A NAME="foot4718">... addresses</A><A
- HREF="README.html#tex2html17"><SUP>8.1</SUP></A></DT>
-<DD>Compile time
-option <TT>SS_MAX_BIND_ADDRS</TT>
-
-</DD>
-<DT><A NAME="foot4719">... sink</A><A
- HREF="README.html#tex2html18"><SUP>8.2</SUP></A></DT>
-<DD>For example,
-<TT>statethreads/examples/smtps2</TT>
-
-</DD>
-</DL><BR><HR>
-<ADDRESS>
-Claus Assmann
-2008-02-04
-</ADDRESS>
-</BODY>
-</HTML>
diff --git a/doc/README.pdf b/doc/README.pdf
deleted file mode 100644
index 2a527fea48353513f0af134662e060c661213014..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 484255
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%0D&Ny+{ZKdQ<ywoSg9
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
D;UW(P

diff --git a/doc/README.ps b/doc/README.ps
deleted file mode 100644
index 3439a24..0000000
--- a/doc/README.ps
+++ /dev/null
@@ -1,10229 +0,0 @@
-%!PS-Adobe-2.0
-%%Creator: dvips(k) 5.92b Copyright 2002 Radical Eye Software
-%%Title: README.dvi
-%%Pages: 87
-%%PageOrder: Ascend
-%%BoundingBox: 0 0 596 842
-%%DocumentFonts: CMR17 CMR12 CMBX12 CMBX10 CMR10 CMTT10 CMR7 CMR6 CMR8
-%%+ CMTI8 NewCenturySchlbk-Roman Courier Times-Roman CMTT8 CMTI10 CMSY10
-%%+ CMMI10 CMTT12
-%%EndComments
-%DVIPSWebPage: (www.radicaleye.com)
-%DVIPSCommandLine: dvips -f README.dvi
-%DVIPSParameters: dpi=600, compressed
-%DVIPSSource:  TeX output 2009.06.02:0823
-%%BeginProcSet: texc.pro
-%!
-/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
-N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
-mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
-0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
-landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
-mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
-matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
-exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
-statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
-N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
-/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
-/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
-array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
-df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
-definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
-}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
-B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
-1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
-1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
-0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
-sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
-rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
-gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
-/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
-/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
-A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
-get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
-ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
-fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
-{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
-chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
-1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
-forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
-/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
-}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
-bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
-mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
-SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
-userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
-1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
-index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
-/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
-/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
-(LaserWriter 16/600)]{A length product length le{A length product exch 0
-exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
-end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
-grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
-imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
-exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
-fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
-delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
-B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
-p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
-rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end
-
-%%EndProcSet
-%%BeginProcSet: f7b6d320.enc
-% Thomas Esser, Dec 2002. public domain
-%
-% Encoding for:
-%     cmb10 cmbx10 cmbx12 cmbx5 cmbx6 cmbx7 cmbx8 cmbx9 cmbxsl10
-%     cmdunh10 cmr10 cmr12 cmr17cmr6 cmr7 cmr8 cmr9 cmsl10 cmsl12 cmsl8
-%     cmsl9 cmss10cmss12 cmss17 cmss8 cmss9 cmssbx10 cmssdc10 cmssi10
-%     cmssi12 cmssi17 cmssi8cmssi9 cmssq8 cmssqi8 cmvtt10
-%
-/TeXf7b6d320Encoding [
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
-/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
-/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
-/suppress /exclam /quotedblright /numbersign /dollar /percent /ampersand
-/quoteright /parenleft /parenright /asterisk /plus /comma /hyphen
-/period /slash /zero /one /two /three /four /five /six /seven /eight
-/nine /colon /semicolon /exclamdown /equal /questiondown /question /at
-/A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W /X
-/Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
-/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
-/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
-/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
-/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
-/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: 09fbbfac.enc
-% Thomas Esser, Dec 2002. public domain
-%
-% Encoding for:
-%     cmsltt10 cmtt10 cmtt12 cmtt8 cmtt9
-/TeX09fbbfacEncoding [
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
-/Omega /arrowup /arrowdown /quotesingle /exclamdown /questiondown
-/dotlessi /dotlessj /grave /acute /caron /breve /macron /ring /cedilla
-/germandbls /ae /oe /oslash /AE /OE /Oslash /visiblespace /exclam
-/quotedbl /numbersign /dollar /percent /ampersand /quoteright /parenleft
-/parenright /asterisk /plus /comma /hyphen /period /slash /zero /one
-/two /three /four /five /six /seven /eight /nine /colon /semicolon /less
-/equal /greater /question /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N
-/O /P /Q /R /S /T /U /V /W /X /Y /Z /bracketleft /backslash /bracketright
-/asciicircum /underscore /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l
-/m /n /o /p /q /r /s /t /u /v /w /x /y /z /braceleft /bar /braceright
-/asciitilde /dieresis /visiblespace /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /space /Gamma /Delta /Theta /Lambda /Xi /Pi
-/Sigma /Upsilon /Phi /Psi /.notdef /.notdef /Omega /arrowup /arrowdown
-/quotesingle /exclamdown /questiondown /dotlessi /dotlessj /grave /acute
-/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
-/OE /Oslash /visiblespace /dieresis /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: 74afc74c.enc
-% Thomas Esser, Dec 2002. public domain
-%
-% Encoding for:
-%     cmbxti10 cmff10 cmfi10 cmfib8 cmti10 cmti12 cmti7 cmti8cmti9 cmu10
-%
-/TeX74afc74cEncoding [
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
-/ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute /caron /breve
-/macron /ring /cedilla /germandbls /ae /oe /oslash /AE /OE /Oslash
-/suppress /exclam /quotedblright /numbersign /sterling /percent
-/ampersand /quoteright /parenleft /parenright /asterisk /plus /comma
-/hyphen /period /slash /zero /one /two /three /four /five /six /seven
-/eight /nine /colon /semicolon /exclamdown /equal /questiondown /question
-/at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O /P /Q /R /S /T /U /V /W
-/X /Y /Z /bracketleft /quotedblleft /bracketright /circumflex /dotaccent
-/quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p /q /r /s /t /u
-/v /w /x /y /z /endash /emdash /hungarumlaut /tilde /dieresis /suppress
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /space
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /.notdef
-/.notdef /Omega /ff /fi /fl /ffi /ffl /dotlessi /dotlessj /grave /acute
-/caron /breve /macron /ring /cedilla /germandbls /ae /oe /oslash /AE
-/OE /Oslash /suppress /dieresis /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: 8r.enc
-% File  8r.enc as of 2002-03-12 for PSNFSS 9
-%
-% This is the encoding vector for Type1 and TrueType fonts to be used
-% with TeX.  This file is part of the PSNFSS bundle, version 9
-% 
-% Authors: S. Rahtz, P. MacKay, Alan Jeffrey, B. Horn, K. Berry, W. Schmidt
-%
-% Idea is to have all the characters normally included in Type 1 fonts
-% available for typesetting. This is effectively the characters in Adobe
-% Standard Encoding + ISO Latin 1 + extra characters from Lucida + Euro.
-% 
-% Character code assignments were made as follows:
-% 
-% (1) the Windows ANSI characters are almost all in their Windows ANSI
-% positions, because some Windows users cannot easily reencode the
-% fonts, and it makes no difference on other systems. The only Windows
-% ANSI characters not available are those that make no sense for
-% typesetting -- rubout (127 decimal), nobreakspace (160), softhyphen
-% (173). quotesingle and grave are moved just because it's such an
-% irritation not having them in TeX positions.
-% 
-% (2) Remaining characters are assigned arbitrarily to the lower part
-% of the range, avoiding 0, 10 and 13 in case we meet dumb software.
-% 
-% (3) Y&Y Lucida Bright includes some extra text characters; in the
-% hopes that other PostScript fonts, perhaps created for public
-% consumption, will include them, they are included starting at 0x12.
-% 
-% (4) Remaining positions left undefined are for use in (hopefully)
-% upward-compatible revisions, if someday more characters are generally
-% available.
-% 
-% (5) hyphen appears twice for compatibility with both ASCII and Windows.
-%
-% (6) /Euro is assigned to 128, as in Windows ANSI
-% 
-/TeXBase1Encoding [
-% 0x00 (encoded characters from Adobe Standard not in Windows 3.1)
-  /.notdef /dotaccent /fi /fl
-  /fraction /hungarumlaut /Lslash /lslash
-  /ogonek /ring /.notdef
-  /breve /minus /.notdef 
-% These are the only two remaining unencoded characters, so may as
-% well include them.
-  /Zcaron /zcaron 
-% 0x10
- /caron /dotlessi 
-% (unusual TeX characters available in, e.g., Lucida Bright)
- /dotlessj /ff /ffi /ffl 
- /.notdef /.notdef /.notdef /.notdef
- /.notdef /.notdef /.notdef /.notdef
- % very contentious; it's so painful not having quoteleft and quoteright
- % at 96 and 145 that we move the things normally found there down to here.
- /grave /quotesingle 
-% 0x20 (ASCII begins)
- /space /exclam /quotedbl /numbersign
- /dollar /percent /ampersand /quoteright
- /parenleft /parenright /asterisk /plus /comma /hyphen /period /slash
-% 0x30
- /zero /one /two /three /four /five /six /seven
- /eight /nine /colon /semicolon /less /equal /greater /question
-% 0x40
- /at /A /B /C /D /E /F /G /H /I /J /K /L /M /N /O
-% 0x50
- /P /Q /R /S /T /U /V /W
- /X /Y /Z /bracketleft /backslash /bracketright /asciicircum /underscore
-% 0x60
- /quoteleft /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o
-% 0x70
- /p /q /r /s /t /u /v /w
- /x /y /z /braceleft /bar /braceright /asciitilde
- /.notdef % rubout; ASCII ends
-% 0x80
- /Euro /.notdef /quotesinglbase /florin
- /quotedblbase /ellipsis /dagger /daggerdbl
- /circumflex /perthousand /Scaron /guilsinglleft
- /OE /.notdef /.notdef /.notdef
-% 0x90
- /.notdef /.notdef /.notdef /quotedblleft
- /quotedblright /bullet /endash /emdash
- /tilde /trademark /scaron /guilsinglright
- /oe /.notdef /.notdef /Ydieresis
-% 0xA0
- /.notdef % nobreakspace
- /exclamdown /cent /sterling
- /currency /yen /brokenbar /section
- /dieresis /copyright /ordfeminine /guillemotleft
- /logicalnot
- /hyphen % Y&Y (also at 45); Windows' softhyphen
- /registered
- /macron
-% 0xD0
- /degree /plusminus /twosuperior /threesuperior
- /acute /mu /paragraph /periodcentered
- /cedilla /onesuperior /ordmasculine /guillemotright
- /onequarter /onehalf /threequarters /questiondown
-% 0xC0
- /Agrave /Aacute /Acircumflex /Atilde /Adieresis /Aring /AE /Ccedilla
- /Egrave /Eacute /Ecircumflex /Edieresis
- /Igrave /Iacute /Icircumflex /Idieresis
-% 0xD0
- /Eth /Ntilde /Ograve /Oacute
- /Ocircumflex /Otilde /Odieresis /multiply
- /Oslash /Ugrave /Uacute /Ucircumflex
- /Udieresis /Yacute /Thorn /germandbls
-% 0xE0
- /agrave /aacute /acircumflex /atilde
- /adieresis /aring /ae /ccedilla
- /egrave /eacute /ecircumflex /edieresis
- /igrave /iacute /icircumflex /idieresis
-% 0xF0
- /eth /ntilde /ograve /oacute
- /ocircumflex /otilde /odieresis /divide
- /oslash /ugrave /uacute /ucircumflex
- /udieresis /yacute /thorn /ydieresis
-] def
-
-%%EndProcSet
-%%BeginProcSet: bbad153f.enc
-% Thomas Esser, Dec 2002. public domain
-%
-% Encoding for:
-%     cmsy10 cmsy5 cmsy6 cmsy7 cmsy8 cmsy9
-%
-/TeXbbad153fEncoding [
-/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
-/plusminus /minusplus /circleplus /circleminus /circlemultiply
-/circledivide /circledot /circlecopyrt /openbullet /bullet
-/equivasymptotic /equivalence /reflexsubset /reflexsuperset /lessequal
-/greaterequal /precedesequal /followsequal /similar /approxequal
-/propersubset /propersuperset /lessmuch /greatermuch /precedes /follows
-/arrowleft /arrowright /arrowup /arrowdown /arrowboth /arrownortheast
-/arrowsoutheast /similarequal /arrowdblleft /arrowdblright /arrowdblup
-/arrowdbldown /arrowdblboth /arrownorthwest /arrowsouthwest /proportional
-/prime /infinity /element /owner /triangle /triangleinv /negationslash
-/mapsto /universal /existential /logicalnot /emptyset /Rfractur /Ifractur
-/latticetop /perpendicular /aleph /A /B /C /D /E /F /G /H /I /J /K
-/L /M /N /O /P /Q /R /S /T /U /V /W /X /Y /Z /union /intersection
-/unionmulti /logicaland /logicalor /turnstileleft /turnstileright
-/floorleft /floorright /ceilingleft /ceilingright /braceleft /braceright
-/angbracketleft /angbracketright /bar /bardbl /arrowbothv /arrowdblbothv
-/backslash /wreathproduct /radical /coproduct /nabla /integral
-/unionsq /intersectionsq /subsetsqequal /supersetsqequal /section
-/dagger /daggerdbl /paragraph /club /diamond /heart /spade /arrowleft
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/minus /periodcentered /multiply /asteriskmath /divide /diamondmath
-/plusminus /minusplus /circleplus /circleminus /.notdef /.notdef
-/circlemultiply /circledivide /circledot /circlecopyrt /openbullet
-/bullet /equivasymptotic /equivalence /reflexsubset /reflexsuperset
-/lessequal /greaterequal /precedesequal /followsequal /similar
-/approxequal /propersubset /propersuperset /lessmuch /greatermuch
-/precedes /follows /arrowleft /spade /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: aae443f0.enc
-% Thomas Esser, Dec 2002. public domain
-%
-% Encoding for:
-%     cmmi10 cmmi12 cmmi5 cmmi6 cmmi7 cmmi8 cmmi9 cmmib10
-%
-/TeXaae443f0Encoding [
-/Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi /Omega
-/alpha /beta /gamma /delta /epsilon1 /zeta /eta /theta /iota /kappa
-/lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon /phi /chi /psi
-/omega /epsilon /theta1 /pi1 /rho1 /sigma1 /phi1 /arrowlefttophalf
-/arrowleftbothalf /arrowrighttophalf /arrowrightbothalf /arrowhookleft
-/arrowhookright /triangleright /triangleleft /zerooldstyle /oneoldstyle
-/twooldstyle /threeoldstyle /fouroldstyle /fiveoldstyle /sixoldstyle
-/sevenoldstyle /eightoldstyle /nineoldstyle /period /comma /less /slash
-/greater /star /partialdiff /A /B /C /D /E /F /G /H /I /J /K /L /M /N
-/O /P /Q /R /S /T /U /V /W /X /Y /Z /flat /natural /sharp /slurbelow
-/slurabove /lscript /a /b /c /d /e /f /g /h /i /j /k /l /m /n /o /p
-/q /r /s /t /u /v /w /x /y /z /dotlessi /dotlessj /weierstrass /vector
-/tie /psi /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/space /Gamma /Delta /Theta /Lambda /Xi /Pi /Sigma /Upsilon /Phi /Psi
-/.notdef /.notdef /Omega /alpha /beta /gamma /delta /epsilon1 /zeta /eta
-/theta /iota /kappa /lambda /mu /nu /xi /pi /rho /sigma /tau /upsilon
-/phi /chi /psi /tie /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef
-/.notdef /.notdef /.notdef /.notdef /.notdef
-] def
-
-%%EndProcSet
-%%BeginProcSet: texps.pro
-%!
-TeXDict begin/rf{findfont dup length 1 add dict begin{1 index/FID ne 2
-index/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll
-exec 0 exch 5 -1 roll VResolution Resolution div mul neg 0 0]FontType 0
-ne{/Metrics exch def dict begin Encoding{exch dup type/integertype ne{
-pop pop 1 sub dup 0 le{pop}{[}ifelse}{FontMatrix 0 get div Metrics 0 get
-div def}ifelse}forall Metrics/Metrics currentdict end def}{{1 index type
-/nametype eq{exit}if exch pop}loop}ifelse[2 index currentdict end
-definefont 3 -1 roll makefont/setfont cvx]cvx def}def/ObliqueSlant{dup
-sin S cos div neg}B/SlantFont{4 index mul add}def/ExtendFont{3 -1 roll
-mul exch}def/ReEncodeFont{CharStrings rcheck{/Encoding false def dup[
-exch{dup CharStrings exch known not{pop/.notdef/Encoding true def}if}
-forall Encoding{]exch pop}{cleartomark}ifelse}if/Encoding exch def}def
-end
-
-%%EndProcSet
-%%BeginProcSet: special.pro
-%!
-TeXDict begin/SDict 200 dict N SDict begin/@SpecialDefaults{/hs 612 N
-/vs 792 N/ho 0 N/vo 0 N/hsc 1 N/vsc 1 N/ang 0 N/CLIP 0 N/rwiSeen false N
-/rhiSeen false N/letter{}N/note{}N/a4{}N/legal{}N}B/@scaleunit 100 N
-/@hscale{@scaleunit div/hsc X}B/@vscale{@scaleunit div/vsc X}B/@hsize{
-/hs X/CLIP 1 N}B/@vsize{/vs X/CLIP 1 N}B/@clip{/CLIP 2 N}B/@hoffset{/ho
-X}B/@voffset{/vo X}B/@angle{/ang X}B/@rwi{10 div/rwi X/rwiSeen true N}B
-/@rhi{10 div/rhi X/rhiSeen true N}B/@llx{/llx X}B/@lly{/lly X}B/@urx{
-/urx X}B/@ury{/ury X}B/magscale true def end/@MacSetUp{userdict/md known
-{userdict/md get type/dicttype eq{userdict begin md length 10 add md
-maxlength ge{/md md dup length 20 add dict copy def}if end md begin
-/letter{}N/note{}N/legal{}N/od{txpose 1 0 mtx defaultmatrix dtransform S
-atan/pa X newpath clippath mark{transform{itransform moveto}}{transform{
-itransform lineto}}{6 -2 roll transform 6 -2 roll transform 6 -2 roll
-transform{itransform 6 2 roll itransform 6 2 roll itransform 6 2 roll
-curveto}}{{closepath}}pathforall newpath counttomark array astore/gc xdf
-pop ct 39 0 put 10 fz 0 fs 2 F/|______Courier fnt invertflag{PaintBlack}
-if}N/txpose{pxs pys scale ppr aload pop por{noflips{pop S neg S TR pop 1
--1 scale}if xflip yflip and{pop S neg S TR 180 rotate 1 -1 scale ppr 3
-get ppr 1 get neg sub neg ppr 2 get ppr 0 get neg sub neg TR}if xflip
-yflip not and{pop S neg S TR pop 180 rotate ppr 3 get ppr 1 get neg sub
-neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get neg TR}if}{
-noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop pop
-90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
-neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr
-1 get neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr
-2 get ppr 0 get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4
--1 roll add 2 div 3 1 roll add 2 div 2 copy TR .96 dup scale neg S neg S
-TR}if}N/cp{pop pop showpage pm restore}N end}if}if}N/normalscale{
-Resolution 72 div VResolution 72 div neg scale magscale{DVImag dup scale
-}if 0 setgray}N/psfts{S 65781.76 div N}N/startTexFig{/psf$SavedState
-save N userdict maxlength dict begin/magscale true def normalscale
-currentpoint TR/psf$ury psfts/psf$urx psfts/psf$lly psfts/psf$llx psfts
-/psf$y psfts/psf$x psfts currentpoint/psf$cy X/psf$cx X/psf$sx psf$x
-psf$urx psf$llx sub div N/psf$sy psf$y psf$ury psf$lly sub div N psf$sx
-psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy psf$sy div psf$ury sub
-TR/showpage{}N/erasepage{}N/setpagedevice{pop}N/copypage{}N/p 3 def
-@MacSetUp}N/doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
-newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto
-closepath clip newpath moveto}N/endTexFig{end psf$SavedState restore}N
-/@beginspecial{SDict begin/SpecialSave save N gsave normalscale
-currentpoint TR @SpecialDefaults count/ocount X/dcount countdictstack N}
-N/@setspecial{CLIP 1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs
-neg 0 rlineto closepath clip}if ho vo TR hsc vsc scale ang rotate
-rwiSeen{rwi urx llx sub div rhiSeen{rhi ury lly sub div}{dup}ifelse
-scale llx neg lly neg TR}{rhiSeen{rhi ury lly sub div dup scale llx neg
-lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly moveto urx lly lineto urx
-ury lineto llx ury lineto closepath clip}if/showpage{}N/erasepage{}N
-/setpagedevice{pop}N/copypage{}N newpath}N/@endspecial{count ocount sub{
-pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
-restore end}N/@defspecial{SDict begin}N/@fedspecial{end}B/li{lineto}B
-/rl{rlineto}B/rc{rcurveto}B/np{/SaveX currentpoint/SaveY X N 1
-setlinecap newpath}N/st{stroke SaveX SaveY moveto}N/fil{fill SaveX SaveY
-moveto}N/ellipse{/endangle X/startangle X/yrad X/xrad X/savematrix
-matrix currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc
-savematrix setmatrix}N end
-
-%%EndProcSet
-%%BeginFont: CMTT12
-%!PS-AdobeFont-1.1: CMTT12 1.0
-%%CreationDate: 1991 Aug 20 16:45:46
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT12 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-1 -234 524 695}readonly def
-/UniqueID 5000833 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0364CD5660FE13FF01BC20148F9C480BCD0E
-C81D5BFC66F04993DD73F0BE0AB13F53B1BA79FE5F618A4F672B16C06BE3251E
-3BCB599BFA0E6041FBD558475370D693A959259A2699BA6E97CF40435B8E8A4B
-426343E145DF14E59028D4E0941AB537E34024E6CDE0EA9AF8038A3260A0358D
-D5B1DB53582F0DAB7ADE29CF8DBA0992D5A94672DFF91573F38D9BFD1A57E161
-E52DA1B41433C82261E47F79997DF603935D2A187A95F7A25D148FB3C2B6AA32
-6B982C32C6B25867871ED7B38E150031A3DE568C8D3731A779EAAF09AC5CE6C5
-A129C4147E56882B8068DF37C97C761694F1316AF93E33FF7E0B2F1F252735CE
-0D9F7BCE136B06EE967ABE0C8DF24DCBBF99874702ED252B677F407CB39678CC
-85DDFC2F45C552BA967E4158165ED16FECC4E32AC4D3B3EB8046DCDD37C92FDF
-F1F3710BB8EF5CA358ABACA33C7E5ACAD6BF5DC58BDFC3CF09BA2A38291D45A4
-C15FF1916FE2EC47FDC80911EB9C61F5D355BEDFC9DB17588547763AC5F0B1CC
-12D2FFB32E0803D37E3281DA9CE36C5433655526ACFB3A301C56FAB09DF07B5D
-048B47687348DEB96F3F9C53CE56DDD312B93D3918CD92AF53FB9461864D11B8
-0138918D0B1270C54873C4012CDE6F886DB11BCEA04B023EBB43E0D0A06BE725
-741D08B9DB688731A6C9886C15A83C28DADCC81385EA239E045E8F3670CE03DB
-9EE77ED067036595C9F3B1854343BE3A12E486B6E5A2F8AC44FA5378D28DCCEE
-306B0E283AA444423F9A4FF38E2B56DCF67A39CEB2C643DAE86865517D5D0371
-CB8797208ADEC637330A3A57902C9A88EDB75A7C16FA9850075D9F19578EC666
-1353CC1FC512D59DFF847ACCD66E868716B07631ED493CC0B5CD5121D74044B1
-86F0D238B7EDCF98BE535F20A264003C318ADEC465E0E2AA8C80801769FAA1B1
-463751CA34EE1ED37A239ADC87188BF8979156246E21031269126422D5013303
-CB0E2FF2842023CDE591925A8519BAEA6D9285718CDDB59C3D2B371108C144EB
-49EBF9FEDA1DFDF313178E0887B69DFD903F97C1166BE3BEF22C7C3160753F2D
-2410CC8A7687B263B8B3026C5BC8167A9247C64D61D0EE0B6F0EE975A97CFD12
-D8659F17E2EE819D2D7EDB69BE2B73A00221D3E659CEBE07D25CD89545624DC2
-15113168C7A4FFDD0D93D8BF3684CBFC294A1AD5160225F2E182DB50B47669A9
-597FB948C78DF0EF572733B14E4E7C55948817E8402AE3D7C55386904771573B
-0C922BAAE28BA9CB5774403E65BC89A792D77B2B99C55343B16BF783C722EC0C
-90548B6F07858D3E7316FC7813A92F9DA4CCF539E4E20B095CB72B08C9B507F3
-C57B8E74818B6B550166088C5B812F04FC09BDE1B1F0B92F4425BB7CC88F83E6
-9447A665505CAB667026C78438192E0EA02472A16E593B979AE480296EE177C6
-0C7DAD7656551278C45708FAA4004A0C6FD6C5ED1E32E9AE5B6757A24AB800FF
-6106A0B6516CC36A41EAF630F91A8C7ABE42E91DC24AC1EF49707BC5D95FC410
-F206FEF5768F9A8D23FE1B6A2984523D147F8F5C13DABB8D56C29821CFB0AEB6
-264B2A70F62FBFC397EEAE121CF0E107C9FF60A1
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMMI10
-%!PS-AdobeFont-1.1: CMMI10 1.100
-%%CreationDate: 1996 Jul 23 07:53:57
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.100) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMMI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMMI10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-32 -250 1048 750}readonly def
-/UniqueID 5087385 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
-9E394A533A081C36D456A09920001A3D2199583EB9B84B4DEE08E3D12939E321
-990CD249827D9648574955F61BAAA11263A91B6C3D47A5190165B0C25ABF6D3E
-6EC187E4B05182126BB0D0323D943170B795255260F9FD25F2248D04F45DFBFB
-DEF7FF8B19BFEF637B210018AE02572B389B3F76282BEB29CC301905D388C721
-59616893E774413F48DE0B408BC66DCE3FE17CB9F84D205839D58014D6A88823
-D9320AE93AF96D97A02C4D5A2BB2B8C7925C4578003959C46E3CE1A2F0EAC4BF
-8B9B325E46435BDE60BC54D72BC8ACB5C0A34413AC87045DC7B84646A324B808
-6FD8E34217213E131C3B1510415CE45420688ED9C1D27890EC68BD7C1235FAF9
-1DAB3A369DD2FC3BE5CF9655C7B7EDA7361D7E05E5831B6B8E2EEC542A7B38EE
-03BE4BAC6079D038ACB3C7C916279764547C2D51976BABA94BA9866D79F13909
-95AA39B0F03103A07CBDF441B8C5669F729020AF284B7FF52A29C6255FCAACF1
-74109050FBA2602E72593FBCBFC26E726EE4AEF97B7632BC4F5F353B5C67FED2
-3EA752A4A57B8F7FEFF1D7341D895F0A3A0BE1D8E3391970457A967EFF84F6D8
-47750B1145B8CC5BD96EE7AA99DDC9E06939E383BDA41175233D58AD263EBF19
-AFC0E2F840512D321166547B306C592B8A01E1FA2564B9A26DAC14256414E4C8
-42616728D918C74D13C349F4186EC7B9708B86467425A6FDB3A396562F7EE4D8
-40B43621744CF8A23A6E532649B66C2A0002DD04F8F39618E4F572819DD34837
-B5A08E643FDCA1505AF6A1FA3DDFD1FA758013CAED8ACDDBBB334D664DFF5B53
-956017667271C1FD06DBA26AC7504FCD81979D968F25E6DD3ADB119ADC427250
-5C19086788E2334374EFEF154D897B2382A710AA11B906714CC87ADD800F54A9
-874258BC9C1B6CAE14A9708C6CF64AD55A72022B27A67A545F47BC8EF8302AB3
-A8870EE3A02AA718C467374AB328F348188FC82242CFB6DE2354E7C9C4158E02
-63E077396B5D94CD70F67C9E97280EE6423EB73AD9A479E98C301E72FB02C96A
-F6806B3D96386A66C229B98BECEE46D1AFAC321A691E987A004659840FB1F2B5
-4EBF572DCC5FECF297F09FDE70988A5082BED4225C169DFB23366D659A99872D
-A0B194A71A451E89BA1178D2F3598192EF59A155E487AA9049FB3952F89CF5E5
-1BD48AA7B1E2DDBD96272D543DEAA54928E0385BF86F64668EC2BC10BFA9A948
-F00D7F8F0EF3A08C80E97B88141E02C092B4C9D64B821127116079C35A21C34F
-571629B2C1077345FE3C726BFB3306C6D048186D644B3162C17C60816ACB74DE
-710E70DBD4D6718765488340CEF4B11A48870528D2E5BA2784405AE9E09A88BB
-B4E14CB8915C732620C291F4D45A3260ED0F3E11BDD693636F1915B635D04230
-C6EDBAF92BD113B4F0BD40EFA5F407FD1D9A6D3F34939BA18A41704D7B827C2F
-6D80C3CC388929C2D29AE88D6AAEC58A1672E3FAD4D11F1E05604A46D171FA15
-176E3209CB25D3854DF80F9B898CC8B2033BBD1484BFA70272D2BC4766B40BF2
-E2911495A868B5E6B098F40F3AB0EA4929DB175503AC2A2866F82243C897B536
-ED642660E8A67984DC1107FDE055BAEB2B23A1CDBA01641471D1FADD357D201C
-59C4B6F9E5E8C7BCCA154A1593EDCC4E0C79942BBEF4DE6D5887B268498FFD00
-817F6447C74879292CE44D43B983C6B894CECE8445F077BBF8BD5BF3FCF2321E
-2F4EB2C612870AEDE6FEA3ACE4CE6939C18F16B3FC3C8FA4AFE448BB584EA6FD
-42E6DFAC67C3900CFC1C421A2B289087193F4DB7702EC2E15E6B13E09532014B
-C86FFD3AF9406C4434AD3C1ED63E5A28EBD864D482562A2A990179464D6EF4B5
-0E7F878038B01A7FE0A3248DA6C57EB4D9C50C6B256691BC98A7C04D0E14AE68
-D1BCBFF635FF9214B3CE7BD257DBE4640029ABCBCE072FA6C1CB4CB4A326DF31
-516EDF0210CC62B01F13B7F797B90C98A2F958811D7BFF6ADEBD15D77F5EB60E
-C6F0021E46AF4058A99758E41BBF6A04C5DAD4C0C4151EEA3CDAC4FF62B384E1
-35DD95ED7CC5A6105E84E3949FBC1F04F44043A55087A51EEF532967616F1827
-0801CB6A707EA375F7541BD5051403BB8C41B1A52226F261509D526BB99B0016
-CD1ABBF1B4E36D96DBA2E334ACFAAD73F1EABA42AD2AAF
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMSY10
-%!PS-AdobeFont-1.1: CMSY10 1.0
-%%CreationDate: 1991 Aug 15 07:20:57
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMSY10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.035 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMSY10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-29 -960 1116 775}readonly def
-/UniqueID 5000820 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052F09F9C8ADE9D907C058B87E9B6964
-7D53359E51216774A4EAA1E2B58EC3176BD1184A633B951372B4198D4E8C5EF4
-A213ACB58AA0A658908035BF2ED8531779838A960DFE2B27EA49C37156989C85
-E21B3ABF72E39A89232CD9F4237FC80C9E64E8425AA3BEF7DED60B122A52922A
-221A37D9A807DD01161779DDE7D31FF2B87F97C73D63EECDDA4C49501773468A
-27D1663E0B62F461F6E40A5D6676D1D12B51E641C1D4E8E2771864FC104F8CBF
-5B78EC1D88228725F1C453A678F58A7E1B7BD7CA700717D288EB8DA1F57C4F09
-0ABF1D42C5DDD0C384C7E22F8F8047BE1D4C1CC8E33368FB1AC82B4E96146730
-DE3302B2E6B819CB6AE455B1AF3187FFE8071AA57EF8A6616B9CB7941D44EC7A
-71A7BB3DF755178D7D2E4BB69859EFA4BBC30BD6BB1531133FD4D9438FF99F09
-4ECC068A324D75B5F696B8688EEB2F17E5ED34CCD6D047A4E3806D000C199D7C
-515DB70A8D4F6146FE068DC1E5DE8BC57033D79919697C81395D5B94C3AAAB11
-52D73938D5FE866AA42FB6A7B16B9DF113A49D2FB8949B3511490D79FAC4809B
-9C04692444006B2C534D8BAA282E038DF4A35E4695D34787103439BA8A96A1D3
-991FF7871E6C4950FA28668DF57B2FC103A67FD13E263649687066DDF04E84AA
-9DA2D8D34D6AD2CA501D0154CDC7E0CCB91FCAF781A357261AD0A4CA70E2AB14
-F0A018C383F784512ED187FC37D7ECFDBD5F6121D967203857F85960D40BE0C8
-59F2208F5EF5AD2776B2BB59CCDD41AFE1C5D6C709A8A2A7AB03301F5A4873D2
-DF31C7C01F62964879CCA5395D0CC6A873A1F35A3DD45D4BDD88039AAB007D0C
-CFFD30C2EC8F1D6CD1CCB97FE678619215B14E1CD22FE6A498DF4BBB772A5D26
-1EB60E529379EE0567205AE338D9AD9AC898CDB1BF058129244C9AFD0BC96E1F
-B9435AE1B0A2F676A66FA08F19A3A691022CE74BF22FA57FFE560E12C86ADECA
-4B3336A891AA39C3D3FBF0D263B841835C05FC8BFD322032A01CEAEBB6312596
-3A1E467423D09313B351BADFFF8BC3EFBFDC36FD6713F01A66C2F2AFB74FA1EF
-164FBC249A424AFC33D20C5832585675D1FC2AA54F679C203987D663E4A6BE31
-11034C5EE4F2AAAA77955A9AEF95F7FB46DBA7C1B0D27EF32AAC52DBFCA0AE1C
-690374624A4C509CB90FD85AF06D4B5667668EFF4555FA9FDF61E1FFC174CC3B
-C707AEB4D8489B695DBE7362EF623B9741DB8034DD45E2BA116D0FDB7151E580
-AB087E72A1C0999012C8DCA992A683DF947016E69ED8BD5621514434A077AE77
-5256F0D939602215BB33AA84F94A6C65C4564A7E16369AA0CA4C6897FB913E6A
-3A5414FC45E0EB8724C525AE219E48C021153BFD5C6DC4912FC1845A504BFDAF
-A111CCB0C68739ECD0125F5B66C30C8CC7E53A8B1104C0E31FA9DF5D73F9BA7E
-9D3F5F53B99E1C2ECA1BDFE05C585284049C27F27640BA3599B7E22E2797D527
-63E4CD7D8825A4408FAA186BE46A9B3721E08B71E614433E8467B9AE3D0D0577
-6A488BD12A01C5F4C7813FCEB413D1BA5F6326DC2121CD2FAC85FFC91507
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTI10
-%!PS-AdobeFont-1.1: CMTI10 1.00B
-%%CreationDate: 1992 Feb 19 19:56:16
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTI10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMTI10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-163 -250 1146 969}readonly def
-/UniqueID 5000828 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D5993DFC0930297866E1CD0A319B6B1FD958
-9E3948FFB0B4E70F212EC976D65099D84E0D37A7A771C3101D6AD26A0513378F
-21EC3643079EECE0C9AB54B4772E5DCA82D0D4ACC7F42FB493AA04A3BF4A1BD6
-06ECE186315DBE9CFDCB1A0303E8D3E83027CD3AFA8F0BD466A8E8CA0E7164CF
-55B332FAD43482748DD4A1CB3F40CB1F5E67192B8216A0D8FE30F9F05BF016F5
-B5CC130A4B0796EE065495422FBA55BEE9BFD99D04464D987AC4D237C208FA86
-0B112E55CE7B3782A34BC22E3DE31755D9AFF19E490C8E43B85E17ECE87FA8B9
-1485831624D24F37C39BF9972D74E6EC4784727AC00B9C4A3AD3DA1C22BD6961
-7E0ADAF55422F22ACA5E4DCD4DF9FCD187A566B7FB661D0530454D0DD6C6C50A
-7A3875C6CBF8EC7769F32A1F3F7FC1C072BADEC97794D4E90E0035282A170402
-356E5A9CD9ABD80AC4342A5283E458A7269252F4541CBB6452B39ED54D336D0B
-19928E9CD1AB26AD83EB209E2EC75011A2643813053B5DBB0246097C4821B5F2
-C92554E9140BE35B2DBFCD98809A8EC9FC910FDE9E0D86457C70ACB056EBF90F
-244DC0A5BBD455E15D6E3180311D52CF50B0BF7D0A7F64F3A1821E0AEDBC2E7B
-AEB549FE1D51088C153799C6E089B5D5D65E1C4E2D2B430CDF1FFA23CCB25D95
-5C4DD885310A706B320AB25C8D742C6F29953254FA54DAAEE60ED477877D19BC
-D28E9AB576B0EA088171FD000B60D73B3C57F754BC07EBC9BF751B7D2B32459D
-993861B7C4B0D98C422A11BECEF76F4EFC0ECAEE89723E6CED53E3678D733363
-2DF068AEF0FE7DFB57393BDAA439A6A4C396F86032A98009EAE1247B7DE83B3B
-E46DF2898598FF5E6CA6953127432A967E4FD41CDD60D6E413059A58FA556EF3
-309178B57C16A763CFC9BEEC276944BDEA255789EF4E1ECDE1EA43EEDB955513
-F42EDDCF39AE522A1DC2DC523F046EEC4CCAE25792B702C288732F5B13B5CCE7
-E8B6A1A1DB86B1EA38883E481BEAB54023EDD9BB94E7780DEEA577ADAA169E66
-AB7D8607B409619E79F242CF52E618AC0DAE43317C507CDB27EA8A1472D4E8D9
-17E62C98DFB049C78AD15560CE44A39581BD6B555165091C5D41071212A9D51E
-6DC3005C821622476DB88946944FBD830DC0293272497557825CF153F8E257E4
-1C9A2C1C27CB7610BED918021BCF64795D6571584830231C7EE85AB23906C085
-B17C9070C59EE450E6124FA3488AAF61751160F6CE1A0618FEA94397D1EFA9E0
-621AC7E9AC853CCAE73DEF3F7438E921BDD42D7E139C431530AF569FD8592D99
-8DA4F085A207616874D71D6005F57219784B5B33CDCF2CD8F0660940D13DCA5D
-EB779847324323DC8E8CBBFE8364043C6BE6E6D7E0BB0A3B8A84D1D47283B193
-B44251715BACC173875E956620DC7B2E9DD5AA3778A12615332FDF4F9C664DD0
-4BB459C4CAEF7CB1B3C663AE0B57A0933FCF3DBA2BDA4997E4F9D7EA86B74AB4
-C71C485AB20B371B66B8217F3A7079D048A8DA3CB9A1066D25D54CADD3B069F6
-33A58C6281347F0E0F0B773E692FB2A257781C910DBF6267618F523ABB585BF6
-97AA47EED8C30681848596EAAFCDEA87ACEB38C657CD2B42A80F5ED94462B1CE
-BC8D8CB6571726095DC6ED03AC8DB4B4EB65DEA536D55061C71BC6A4873FCFFE
-96A1E935F2C98F1B820DB99CFD0E2473092357B544F7954E69C48B739C913902
-B4975CB18E936A096B3AD378E3E9A42A84F483C7484369710E8A979B46579168
-CC1157F85AC1FB0AFF87159E335E8F0D2F94E809805FEAC03766B0B01DF7E81F
-6A769CC9483EB8A5DEFE66AF0B105218765267B69EC07EFC280594740644A749
-B386798796B625346D8A711F6F96BEFC10943D73C7FF7F279B1B5B73A2667AB8
-1D6A81B90B539C6AFFE26C925B24776225FA8C7B422E27CA00C3FF74ABDCF930
-44FE58EA15D99B212DCA92014C3B206866299A598E2B5684B4DDAA560D750FC3
-98714F4C5E99B03548FD1E7EE2F8E67838BED34BE7573E4E4917F89D590C3D4B
-BABA6B371A45C648AD8D936BF1649EB771E15A6F6CFBE68879359E33C1FCBC6F
-9252BA1D5D90D1B35CCC92806224D77B898B5ACA6D014DA5BCD3469C4418FDC2
-2B77F766CD37284508B20DB56979E00282483F49DE7B13C0B6784E18989B0B32
-3F67C207D86BC6010EF407FC4F041112AECC2696833394385814BBF7B6DCC3AB
-EAB09D94B0A06AAA79744422EB1D604F8E1864CA921BEFC92D9C4F3738D70A06
-26DFBC89CF2BE538862BCFAC6AC595275F3120485ADDA4220F79C0594471A17C
-6FC8BC16D78D269AD80D396BC87A08D12FA415BBF52A4933A84BBDEFC81A8ED3
-24795433153F7D944509DCC6B6A807EC6F54436F795136E43E1B2396177B4B93
-614E80901CE657572D61625A11231DE959D91E57154EE6EBDCCC7372474A6D75
-583B528267745E6C5DCB8EDC2CBA2691C2CCBE17B31B5A940E13E656817CF725
-88C18F0CD42291C2005C16389CD236FFEB7E3BF5499BA6DC3B21C3C3B7C571A1
-E0EC625C814E6C99448F56E17C3E628DA2477CD7F8F102CD52ADBC43059887B1
-7CF74E996AE83C087036E90634C636528965BEB2781C1D057BD70505A9B35F78
-2195A1EE3BC777B61E1A1C41668080A108E47D63E62674C1E653CBECBA84F704
-A49E94571F03CB168854A941151F0FA423B806384197C7D8788806743C4F8480
-B9F293E7A5D6926A222D4078ACFE150A81C272642D51F25725BF746501B0BC3C
-B7AA70C3134B19C3B10DBAA76FF6566FE9C79A82DCD81729198FF3389A07FCFA
-9068D8DDFA31B9F2169CA8CC6FEB2F2A91D08CBBF536E4D79F2A7228A9EF1EB9
-4ED89A5402FCAB1C36B097AB46CBB57E1AFED44292820F43712DAA122F88D323
-663E6CBF03384E56556636EEFF9B535C809891D147D7543761A6867B34F0A375
-79DE8AFB65C51AD11E6BC296E993C06B13369ED913BD1CD1A47BEC677794FBBF
-9192F36A1E5ABBBFB895DC37C8279CD2EFA2EB437DC17A1A70CF38EC0BC448BB
-FA6E5E20BAC175C47F0388DB0FD708F7C0A7AC1A6FD58C8EA489E5B7FCC60431
-F6A83CD0D1A5CAA2CDB1CB1B6802E7860232FAC1634102CBAFA4A386E94FB722
-B8ED43C8B386350256129B346FE48B64CD74ED302F5185D88858C7AC3B3FCE4F
-CADC9E0828594B8CE8DAADA0027FF333D5DBAEAD2623C8763D6B4F018F180A0A
-97B83E0C115ED16F793FD1B4C17E67C7812B3AD69B6EDC5670AE505A01933331
-FE05D3E53D2FA05A9FD306F4EB9B5C3D3CBF2A038F24BEDDD833738125E4FC2A
-446987CE8F2EB79CF3AE962A00A62CAA3B8026A82F2BA13B12EFF80594533445
-BB7FBDAD6D0B8B215F0FEC88A5CD6F6A2ECAE398841EDA620130CD8EB26464EC
-366E4157CD499E68F522FBAE5024A17FE846F53057F403AA63BACBF1B77A28A1
-4C2776E4292CC2345A93043959AB4A93978D2E361EEF7BF701B107AEA752C33B
-43A7098F08461063DCD158D14A26C97C07F73E5BEC7E012183DEB0D938B83252
-A60195E0F861255526117478E68D2AA025F876C19F848094A70A776CED44E87D
-6B11520A1BBBEC5038F41D33F82F3EE01E78986EB5FD0C2463D0E56B7A68ED82
-6D83E4667A88EC1275A53C31EF26FA879FD97CBE371036CA416CE099782E0A87
-216EB84FBB66E0FFB2AA0FACBC7198FBB04D681C43F07EBB47F05FA7237D89E2
-60F7B680CCBEE75106A272555E93A35345A6D0701B744BA904D6DCF9909FD6E4
-84D52A8CDDBC138E8BFBD478390E04E2699FE5883AE5C70EB034EF3E00EF2AE4
-5A9427B6AEA59708577C18556BC7D1E407C3C6D006BC4494B45A4D141E0CD527
-D63A4B01EFA7D2EB62E564CC395EEC48B2C433A6137854DE05C3F45D4D39E7B8
-101627828D18CBCD0606989EB0576B231F61C6E0FB9EE2910EF8081D9F6177FA
-6DD5108D60F8215B384EF0A4B12C96010455B403708988220C3A3979B111067B
-DF228F5997115F9F6600AE84223E9887BC25819F6E6D2044DF25BD2BF7FFEB62
-BFE45C9A44D7DE223F436F138EACDDAAA92AC0E425C7CA1B41D2876E3A296E6F
-614723239104ED266D695783E931A7C96B0A0545675E0B6B70A01E0F2C9E433A
-0FA1CBD0435E14053AEA258D08697D385CABB30F65FF839FC9C33E1B1E487B9C
-014042D2D38FE9E4BDBFF30E5D84384623CB7F1B3DFB5113154D331BE2E34713
-3CE3BFBDFDFB1A87021097AE13FC3FF3F2652EC2B6C2B1906ABC0FBBB8B52408
-5961D7F9E85CA96878ED1C711F25E4DB9BCBEB8E7CAFB28FAFC3456B5F30DF81
-5E8CD61A5AD8AAF683CC5E94B131A9888D031FBDEA82B589E143B3EEA253B816
-9F251F80B9AFBC9A17D374441B4EB205102D0FC412F5D8B913B23B27BBBBB583
-7B888785E821C7A49CA27E34D89891D5387F073E9549D539484CABF06A83E1D7
-988E133DE02D3A7AE82EAE1011C3639FA28BBC5D14F8E6F64C942699E44508D8
-AD2B01BBB6073ED41AAA0BF24EFB06D64AB2AE54C916AB426D804A37BD33ED43
-77DF370D466C355CA05A86A6BD6EC956B8CD092C5136F5E6C0F27BEE142130A9
-8C44225491E22872A65382F962026D57201CCB5596D8CADC57F4AA664C1EB6D4
-938DF12332686B7A560275712FAC87884533701262A6AD9EF6CF11BBFB66FD4A
-5E6A29688E4C10735B0F088C61838AF22610E8D46493DF76BC0A2C7AFD815D83
-FA072FDD70C775E4D06FFC2B8E6CB163D9928A38DB87A8E217AACAF17B32E7E8
-0EEDF03677DBC791465AAE880CF2FCC47E65F98CD1EA22AC82E2B77A76606AC9
-42F4E67D9F928124919FD58331EAE87CAAC7FEC28E9BAD6E59A34CAFC40701F6
-84A9FDA9CE1D03D2E55639D17D95D5228EB8506826B80329150D28C6C43B14AE
-7238F3880CE4D4622163AA1CDB481031446385994476BFCAD4CB46518B462E24
-89B5614C28C7A995C183D95E99A765E842CA69BD4BB3E71DCB0C47E35D92E1EC
-0DA8287416E704819946EA9AD0EE099B57068A0A5B89DFC624850A809DB7B5EB
-500394BA3CCA239CA2DB983A0C16A63CD139808ECAB6D463B0C6110BC285338D
-6BA6CA883456631FA87FC0904675606B1D73A19BE396505B0CC52AE192B1506B
-87A8862F935E1DE909B0A98FD861EB0F95202D02183221FEA7CD587E6A0FB001
-4A5E03A717FD2EDAFC9B4BB9E4F84B7EACACE04B2B01DA4D547C409BA3B7E9F9
-05927B4791C70274B5D6C6C3F9DE1439F3A8178B211E2A646411BFA360728498
-F6270E120B34310DC2012D285F0F92C0B71C50DEA249FF01392B9136E631C4C6
-04DE488C269958F130A10ABB1FEC111BF44C16E39782570E9B96105CD0566D0A
-08A3312BC64E20C3680EDE0CD0C06AAFCCB32DE4A84F855DE3D88421028D6557
-84AB689FD5D5767D288B88E750818FB3032203C367FAEF8A984373147C6CC5C2
-E8A509DA07DF51D4248BFB6712A833C6B70AB8F2ACDBF8F2088718589E075C95
-DB9D19CDA0A60D0B568C6B5F76F1C943E07AF443A2700B8D89F4CB6E7BF7B4E3
-53B7D95D9E26E0A64D50A20076AAA6D63F05A958C20DDE41125F62FB411E7104
-BFD4E6AE68857C7C6F2878E8DB15D7C691C667A2497FA385017BC6D3C4FD1C87
-24E9939A6E37E77B286CAE4552CC19700E561F44C3BB24B00D87975F0665BE79
-B5C3A5C087CA91C1987B3999A6E4AE001714C81430C0537409BF0D4199D773F4
-E737926B84B1AE20BE0969E635BB4CDEE5E074EBB47BBA6DAEF049F52B6CB318
-2EE37EDA0C4365FE4D776199F5FF4E2B8D2794A4CE74AC7FBF961029322FD2AC
-F8EECD817C011515F23FB59959DCB544F452F3E3BE75CD1F836EC0EA0DB34921
-205A8F5B0BEA0661D3BF2C4316B0662B698FB7DCFD81E703CF0820C927585513
-0CD331008CED4B7862C7E0DC09AC15369AC029829627D8DF36C5D0D3E962B2CC
-0CEEE942BE5A1D2B1E33AB4C39D4F5305A2D6EC2AEFD4DBFA1D980ACC188114C
-3802B711CF4DFE226DA7FF0859462AD6804CC200EC05DA5C9958B6E6ADCDF3EA
-F9B05C497F394524378E04BFF58FA66FBE0D4C1BD02D0539264050F53D7FAC89
-5430781492602855B6A700AB8ABA9C7B87EC58D63ABDAA86538C407E7AE2AA54
-26305C4691844F6B679EB8C13B7EE7A63C5229450916925E22EB52EA7E593FA7
-047C85176DFC74C9E493522BEE8043F011B85A33189FA591FBDA3BA55F7F1910
-E1FC4C3ABEBDA759D3D6DDC283537B19C6780543394609A1F4DD5C4FC1563F22
-21C8E77ABFE4023DC971BC0A21ABFD3240F31C045543813C6935B89F520D79A2
-EFEE0A2858B40F1BEB0BBBE32ACE91CE8435FDC1FC5E0C26C38E90C939DD0F68
-A30A75C485122882FC9F4E4A3C2020F5416E657B000EB941D4B3C24D7A07CADE
-4ED90DE2ADD8BAE0B0C4508B14B444AF29DC4E5294F0DE56CEFEA61457573D00
-0B2CA4BD3164CED244C8B8530ECB2DB4B0B623BC999E1B15EAFB3A84DE79513C
-D026CA7C91495D6E1832E0784E459787084C95984DD108EB6E5837BE3C463017
-9CB1186507025668C21607FC1AD05F45B965639F2103E01001ADF2D87F268035
-7B97B3A4B30AADC458A042292B0A7E43EB151E3C205D88CCB9863CE42076ACCC
-234272DDD992F2242F87577D6D300C4EC7F7D14669DE8519DB22CDDBDCAA710A
-783528541297F2490604CA13000D2982F48AD8171723F122DBEE321753654DBA
-4936F00200B28B6A14433821864108C290C7303E8AFF9170086E7D95F8AB70FF
-A478755474287D86CC88C8AE1B824982668D42957FB5A4B755320EB5742C1309
-133AD25A3094AE015B56A922C40B3112775134219B86B9AA0712EB2380D6471A
-D26DE5C1A221AED9B12C34A96D7A779201C4648526F80041920AD09B102F77DE
-85767974B70FAAC630D6F541AF40DECB3A460FFAA0A3F6CF77EAFEB772FF47AF
-B737E8EF1BDA7B094A1CF2F7B6B21B7BE2FEA8DB2999EC6060C7B4B2ED749BD5
-353259D0E52D4AA26A9540417B3C691282C749C9BC0319438539FAAFD8224950
-3309BB4B12961F168ACB2896FB370FEBEA71CE3CC8B861D991478D343BEEF7A7
-716C04EDE4F971DEAC667ED0AB7CDF83EBCBB98159D13DA62FF7ADE7DC4748FC
-68D59DE982A63B688FC4AFA442E5E57A3C411353F018D512B90058803A3B4B51
-D448A92595E81875FFCFC920C1C2325CAD1F8A359538416C6112BA24BE0D6564
-6DF1296666C7D96D96CBC902C0AA3B1D55CF4A9D96AE312B2EBFBBF997183E53
-A3F0209998E21E46F41A872140CED33D0C3E21975012AE1437094287725B6864
-D8320E3696545DBD3B86A522B8759A40A93D3B5D9C1177B7CB1539755FB3EBA4
-7569C1536E88797C9171046FAE52A6A3B9827833721D72E74E29BCE6A18FD4EB
-CA65E40838C0B6A071832B84750C10128A99ACCA918A1A3CA3B720E655E1D4EB
-0846F9180310DA03CD0DE83AE5561F3D067AA2E8F7717682023E0480BA1E3A9D
-CB080443B44916D9FF918FA3FE240E5A7B82F1A66EDCAB429DBCFDD56F1C0F9D
-293E30B580855AB5B5448C2C087104108F5DDEC530AA2F8180C97E9848593E77
-9A5C36BD38DEC1A5AAF8C54DCC317C58E5F192560FF0E39B612041A72061A9DF
-6C43741DAE0AA0AF78B160516530D950DB66B332D67C7B951DE77B5DE631AF5B
-1E2AAFEDD2A3D4A7B2F02890604ADDC085A059D186F871DB4EF507B8AFFA3E99
-70419CE3966BCDB1541A7B5588251C1409CED2045CA654866C9294C953ACB36C
-E66DAF8ED42744D33D260FC3D34674EED613404237E4ECEC36DF5B42E5FD817A
-8C9B235DAFF765C9B683334C200757F44AB52B01A6F79494EE973226A5CFFF60
-93DDC77A71E3073DE83C9D3BDFAAF5AE6CF66BDB1C9D6757A407D59AB53125F2
-F3636A5E05511D5706E7A7D7E5E649DEDD0A9B293EB5BAD66A99B94649841D87
-CF49043CEEE713D2FD8DDD6F9C672C63F8A548BD0AA2CC332B95B2D82B875FF9
-E63254DFADD0C66B7C5FF40B52D98170107CCFDF6BE38E44D7841234931B57D2
-E9B9B006C4DE7E1905314012A81DD03E2F7D9D7D54F0FF9B53D7DD05039947C7
-C54D4291E5D7D9C503F8EE4E3983CF19C0F3B2AE9BCAAD1F5D836120583161FF
-D244FD1A632AB933E295679EEA1F4733AA825A28AF2BC2FFC8E79A388F9F93D0
-BA56B948AC593AB7A1DF19F8B418966A9126B28CF8A81D88A4ED14D2C95E9866
-74BB9196099A978A96A8E9418D0C9C905493867322C78664EF00F60A5861AF06
-5E85B2A9A6538A81110F3FCB73124EB308085FC037324CA1B147C860C00BD922
-60CAB472F65A63CF1C95F0F13B3AF972963017A2EF3F2793AB91C41AFBFA8496
-4AAAF3855BD87C96B7FBD823E7B2EE0D4F9368191B294459EF2AAF4C83526B82
-08B35E9AF18F21C64A0591E558357552713B43F576A54ED9492550E6E3D4ED63
-D8E2C119A8ECD1FA9ABFF49DADA15894214F597D5C58B0972FFC686A4E659FFC
-1DF5E3572279EBA9165B7FC394576EC58A9E960EFCE619BE11E2C283CB990A8C
-AE6C0B178F64725CB12E71A255BFF65605556FBF541976D40F0246F18DB058DF
-E3EC4AFEA6AB3AC4AEC3F15F2601B34DCB1E74A5CFBE4F12AB0C268F331172A6
-1A5B8A912AAC4D6A4F40AC124A81017AB82B3FC9B071E96163419A3E299AA23E
-34AA908E3C017FDAFD9196258E96E9B1950D0B2BA85477E0D56076ECA06824E5
-012CF90B2D225B2E334BD2CEC1EC07D89CC45E71761442F27F7794D6D96BAB94
-E87E05385961FF3D4F1788EEA5BE1CCED1D1E29C12BB7682527A52E009A47E49
-30A4A2DEAC13CD38BE08979C4565BD200132DA555BA99761838CC3E238186336
-A993885BFEAA30087A05DAE84E37CA3560F35396838B8E9EAA700F7E71804ADF
-A0ED5A4E8754121593DD20051BEB94159A902EA0B5808AF508DFCE82F94CA99B
-A3C68FC42DF211A9DE7B597C56F1165308889C7C13A198C7B9A7849530818248
-442907CCD99667704FD54593DC7DC4DAB695D23A3CB0244D1669FADD4848B53B
-21DE9FA91C25CE0BE9A05EC695CB450D0AFD84E11315C036A4AF13AC1ADC4EBF
-446F89F2B8CA9F604A834944DA82B6F04390D7BC4EE7AD96B7A75E3A5AFEBFFF
-DA9ACCDE418E94BCDA3F2006E358F7910061B2A404E7A3FBD3E220D7B5E2BF80
-F4F613D615D0BA07026799DA0CDFF8ED88EFF02C1AFBC82C70DD60B42442D2F4
-84902D7C0E37D13EBDC8B1A1011043C62384082A6ADEF0B3DF884DDB83B6A29F
-0FDB813DECA522E591C123182EEC01824C272419F162D049E3238592557A4D42
-01EF7FA240B9C2ED9C6C62D151AA7D441C12ABBB8F532E65093CF04FBD3C2545
-E12AAB4C835068664ADFD44F91A301F7EB8F26E5FEB7246C795D93A631436B64
-18677DFE41A892F89AF615D2AAE9AA270DE26D7DFD7D13051A20EB446CCEBEDD
-D30F856356497EC0FC6D4088A0666171DDA39072EE266AD888227B4063EF4AB9
-EEC4A048294FF74421D57CB35B7386A49EB969A61C993F7FACE9CDB52E631AC1
-675CA9BD0D0DD31987B753973A6322782088B0A3D8ED402229189525406CCEB1
-84B46E5385EC6729E0AB995832CC14BEF6D08BBBAADA964F43F1331FFD2CBCD1
-3BB8FF6DE5581425653734D3AC2C1B2E285FE7FD32EF418FD1612AC32EA54E85
-15F68719148B2FA883EDFAFCC93A719CAF1B90361F21C33AAEEC956C1A81B4D9
-3FFFFB6D18B05A55D62998099541B8CD5A47E7D8A720147C5D6802D414E5653E
-21B4AFA9E4984611C7F37AD9861C46DAFD2D5AFDE5B46C33D276846781B8ADCD
-F5CB8B8F4B4B879CC1C36DE43370149E996FFF97E8367B41D498330C180DA93D
-0547EC22A936379B14725329BD1F684FC938D4B08B075F6D6951992AE08A9416
-F91BD3A62149063D42CF260B423302CAF7DCC69E13BB4EEA7678FDBE6799C734
-4C078A41A0E63DCD8C77A512328E46E9E32FBF0FC466199EDEA62494B8B86471
-69FEB5C120A330D2354FCB5925AA254AD05A41088AEA845BD83357272FCFBD72
-2DB4C5A67F6CD5FC04694A280765BA516ECBA2B522FB66437479298AA793B8A8
-48DF53F9B38DFDB80B5E7C467D18E1E5CE0DE51542BDD4BB4ED00EDCB5CBBCCA
-C96DE2F83554EFEFFDFF4E11E02ACE5599CC7EDFD065FAC2D63C00029A0F1E68
-1B1D39FB032BA279F40DCD0A22AAC8D7B77228CE928E8B9A78E272455AFB9807
-1AFCB6271305BC093DB5D9B614C091018EA46CFD05CDD26CE371FEE565E78937
-AA0C5257C2D405DB39D5BE042A747709D4D18BB1E27E2E5D3EDC4A9CD262BDF6
-D7A0CE1CF3213AD47F4A005FC9C6758C03B9BADC410FA6C121358EDA51F1639C
-47BFB168D22A06AEEDA5E1BAA6E08342C6FD0512486ED2E68B3B1B07DA24CCA1
-7D9C3965724C1C795E1B6FA41B9A1D305553443392E6F0473641A77FC5188565
-934AF1AC8D598BE23EDBB510C806F99EE59450548806D09A8F2138404BFA93EB
-2DB794A7C684D1540D3720661B0DF088F5BFB732261035AD6E659B6BA81E233B
-68047CBD05DD4A8F13F597EA37EFC35F227CA00DFED3F36ACFFF8D76056F4CB4
-E35850B3606E4CB63360556437E56A5216E2073C6164205A9286992B7C71C691
-86C2BD628312056392850121D90819A16C8EDC081980B1C6C21EC9EE3B286C81
-2320B8AE3FACCFD30BCC0C074219FDA6ED6DE71D65996804EC2E2148E08E0FAF
-BDCC6915D46F8F4837BA10220E14160D017E560EEF814C0CE04D9B68E23E20A2
-AF20C2DD5B95126F66F350CE3A77E3963DC3C979BEC987C4762E1FD727F524B6
-D9741B01101A4BDC32ADCDBDF2CF2FAF790F3AB2D4FE9833C979246619FE938B
-3690DB7C0F8C8FA67AB4E1B4A4D492C31C6A7F35B4CE30019C349F6F35483540
-6CF64AC7A0B2C26E8D42EB9DAD73C6878195B1F62923CF116775B829F982446F
-91C3E256B2C8685803762EE758E11FA2F1034AAD9BC98003FC2184E2AD739D08
-E37E18DC5D8834F5BF7DDB7A4BF428B98D582D7679A95BB2916A3490C5F6566D
-FAEF1754B0784EC470ED8A323655E0FF53E40D07D5157551C4444855446B6F15
-1BB4F803108A14C9BD664365018ECDCC77BCBA7BD7799A8B66082263E3EC2933
-602C2FEAA3A80F55566DE64BCD92CBBF94D3605E3A8F925183E60C24E47E84AB
-509292DCD021A70BC541C1B09FE51AD58E026C4F6A28830CE167F48F42F8D6DF
-1F3B6E9BDFE149F79095A9115E8853279C205A335BA6F1631F954BB27B522401
-22E3D6B452842B6745B942AFE67795E891DE1EB460DC38071211208F9152A1B2
-6A6F8B8F49C4C3A37FC4926EEA4AE6314891122AC7F59E6B0608E4996BDAB224
-BCF62D947E2F8266B379F6BCC952C7E319903785D4D5A4F9C67A04F4AFB69F6C
-50A9341B06062BDF159507C67A535623ECECC710FB6AED3A21D03A39DD134B0A
-F0C209D6F17EF1E5443C107CB1BC6F66CA5BC2DEEFB56E8FD86662268A4D5770
-F62C38AA2739E9938E7A40ADAE120B7D11E210C4EDB3DF6630B24D855302FE3A
-C79ED1F05AF15D1B0A598924C1FCF81A56B0F6001434434E9600D3134B199A79
-5E16B56DEE442E41ABD76204DC6A8B22E65BF0D3B2CEEF581BF00770FC8DDB95
-BBDBBEF252ECEC98F3715A0799EBD12C31EE68D30C00BF49225A63BAC9E7F20E
-BA4AB683C17F61F33E799F4F6A6EFCF57584D7202373694F46E629A252AE264A
-AB11AE1BB0BF765291226731EFFC89F92C5389AF3F4BCD75C3E225CE3846BA99
-AAEA8279D358BB5ED87FC9483B9CF1F99E0F37D7248F41C11B637BEA2B86981E
-7950D5D56E375C205BC775F43FFDF63769574EA035048B3360E2191CE2974270
-27F66B4930919BDC6D11D83A9F473B29114D29545B97F1942D44E11FDDDDDC7E
-1D5377205B8491B63FE72A046736C3322DAFE21493F0780CD9D2ABE0D5198AE7
-B4836A9111BCD4B3DB566505DA34B029F3AD2AE121D1E2B1A013A78235CFE8F5
-C019740627B5B5B61FBE1E1001736F88D581E1A1C1D060622C564678BDAA5005
-4B336C2B95D720D9D22BA4351F8766CCC0825B0DE50A1C98D78F3E3646E91C44
-3AFC7E47297AFD436E739B56B3CB0D87C5EF28E31B909987C12255A7689AF1BC
-4F1E286783CEE8E996612CF359EA1175DFBC93862D9A575CBB4969803B76F9B0
-B0D5795F9E934B4120225BEAB7C78195C1F554E0955DFEE14D2EE7C619FF3126
-A0EF46BD897570B5689798941003248F52C9902D2739288123C43D9A5C884965
-E1640D4DF348FCEED0152E9BA6108096FF4CDA
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTT8
-%!PS-AdobeFont-1.1: CMTT8 1.0
-%%CreationDate: 1991 Aug 20 16:46:05
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-5 -232 545 699}readonly def
-/UniqueID 5000830 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0187316F83DDE3E2D27FCDF6C5CE4F95B6EE
-3317BD91B7921F3039DD35FEA387D5CFB6C6E9DC84C178F3432994FC7FAC6E5A
-ED41A1E2EBA350178FBFEB45944511731BA827167DDAC238FC69A5486B995477
-C469E2E27493B0B711DF8E267D3D5613B450011921685147114106C9472580BD
-F531022F6DF5432B2A4EBC51A8032C7F9689B6FA942D849B29709631613DA68D
-4DF7B6F059A19304F40A3C3580CE3B51D79D42984194D4F178801720892FB6E7
-61FF43C63F9256B5E9F4227B1378222BAAD4D52C77462DF01892220E11129C16
-6C9E45BB9F01ED7C1AD5D8B4D72BE0E12969AFEA90FEF170603CDB91CB243173
-B19A56084D10293B80A35275F41BF78A054DDC98F4A1FFF592463D944960FB31
-6BE5F03960F9B1F213CBCC7FD448657FE388F10104D42B0715FC9571CC60CF23
-C72560CBB8835A0CA208FE06676B3B48B093CB7FB2C0C53AF17EC5B372A9771B
-BFD52FFB7062B4FE0106A01A2A1A1DD4EF5C8C7623EC9324A2CB3B402FCC1FCE
-52BFC8662F8A39D5F1B41C97E7CE34E16AC28A1E94007AEA7D4C519399F1B7A9
-48FA7DDB671067244F09C29F95DD60668223F45BBDA8B1C452E930A9F3F341C5
-351D59EA87462FFB30277D3B24E2104D4AAB873BB2B16DA5B23BEE25BE2C8128
-C4CF2F4F438A4E520CD864F3EAFB5363753B82978F6FD664A14E5D6F3A929348
-5839EA752FD635619C4FABF1E1454510BD9D6B538A343BE748AE05B47F917367
-1BA5EDB15F1BDBE806E51B294257D7087334165419A6520462D794D670A1D6E1
-3BB03BF689391D056D55AD660D15A386E6D222C9572BDC4DC8A46EEC75124BB5
-F0E8978FD6031A90E4768CCBF62A5ED8C8087FD66D2033011947634878BDC0AB
-6501DA7E6D96E227068E993DBB0072F037CA41150BCBB9773FAEA8074D8BD9EA
-37F030D986E98005CBED3F1C881FA27E1FA541900C9D9D6753E61AA26474A3C1
-8389D2A3861945081DB622F4406AD09B70087A2D85C32ACB29E4ACCD1272505F
-989DE12DED7925F9EA0757ED3AB062BB64C6DDC9D054479F0DB1A5ACF43C9776
-6BD4B00206794786BC38E08B3D2B033C9BAAD1325ED96AC7E5D4A2A23F469C16
-D782AE2B1FFEFC81EA3AA836FBCADC5A7840D3E5D9F5B98252294A47D26BF60E
-9BC5BF87DE734F0A9E4714530494C5BEAEEF434A3ED8E817A43F1D7EC7457FBA
-91C7C1D92E096390B5887A567EB178B9A2C5B2F75FD8761F91F3714637D10857
-DA45DCD34CBF608892BCD88EB7944DE89DD223787D122F91FA6B638619363D4B
-FAE6917B63C4D5528F67F502AE7095149CA1EF3831067AF1B2B177E73412A96E
-F2C2F2A65E83A2B10AF03097D9A625AE7FB72B0C017E0FA3979B8A1306DFAB04
-CEAF96702819DBBDF671B284CACC6FDF7DF040AF4CF5D16B57C4006D6E72D2F4
-1091E222E3BF2953EF97A4F77F6B9685522205B51E9B660473177A30F4A2DBC6
-BE2C99A5B8BF2F4786A9857CC714D50025057A23B4814D522E00D27DE7C8A094
-21A49737889A9CCBB42026EF706D88790E009865F9B5F9F2FFD734A16B54B3F5
-D02B1FE63AAC3A337BAC81A969E5446CF00AE58A755E56F0F03DBC5EE0867127
-400FEA610B2A096AD7C6CDBBB72F6B2DD6EB77551455E3D5E7032C99FB4D5166
-031D7E406C22EC67A1B2AA8A6DF817030E2B5B2CD19E68D5979945A64AF2FD09
-F2C12E5CF0F5FCAE69D6335FC542501205F5E66C54B8177C137E7AFDC6E17357
-09A6F6175584AEDD24E560F9066CFDA052742AAFF5227A10A6936C4133A49E7D
-8F0F9BBEFF25865B0FF3367697FA90ED3184B218C2C7AC1E90B0789273B157A6
-4AF3283D60CB8250BC0D76CA7FC99CEBB8A322EC7052CD6A35F4611B8CF0A2F1
-18C1A5AA63A7C4392DEDB5204A37F3B8EA8ED25ACD983E9E7639F16E87E39734
-36B82D5832845D2FCA0E5AC014F1489E9B1306BB84856134F3FFB574A4B4E755
-7105B91B9ED788E153AC99E84962EAD3DB5178C93C72D39DA3619371B1580CFD
-6D191BEC45CA2D0C4B91ED9114EA9EB5CDCA5A3DC08352F13277004039ED744A
-03E7F446763B6559632238F834720FBFAEFD6227E96563EC0640F92BDF2FC687
-31EE15C298F4BF75AEFDD16838BFE1B26B96664DF94E20135F95629E27241BFF
-ED40791377E313BEBE4907EF2CCC98FD4385DB604F138FD47322CC3D91368E3E
-C3718962A799AADB1B6A6D41C0F3165EB4FEE9E536773EE63E0D6EE9402FD6CB
-37DD07FB58DC3E8B08A97BCA38533CDDCC075F74E0440AC10BFDE7B1AF01064C
-9EE1F956048114A40F85072C6AB91CD629939CF45080CACDAFA1EDC60D6C2F25
-FE4EB51BE6C4642784B30FB573B971F75B6BB8659C77F3B68B6D5A1ADBF527C7
-A276E1560C88121703B8F08514F147105E24071D09F856C2AE175B3612D02707
-1BB380B3E2EB766847B6D2BB38F8BAB0EC387F252069FA96EECEB5A7ABF00DFF
-BB766E6C391F1AAE89BF6EBC0293A47817A283FF1F90197B5E6E4245CCBC0BF2
-0A1E13113598B9C9FE4174E7B9893067AD9C501FCE5759C0800599295556B390
-07A818CA68D66A05398BB25E4CF7F43CBA1CE3F32AC5D2EAA2BA6889E20240F6
-9FB201ECE90A7C5854879E8995B4B41EE2C02764BF9BE39ABC1E22636164F8B9
-88ADAE35CD656647B404703CEC1273B930BABA916312B25A9A6BF14BAB5262D4
-50F5AD54E066BC879CDB1252BF2C7747F5872B3B6F25D801351DAEFD20B77A48
-8E1BED27114124DAF235955DB154D7715C6F1EA421031896BA67E1F5AFD8A5C6
-240F61710F714051EF1FD7B263D928D7AFAEDCE6B6BA20166EEDF5E8069E7F19
-9774DFCA74524E00D226753CB13C78EF906300CE6ED0F06A432C81EEB833D24E
-713298C1414070BEAE6AC69A8733AAFA4625C739F530EF445582BE09F6B05ED0
-4B265D5C61161B525DBFFC464ED3F837DB7606D0A25511F9F6D1BF78A36647FC
-A2DC2832C313B482150B670FF71225126387C4E3D7676CDBDFC45BF16A4068A1
-458F51188A909714ACF1DFEBBB782EB540533F5B9F67E80B7F051A2804A4822E
-F6E81F2FFD90CBDDFF206D6DA1146C07D6048370CD4EF5B37FB2D1ABF83E0A18
-BD02294B7E458B0901953A7E353A9D052BC38A6C2A0FE3F7DC8F5B6AA8EF9B89
-58D08CC03166717017C1D0FF1FA0C637A81EE3BAB5F0F8C02EC7D88F1A8AAFBD
-BE61DC736E330DBE273CEAE8166A1666A172B4BCBD7C7EFBEA85FCD8B00E5A01
-FADD2D594C6C2A2BB623F5CCB7A27946C29B4B0826D384D0D1269217D71A20BF
-6C1BD0EE2AC91904F2C0C0B1354B4C3A5A3DA352C6DDE31F3955BB09B8FDA477
-BA54B605F859D84190F2C848EE0B42E49DA4249D6D2C7275D216B2438919769E
-EF50097B92063CE1B31BB14B6EF7DDA32333111CB74257882B0A1EF6FBDC0043
-954F18722951B2C97A82344F47E6FBA80DF86F60B4F12F007C2CDD6FCF0418AF
-8BB6FA3CA9D8962F902FC888094246F4F0015DDC4AF92061A0F239D9EF6941F3
-CBA1D0DC78BABECD226B9E7EE3166EFF28CDF4FB52ED7EE0AA71FC3BD87B5CD6
-7844A58E9B42AD0F1090E3C9A73B109080D501A3FB905B5B497EAA6E25139467
-47E45A3A5F33D9EA41ACE3F1843AEFE34D035879078F28686EFD5F3DF0C89FE4
-02B4B5952D675678EE4D32EE2F1713CD3CE4774F669D0BBFB822630D8E59A4C3
-E4BF1221CFC3FEBC3B246015D41B729424D0C57DCBF1E1522D7AE45CBD9E6C5A
-924BBD99D782D851BAD6E40DC25A758C66210652D55EA5E404954D343510A128
-CDB06A3E130C1D54AFC64FB3518E322D8121A8723BCB415FE8688602247696F0
-04BCBCDD8397254186F0E19DAB9C4252E4D10707F2EE17D3CAA66816E2BC9988
-6B9EA912000C0C46F6C3B1164BE71574D2CF09947F65ACE2DDEFF0E1F0ADFFD6
-09C67DD6BF724EA14223BB5D8834FE45466A2FF4BA8FFB1C007FBE62EFE9D60D
-1148A36020DD910328DA027261FC5D091610E52159DB64CA02A5F1A54FD9956A
-41ED832F9B606676E881D3675FDE421D5979B6BFF00AAD7F7D34A031AC4F1E5A
-AC731AA51981C8FB0BDE52261385869202C99E006228E52E57DBE413CDD4835F
-CBE148F5FA9601C87354CB0C6AD90F174B6683FCA7C25B831DEAD1FBDFD876C7
-44F9432E3228DCC73F709512E77C42F7171DC465386144B91CF5DA1A2F9BC560
-52EE4DE9928A4894D9F7E9D8DDA084369097CF5A8C4E5ADEAAD0954551FC8C5F
-586AC2B37AE93864C1ACFF984F0C68E58D1468FC5E6138C57EAC28AB272D998D
-B01E27D3E5FAA9ED80698CCD5CD09611AAE12A6BEC41A832029C4054CF2AC377
-7586FF553B077B85862549CBAEF9F112B5E3CE57B910329801D8980F5646A64A
-8021F2961F835B48EB29AAB2A5CA1E1044E2DFBC174651C36E516E79EB67478A
-7C77A370DAE6A3638B42446862CE927325173A8F8BD01E4620A1793B5A7D481F
-CCF92DE60F8CEE01691991E6A141CA148E8A9B6941BF5E0A8EEAF3CF068E0031
-EA5FA6F24A9B03E7249A2799389645165D55FE15DADBAA62A312809A3F52C577
-059CFF339A222C7F27D61D614A1857CB88DE2AAD8A8E2AB758827E8C02097BFC
-EC909CFA5709FCEB8E8BF0D50D579F39E2E4E2FE092303D10314630A73D69975
-5E718ACEA576D2B08F2254314B3CAB9B7EFE15019071310C43849A5C7F92A7FD
-3B9A460914E51AF0EF517E7231F8920941D60FCD98FAD72631D1A4953F4AD484
-CA7897BFBB862C0162BB206F85C5CE2ADFF784F243306BB751ADB5F415E16889
-E791F45BE5DCDA621A5D858F8238D98E45A58E5FD549CAEC1F518825E2F5912C
-B55A5CEE32C0AEEF1B88C24C4F1292E4C9DCAAF717A9AFAD20F7C0DD3CAE4D01
-53A67FE4A9E0239437DA4071B1FAFDA2B972A7C664605AF2CB1B2781E4AFE7FC
-1491F75F285FF1F5AE3CA7730EB242A06F757940971F2E6A17ABABCDE62279EE
-73536CD04016A6B3C69ECF1B0370F10ABAE0A34E654FD0215F39E7BD1FE9AB59
-52BBAB718C2FA826BF7D5EAB0AFEDBE7C722AA56C7D9AF78DD629E30EBF593E1
-7C1475A3FD76C12ABAC6E839DD489A09BDFF813D376F1D7CE5669F470D3966F4
-AE6D6F9817EFB89F9D0997BDDD02E82B3159EA68012427B9947A329AAA92DAC0
-EBBB2AEA2111F006DFD5CE3BE06145B126F42ECF0A5F40F7D8E9DB6BD61B44E2
-D861780B035F93F7149B9E6120A8956B8879BDC43D46F8A5F7ABAA0BDC61B282
-27C3FB0D4CED0C76120F3FA3279A8238D9122A51BAEEEBACE95D017B6DC042CA
-883C9285F52A0BC78C608CB8FC00AB033FF8BA84157688E3FD91B8D0D967A6C0
-1BADD713C9724936774E440B347DA2F1BAA110B16E5213F2849F21FBBA4FD44A
-013D5225520C3A5E7199BD749F26081C93D93C3C575BA9CEFE1CDBBE68E49F3C
-D1B87FC02237A8C38A8F26734C49BF531D14F6C3BBC31E2BCCCF359C88C982FE
-24E30E07F48DE73A25D29D1D864A5A4C4C2B26525723DB636E6A23C243DB571B
-CB2DD9413DE17E8E2949799A519A651002E57619969B1882B4E08CD1DACB0DBB
-BC87D31FFD4EF8630525D912212053A038E85FC83E697E52C1CBB4F90435380F
-238B1AD9209A9B0655ED96A95E744AC1790D17FFDE9AA329F6A6B526200A0148
-84311C64B1DFAF53DBD27137D5B452B2B2ADC7A3871753E3A65AD42B786FE55E
-013915EE5FB83582494D60802F43ED571CB0B000FE42CF58EFBDC01811F43EE3
-543592D332FD6DC67C50D3A3E70D6AF593483AD08CD02244CAA321C52B7D2863
-631B5852D07C8DF3C19EBB7573B55B21B507862221F6A5820F442474C4E8D67B
-60C7291C9D4D95451EAF8ADB26EE18EF87D57230CD2DB6F56E20CAAA945708E9
-8610F57BD7F2DC6771D7A00DE9C90A0D7BAEF675B7BD8E6F8E45959C8106D063
-FE5FB50C647B754A1D6E76A6DEDFD548CB2272C65E90353DD91E0D36BAD77FAE
-E14059544A8A39004BEF860D29B966862DFF35ADD59B1B12114787D578689C51
-CF5DE1A7D71524CEFAA157BA099A55F796B3B3842346D0C179A693655A2A7168
-562FDD1C2944CCA200C46904FACF5057D38359AF51473200BA2B3B90BEA2939B
-B295E1EE03D469F9C3B97749D2868CFC974D13E06AE669DD6B60BA9E394824B4
-644548E79ADFF26F9C129E75B1E216F86D5CFB68027D088436EE5039E9555685
-B3D8DBCB332C11346A3974251ABF85473B01A577F5A3D7ABD83A9C58E5DBB2A4
-341AC45D9DCF84B6245F08791864DF071D1ECDA4677647551B4161D2019F5839
-6B78262EDCB74E036883AA9F04F3371C5517A4F410C146FE67AD5C9C4ED9A241
-5523EA9ADB2A8D62C9B212B4CA78BCBC1B23257C73F8BBB3EE1A439BF03F1D89
-F37B117DAB805594C0C35A05BA58C67A882D878988D32EC11369BEC25A77B854
-2D26064A5CE9E6B2BD56A507B1E3C1D3DE46984819D3CDA1BFB26A5F0148E508
-FCD735D46B10EB1953070B5E5AD9BC2508BE9EB3EB29E261CC9D3AA6533F4667
-1951CB63518B1198985FC4FE059D6EC85051C9E3162969A57119FBC2B13D0FAD
-D0F1D00CF15C71AD37C3C23D59C0442A0345D950B6FDBCCDD563BE2770674C04
-FE07BAAEF593876057FC067B7C0429312377CAA45A9F10BBA7CCAA6CD089CC48
-865B84F68161EF7A9E18E636F26E3B924F5512D2348E103A219369E58D1E33E2
-E8630BFD79E89AE5F72F443794F49B86A6EE7DE3FA091980A5025175F82D7102
-F553D8F8CEDFFCC8B2945062B851629245E2F41079C8D2DEF229D8A091AF1B20
-594BCC1E13E790284DF5AA2E0D04E2FE23AE9F2B5393C63888741B2023E9E31F
-CB30FE539401599D73D7CD405B0715C9BD59F85CAE4DA30B6B43F68185B839B1
-4D76801697E8F8CFD723DAEA9D551C08BD98E9CC84F45EA3D7E6765ACC2813A8
-38CF78708B77BAF7A2A82A31253074F8BBFA66A11594BDADC1622EF3A830F0ED
-DFE623CEAD49C77019F0CEC2734EBF5BAE77D6186861843CE8BB94808B95BEB7
-A8CD7EE1F58EB3CC3E511F862E8A90A238D49B96BA1A0794DF7E508680248321
-D0F275EAA3B8032E9862DEA9C21F8A2F32DEC1F4B766A2F859180B183B75259F
-1F3F8690B63E27B4238FCA4A892DE87D3237CCE9791EF007569A5A57C031EC47
-FE4396518FAF547BC4D54F949FFDCB8088C0FB9CCBC89FAE4F6F4EAB18C2D99A
-6620809F801E8F1D17C0FCD01457DFEBDE3304A4962228FD0A2971A19D5326FB
-8443C30F9F173313362983FC7093EBC66E8282E367C74F0B65FB53E3B9F69CDF
-B4AE981C0EADDF88739EAC10868D2FA352C0391513CE19AD89CE2FF3BA11C107
-89B4EEE8B4010512E937F5A817AC1D22DCBA7079940D0410AAE272E55055D84F
-75902B70AAA258E5AF8D97C948C5C8696832ECBAA52AB3B86C32C307B972909D
-E56EA1702F2BEBFA2ABE99141B3C6899AEC091DEB3E88F988DA104704D7F4101
-20400C5937166F3C5BB5A9ED982BB243470290EC204953F2849C505BDF003742
-E841B71595CC2BCE8E8FEB7EAD5030A12205380569488BC8BE2F94055233B21F
-2DF9917A711678024C408F0ED061C6AFE4AF57F2BEBB978D14282393670E7AB5
-05E6CFD3120BCD4415E38768B20AAA4F6FAD526361680F7A98C7E46091B4ABAB
-D776F5E7296D2B8DE5D59C8C2F46268954D70E127E9D67577952F783FEA99494
-3C09F6AD1C6C3C84147E2583B7F0A025E5E44C31341267FE386E6BF247D395DD
-CF1F19F85BCB7DF444745197FB18F54EAFAC3FB20013D0A45FB5DD155F4FC4F3
-CC22A2126902E50D071BC5FC665D79C3AACA16B5632A91AE8A555C1404BE9400
-521B49973D21CBC1338FCBCAD7DDBBA3E4B50C06B8F21A8BE18ECB179536D807
-9A77D05E8B9B9AE48C171B8CB8872903D55B211B6F3307DD1BCC090B1856BD7B
-0757C91625D5B3BA8AF2EA6AD4C358A60DD5D0D77EAFE30FB2EB8920DCE407A6
-A06140F22D5C4C4ACB6358127A97BA4BD12CDDCFCC466F9E82C30D8A430AD92D
-5EC24A35769EA23ADE6EF9BE6A4CDF72B8D9692334A2287292E62CCE07037A2E
-5B945BAAA7AD19A8B01A698DEE9F467049C76FA5F90633BFB5BC5EDDB8B0F86C
-33E1FA95BE3098E669055A26C40C7683825577E8A04221A4C1BE8CA903CD792B
-A4B2DBE56F8869EC5C075A6B9E1948E16C8F2B182A3029200DAFB74A4B1756C6
-774A1FAE3859A332E7D4C5FC6453403CA6B9146AA39EC246C758C113EE9AAD9A
-F3BA67A3155DFEEF32C2C314A912575D96E697CB75FA56360714C9566CD2D594
-BF07CEA597CA1E57ECCCE5719509434D2DDAC5FCF99FB0B7E77F4B4E2A0EE69F
-E3557902B77DB0BEC50DCE3F2A718113D331D47AA060869911D692E357EDEEE0
-304B4F396226E09BED8EBB4262770726FF1BA06FA1607B40873035454AC7560C
-D0C77E4C844AC42A56491297ED36E588048C4EFA1944C6DA7DF1C5096B1900F5
-33ABBA5BE0524DBE33CF1F684FF39E09961A28941E94A98A0ECD771FE85ECE09
-56B7A0EB67081BC2932DD9847452E85F3B0C3F304A1C7A79458556CFC56E4E82
-3BBB0BF1DC6642A6F2F0C86C784880114BEEA6757D975FF6DFACB615F55A86D5
-5B1D89DC30E0C6EE912490DB08D17082FAD7D17DF6533AA923C1D19BB4A5803F
-7CA8E82532ABC6251C2E57984F2C2E69EB2661622FDBAD9F0C8AFF1458A2EAC6
-1AD73E27CC93059F79AD3B6CAFBFFC07020059FDAFBB045E3042AE0AE2FF3202
-DC779D424E985ACD37077EA3C5396A50E3D83576F56F80EC339C7CB11D9446BC
-B8FBDB7EB310AEDA870ABB9E035C2FF605AC5A872C705B82E5A523149DBA25D2
-5F4D363440D3F465727EE9065070506764962892BDF0063436E6A1255ACE1C4B
-BB511858F710D6E8B7BC700DC117EC29AA1C7EC99CEF5105F5C50780F65DF76C
-BBD81316CFA93008F674BF7F3798DD652672C196D98F28DFFF1CABD1DD6CCCD1
-8BE95B10EEEF2C15705170F209F6E650356BB92FCDDA6DC3EA5501A500B45E38
-FAA888E8C27D6BE396069C084534963338E1F4F7FAF1B9E7E7154A66746B9D7F
-3A4E21CC955437352B756FD3CDAB8E5EED9A3CDF
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTI8
-%!PS-AdobeFont-1.1: CMTI8 1.0
-%%CreationDate: 1991 Aug 18 21:07:42
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTI8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle -14.04 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMTI8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-35 -250 1190 750}readonly def
-/UniqueID 5000826 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA0529731C99A784CCBE85B4993B2EEBDE
-3B12D472B7CF54651EF21185116A69AB1096ED4BAD2F646635E019B6417CC77B
-532F85D811C70D1429A19A5307EF63EB5C5E02C89FC6C20F6D9D89E7D91FE470
-B72BEFDA23F5DF76BE05AF4CE93137A219ED8A04A9D7D6FDF37E6B7FCDE0D90B
-986423E5960A5D9FBB4C956556E8DF90CBFAEC476FA36FD9A5C8175C9AF513FE
-D919C2DDD26BDC0D99398B9F4D03D6A8F05B47AF95EF28A9C561DBDC98C47CF5
-525003F3DAD7933EB57E7DB1462E9D906F6D8F5BF740206C1EC5F36E00AAFF68
-F3EF6F3A2540E5F9564D1C215BC1E7E69C7D04DA5DB1CF195613C9CBF4BAA360
-84AEF3E10E24877FBE36AD731DC97305BDE6DB1F934909FAF60B8E28561FBC57
-0F5B6225425BFDE8F0C71CD4507B82FF803E9A301397975E38A259DE1E1B4FC0
-06BB1DC2D45B987A2268A77CE8DC025CB0D1B39788BBEE149103950650171C94
-5FED1063050A90BD38605BD9365D1C2AE42A7DA3DDB9A263FE10BD487F63D908
-D4F02758BD9D7BE53E6353A25BEFA29E42B50C1D078A8B3A746EEDB381CCE36C
-93FC4BD1A8D1D6ACD0D355E948CFE397B74D243EB51597D251D0BAE6884D70E8
-FEE119462E1939A9783414DF59EEA5FF1529F13869D1FF0A44935C5198CC5DAA
-E1FD2A17AEEBF4974052D06734A409E26C457C06700C55896C90BB33E044A737
-46590D9FA242819B9527FD59818D8829D4EB2D26A34CC05A2CC063E66F2DF193
-8E4F9670014BC243180E45B51DDB05AD1E6A7F619EE1CE09CFC1A4F02CB7270E
-4482FEDF673EDED38EF3173C475C34BFB3F6623C5E942A7797FEDDD0EF1D54E9
-1D90D7076C0A9687E334907C22F2E7C603388D8D626B0E5A62B7543DCBB575D7
-9A6BE1528EC9BC18570001092524E4FBB02F3B29293BCB4F0EF14A2DD9DB22A5
-BB33455799E8120D2A4862424AA4A382972E2845E042506FC8F6E201D11DD0F2
-09FAD8DC29C3E12B66293ACBFB13FA0F26238981F2CD52B47A8CDE6DF5CDFAAF
-3113E1A6366B806EABA9C34E5D41167CD10D7B639021FB4CFDAE28CE72A93F3C
-E8929A4D0B22D91F760BA9E9DD64471815F8089052D36C7D074B770540F47294
-FC731291658BA2276D24E9B6EC311E3B88715BFB9308744A7149661EFD03B729
-0ECEA17027BA0714E177250837A915EDC7D2857982D3802AD4847A4105C25105
-27F24BB5A5DC038AF9FB4CE9D865981BBB3B20C8D844F19381936063793EEEB1
-DE9D4B7C02F8BE03540A73E053A835FEC00A63BA40148BD2F142708DABBEF08D
-2F38FE3236EA9828D094949E20E153D46271BC7F966FF62C1EDB874807EA4F6C
-E29DB1AE48A52188401BC30CBD30BE8F85193608AFDAF7075E04B352F5A46444
-A80DEC0FA05931609B2640E4155B7F2BE60AC0E3111B10A21B5534B8AEA1A766
-31BBACD36E201D1C175AEB5311DF55B708597398B0429A10D80A57A6C6414249
-9A99C336B66DF8FC28FF84E6C1A9B3BFDB9AB1C6903798AAF0F1630E918A307B
-7B297DF4E970F8A87BE325837134755DCDAC0BDA235C2ACE579ACB9019F3B401
-47E52EEEC8B279E00CE6C76D623C1BCB96B2A60AD9D439EF97DD606279C3988F
-393C2EE57E5389A3BFABB98A5D63500264A4ED7CF781E4E7C06532C45C52EBD0
-3C9761A8532F538222DD0621C05A55AECF139CAB5639DB02B3C42FB377A1FA34
-83F0F059C843AA757CCA9B1D6FC48DD0DDBD947D959B9CDCCE329F79C45DAD18
-B1D96524C7D08B4553D4D92A8240DFB2B7D4303D3D4A5CA41A975B41BCF52E10
-2029DACAFC31CAD070E48CEDD46F8CE5E04BA1288A1810E97C5B71ED10C5A3D5
-C612473A7CB47086872AF0FBF84E209427198E419CECD209E141EFF39C824A69
-9A97CBF380AE9420B5E4897B7DA0C9A3B215861EB82A80358179674015AA1481
-37CBF8FA080BC6E50ED0BD65CB39E46E53C6314D74F708A8B4EE7EA0E2AE1B9B
-6C776C7B05F8D0063D8282D0513C7EFAF5A3C391F34F2AA671BC50B04CDA5B10
-E1A3FE0651481F9B3436030FCC07A727F8FA2228C6A79247E76E8DC0F3E86C90
-E3EB821C7F0D5CD5DB5E6F04AEE79427E676C477BC6801E832ED114AB9E0F0E2
-2518071DAFB3BD13F968BE3F4C2EC3A4E2861BBC81D8F61F8479D73CE5AB4C55
-CCF36FBB6AA61D6C7F1B3D93BC8FEBF224066F33B492A48937A04F3EFF2409B2
-04018EA09890E819E423F26225F2CF48387CB8814C423C9AF36266E46B193613
-0F78579FCDEF7CB537F5F64EADC859507B9BE059FAF8610D3003F632D82FDEC7
-067255483FD8B430340BCAF8983F010C6645C050AA7560321B438EABCF03AA1E
-6F593D52F9E9555F6B4FFB6290B9DEF7A7AC5D77BADC7EC02B7C89ECA3FD13C9
-3532C6B3D513F8E591884A4BCAB75613933953D97CBA3F2E6A3AA4813DA2E381
-984186D5114662AF4F52DDB401A7C78C30287FFBA9DDBCF7CC5CBAE252561DDF
-6FC5531A20F16C0BE7CB4C1F23C6798B5A62C5B1F38030C97B15B07E4B78D824
-7DD8E825C3B8BC1999484EDC701F1BA7F0A3EACA13DFD03C39D7368920CCD465
-B5401988580FB42931FBD405E5E0B053B3C687EE45B0FE34AA98CF908FCD218E
-B7F45649C03BFA8E67C7DCA11343B3721DB05746C42A6CDE0FCD78477D111E87
-BA65E8A05F22E9F93ACC689176F85CBC1D95CBD090754EFF17D7FAA6F348716F
-69B179642D0692736721FF2FB72E4C6C366483D034B480B6696259DAFD577528
-DCC059B2B7FC29B2A3B8FBD2CD0DF8E4487D3B
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR8
-%!PS-AdobeFont-1.1: CMR8 1.0
-%%CreationDate: 1991 Aug 20 16:39:40
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR8) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR8 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-36 -250 1070 750}readonly def
-/UniqueID 5000791 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA1772CE422BB1D7283AD675B65
-48A7EA0069A883EC1DAA3E1F9ECE7586D6CF0A128CD557C7E5D7AA3EA97EBAD3
-9619D1BFCF4A6D64768741EDEA0A5B0EFBBF347CDCBE2E03D756967A16B613DB
-0FC45FA2A3312E0C46A5FD0466AB097C58FFEEC40601B8395E52775D0AFCD7DB
-8AB317333110531E5C44A4CB4B5ACD571A1A60960B15E450948A5EEA14DD330F
-EA209265DB8E1A1FC80DCD3860323FD26C113B041A88C88A21655878680A4466
-FA10403D24BB97152A49B842C180E4D258C9D48F21D057782D90623116830BA3
-9902B3C5F2F2DD01433B0D7099C07DBDE268D0FFED5169BCD03D48B2F058AD62
-D8678C626DC7A3F352152C99BA963EF95F8AD11DB8B0D351210A17E4C2C55AD8
-9EB64172935D3C20A398F3EEEEC31551966A7438EF3FEE422C6D4E05337620D5
-ACC7B52BED984BFAAD36EF9D20748B05D07BE4414A63975125D272FAD83F76E6
-10FFF8363014BE526D580873C5A42B70FA911EC7B86905F13AFE55EB0273F582
-83158793B8CC296B8DE1DCCF1250FD57CB0E035C7EDA3B0092ED940D37A05493
-2EC54E09B984FCA4AB7D2EA182BCF1263AA244B07EC0EA912A2BCC6CA6105B29
-044005DDBEAF88E0F05541BBD233977A447B469F013D8535A9D7023CC0FB7B49
-A95CD2B6F18935C37F49E9A73E97A8602C5C26EE13D7A04A188336FCAB4CDEE0
-23DE9D803FD6E8D846B3F729BD36137E834E016242CD2F7BF048959DD45AD413
-19B985D05E5D422F3D0968375EA6A90FBEBF8B42B15F15280469D69629C08A42
-1C298CC027CC288B9C984239ABB96B6A891C1360D08F9ECC22202861E4CE9B39
-8BF14A1B80CFC86EA87941C0D90D77302E6290267159F991DC9FB1B4B7889E81
-9FD2043B3DCCA402D792320BF9D6258CB1AC5DF63A7DD2CFE52F24F8476F4E88
-C8C3971192195BE2FF48B92DC53CFE45323991DE2BA6FFBB1B201244BA00689E
-AE19B123979212ACB4611E80F54AA5D9A9F678E8429E5EDAFA40D03D9B7E80F3
-96D344504F451976FE110983B458022397F01068A7DB03492A25B7D318162CD9
-462A201C0E59221F73B8AA45BE3539328603DA3C587E4FB9BC63DEF1E8069D5F
-CE3C3FF5178B5275C1D2A9835ECFFEA74E0B555B386A5433196830C5E06866FB
-868837523027DD287C8B2324D0B36D646CD59D68AFF231D2C58EDF1E56345CB7
-08EB24EB554480A5FCC15B1C8A211ECE6B83042C061D7D87EDF1C77AB78F2AB7
-752E32EC7EC79396AAA0F8EE3330EFFA75D870961A68EA3904913B669D11230A
-B8B762CC5D9E60F72C19017671419B31EA2D94287C6AB1385F7053F1B9A787BE
-FB3F1A5295BB765D090CE6088068265C90DA1EF5918F77EDD5B27781988014BB
-8760C78A318357393F490798C213CDE82A31B59FCB971E31DD7AC469ACA9D35E
-69FB703D13B4083D774BE0D3152869557318AA762EBBBCFE76F81293703ECE6D
-170010F08B480C46918CAC0C608650367CB5B1F70503D8E4264AB6671BFDFB8D
-A810CC6B5500A6F147ABFE2BC5D66AC681A37951811946A6DD168EAB3B547E4A
-44B4F89A81D0DC71A689577A5F92B0F79E30025AA994CC86641212D1501121A9
-14D6ED71E6D202B98BC0A2A7993ED5FDB2D0FFBF0917F31FD651937582B3BDDE
-A9F0BC591544E004B03E092E4197C86381D0000EB0239F21A9696CFB555774CD
-590120C1737138874BBFAEABA024198BAD39A0C391BD2FDF3067B9A04D1E406C
-ED3013B9123C78D8448740EBBFF00F998FBA4AEB6D87B474BB7DC1E68FCA3E90
-D23FA28575136576B4A645C65DB00CF5EFA7255F3E843ED280B59B0F3AA54D08
-9C03020A4B4FDC801972ECC5B8B9F42CB46F0EA91F0C25A5ED58A5F85A3BA278
-801C354E44B96D39391F4E1B0073708C231ECC1EF6E81EA90673B754DBB742B4
-1DE286BEBF4E748AEF915FD017BD552FA5B97F4D2EC8B98EFF1418D9026412F6
-20F4FE4C56A01CD97C6CAB49BB738AB86A7DD112333A0BDA5CEB70390CE12C9B
-FBDD5982B1C6C458815158B16551C517C1371B8062E297FBF4D936097F0071AD
-2A3E061AB1767F0240F9EE7E3EADEB5C66D180D2A28508F91E84CAB0E6839472
-4D178730F2B3CCFC10DED61D9D325B659F82B741B021DE4E251030D528170BE8
-D35BDFFA5A2410C2F0788649A1B026D80D848AB252666649622E3C9455827C75
-1573B1D08525FC443EF0BF3A83FF5279039F9555C7DA2A8D0E07234C5985282E
-1B49BD8EE56AD80AEFB203EB22FD1877CC307580ACDE659650597ADBFF8A5266
-DA3685E0C1A6D1B60CE7CACE5A11B29F4A20FA43A5228939B441C272B4CDCB9C
-E1E5AB15F1944EAE3F1C9E2FB7D268B3A773D2C1DAEE2E329F37C36F2D465C67
-C2E210A13B4BCBFA6EA6A2DFFBC58F211E52019BEFAD57A86466837EFF8C40E2
-A8EF77F7BBAB80BA010D6D24BD0B866ED0AA63A4708189CFBD6230104629B93D
-BE21D688629C6BE6F580070478BA411BB2D292A22F729C4352C8379ECE0D2F7D
-C347EAB1BEA58AF915DCA1637923F4B8090FE8D56660AA50E5D2498A532BF61E
-72DD906041E8A821F1A8239F09803C5AF00E956531B520D4A4128F3FCDCEFE9F
-0C8AF6BDF60F9E5731A04A5A187B48FE0ED44A93DE974478E8965A4515799022
-C43FE39572382226902008794D50FCDB59F972B331C7638C5C6773A5DF9003A6
-F66BBFB665FFCCDD0B6DDBC8BD7D6F5B32245E8FEA5A970F8BF0040256D335C8
-C515B7777096F10E93F16443A5CDF261538F03C4D4DABD66D70DC312D8DE84F6
-1E99B3A3E51BEFCDDA6FBC5BC113401B76B98C9C193172A330DC106C12E8A4C9
-99247177DBABBD84E3E50191B5892C0C619ABA073DBA529AD0B9E7669D58FD69
-CA6E1A8B098DC0F664D5B9409E103C6CCB690F5C1ECEF637BAA6FBAD0A723240
-6DAEF7A8A02F9456F5DBDC14BAFC10D0F6F545EE767EDDE674C8BB5C62DBAB5D
-6AFBD6138F245BA0EC856260D1044CFDB4C714FDFD704C00EF8E6B6D2543F695
-0DFDB4543B04ABF00F515E174DEB33770C1514B5E7E937050E53B26A9B2B5AA5
-787E50F1FAE31C6506DAEADEC37CDD59549B61C29CAFEA594C37DC0F9C45632F
-6269A800F20C73CC212DB710BF5B4E04832EEBF490F1E0D85E3CAF9CE860464F
-708B75F85C795D4F0DEF0F02781B6C9850315EC9C7973A9DD1AA663F4B10734E
-E8F44A2F1712581BD0009D6E7365D37731702AFC40EF41CB1E875A9FB5106447
-DCF41BB943B2076570F495CBAC8D314526CA7B00024DCA866C5BF11BD419C973
-290D56FDCB2C8629A378A2EADFA85E0E3E8230DF5E00E5A530931720E82F52AB
-3AD8AEF245B964D4A21EEDBF9F2027B5A49C1FD212C7425B8017E79510A90CB6
-30E61C59F46DC5F0222330CF03401903C69A5354785844877CAEADED40355C82
-88F222294108F47792FB442E4C64DDF24393E7778A0E022872BF11884C5FE470
-00AA48DEEEC6C96A6E0C390D6E3496F6093EA6FC70D81858833E9243C47A45C3
-33C4BA2A44914312932A086044392A1BBD6207DC3DD24966EB6F8ABBB9E84391
-90FF2A7B6422EA91C4C9D8DF68D53AC1D93ACC430F9B809CE0E32D93EF4BF2EF
-299FCD0AE594C0BBACC312447C72C2DB9FD3312D2F76C1CB2E6CF3C4F5739D66
-C2D464207052DF6BFE0EF599963340D95C16A03CCD0F5A501DB0F7CD22325584
-2A48FE10A4FAD4B3A5845A16C5C54A4A85532706CE291B480C1522C1B5F1755F
-07E6CBA667A7EEC349EBF3F128A0872193E5442DF506F6D2C2E22D104B16524C
-B88FEEA45A34458926F3A096572856333EEA7014924E9326CDED5018C29ED896
-972B44E63C08C191218566DA8E8D20C578D3AB2E992966B867353BB85D0A84B8
-60B20A615A74F684F3CBE65963C1D33B529488C0AC8375F37F9BFB4C9A3ADA8F
-D03A39DD1371EEB680C75F6F7FEE4008D1EB500C442FD1BD99DE74C0E3D00333
-9F871224A86A29AF3E043690862DBA2684E572AD2604C9A1FBB2CD0C28F7F11E
-BAD9ABBBDA7227F6D9B351B5A6294BC4723095D62ED96CE3010F6F2D319A2E15
-489E011D1BFEF7F5345FB944F63F7068626207434D7023C8690FAB66638B265A
-80C1B1C3D91510AA777B7A502FAAABFF1B548D6D3908AC9A07EA8182F5B5C1FC
-38239853EFDF25F42A52FB18CD1F294C120580B92D3441D2C0D13A22EE384E4B
-5DBCAA933533C895E853CAE0B387192D27E3BD09536FC3DA83E000E42C4FB0DC
-3D46FA1222A5263326E58305BEB6735F82DBF32EC40BA3E908A960A0931B4640
-A6A2FC32CD3E7C61ACF9D2B9F22D5173529D0B26C5531E3F6732EB7F1CE6B879
-779779DDC53AEA8BC17359C12D8D7BB0668BCAAEF885D980F7268BCB75136CE8
-965BC5F4C4C4E848AE781B95D708BA61A69BF213ED04B15A45353037B9ECC7FD
-BFE3792F4F572FFED4094B6620827FFF2706830AAC89F75F5A97A1B7329B46DF
-B143025B9F30B7D9B26660DF76FEF6EF3A3B0468077623A222FFF775C19C1460
-38C3B5E1767062B3D81AA596CE7817E0A4DF3910127476CEAD86FB7BA7A55F58
-618EFE3D350421D66B9E313860468F2EF90B4F111240EAE3E707AA30A885C1F7
-8F86BC2AAAF361F791FA539BBE593D121BB460980CC0F7BF7AF686B3D0748CD0
-9431086F4E5639508739231088D2735BAF229F2041E55077057FE940959F442A
-62D36A8C16147C3B2FCC2B76AFB6FD44EB4CFC1B748569D9D72CA699F73AC399
-52E3B1F4FED0F235BAB500A04D898093688EC108A8FFDBDD19DE52B3383451CB
-36AD1F04A4C541248ED84930B5A808B2F2DD797D811A5608DEF6F8B957C59075
-A1B4E1A29D78ACAC3A3CAB851AFC9042F6550C55B96E8544B75B03FA89C65DB3
-FCD904AA29CAD80DC5AF00CC1AFF016968C60BAB1D85FCCD56944FB30D9AB98C
-551656B960C1EDD74E1F5CC455F62C20830CA5AEB6BB83D533824BB9CB91182A
-822D15DF54799B44D63538A972067122BFDB0747BC4CC693F7D4A6B951EA16C2
-7F85F4BF6410B29A0F3B03ADC6661B70E7C4CD65E47E2C77636318FED667CFF5
-F2CD4EC2F9F9477652FB1D8FD838E6B3A4A5837335358B30753597734C201067
-0D9E4EDB28E125FE25337C2C9731DDAF2845B0F3A1DAD45C022888A6E243405D
-3C65D2197CA4A17B4EE675B784918E2F1F0576AF0786D2B40ABAD46A1ACE5B5F
-D4DE512CCBDE07B9A8D3647F36745DAD044AFEE839BA44A6916A79BB28092FBC
-785653B897EB2D694D6730F8B162F50B181B8DB664A94EB77E442F1CCAD9B91F
-AB2E4912806E9AB25237EFA5097E5E51F70067DD14DA6277F8F898C610B8FE17
-CE1DCDA7B444BEF50B5F709D6A7BE5945FC49DC833A405A737DC1B36C1BBF8E2
-9C38F60D78945559612E86D41CE7C1CA721BD61B5265C1E1817BC862F1D91885
-48E1E0C2BB3BB6D1876C406D43E98E72E0DCB8B97633042364CBFDE2899B4CFE
-0D26719C9E52ED40CE5FE47492EC8D7BEF457FCBB4278255ECEFDE45169882D6
-D7AF4E72ECC3F2D2B69189E8AF3694ED3CB87A2549C4508F3E4D6004B24CF325
-F95A93E5E775D47E67DBE2E15189BCC7A0BA3BFD5B640BAE0CEC139A92871D44
-0B19C6043F0957B7A5D4801A799BA5C5922C70F95C2B63760325A0375CABEB7C
-0A1DDC8A802A9C1C38B1053493656138BF56B9DD2174212A4815AE6E224CC09E
-03900897CAF4855AACEC7DB9B900CAE03E88F22272B6338281BDE74A6607F73B
-51937EF0125EA515B9A0A7C6A522A29B2F6BC10831A89B5A6EF8EC93AE8AECA9
-EDAA3E4546B637F66582874C28CDA1DE580DC2B50E8E81DF837054C45235303C
-F11674B44A4202C22482B54BEB3465E883E0B3D88FF92F0919F617F1DC83F686
-6C5A73E422A2A4B51B05EAC745AEB7647A9FFF28D8093E89D44908F73FBCEC9E
-B053F368D1223AD4DC83C0E10E36E34ECD0DC95100A3F264275D6B92FF320E86
-F7DF0158E6AE017A43614B6DE57155A31E857934752769D0C74A846B890F080D
-5AB823178E9A137A4632D3482656B06822709E33738A4297F3613CF9D0CA25F4
-543BB149E3712673AA2341A1035B405BC64B12311C1C248ED8AEBCB1EC14A93D
-435EE8237B989E5F3CC50B4DB6AE9E944F8AB5FB29CC83AD512A4DDB7C3805C9
-85192903A94E8A5457B3C44F8A3A691116B4627C70151A83339C7068B4FAFF6F
-6E78C0E2B80427124C32369AB384281369D61DB5BB73A8B31A4CB53A40FA2E89
-F077EF9A2F3087380189EC367F9E1A874E45202F5569A0BFCA384E0AB6468DBF
-17467EA8EE6BADCE96FBF33A8C71412CC27D4AF6823B02EECC9025EBA83F79ED
-F717C31858DBE1FA2AA23558601234FB04F653C059E3F5E054E5C6C028E09D03
-F84009FE152CC9E0579BD81BBA35529F0010080C32A8B95756EBB59DD334E1F5
-D3D36EE69DF0DC48B25FD1DE6C94F2F6DFCE2E42454B9BABDEA974C04E5A870D
-FC44999AE2C38B65BAFD0DE49FD2F414AC30FEA8DDCE2ED10C603BF4C6A424D6
-7F19DD07956EC412F3EB92A72C66FFABED9D5FE202C3A13AC50A2F959C4FFF19
-D103C251F836A7C24565F6FCC6DF2AF7A3D23727824A5CA6F552E6C95A43A32F
-F85F77FCBA49C0998FF15B855E46E5604AE7D5D5D1B50F7EE17F0AC2DDCBBB89
-D10F56A312581695995743E74C8950AC5B58268E32B0A2921CFCAE0045DB25B6
-EA75F1B5587F0375E4AD5849DA29AC8641B4C1C28E6E82101C3C31829E27FD5B
-86203B6D55185CF57688B1C10FF6AFC9B66FC95E0FEEF60F3201B79A93406105
-D6B4444603DD1748EEDEBDE3DDEC23E23693FA76BF47A5C3D6DBBE585712A1B2
-87AB906A81E20924067C001960A1BC3B13A3E0BEFE8FB79BE0EBA8E6CED17872
-6250005AA611C5C0CFDFB11A133FE14FED1AFCC31A8D30593C532F1519711DFA
-A9385A6642959178F2FCC67FD17A5EE8AEBB0C5D841ABF0BCAD002116DE51C28
-2798B4EA18FE4A5D947C1598F11512505AF16514338BB84C2501662E635D3F2A
-3E52DC99A291337D155F49BD6F35005208F9ACE1C8640E984C608C6A321420D1
-6705B57CFB6A53FBD11F808C3D7E6CEA990106D16D3E1C7460B00D482337BA02
-491D4036025E841F7E31345CDAB4D5BD7680994B9CC43CE39E1087B1F8FE67C3
-B38DAA6AA9C3469CFBA00EC22E8674A71BF9AF9C4CC099C88E68B407B5571182
-24D3AA59AB73916B344FA75D21C17FFCA0FF77CB219EA23381B0A9BDF18D905C
-B9D7F308CB9E0C9706A8111BF12D96E41D6CF3CE968B4C7BF6978182462E1235
-622026662FF0B61567E789CEA1A05C06B23A57FE1237C85A2AA7957379AE36AD
-238727AFF6616D47994E5321A2B33ACFBA44131CE06ECE6D1B1E984C844C2F97
-A433CD1C80572DEBE27E4DC4803897E366DC8BD279C52F1B27E86AFBE63853B0
-2C80A0FAE5D752FBEC36EBC28E2F2EBAB76B67DE54266EC36C72474252E8FF61
-775B07AC20B1D8F362FE5D9CB019C990D7BCDD89FC23B65147F20B7C42528E8E
-4028836C82D804A6CEA91931B26AB339A4BD16E6A409FFD5BE53BF9DEF87C14B
-345D4B419A0EFDECF4B6E38A5052EB17F8DBA13A366E899AE1E15E7F03604AF8
-BCD5F69BDD79CE7FFBDF4FC0F16959FEC98D644951D34C8BC06520D4C35D97B3
-FFFB9BD352B157801F18D46B6B9CEDD145BC9E600F6C87DEC9E0C8DB829D241B
-307B86E1D15B6A765F3D7A4E1ACBF2E7FED1ECDA0E135914E7E65FDDF4BFEEFC
-C4A444F035667E9AC1A3C114B0E1715A717A76F6F9B01340D88025A8B620AA7A
-676F56FB2FF61B8C52C103D5D925A8C0234E53D9557EF83C1E42BD4D8DCF1E02
-9AEE022478429DCE5ED10E3982388DAB82035BD2BC63DE9A0A06249FD2555C41
-8A22579452C7DF050AB63CD34C34E2E8008C7DD5E7B289849367372CB4F9BFC2
-018224687F9FA2604DC7F3C332801061568A1AECD3E6326BDB3B4E694EF1C6F3
-742B73C694250CCD558693FE3763E71A29EA1EDC95B0827562921D87BDAB85F3
-DF43098DDEEDC5C3CADFD9444430EF38A8EE51ECBED7A1D34284ED9FDA605C2B
-7483260C603504E23D7E73EE4295D47FE51EB2A94F9C796DBFB7BE0F8CA985F0
-0927654CC77F66B09916750F898551077F7012EB87420E684C9F01747449487A
-685C6E27E3BA4E7C688E263EF955B49C9C26F3B214A0160DE93617DD5099FAD5
-3E177C679ED0F310506C71E794C97473AE847C7B2D51E49B274BB72CCFAE315A
-9F2B429E0E802CA8870A0C118E986EA1884AFD6459BBF3B10D999439E639D270
-72DB9BBAF9A2D249EFA49028D0FB5A61FB4D8E328A13E89CC4E8370C01B46D86
-3C5EE96101ABBA2BACB1DADFC6A010FE08615F5168EB9CCAAEC199CB14D998AA
-8FC309E8EC5D5599396BE6F08A69A8481E4C11D98DD4AB5C38A8F8C2D5480269
-C4519C508F9DBB94A9831A587CB57CF2061EB6B86CD7747BE914A572081A7312
-4F1105CEF47289E49C90DC76226D790A9F7D32B3B3F53BE464E099F0A8871871
-CC15D32374BB1355AC8AB554A26DC956CB67D115E66A521683D5D7F5A7831D09
-DB08D64AD1D19DE9D0C308070C4195B4AD76474DD94644F7A16EB40475E38A30
-3E0A195293E8B1AB2E72D5B08714ECCC71EC7283AA357D652378F62E8BF1BFD1
-4492CD2D71BF8535271CECFB89A91F68C0708FC6BD944B3E17655A9D1CB783F2
-F265CBD51E20763763F197FD99A4CF2E817AE5AF3F535AA33EA74E0146FEE793
-9DADA7B9AE68EBB697DE352993FC9EB7A020D8069A63D892AA3E2FF59BAA6F6E
-BFE6677E854EB021C269746C017F472074B26A8F475401FF688688DE292B9D94
-61F0DE15A1510E1EFCEB61E130338DD99997CDE422F1A5ED1734AA02B8BE1715
-9D0262849FA9C025372C6FC2579FF1AEF6AF81A465E4DE49E5E424918C9C0B24
-B2DA71C411A8587CAECB3FE6566F848F65397122662AB37528F9F5D7285C5BFE
-3D8F9EF51F5745AA081154F659956CB1552DD8D47EB6086CB9B032A983F3584A
-1CB5F9FAE3791FDBA11725396AAC14F532696B16E8092BB6D3FD489D6D0D506F
-F52F91448A5A311248219B590F7D123A69AC6E0AA1D8CF389C6D21FDEB1913F3
-38C75D3684914CCAC1EA0A4644F42D669ECE5F16A49F02245688133EB9D3863D
-02E9FA92D9E5254CC359552833FDAF514C2CE9C3989CB2300D06E99E34C45594
-704CA31CE8006925644A528AAC637AEFA69EC0C77FAF258D3196D32B7BDBA366
-B5664F0CCDDD5F16BAF492D4DFAEDF344DF5369298D609769C1F9CB726FCC4D4
-102D475C6D211ED61B75EB9CB174FA1846E07D7A97F3B8B93EF9A0F3B9342507
-946DAF77AF6B4BBABCAFB946F4CD33B7CCA3A7EBD8A66BB47B7451EDEE73475A
-5AADC9910B81B96B568E64233F0A1F2DAF9D8641858E68ED0941197EA8491C76
-9D823EFFAA13F92CCBE830C7C32EB133A5963983F3CBBA36A9434DF675E1F06B
-4E6F3EB2F8AB8C0F6438F7F9EC8F5878FE7FF564E5B67454134A39BE7E27764B
-DABD4411ED22E14EB025F30F6AF60E2C4C0D854B79DE34A8FF5470568569B9A7
-1D733CD139EFDF0319D440D29D21CB0046838AC6BC9C5DCF7CB11BC5A2D177B8
-D6392C7A31AEFC7997CE788F09E31108E62F6BD3F959622443FC3BF85704FB71
-9202377E3B0B8A1C0D6CE986302272196EA62BDE76DA2001336DFE575C9EBBB0
-A729EAA93A78D9E5ADF352A78F5C792F5F4169D228A067CB3BC94BFB8D13F16A
-53A0291C4B91A8E0654AA622152674AF6B0B5176A645670D664589FD233EECA3
-3F513B48265C795E9649C0312FFE51F3EA291B76173DBA1B5B1FED466B8FBB21
-97580AB6838FB2AFC43F2A13594058FBE491845D327CDBDBAB257F248E12AE54
-78E499A685B290F3EE08ADBA0DB7B44DBBEAC8E2100BC729EAEE0081D15BF99A
-BD7B61641C0965DAF9C26EF15F5F3A6F3058532249FC49AFDF4000165EAD106F
-728D91EC9869BB9AC7665EA760F6C87A6842BB4873993129C1679527636917FD
-2AFE3E16AADFF862747BC33343BFC4F24EA3537BBE8ADE84BD638CC1E0D1878A
-08888408B94202672ED59F900E449D77B30F037EB0916CC11015AF49955487AD
-E322715A09E1F6351D2E046C1BA39BC73B275C18494AEC2F85AFA96E15882929
-E2D9A6907A5B9C4C10EC5B65B7100626A8FDA9466E51ACD39C06E46D6C9B3CC1
-893B3AF8DA48F05075CF62EBE43B295ADC0AA666644E2EBAF4E195B54FA4FB62
-89205A30A3DD06E85FB965DD72ABA98894618E3E76AD7D64B514CB7FC52BEB46
-EEE12E94995794E7B90C95D1A0E06A4AFBD8A141194087C8C8055DD579E4BE66
-D8F41DD45888FEA1FCC4DA54DAC5794B01CADFA2907D01D4C630F4D8BF04D410
-277410C7AFE71DD4D32B76B6858DE013CEAD8783B71477FBB32AF1EEFC9C26D5
-C2B5CC5873B7DDE46D2EBA30E638AF848EC27B8C4BC9460E518B07B9A39E56CE
-AD15E4D235D756AFB10BA05A4EDA896E500154D40EF497C846693426B865543E
-E56FF95076A33F772A63940B4F54F6C40A0A2EBD260336BF412D96B626FE321C
-3C327D8DFA5A392E2325B620E7FDBF85D27D4E473643F80266C2E25F4C201F6C
-B6083D37DFAA3B3B6A06B83A1C0E6BD191C4D0B4E48DBD0AF98A01689F990892
-C8FAE24D3B3F060566268914DC9B3004046EB4355C8A9103ACD6380315352E77
-C1C42AD28949947A1DBF7D03177DFC37F7B1004C480F6EA65B9D6A24E56FECFE
-8F228BF5B1972EF9B2121CBEF1CA159C1BE844AA7780EE6D7E147445683E7396
-B1AD83855A6CA67AAE7A4D9E2E0E1433BEC45D1CB90ECB16217CE6C1A8C9CCFE
-5B2502C671FE68D9BCB72D25C13DEE55FB7B81277A80031A0C157A5F0FAD0733
-893D772652B9729CBB7922EC0E475C3E99B2236398FAC5804D80FEC4B6FF35D8
-F2A9B022A96408083B2B242759239D9BE9555BA84FBD5E9ABBC9428C9709F487
-8430C56C6E34033A1745FF5A4ABC0FCBFE34277CFD0542C2B89CFB93DEF83BF5
-1F8E26B001287F9BA25D62F32D2AC4E031E1878552FD1519ADD1B3BD2B1ABC92
-E3A666E071950838FAB2C3C7D70A0A7503BD0AF56B16FFEF26BAACD38B42B333
-1C02DA9B71AF245687460B2BB40BDD62C2E99CECA60E6213E904219943AE30F6
-52C081AC9B2C8AF00284D9B4CA6122A58B7FDCB32BB7FFC4690A5A50C8E728BC
-23E4CEE0F9A392D27F48C5015EF4BF9E8B05FE9F0CFF7F281DABC81774EA2ECA
-6CA3B43F47F07474D443632EBB4639D2343CB06560B76FCA6957033BA0081FF9
-6F3B0274BE270645D69D60B8ECB87F984576E9A27BE318F71B45400494EFA5CC
-4C74004B3B9171E52083351C44A78CA7726A0E24CB4F65CCE0D28F9D21D6C92A
-DAAA3592CB158535274C4BFFB16357625A025965DE5021833ECC2EFFE16E0DC0
-55FD206DBFCA19AFDC893A50DCF2428E4BB19C8D9F68A3B50BF10D01102CE1F5
-AF608E672EFB001CC9F6913B21C3A7D30590E5E2FF3DA9CADB4B9E33E7D98445
-A6944CC86DD6AC37F2EB63D303F70EBE70509DA04B2EDA3117C25FD5D45AEE2F
-BBD9090BA4F81571DBDB6196AB5F331CDC5FF662903334EBF3C1D9C6779D20DB
-2B05787C187C0EF4E8E7A03FCEF9D48CB345B0C77919458DF1ED35BCEDB0E597
-7EE30947DB24A3E6AF18B17AF35466AE3E40D06A6A6AE3731F69D37E58EB6F4E
-2BAFCD651E8388E0CE24029B0692F9D44833E25BFC7335607D00508D7AB127EC
-1B4FF2652E339B8CAC02264BF31CD50E385DF397E44FEE105A77D0AF63969D2C
-BE01196598398737269925EC85D10727FE1B96F0B2D5CB69E36C6EB4338C4409
-A969FDA36C2A90F22E1501960877BDBF403BD37F5603E071ADDA4B360B301050
-706C5515738E647005507D5EF86729CABCD01937A16857FFE5F86273C06AD06E
-00333A66722247EBCD17757BBB842D757175F9B8881A3C0834CAE536B3A7C6DA
-A746818E5CAF8296B2DD0C5940AE85D20D6A7F6888C721ABFC75DD4C294E5424
-2549870AAED6CE8250A7D5902B2B1E99379F17C7D14D9B62A603CBDF3D5FEC98
-198E8360E1701554A0D97FBC876A7AF707134D5786E5D34E2D47F7CC87C869FB
-E992EC58BF8CC5B83ECBEE82C1C8EB9286D7137C5AE7F73E082EF8560305D4BA
-AD0CA91698FD989564BF6C98D68C7CE4FF7D97186547B52A362DE5339A0450AF
-A75DB23B4B9EDCDDEA3CC78BC1C75FC39A778C45E8FDBD1B3FCA9194F5E41A89
-9BFDA9F61FE3F20279257040E3B2ACEF5956A8D9C72570317C20057AE4A03201
-63DDB9CC4C1FAEEEBDE52371D5A17732DBEAB3B9712D0A17FD180687FDDD0BC5
-54C47835C61C94065455DF39620223BB710791DC0C13FD62997A252A8C56C976
-F67D8CA7E06C6F1ECCC4F5E2FCBA9CD86E47435C0BC97C7B274D7AAD7585C80E
-C8EEA3AAF912BFC5C3C4761445376AF71B8D0C390F41E18F50780C7B1BE14162
-5BD852540C5C64CE29BE4E24718B30445B3A048B7020411618FB48C3ED41FF8B
-C3179293DB012D5BED8BEF796AE94BF90C5DF029E4322F20431054C93D50AA33
-9C4658C5C3A80DC58C64E7348DE17E96344B6A0DC75A21ECD1CCA7CB06FA202B
-9898A9A87C859D73E00CC344B525933262503B0D8BAC14D23E8740BE08259CC8
-8A1EFFD85BF79515BF645E235C73B08E1069953D5D53E1A352E35B19F5828176
-67C28453F82963582DFE14FD14F4E3241B40C8BC1E9B4054B1C3B9CBC6
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR6
-%!PS-AdobeFont-1.1: CMR6 1.0
-%%CreationDate: 1991 Aug 20 16:39:02
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR6) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR6 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-20 -250 1193 750}readonly def
-/UniqueID 5000789 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA17D1AFFF95F4224CF7ECEE45C
-BFB7C8C77C22A01C345078D28D3ECBF804CDC2FE5025FA0D05CCC5EFC0C4F87E
-CBED13DDDF8F34E404F471C6DD2E43331D73E89BBC71E7BF889F6293793FEF5A
-C9DD3792F032E37A364C70914843F7AA314413D022AE3238730B420A7E9D0CF5
-D0E24F501451F9CDECE10AF7E14FF15C4F12F3FCA47DD9CD3C7AEA8D1551017D
-23131C09ED104C052054520268A4FA3C6338BA6CF14C3DE3BAF2EA35296EE3D8
-D6496277E11DFF6076FE64C8A8C3419FA774473D63223FFA41CBAE609C3D976B
-93DFB4079ADC7C4EF07303F93808DDA9F651F61BCCF79555059A44CBAF84A711
-6D98083CEF58230D54AD486C74C4A257FC703ACF918219D0A597A5F680B606E4
-EF94ADF8BF91A5096A806DB64EC96636A98397D22A74932EB7346A9C4B5EE953
-CB3C80AA634BFC28AA938C704BDA8DC4D13551CCFE2B2784BE8BF54502EBA9AF
-D49B79237B9C56310550BC30E9108BB06EAC755D6AA4E688EFE2A0AAB17F20FE
-00CD0BFF1B9CB6BDA0FA3A29A3117388B6686657A150CE6421FD5D420F4F7FB5
-B0DAA1BA19D638676E9CF159AC7325EF17B9F74E082BEF75E10A31C7011C0FFA
-99B797CE549B5C45238DD0FADD6B99D233AC69282DF0D91EA2DBD08CE0083904
-A6D968D5AE3BD159D01BDFF42D16111BC0A517C66B43972080D9DD4F3B9AE7FB
-11B035CE715C1218B2D779761D8D7E9DEBE277531BD58F313EBD27E33BEF9DC5
-50C7821A8BBC3B9FDF899D7EAA0B94493B97AFEAC503EB5ED7A7AB62FBEFBEFA
-AD08ADD6648E354B05E584C970BFF36D9BC219EE88E98C75903F32254CB0F335
-039C46C343189C05057C16095DD1016930DDAB4414ED0A35B46B09F51E5F5DE8
-7F10D3D5CCAF8D75A33444FE3D6DB5DB7D233CBC0587B60A85E47F5372A7F8F9
-3996E1F286B2164C464B0BFAEB509C34F9B53B05B85D541B4681AA0BA36EF22A
-1CC3D8A897ECDFCD74317728B7A1B89FA432A89C9A24C1A0BEEA327DC2609ACA
-393E645DF186A13DE83E95DE6D0AED2BBFC859CD1686D08CAFE0F6540CA9B90F
-0C8C794B7DEA073844AEF6159A7B6822EF81FB60CD612C2639CFC88F0F49EFEF
-FE3633EBBEEE20D42914E06BD0FD5AF6C735531A47C077632EDA6577FE6A9706
-0952CAEDD5F4B03655B1DD687F5A00FF09F161DBF4EA3E03F5244B091191F519
-F982E6B6F2BEC5F4B06E1C42A037A344FC5AEC947757E37F19940D62E454E014
-A468BAAFC9992773DA2A6C93E791C6625ECACBFDEE8A8E9814052C7388084DB0
-675AB90416225FDB4C712C243491316A87FA36B06EEBBB8C35BEC83932D62376
-BC569B468D7B084450C4D276F290DDF0CB8D3D882BEDE809BD41BA1E0312B41C
-895C57F748221251B679CD25F7BB2FE0B48935C658CB14F3EDA656B0CA2595F8
-A8DA917A14EEFBDE26A7E4A2B10A63AC616A5B0F3997B4CEB45297D2419BE813
-BF36D0711DD3F69A701769C52BED618C0C4B93B7804A0DD3209F5667D62C6A56
-E58FAA269C5889BB31E3587D6845E5830219A09EC57BFEC51D73C60295ADC4A4
-C498F94320EED1213D8A84CEDBED63632E01C06479018CAC8C961B7BD63C71EB
-0E318D9C52638782DD17573790555FA3DC31E5FFA82594F597CB6EADEA7F2DF9
-BED2B4548CA1F7E898D4A756ACB4675C2CCD1229AFA84E4E95D5D843D9C41B8A
-44669C355A40375CB97CC318784B3C0F6B4AFE021551F19C63FD9721A767B423
-2DCFE6F617774255A85A0A4A8009DFBC1FA5033898A024749649F6FE48A81CCF
-E919D79F7D6EE1F36EB074B022324808A5627EC136773E33885561059B92173A
-84437DC6401D82F9C159AC336068FF78B6F032B2374FDC2878184E1AADD0DC20
-84C31498990ECACFA453B2D2C346553C76E6ADDC4007D15FE270582FEC9F63A5
-AE91F43A5EF1646B028DC9EB7D0004C9DE0A739AA3AB3951FFF6A1FC123DFCDD
-914597E7B735A9EA166B1DFAE48EE9037F98BB2EE8C8D01CB44158B6981FB846
-1CE1CC9547519B9675EAB1896E39DC9FD3A15248E90FC9F78CD0486ABBBBD986
-D9C9BD00354F68E184F8BFB043052BD038453FFB6E4EEFDC7421F10F6C35B205
-6693A86AB6DF76C9333A2C6D691211F65F6323A20F73FE
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR7
-%!PS-AdobeFont-1.1: CMR7 1.0
-%%CreationDate: 1991 Aug 20 16:39:21
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR7) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR7 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-27 -250 1122 750}readonly def
-/UniqueID 5000790 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF5B8CABB9FFC6CC3F1E9AE32F234EB60FE7D
-E34995B1ACFF52428EA20C8ED4FD73E3935CEBD40E0EAD70C0887A451E1B1AC8
-47AEDE4191CCDB8B61345FD070FD30C4F375D8418DDD454729A251B3F61DAE7C
-8882384282FDD6102AE8EEFEDE6447576AFA181F27A48216A9CAD730561469E4
-78B286F22328F2AE84EF183DE4119C402771A249AAC1FA5435690A28D1B47486
-1060C8000D3FE1BF45133CF847A24B4F8464A63CEA01EC84AA22FD005E74847E
-01426B6890951A7DD1F50A5F3285E1F958F11FC7F00EE26FEE7C63998EA1328B
-C9841C57C80946D2C2FC81346249A664ECFB08A2CE075036CEA7359FCA1E90C0
-F686C3BB27EEFA45D548F7BD074CE60E626A4F83C69FE93A5324133A78362F30
-8E8DCC80DD0C49E137CDC9AC08BAE39282E26A7A4D8C159B95F227BDA2A281AF
-A9DAEBF31F504380B20812A211CF9FEB112EC29A3FB3BD3E81809FC6293487A7
-455EB3B879D2B4BD46942BB1243896264722CB59146C3F65BD59B96A74B12BB2
-9A1354AF174932210C6E19FE584B1B14C00E746089CBB17E68845D7B3EA05105
-EEE461E3697FCF835CBE6D46C75523478E766832751CF6D96EC338BDAD57D53B
-52F5340FAC9FE0456AD13101824234B262AC0CABA43B62EBDA39795BAE6CFE97
-563A50AAE1F195888739F2676086A9811E5C9A4A7E0BF34F3E25568930ADF80F
-0BDDAC3B634AD4BA6A59720EA4749236CF0F79ABA4716C340F98517F6F06D9AB
-7ED8F46FC1868B5F3D3678DF71AA772CF1F7DD222C6BF19D8EF0CFB7A76FC6D1
-0AD323C176134907AB375F20CFCD667AB094E2C7CB2179C4283329C9E435E7A4
-1E042AD0BAA059B3F862236180B34D3FCED833472577BACD472A49A93DBF6953
-27E62C03870E8063F974AF7FAC75B50210C4D54D66B5B8C0D4614FD5611455BA
-3BEA2239FC8C365D607663D509D4373E9FAC1B4DF85C9C371BCA5345FE710867
-95C699C4CEF898A8195D49DDE3B8AF4AF8B6DA77AA76B49032FACCE93C3A5680
-7C0901FB01381F5C4ACD0C0102D9A125D8D710C845C25A4FE6A4CC1A559529C4
-83E4302DB39FC94B57089486EC697E7F4F94C5840DA6686F0F9C171A48DA948B
-587E6D30BC6A4610C55BC77F3D7163DCF8D3E43D1FDAD451C3C5D509DF09A9EA
-DDDBCB815806E57CC6328CD202A5184073C9C6069F6795228BBD9868F384C792
-0E04BF14C1EDFDBC07D78CEFB47CA4B74C354817A7B08C375E4B23B6865C505E
-3CA6D9540A0921A090D88782043E9FFEB012377F0979B1F0E075B6AFA05C8359
-839CB2F2E4906F1E28918B727EB5D3C5F5B509BBE712FC73D1E2D182645E56CE
-C58ADFF1CFCA77F9A8885064F8B2F12DACAC48225224069D0129AF964391B54F
-26DB52E1CAB8017317CA36FF2F729C17F860981BB1184E69B4672EEBC61B965F
-12E1AF3EE283268583753F6A3B6FAC90C60542A3312B5FCFB1D4D078CDA24274
-2C1765D4557621BC7748C1C3A73AB20EEB26877825A49026A099ADAB32F4EF56
-98FF28ADB6301F35B1B55E9AB880D452313993C909BA57CEC6942C9376BC13F9
-17F93DEA99E7DD43F9D4783AE970E955D2ED587B77ECE43DCAB0ACFA16A2197D
-E3D853EA9295B8CDB2786EDC4D061C632A8548CEAC7919302742BC63626C4760
-1611B677005823B7D35EF906146BEDD655D121DCEF12B62D19937A5853D8C24C
-5B24FF693D71C3D31D3D40981B94F9528C904A16CC80284B731AEBAAFE8A410E
-BEE8EE8CCB75EA13466E52E88043D8BABD3E328BCC7BA5669863EDB84C4E4DD2
-45171379BB36E2E69D71356A8582D98E3E2A62F8C662A5BE0E88ED51C8616CDD
-6FF860861E92ECFD82B133EDE7A4D8C14EE537B69C37403B225BA84EB0C036CB
-5209F415EC574B4A5967173EB3093E11E095CFABD44D9CF99DEBA69F4581D7AF
-C23EB781FC188651562FE3EA200864DEEC9916A836F96F0F18ED27ABA1CDCA1E
-194D83119CA38D64229BC77C421FEA55A7E39A82BFDFA2B5065446D9DC4DA36D
-201DD471B147679C565373E363363B558D9D117D0E44A389058F3E25D51403B2
-72FE3552296AC32D377419C447E44DAA0C743F0CF7DD340B934DAD8581C8BF8E
-1F026260F4CBBA9D25ED389863E8E17B5B2DFA6AD3DD0B1A41F9101E048ED3E8
-F5003CA9D4F02060F09CD867B6879019F4481F213D000B509BBD5732E3673F2B
-C31012A590381F4C19FEDD4740CA69BA
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX12
-%!PS-AdobeFont-1.1: CMBX12 1.0
-%%CreationDate: 1991 Aug 20 16:34:54
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX12 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-53 -251 1139 750}readonly def
-/UniqueID 5000769 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F0364CD5660F74BEE96790DE35AFA90CCF712
-B1805DA88AE375A04D99598EADFC625BDC1F9C315B6CF28C9BD427F32C745C99
-AEBE70DAAED49EA45AF94F081934AA47894A370D698ABABDA4215500B190AF26
-7FCFB7DDA2BC68605A4EF61ECCA3D61C684B47FFB5887A3BEDE0B4D30E8EBABF
-20980C23312618EB0EAF289B2924FF4A334B85D98FD68545FDADB47F991E7390
-B10EE86A46A5AF8866C010225024D5E5862D49DEB5D8ECCB95D94283C50A363D
-68A49071445610F03CE3600945118A6BC0B3AA4593104E727261C68C4A47F809
-D77E4CF27B3681F6B6F3AC498E45361BF9E01FAF5527F5E3CC790D3084674B3E
-26296F3E03321B5C555D2458578A89E72D3166A3C5D740B3ABB127CF420C316D
-F957873DA04CF0DB25A73574A4DE2E4F2D5D4E8E0B430654CF7F341A1BDB3E26
-77C194764EAD58C585F49EF10843FE020F9FDFD9008D660DE50B9BD7A2A87299
-BC319E66D781101BB956E30643A19B93C8967E1AE4719F300BFE5866F0D6DA5E
-C55E171A24D3B707EFA325D47F473764E99BC8B1108D815CF2ACADFA6C4663E8
-30855D673CE98AB78F5F829F7FA226AB57F07B3E7D4E7CE30ED3B7EB0D3035C5
-148DA8D9FA34483414FDA8E3DC9E6C479E3EEE9A11A0547FC9085FA4631AD19C
-E936E0598E3197207FA7BB6E55CFD5EF72AEC12D9A9675241C7A71316B2E148D
-E2A1732B3627109EA446CB320EBBE2E78281CDF0890E2E72B6711335857F1E23
-337C75E729701E93D5BEC0630CDC7F4E957233EC09F917E5CA703C7E93841598
-0E73843FC6619DE017C8473A6D1B2BE5142DEBA285B98FA1CC5E64D2ADB981E6
-472971848451A245DDF6AA3B8225E9AC8E4630B0FF32D679EC27ACAD85C6394E
-A6F71023B660EE883D8B676837E9EBA4E42BA8F365433A900F1DC3A9F0E88A26
-30F5D8CADBB3C1E3238EB07CFA0721C8370278CF3A76B741E00E5CE0FB24FB6A
-CB19AE8B78076E79F34B90E2710710766D7E7C90FD0F5F8EB484408C176D1DD9
-A6583C0D547E269B85AFA545C912057064D963A98C21A4B31061450DD09E1FAA
-303AFACA176EF65939CF1F21E9774EBE43C434ED02DC2D4267BEFEB6101563D0
-3F0BFD390A6CE04A4D7BFDC8F7FCBB0F350B636B4F6203D9972005456C97E4B3
-B898EDCD7A5D7964DC1F3D8752513F328A7BF73AC1B6E171662E7922D8D849C3
-7FF8AC6E4500F1B5595EC87B319AC7CE3929EFD75A547C76145F2C7A1589A90A
-0E0C2A8F5ADF56B03DC9AF40AEA131B348A225356157EA953BFB4E5C26D34C38
-E51B775DBF7E28FDBCC781B33C9257E9175C93943F62162AAEB15CB0FBE75D21
-A6B8187254E09711D2FB4E6D2232ED083FDC57A02853A025F0BC654C1B59229D
-EEA840086C34B28B82AE7A77C660C1D2937A8756540216E48193BC0A7DFF947F
-85F2F1C359D68E79F0D96CA5EA2244B5D8D04BBCE3B6DABAAECDEE6FBCB68406
-1374E5949FC944EE20AE973E55ABFC4E93D7635321AC74D21C076DD13F2FB3C2
-71078BF3097F5694E47875C06C2CA84F1254E0F6A9F7D9A799977BDFA46F81D2
-F65D26C5253DB040B7ECBCC49B4408DAA67E4FC690D3428A9BFFC3E7B6941B78
-658996D0B38768A2BA0A85A917856AAFD2AA481B833D288CEF2B93D76C5FF3AF
-C2640D8FE78FBB42FCF4D9853BE21FD2E3A76DED981CCB149558C73CCECB425D
-7814BF1167CC5BC5B31ACA9744854FFB212381961F0717D60ABFD435D9D6B9E2
-22BA6EEA3C8D71371B99DFA07F3C9091CCAAF4C10B7600C19BA6DACE418E0DC9
-07DF617FAAB5EFE1D8FDB7F4CCDA75E4F9EA3299B24AC0D1A08785F36C8D2388
-6BD58E21C325F9B10AED83AA70CC092EB75E9D01B7414B65599C8135F04322A6
-2DC7A30DC5F9A91B6DEBD9723180F9F7DE4D86BA884930A8948FD4BC9224CD94
-874E8DB9287D50D2FDB677D2F0A58D84FA63EA9418F95AC9E1DAD572D34824E6
-AF2B82BDC42704BBA8B6EF173AFE23705EAAD629D13CE6B6965913D3090CA6B3
-F701D7FD413D2B72D5A39D67F546CE25A42169557C936B0BF6C34E859787FA28
-2A1D1CD1AC3654AB3EB56660AA8C65D981515E60A7034B68CAEE003FD6BA703E
-C6706D244A94F11125CBB0D7DA10B5640EBA0949BDC1B7B06349119011673096
-2D3CB90B283AE4F3269CCA191343AD6EDCF5B0F93B5D10647C3D618F70BCB4BF
-BB147FA869A0F4A76B973EEC276E7DA74F83C0F1E87DF087E6855019D8855BF0
-EA2F74EBEF3DD2C206A882D74D97A6779D083EE1EF08B7FB84111AD2682E4DC6
-D4214A6D5CC94E588E4EE41CD7F25D5C5FF3805C141D2D454A2853F5405B08DD
-B429F70C92E0208C75CB523E30EF7A593D38940E5B30D3E1430438D6FAD536AD
-009720294800750F716796B091F85D01142A56320B5B4A475F85C07D82C64AE6
-660A5BAB54C0DE643EE05D149D7654D46F1A68C20DE9CA157BAD01AC881A8362
-572A1D6783830FD26F8EFFF07B7DA531C1535FFB30C1D41DC74BC5B4ACBCFC39
-4D8FA2FDB8DDFC8AFBF4E46AB28845F2033CCB32564BBE78DC960148923EDF17
-C2C1F57F8F2735E12DB86B690605356F78BB57898A7301E0F8DB7384A569F399
-4278CA31C8301A62B599ECECE5C6B75D79630DA11F6018736CD12A28D1BC5AD3
-20E617175790506F06AF1E8747DE6D1DA749D565068CD99A91E77AFD90C4C8DE
-75A0AC27E4277702B4D03906E7629D9CCD93B0D0947BFE8CED50AD45DD1C2DD5
-350BA03DF83F1713D7BCE3465A90DC16A10BC57268EA0317BEF379B18F41362A
-D2CBDE14CB27508511DA7B8B698997A7684AEB4D5C01871120692BD6C4AC288E
-FBAB3BA4AD6F3FF6B2DEA321A0C5A5BB6D0E4161ED1EE5D232EDC3107647FC91
-BA72DBC4172B1D873B859553343A0CAB6D51FFBCA67CE3714C9F60E049AD9F57
-00411419E6674C61FF7961B9512879B8FDCFB58DBB0E3435C771352D24B8E002
-F1B98F2D372C9179BD833E24EA39098FE78A0A033B103C6BB4613B16E7060EB6
-246F347EF94CE2DFC5EA257B25CF478934254F1856074AD3833468FAA5870788
-05BAC9A635803C61CD76101DB0FB3DB9B37DE7FBD283FEBBAFA846B314B2F26F
-70D7434DE12460873466932F395E455367177FEA70E1445EE03CFE4CBD8F7143
-C4DD27335B7E2750F1408E0AD360DA6A5DB9CB350A15E13F5378151DBE7DDD5F
-D93E714F4BA962A022FAA6D9FA9500C2EB8E5DDD0EDC10EC9DCCDA834616B964
-0706ACDD671ADAEF75CF878985B47A71B835FC4DB5B7439AF2133AA2AD9F777B
-B0BEA824B2B6584A653BBB2D9D1D812266AAF416190D8E7035AA69EA53732408
-4853AA355B175F49F811904176886CA13309F022716840753A9F77996DBE77AC
-171464E44764585C9E43CF9B54443C2B6DDC4542203BD278E2D7BF64FB0B612B
-774AF879D7E28B50B36A8236FFFD31EDD8708FCC92E696E54BED612EF4791959
-C4826BA74DADB2E3DCF5AC76AA7F836DC3394E7E793DD9AC6CC14034A50D7531
-4BD778FCDF2D0A61FC86F5F6A8D4FF4A93C3B65AD25D1E028D09BE630551B65C
-73B83D7EA5FCE6619CA46FF775854D845AF8D20EE985E10115738BA9ADFDCE87
-C80E01266283B4C4755C3DC3E8EA6978B8AE68373DE22D1045F682A994B7529E
-E07C67D28876CC1810F7318DDA88F98C84D00A1ACE09A8D3E16A0696EAC3A984
-281466A6A9A3FE39319C14F73871F7BE8F30306573692F213E44ABD8C98B4EF2
-907B75DBF65FDBF04D746BEC5B3D503A694C029AE055FA1EDFB43D6E7DCB5B82
-E2C54F603AFF715BA9F883E88BCC3F27FD423E9B264D9E722FC72A22182B1FA4
-1BEC7F6C0271C6D9CB087AF037BD20B20AA7D9F105D4893BA297DDDB90998FA1
-F4CA6A6C2D53CA489A9EC0ED0556F7719E3EA323C6A1448F7C188ECA317FAFF0
-5F4399DFA42E6814CA6BD84CA9AB83B4C4FBBCCDEA58B7DE23B86C6585768434
-53C36077C526137891C38F234D681AC21545289A6CC947228B6A458C71B74BAA
-E3AB364C7E171EE55BFB6AEAD61EF91641EED166CB9BE3572EC7A51C623ED55C
-855934B377FCD4E6B5F8888CBA436BF9A44E9338E912D82CAAA57ED228290ED8
-13CDEAA3982DB695E616FD2E2FF47F77CD79564D27205D74D1DEC159FDD94C52
-EEC1F0208EBC477EA9410EF86E45EBE08BF9FD78525CA05F41DE83F0B0BF1A93
-BF52DD41D84021CFF9B754F41D9CFC2C1F9D06D77DF649300679EEE8A176F1FB
-C6D551736F125344AABC9B4359AF4B9BDB85248A6A2AC6A3BF1C147F64963C49
-CD6F915545F638B366F6B0C8093CB7798F0AE7226410580831A14C934556A3C1
-C76BB4FB58F0DB91DE39135C80CDEC181069589CF34AF57050A7BB6F455A7AF2
-560F624C39BDAF45DC64F8DF51B8B62E258EB1A7E15476BEF6DACE8C0FE7088B
-F9814059507E97EED89D745634796174BA9D22180DD7161519F34739E4B2618C
-FE762F658D84C145C533D6EB543BDC9E41AD085F632378B3E1F3BD0F0083CCE5
-78782F8B5849F1E62974B5F5DC976B41FBB3B7044E5ED7E37D4D923338E40847
-3B184ECA261ED76FCC3002FBD2F3A667145739959A24D73B224CA64006DFA2EA
-08CBC37B1C326021A531D337B7732254DB505A1121DE5ADBA19C639A3071565E
-991BF42D970C3585D5E9B4F8EED928C8069BDFDE75E4C39BD3656132C1E23655
-74BEA13DCC3D63E9DF02ED8CBF29F807794579E6F19B9262BA2B6701C1821EC6
-D0585D4EECE7E8D7CA48FBFA450C17ADB040BBD691C2B42D8BB242E08D263BFC
-C5249145FEF683BBC0584B5568EB0CE727C1B7607FA20BD0EC58EAB7BC52B20D
-FC5930ACB039AFC4D005F5BD1E841734ED33B78A5D841C4EF427464E88D740C7
-715923D6C9DEC3754799F73134EB201696052B5F23C8D9C915B8411BE17D2774
-F44261D887CF230D4D4FF904BF0E7ED2016169EE6104B84ECCD1726FDEA306F1
-F50056A5CC50338624A3A9B32E0C739C1BEB45855752DC1D42F427C1FB731756
-634CF26FE8794BE99C8E31A694E6407AE3D5CB9CDAF9D73C8D0B7E4866A78013
-8161034D1D3628286AB0A281613902DC4DACEF59FDFB3FFA4024EA3E9124F782
-26F5413CB737F69B626507DB71CAD34101D780BBC93AD2FB6AAE5125C1CA42C2
-80C2A65EAD0FB23ADA752AD26639CDEA27ED4B5AC38FB8BAB916B41EDC4AA672
-E5251FBCC1B62C11E0F3200F1581FDC63ECDBD268921FD99848D48A7E9F8C5FC
-3E417B84DF31AC2AC24CCEE8B36B78F83B52F60C88806581FED1247AAF932911
-E777C20490751AB9CEDAB35389F6D3EBDE4AEE4801CD80B2D88635EB1890FEE0
-5D944857264FAFEA20E4344F767B7D33748859E77143A256FC766CCFC08C1FF1
-4D91184DD844067AA152AF9514CCB6A262A0848ECD7B9B38686D5F0FD13E39B9
-1BF5A32017B7B05E12D5D3E763650F5A89D9E24A458FC513F7C97D4A346C8433
-48CED904B3FDA3838915BFE49D0FF8059C7CD33078583E9A78EC433D2CDC4598
-3AB980C53B5854DFC6DD04A422D03AC49A3A8FAD8E8963ADE32CD52885F418D5
-76AE6A6EECC368854A1D152BF1ADAAF2EE7ACB50CBE5333EFB87ECE707B9A863
-ACF4DD6B432C5B7A292508580682091320C89A32AB9C6612BF5F3712EACEDE21
-69B3E7BF78968F9DDB054333733890BCF698E42A679FD69B34467D3CF61C5C7C
-D2A7A77C4138A28559B5CAFA565E20B7DBE83F9FD0DB1B22503CE7AC1D83996D
-167064FD03B57AEC675B139EE77D926309C9A934628A6507BA04A56790CED604
-140F816E2D8B06EEF474CA75BE463AE29B5C5CCEEABB14DE3597FCA2FF765C55
-FDEDAFB6E9621C4CB3133F65A6EDD4C1F5A19DA469AAF3A9C1951A6463284487
-AC8EEE3FEF5B04D880A64FB693974FFCD65DFAAC9ABFB25E2B1CB0545AC87BBD
-68401025F05BD01D167E7D18EB03EB815FF9DFBC66D8DB2242D497066ECDAFFB
-48E3B6E1F1361B93AE3DE1EE297E3C28901BAA190965FCA5455C55628B76D224
-C9616BFA422F9F0C221946592365AD6288A4546E90BF80FD859AEF0769C18576
-ACE16088FA59D9518EAABCD000A1252F23023E5EB21D8674D5C2DBF7E2032BE2
-67A8ED19F8573530AEB30DD50ACE85161C565517A04988BD52DBC78FCB8B97E7
-1146D5344E6EBB53AB6CB48BE9DFE66708B97BA59275C45B57BA3C64215FCEDC
-753912DC3618767C868D6FD1B51015DB906C57F27630206D685251BF738A17D2
-6361543850F933D4D11DEA765E80A33359A101938779B8F25709E2736A41763B
-847996EB189A894FE9290C8707DFAAA3FE2C7D144A1C71BF553B6C21BD6528FB
-0F48813E513A55418E3896769C850619CFD4A7C44F8C35717F0397E7F0711B1E
-86E0022045A9A1773D10BEC7633187CF89B5C4DAABE0EFBD6F2BB7BEA68B697D
-8248370E2677F09E0234BFFD337E196EBED0AE881D8A51D5DEAAF0D54F52A3C9
-0AC68E743C5A5B9751EB6E60793FB96233D90C57DA8CB768BC3253D78A6E8017
-D2FF51E5E502AC9E52D0714C33C6E8AE2367DCD8F413F7CBB4FBF0EF9EFDFE64
-C847E7F27205EF3C1241FA3CA85055F5ADBA30BB73862EEC0E9AF9C0515656B8
-6139D927D36D1537E9E7F00EF8D473BD30281722E553F2B23DD4CAF78A5C6F21
-A5BF2E72601A80B32403683E00A1FF1B328834590D76844E9041DE2DB5F9CD98
-E8D3A34131D4E6D2D15EF0EAE242D5EF864D92F9A469558C9A017862BE332750
-3EF5A7A1CB9C8C0626FB97710CD68D47D1B32D8A27CA38355D04D02C0D12537C
-1E934C1CB0DE195B806D8A5921CDD46BFF1FD0A56CB7CE9215E63CCDE43DB181
-F8C1D9924721403DC5F5EFB49464497C9A1AE096EA987AC1B6EB8DF77D08C9D4
-645EA2BEC06564003DCBB86A4307A1651A56A332A2F73BDD0299B5290CFCBCED
-8C1319972701DF20776C3881C3C0B48B86FE63DBE5E9C52C50FA1380DD8C7427
-C723D268DA40FBCF0A34A30BD709DC79EBA0FA59DE4F3CDA50679EC9CDD49D4A
-22A4244303C14CA858E8422D02CF114CA83F70743752F48254716BDABFD83626
-2F9D9A3FD588F839F1C7E5985470DCA4D6FF842C0E03A37E278CB81B02DA54F4
-E2ED8772158BC65F26CAEFFB2E24640B3EDC0D97BEE78C15D840F1F881FED872
-B2C6F3241C73EED5EF13F8AFC8D6F7220A0CB834F4F5811EFCA11EFF169AF7ED
-B5FAC0E00F773DF705E5E83ECB19810EBE9EF3FBC7D1808DE07E8F23A5E94500
-7363F16D82BCCAAFA4BADBCA975DDCF19C337D4ECC014C4433713E1285A9D7FF
-7432D68A0822BB5450D8D0239DADEAD85E15456E7F8A139DF7DC55B0343B1ADC
-37F0E6F0F0F0ABAED1BEA0796F4DD6A9603DD6C50AD468FAB2C6DA08B2CE5B2D
-BD1AD38E00DE67263007EEB81953D640BA9AFD5D34C8D2657E9B2F82E1A8F3F1
-DFFDD9E154EAA488E22842BCD680F64F54D450E7998A80ABC9C9C15CB7F44384
-54426ADC08CE26D47DD70908D7D58409F9CEA02F676095452458B100D97966B2
-70BEC6FB819853E028AB7C72497C90452487CFB69D540D87E93098201FEFBCC4
-EA4D8ADBCC2D90055DBBFAAC6A3E63E7DC6EE49718A855BB9438AD7DC732795B
-F88C08CA7BA615D3051477D59D3CB85FE24781D2343F108DBF41074D7745D281
-BD67ADE9C88CC15293ED8FF31FDEB76872976A9E82357AEDDA077A569491D143
-76FBD212A918EDD7D041029255ADFD2E0B16F6970D88F4E3A7D9AA49BB140137
-D9DC314F79B822EEB92CDEF4DF3727204981DC6F7BACCB095B5D1DE28CCA75D5
-259CDC2DEDA17B816E6E66614031AB672CCAF3CA2FEF7498BB550A57CF605B03
-4177BADDE590722DE77325EFA7A45F413475CC2DA3B68C4F7E383E313D42210B
-6CD0E349EBB1FCF49A29268A87DC4A7340910153FA863DBFF6E1368B88DBFA63
-7D654BD3200E2E40E15FC922775F04F5027FE9D2778BDBE3A51046887D4F4C22
-BC07E367AC6B2EDB3034B911C9EC99C57FD89C97F7C185B8A8CCA41CF6C3CC76
-E4C202840990030060CB16F0B5171470AA8E68BBA01C9F2CFC89C1482C23E8B4
-C55C32909437982806BA1DA8B33A8AF6502CA21BF54B92DBC71536140681659A
-A2E03A0BC6381B050828054CFEC8FE01F794E8FE3D4FA062E97C798FC755714D
-04825EFF10AA144B26E55D68F94A61513A0B7BE7D0CA7517CF955966F9DAD5E6
-3A124D67A900066A8C4AD6DBF988FD1ABF4FD3FEC3948D4152739332D93EDF5E
-674044564CFDFE69054693CDA64A0F181A0E9930A9697FE6515A754BFC5D70D3
-D0616884C40926A78FA2D06345D8B1F53195F9701CC6EC0547AAAF4F4DEFCB0F
-7FE3083289E8344993E2B01BC088A3007F0B5688B7B323C4A4144AD93D4B93AE
-EC9F80926C018BD562640283D69E75F50AF7E45553CDF612D7376E6984D504AC
-CE9276F4931FB7304796FE05856FC8D1C537222A081F5C012BA72E4DCD195657
-63D65F7E7BC015D96ECD74A2D372E75B5CABD1A18FB95F47E311FFA4882A9D54
-2D2A78EF886DA7A36B067811E5674234AC46D72BE4B7DAE821FD48C5ED4F84E5
-2F38E2398DA296EFED69D6DC0CD41F9C97317F266341EAD386C3A000B1AEC558
-8152E8D1880D3088CC6C56CC5C1689F2EB2D9AA180963C73754EE30703536A60
-3AC845C1220FD9216FC56F19771DFD08CEBF9EF9DB2C160CA4A934C4A3A815EA
-FAB63FF95F26FB0DEB5A3B09AEF44A5D5FADFB8A085E081822C8D84EFD9EA6DF
-1A4B6DCB03DDFAA1D735DBCA019603BCDD418E6B96B4BFE709696A8FCACE7C34
-AE302C62608AF2F7BDC73CCCB59EB5EAE27E75857A3FD95EE3E5BFC518D0CC21
-892BE6C7E0975DFC54909B0764F3E3C808AB0727BF03485230AD1730C80D4A2F
-AC3B62D50644C96D8937C786EB13D3C9E9BF7C3D2DE4D569FB05D42F5BB4ADD9
-18ECB3936ED5FAC44DFE809E23A283FDF7C4FD4B3FE1E804FE6F76B2EC232A98
-6640C8A0AB63563F8EDA7F7A9B14334D2B839FABCD595C93A4B21DE954F0600B
-FD5FFA0E98657EFCD62CA30D0240F77F80C6B82302C56C8C05CFC0A6194DF61E
-4314619E0CB1D14968F6C3629FCEFEFA132381CB32D0355EB4E2CBA3E6FD5782
-36B29018CB1860601064893A55543D531F483D98D1122617025CBDBCEE922E74
-293F9B0461BB463CFD879FBDF9FA751AC0CEBB9CA6AF656B2769118457D5A14A
-4644B38EDA81B57BD7EE201498A9C9ED76B36B8FE32C3B78FB429B39884CA451
-FF4A4628A4E2D1883451995D94D080098BC7FBFBF3EA1AAC6733ACB0B74A5A3E
-AFB6F7A754D3E1CB7C76888F728EE499B5637044C40C2C67C598C5122CCA6BB3
-6CF8723C35AA0308C8F3020BCA70DC07110EC74DBE2D1A9125D8AA110CB5F068
-ACFEB12E5F5488818E53639A29BEEB1B63514729BD84B287E60E266AAA7D4D7C
-4708875C6395E56E983D19F510F0EC5E8F2700B6006299A736477D969B9E1316
-42C2DF5F84E1423D4F46D00589DD847CC10330FD1067F6CE1710108958A09142
-DBB93C07D868E6E7652966C10E4C22513DCA44809FA5FFEFDFB48BA2A319F23F
-901A517F187F5A93C0A4B6025F41793B33F81E3A330C796E0BB28A9003937D32
-015B092D0EC485064B98524F68223E2018F44428E43625B9767B50BC29565618
-9D625614A1DA3F97E6A523BC03D8081A66AA84554C73B3C6E319F083DDE61E52
-626B34735137AE6A2DD6CF28DB743BA47411C95FB54D8562AB5EE53436FECC81
-27D3D9D3F02E8E668792A7204BE08252A3B2F652407924B74D8FE72E01A2992F
-705BF0173BCA937C97967B4A9003C64E980415E0FAFF524D238338D2D1E69E3E
-E0806E36033F6C5D34D0BC95A6C5889A89248F68AA539234F3C2579B8E15724A
-FC5A4E3C4E792BFB314B842751F25668AE8955126ACB12044D1EC17EEB263054
-9AAED4790073A48422FC7734F5891F348B1C50A808F13AC87E786984ECEB2024
-6608BB02145A730187E9D37554B061E133BC2A6E8B380AF3AD6D053E843843EF
-9B95F591117AB494041E71A2EFF2C32DFE37CC7FC2F7A42AC5E03F62D179AF86
-9D94076EF336B620FB5B48D75AECED2E10262A6AE856C77A535DB90420835CF0
-EA210934553AFF0DE2BE4F443A1A64B8F532FFF1B9C96AA94062801CCE3633C6
-B0B6B07AF472F86CC0D33742D4E56379AFDBA9FAAF71F15C3A5C28A98D3B5983
-ED2C092F90AEFF6AC20902DE86D04BBDF15882374F13630C449CFBCE9D843082
-D87AB4E9249C4AA70592B88B6010F1F7FC2DBB2460E50D895FCB2A8981F382FF
-2CF3C32CA257EE734565A6F4C13304032146E7A911DD85663E0BFE06E425A137
-FB7475873557A65DDAC0939E59072C6F282C32DDAA4F5D577B67FD6EEA5B7C39
-D97EAB74818589C12F83F88E0A8CD17499B13B0CEACB136EAEF21FF0C534CCAC
-DA1A42589F6147EC8DCD2AC111526464F6A691234F4535F1B12F6CFC082E6F6D
-8E35CAA659408EBDCDE8F414D093B511AC2D28F90141A9737B70E5C713BA7BBF
-B0BDE5AD44E9E8F190C783A42F6D039B3CAC9645FC8517013CB32B2E942BEC84
-C25DEC112937591364951598851104C7CCE26C97CFBDD6DF1F24891C38442335
-2A67D610364127378F7611C975934C813EB9E62FA58A71C9D92B2078DC80D29C
-620AD42EF20638C38817E2153BA17F803B78D9C15535A6162D5D0BB4FADA7E7C
-46A0D94AA03EFB261682AAD746B66E94D1B16359DA3105CC70264BA808D0336A
-86EF4A230488464FA7C6D96F36213DDAFF985C2BC93664F61EECBC15D58EB63B
-D7EEF4B63261D6F2A6B320B6B70E16C20905A0C450981D9543E5EB7E0FE33096
-08FA382B9DE007F685D06ECA78A649DAFE135403D2CC471C24AFD1F32DE28A7E
-F6CEBB3F54404F9E68BAD70498E60FD823E805DB168416D7BC672F20F02C9407
-3B793D17F548118B9B89EE72C03AE57F612038AF0353456FD7778291588257D0
-B8EE911AA0B1B9ABED5BD905207EE5B5D59595ED65EDC59D782EE7FA51065B82
-F28505729217685D63E3205D929DAB3B7C3F763B983C5DE2F460E3ECE28112CE
-A977826046189BB8D92E04C3F7C0E912A8976CD25711B79767163F273F09F03B
-44C03DE1405B61EE418C2563E6A2271604FDAA8790E6D8A274ADD55841F266DC
-45FE0A7A54411D22BB945BABBC6CAE21BE7A546B61F01E63448177E3E192D279
-C8A9B3C499DF252AD1A000B177BBF3E2872259F3224B1E0D968FEFCE29C8E882
-AD3F9A0841283F0E5D057FACC7EC155E76B3DC27332918153BB760345904B0AA
-B014DE3F263E4CD56B815094AD6EFF84209DB868B5F06A1D0E5B09AB0C77351A
-341FDE33459B6830CC2B424731B9BBD743791E851690A5B076886CAF4DEED207
-FD32FB00FA1B88F5273AF7891E9B37A95A683DF9D903A0D2AEDCDBCD8FEE8453
-335837FF9E22B12B95F3DF15DB5C281284BC5EE105906950758E5EE23A0FEBA6
-7E45252A1386D55C3864B3D7E3D2FEE5CEC303EEFBFE7B3BE8B23FC25BA8E1BC
-513EC52CA973BDFCED8E2C0200E386BDF9189FC41E9A2C860D23FCB610F94451
-DE062362128FC3886208B89D2CBBE78E4782BCDF6C8333FEE3E20F2242EC8021
-742AC1FADD3C5840690D73BF533A097B3C14D5392F7172B26B2DD8B8461A52CA
-2CD547AF7AFF8423C6F7EB1C0321070DC35F0704830EAAA4CD5C12D11BE45C36
-D9F80CDDA549C45DD239BC12C53A8103200169A583807B4DB82DBF08C662D66E
-4AFEE3127AB84CC9ADC90CB3F3D94C153D8A79BC2A35E8126731468AE773E816
-9FF96F5DB7C19270A279799A57B866FBE72E8A23ECE6B7B0B2F0C2C80663C61A
-B46E74BFDB2259F0372283C11A4A58137ED04A7DA682C4947846CB922FE674C5
-5548F120DA28B39AEB72F270B39312A9E4290B2756E27DF2CC3BF616C916E361
-415E917A6A4FDCD8E87BA6D9976395B901162802F235B6D49835445764B25CC8
-20C5E851853C98A94547872D0AF50C1E06925341855F4E6DBF65C902466F8A3B
-DFAD87F7288086BADE6F075BF467D1175C45C7CBDF61EC1E55DDC98A75C4E709
-C2459B4C435A6C45918DC6C542F3D4AF39424C7DC8EF0FFB681952AE0AFA3976
-6DA914DF4E8B617F5D639AD17407EF7DA76FD0935C79F3ABBA0CFD43B6197244
-DA6BB9F3D7AD25C3CC707A2AF6556366B2DFD23539618BA43FBBB8E6557E1981
-184D31520214F41AE3DF0E6ADC38668B3AC73FBA14740000C6B62FE4ECCBBF4B
-7D131D73717DDAE15C7FAC920EAA5EE481BCE609C14F68D655A67E95FDF0CC74
-0676C4786B47524FEB71BC449CBFA248F2D4AF136BAF74D458317202E52682EA
-2BCC6ADC2D8AA6C79C517BD075FBE4508A595C820A6601500148A61026702329
-F58323EB8B56C1EF43A3EC6072141919607E6E9183C01129F11F6B245AC9E793
-D8B29CEDB188E9B257A9977EF99CE48559F2A591DA863E0A4FABC0D748B6715F
-32F0510012F517BC375F77EDE42D9DCA0AB6E85E62A746F4B5632E0510EBAD0D
-9BD9BAF29392BAF9EBECB40F7726DAD7542B9EFE75C6C6911EBF19E1457ACE04
-61985EFC3AC241E376EB341998799150CC17411A3A4A8FA012DE65F667CB694A
-893E59DCCA2C34612DD40706A3715A5F295A9C66B12CB40A4FCA369571E906CC
-2B731C568C1B603725339A467C2D4DA384CFF50C94BDAD598908F77BBB21ED85
-FA71B3CCF57BDA87C9213E67A694E3958FC53E4C85ED2AE15B3DDB9F4B9AE269
-0D8C0332F588F2620A12A0D1562E5EBF67E79CF648FAFBB8ADCFC51701E88BE3
-D1FECEB48F2E425C7E7E2FFE8DBA4D8ECEF88556F858A6E95D1FAE8C5BE4A29A
-8A400BA136E6D75DC18D0CE2E075BA0DCD2FBF866D7A67851524469BA144AD17
-8318D239501FB31407EEDE16BF486EA620C9A28B94BBEFA516F82BDDA1BF2596
-B52893438CE2734CF67CAE55243BA6D510EFA9B6B093172014FFAC500BFB2C1D
-FA7F09280AF28B47904E6201EE13F15083B993B9CEC8822B674F08C41C3D9E05
-CAD74E77E7B6027FAE891614F2A07DDBBFBD35C4BDA6FE8505ED31D024476E06
-AECB4E0F6467B84CA9BACB119A538514E516343A74C8F733BDF86B4A12FE3BE5
-E49FE446DA0B1520726DE12575BED1CE75B174F232ED4E2E8DB550D72D078934
-7A0096E1171D9400BDC27738A54F3299EFF954425C1DD3E1BFD714C4C0BFC3DD
-80D852EDC774B1CFC0B352A6D4FA82D37F488A165065C1FE953CA6829A65212D
-FC491B495DF32B72C731FB4B80B0240698E873C71B14C6B7564AE31EC4B4B45B
-E28FC0A9228B9F025B16DE8B236D750199B04A9A6A67C4B420778581044AF5D1
-4317E90F444B0D8B53022A8B9DA5F08B0AAECB192D2769C142BEB2616937B1E4
-2AFB6CB78BE599813B2537655C34149B7244540EB0DD9B397DE672C560397DE2
-482F1D028D52B9DD70818CD4800F197676678DBEADDC29F43D96292E1A09F9EF
-6947DE3B2687FBFC16DDFD83D77A14ADE9964E81C5302053FC0885DDE5951661
-0B516B9033DA37D2B156743838A6F4B21D701C67B836FDF0333F5AF833C2B223
-27CEB8B167EE58F29924275B809D5304AFD17D1E56BBDE36A5DFAC01BA4569ED
-24772D239DAD2F7649BA0944E1DBDDD6BE0CEC7005F8F8B69E14AE52397F7DF5
-EF52C0BA3EC5F66ADBE7E52E6DF61979E05255C0F7C22D33A7968AFD22E650A4
-E26FE2C74D3DA6D5F557AD6409ACE4FB55B895B5649E8B98F7E857552405753F
-2A24C6C14A5DB6D038587B55F546DDC5799EC1A2DB39D07DB7E039F993A8D6CE
-7565AC51BA894685DF9CC55BC02D5B115A077BF80DA42655CDAD86373A5A596F
-1E6E44D927028A22ACF13249950CA2EDBC5EEB6B76A023A1024D9CC5848EA62A
-4947E06FF04CE266E1F03E17F39CD19063FDBF01A48EC94F02CA8B330B9E3451
-DB00D5BE11195BEB46A2208F8B8BD1D981B11BB329C3A55F999046BAD5B9231F
-B5EDCEBBF12DDD47D21F553F394F8A3D449DB930FF3B559D116DA97D45A61F04
-92A009DDFEE32B9283736130DEE80CB13B27DABCBB79E2B7058A2B8CB46B63D5
-1F82DB6647B12704D8366D70CDDE73DDDDCAC2D4F89EB49EE0E759518FAA77BC
-560B40BBA7AF1D3F7DC03E00D6DCFFF25E7154344AB093245A1822AE3791ABF5
-29CD2E9D25358A0834C69E0F22BC7CBB8B93F2B3D1141C8B4FDAB82B09EC0180
-6D7ACD072196DA13BF77705D0FC5CF9CB282B953602E5EB18718ABFAB8317605
-9153B1DDF0A35ECB889B7C1E1DFE9E55481462BCB580CDD1EDFCDA9BFF2543AD
-C6DFB20B134A08E29F36CA57088772C6FB7A4A9F26D8B9433405A7B2FAD96299
-A2EE806FE283BC485DE57C926FBD2438350D6BAB724ACB6B9482D16A5D887AD3
-0BFE2A4869C4C7E6B59F150535C88CA5E9596A29FC99F12BDEE25D8B76C32A53
-A2F93B6833FAF9EFA9495AC22672A10787579EF2942B6ED8F5DF29F9AF773F3A
-0219F18F51672D259B6F8C1AC351669ED34C0062FABC34325D25A3DE79F32FFE
-8351503A3DA11BCE6D037485DAFDA4C4B04DB26B90D796F4351E058296258BB6
-B4A281E42CB0EDB070D54AB2ED13367215BE0D98BC1D8766CB9D56E4F3B750E5
-81D814A4E926F4086EE8CF7C8193EED98C92D332AFF39C5541F1E95A94433C30
-0489EACF888861986BC3A0B3FC31857823C5C2E02CA5E665E2D169AEA4F8CEF7
-3F8264BE0ED30BE1734608678999E763DCB1BE098C02B11A5F1E549DB50A0673
-7F8D22C24EDA5B
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMTT10
-%!PS-AdobeFont-1.1: CMTT10 1.00B
-%%CreationDate: 1992 Apr 26 10:42:42
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMTT10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch true def
-end readonly def
-/FontName /CMTT10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-4 -235 731 800}readonly def
-/UniqueID 5000832 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8232429ED8B7CF6A3D879A2D19
-38DD5C4467F9DD8C5D1A2000B3A6BF2F25629BAEC199AE8BD4BA6ED9BBF7DABF
-D0E153BAB1C17900D4FCE209622ACD19E7C74C2807D0397357ED07AB460D5204
-EB3A45B7AC4D106B7303AD8348853032A745F417943F9B4FED652B835AA49727
-A8B4117AFF1D4BCE831EB510B6851796D0BE6982B76620CB3CE0C22CACDD4593
-F244C14EEC0E5A7C4AC42392F81C01BC4257FE12AF33F4BFEA9108FF11CF9714
-4DD6EC70A2C4C1E4F328A1EB25E43525FB1E16C07E28CC359DF61F426B7D41EA
-6A0C84DD63275395A503AAE908E1C82D389FD12A21E86999799E7F24A994472E
-A10EAE77096709BE0D11AAD24A30D96E15A51D720AFB3B10D2E0AC8DC1A1204B
-E8725E00D7E3A96F9978BC19377034D93D080C4391E579C34FF9FC2379CB119F
-1E5BBEA91AE20F343C6420BE1E2BD0636B04FCCC0BEE0DC2D56D66F06DB22438
-452822CBEAF03EE9EAA8398F276EC0D92A7FB978C17805DB2F4A7DFBA56FD6AF
-8670EB364F01DE8FCAFBAF657D68C3A03112915736CEABAA8BA5C0AC25288369
-5D49BD891FABEFE8699A0AE3ED85B48ACB22229E15623399C93DE7D935734ADA
-DA7A1462C111D44AD53EA35B57E5D0B5FC0B481820E43222DB8EFCD5D30E15F9
-BA304FA879392EE0BCC0E1A61E74B3A1FC3A3D170218D7244580C7AA0DC65D19
-741FA5FE6F8CBF60250ACC27454BBF0897CA4B909C83A56672958752ED4B5E79
-E18660764F155E86F09EFA9F7685F2F5027EC85A775287B30E2069DE4E4D5712
-E7D033481A53A2702BA7542C71062173039030CF28D8B9C63B5596A9B42B33E7
-D922944A38713383D3648A4AF160A3B0C8F3379BA4372BE2E7EA49AABA75AEEE
-C5DDE1D8BF68483C3D21271280ABB91D54CC819680322EAB72E1250A760BC8DA
-726405EFE420635B5B7F0B48752C06083E92BDE06401C42A2C528C8A60381227
-CEBEF0C9440DC034DAD9C19FB27DB399BDAEE22053591D6538587C768C1B7B0B
-7D1E222D2D8AF3A6473CC4C0D6C3E0DB49068CEB8C9BD1C5CD486A50DAA10BC7
-7D6286142355E3F21DD254E27C00C442728A0BAEC9D3F17AE9CE320D365152E9
-EB0D5E3874F2BCEDA98521D23FCFC30B4B69DAD2ADBE80E5964ED0ABEF6C73B6
-DAD30E2C5061E3747FE536E1A5D190D028F2130AF608F5DDF9DDDF1E77DC8437
-ECB3EC93B33505DF47884DDBD1DC6BBE4098DF04A29AF6FA3AE344600D0AAB53
-B3820DD7ECB600A3B8001C51AF2CA7A39AE1485A087FD1752DF68F55B52B4DA7
-48030F2AA7E570B3D56C4EAD367B9B73FBC0A7356253233006178B9A6BC19081
-B815B5988AE76FE6FAFD7AC239072B1106A3F509381AAEE79B2F2154CAC4727B
-D199CDC8B4D05DF4BA006982512ABD7539E28D937B0F87FF79A3F84C29ECF943
-A8DCB8BDF8EA9E7A0E7CD60BC2308C96B3E889C797D0FF28FF4847016B3DA141
-E76FC6BE78A6EE9CE07E651FF86E720A1A1F075972D36E5C55162E3FE26BCE3A
-814BFEB12D4C5FD24340CFFED499C7CA183E57EC4F12CFFBE3291D43F7270575
-C6C3306F832EF182ADD0AA14C4D8669A17C09F632406AFA195F90C4DDC39779E
-EC0A77E590211592D6EE19563963225C06C2F13265EBB5A6CFB7C17D9E77650D
-11958305727AF662AE73AD0E3ED5F7E7086C5A0C3548A8129575980B06C715AF
-DD55C8DF869BED0A7883491030B1A7E82C5EB04E5A7D952E716DD8F2EF6275EE
-087614CFAB55FCE2BBECD7E8D9C90FD8359E929D5E0A416A23BD58158318B4FF
-87B095EB63F7F052B3A77F136FD66EB2C52BD46CD7DB3091A4B78A607112B12C
-4D171B2A00B78B0E1C44B0D90C20D9244281F5123DC1F6063F91E9E3E48DE78B
-C862D848BAD073A4FCB5EEC9FF54B5AB8E234CCC3C7439C62ABC4A13EF1B8897
-ABBF21F900C564C9A305FC36FC7224932F766E6E72C2EBB55953DFE2AFC2E3FD
-33A0C6F0FDFF086E9FD796E7242596AE85B877223532667625E371D2156E4C04
-0D7FFCD3337B93DF066CB6FE1E13960719EB7CB409EE805C08ACD2C06303ED9C
-E34C898787A43C1B428B896551C6FEB50A831C6F8CE2073EFC662EC286CB7555
-A3B42E58772E82FEE206948B8C439FEC5E4ECB9E11DC3A4CBC7611E30890E408
-637A01A2118441B4F9467A98BB2A1B03BB2F5D8E3DB7D1D15C188D9E856088EC
-B762F07B1C06024F7EF53A2FBD60C0A1F4C0275D07164545250ECEEF8CB15B04
-A2D8AC44DDE818C4E23DFF5B846F412C1D28C52DA1EC7F6B68D2E63E6586EA41
-0B01DFF80C744F65C069047200AFBD969234842863A2CF78DD48BC0BA686C91F
-3B1382C42DC044F539B7089E055DDDE9E76F7EC4A120B4D8D3E14FEAD686B0F5
-3EB80AD386901D788C51B61A9C04955BE06E75B24FB77F501D9937DC244B7446
-60E9453930286D8112EDA6EB6291C0BDB909AA3B3EA0578815A4CE3AFC9C699C
-54C86466BA0F2FC9BF260DB773E29B2D4AF20562C31E83E45950A3A777E06C18
-0F29343F91938126514FB2B4A81C98E9CC420F54C8CCD614FC7AA290B7D42FF0
-429259B32D92836F4B71D517C130240B63949875D2423339FDEB14B1F1FEC58D
-49BC8B826DFD0C2DF5E94A4B4088A7E4029EF2B97B970A53A43F0D280CCDB41F
-8F9F3573F522404F634212E534EF3B2FA648D9BF218BAFA1135F6800478D711B
-9E3FC435C0D12C845F0B3E77DDA804A75EA9BE82DCB9435BF16A2B94CF7684E6
-748B2BB7C5EB08C5728DE734125E6E48B895FF3483E07558714F68F2FDC0F4F3
-D195335C8216499611CF9355764266CFB43B77B30E90BA64BC8EB301B5E2D060
-B1C053E8071EE600A76C8309801C7927F77D1FF4CBBDB83573EAF13DB5588412
-23B6F8EF8C388136CA0BD33DA6043043163E34E1B647A549136C33DCF3A816B4
-BFF8424CBC2C9EA6FBFFD26B7789815EE0D3576FB50A3D0D2101D4C43C0F67BF
-16984BAF98F16F7652BD26329516CF3979539C902F5BB43BFA0B1DE623E26CA0
-521BE8F6908E249743D1F7E62350986EF4385E7E617B1EC50F7408CB18A0352A
-9CF70E0FC30958BD6335211756B872801AA86C2F43801FDD42BE49F16DD74849
-40E5F5FE77FF2948CBCC494E3D9259938F26C916EF34919924CEBEA9315B603C
-5D618FEA13211BD46B019852FE26E305A4EF2362536C9FEA7475769262D3C2EB
-E4E5C2334FC9E57F57BA7CFB29AD573D3FC5CB5781419899DED8B473385280A0
-B375271DC9550455D9AFE5171CA247F90902D62F65F84D05B5F65B8BC80376EF
-A0DA23DEE61AEE96577629DA3835F2D50C36D181D714E5CEA92198F4EDBC4A3F
-17995EBCA8A6B3C86EFF6EBEA1991D3A3BC2EF33833103F462CDA92BCA15974C
-49B3F1E7D585E056666A2CB937B7B49572A12E9953438F334B727200C9D7A86F
-F995C454EFA2D0A5B6043E85A5D282F6C6CEBF5781A59AC4DEA90A6E4F2BCC54
-B77584E08B6FB01CD73D5BAE1AFB220EF723C9F99F0F8ED7EA821FF9BFC9D57B
-1F84B91A3CDE5B158D3DB7D1369D51CD9A2822D4CCF0DB935B56CF3A52866394
-0899E7A965B08BB808186D885D12335BDF0095C476462297D3AC3BE208B1CA01
-54CF223348B87BF3472AA2966C208D7BCC2AA07BE712AB448824D7DE9968C6F5
-7B6C957577BEBF7EDCFC01EE0D276501830548E6604D50E4C534CE727BADF7D3
-BBEC9CE7E326DCEFF2B5908BCF60495C7CD9E47448434353363A82096FA9E1F2
-1F8C780C4917DE4EC79CF95A42CD2D15E3D51BBDB9CD624F9C358390748A9A95
-5AB4DFEB92EFEF7FB8907751FA44DA024FA91C6C064B5E61069B2796590202F1
-2DFF657471BADB7A62F2ABCB770815750378DDF973CD4E11EFC3D19C27C02171
-4AD74C3CC0B96793A7E0EB9A0AA40C7A6D426100FF3FECF3E3CB60ADA80DCDCE
-870F74D04ED5B167D965F8AD2677298548FBD803C716488925CCBC9A3C515D3D
-86C03CDC708D2F95F403008963361C8E7EE7C5C62C15DBE6B22C2CDB249C4445
-21C8AD0C014BBE4B28827A5C84D714327904518E36EFBF4356DE0750B52035E9
-2E06426EA0395C4852AD2ED3129F4D43E3BB75B546F092C1E7CDFCFEC2F00331
-D9D0BBA5D76287C4CA7088332D5BCCBDBFD20B7A07DC6619A4AD3894C699B01B
-045D803FC5E36061648DD13B6BCD95844E171F4380CA89F7A7F948715630A623
-DD5E011B419FAAB28B814DAFBD3DA2EBC7B6CA635D62145E87679FC56843AC49
-FF421EFC70F30062D749120D1C492EF1070EAA096E283CECD8411964DEA10390
-147718F191A0A786C3A9862EDEE74767762BCB27D5621A5562EE1D22BE784FB4
-0BEACE3F8A806ED5257A038C8DD59D3D52CDB4EBC501C13CC9DC9BD89A51CF86
-B6C3F769C470912FFDA75C99C2EF55D78874558397C923C330CCAC3C149BA314
-C6CBCA464B176721E9C04D0C08ADA8BDEFEA62E3231FCA6A646F837115D0F479
-E51C7E509BB81045FE2F3DCD4A761E956BAF0561BCE5A0D20C0F1C45F40306B5
-B6A834974281675F2A33F258B6BF7F7AB717FB72A96C0D50DA6B6E4D3EDF9416
-6640E77C36BC882A09024789FA969E730CAC7948640EC203B610D8B02B0E8897
-6E0395D5C45E7D414331145412115E3DDD7D137716192A10F8D1F6E134210034
-0AC5572B33F6FD9D2B95D7D62D12919B23F7CBF114A5E1FF5C3C310CB947B914
-E7729E00E22E2F5E4614CE226310306FEFA46DC9ACD671478C026A15FD6668D3
-3562902F13842676E2A15F813364FBF3751A6BCA132596BB02DC0BCB18463F0F
-28C1A0E1DD23BBAB471ED0A91788353A27BDB2D3DF7F547A2E401DD536417F74
-5CF1285AACD4D96642200201BAB9EB201272A1D102FA7B4C293787CA1DB59847
-482B209F980BA3107F7538C5FA1CDC5DB36C5F0A7917FB0BF90F185CFDEDCDA7
-3B1D584F43CE6CFC46EEA3907B6E81BABC903DA628077D83A1F18C291729A92F
-77607547D61D0CE06750F927EA4F37AA39C1FFA07EDABD3147228D161F0D0FDA
-771EF1F476174134A27076EF9AE92D3F6DA91C9568C0E27BB954E27CA09345FD
-2AFB9150ADB7AEE906AEE84C5375F25C2210D3F5A3C57298BE1B6AE3CD38DEB2
-97904795D70A9F2082DAA0C6071AB9E8FF71508AC77052A242DF4D01C9139805
-C2F5BDEFD7BFA42D3B3335332B37983D213B6F7DDEA6217186A93B911DCC0FE6
-42957686973CA3E07AD6EA4895AAAD5D5CD878AD776FB9975EDC7EE3934EB131
-37EE8F063BC1EBC11D807BEE136A31A70EF2A46B36D99B98B8B1B933F032FB54
-B9EAFB5CFED5D813488D6A28250605034BBF2BEF55108CA0D6FF94BCB1650F91
-99071E1A1B3B2F1E8E7C89A5E4DA1F77DBF6AA289D331C35C2C2BFDE4A391C6E
-FB679CA42BCB2AF018303A3F55EBD657AAD46815B45DD067823B4BC3FE3B4245
-C9940627467C5F9AE0EAE53CB7CC118984272BCC5E1B8548494E812676FBCA78
-A70C417C270EB6E435A6A75CAB4AE742B1194E3F9811A7B581D9C552A3EE5B1B
-98E997DE7F74B3D85B46825B620B19357E4A7D82AE97C3B85609335B1B41A532
-FB2F53C79A4064C88C84FCE693FA6EDB086732B6F76D31F8A6FF27DD850DD1CE
-B9C29258680CE73A371B3613F17A3533C5EF5D4E3F833E563E976FD58B381643
-F097AD8D3BBD1E4F0C22A79F464FB1168E6B12E503DEE9D1D563B6F9B5A8D6DB
-D1FD6BF4A90DA086275F7F7AB784F8F945569601AE0499EFCBC5F5585A759D09
-6829A9649317B8C53F66C083170EAD52494006623FFED560D382CE663A1B4BC0
-D68B544A2D3F4AF0C1A6E50A4603CD433329F379B960A2E6822A381D91DADA65
-E5D973E67820C6AFDFB917126A4C4C7CCE0C00EA9762059E3BA7C3BA56F739CA
-2F89F58A2F058A78FA9F0F040A8B04B77F300343CEFEBF9357243118D9B62B83
-2EC312A4AEBD8BEEDE4DBF3CBA2F574BF9AD66B43C19615961A00D70ECE67C17
-6C93C248AAB0D3F9580ABDC833D52A5BE4A5C7F06C12E934BCB99C8D484A0CB3
-BC75FE276F26C6AC861A17CCE8EAE60AD5E4573D4DC2FCE59477702AEA956B2A
-0DB471C240961BF1402F6ADC61C3D7B72C78145B5FEB9853485C862FC428BE26
-F2FCA109EC1D6F77284C5ABA95359FDB4507D921934DAF4EDE1A1071F7157982
-3A9799E17F5377F27700EE7CB253ADB2371B228647FD11DC38F4FCD9D75ACC96
-D6B5508773BF71AD6B9D49829D6872CE8271A17C6FC89994159850529D5A8A32
-206A8BD5E688D5AEEDBE8E0195DFDD5ED07D11DC54131B7E22958959CD35E529
-F9DB957C31AEA4F25811C7E0B9ADCBFCD7AE1BB84D65C7EB2BE322E245F50CE9
-D611E6D52493244E89003784149E23DCE1624930D53B937405064775D2CF8103
-66D2FE6F360D5AFF017C7CD773F0303CA4F8C9FD08B91E414546CECECC770884
-87FA3D4EDA2E7D8474D5C30EBF966C9F40F4707E939C22779BC757DB50E9BACA
-80E0AD329BABE0AABBCD5C1C59E80CF55E63F84F49FB24D5F8F953D028568083
-015973AD8921C03794814AF609FEE8A5466BB982A15644C00BEDD08D351F661A
-AB6DE4FD2715935A73399ED21B074120B214C8E6BBDD346CE84E704A8DF4EB4A
-73C5ACF8E106D56287BF82A4C04C8AD092B9643CC1512154D04AA5213EC06B2E
-6B8A5452428EF353C92B18855E9C7BE2BFE82B568AA0A4B620EAE77EA0D60755
-E78C6FF41E2503A3868195127619E97805A628A0348CC7C92C3EBE700EF008A5
-86B6B5736A275BEB0431FD754D9866829C9B8218552737AE357B6DEB6DE5B17D
-5D86DFE33C9A4C93CAE5DC1777EA1DD2D810FC772C8855B4055A1B520BB0EF02
-9B1C32FFFEA106BDE7EEFD7C05FEBEA882C2FE39993EA2BB7CB9DDF009C08642
-B3B12A2752F8F6BDFDFDF83B0F8648C309248AC9274C823CEC96A0766C58488B
-EF98089D39CFFC48DB5076BC1DF598C450E76E32EAC21E2A63ED2F4CD9BFD34A
-23731B4BCE26D3500339CE43CCA5FB9FD2CE1BF78DE258A270490158921A8430
-BA9F37EA3BAE30895A57D8BE8A3DEA3DA9E35E3AFB9E650815E81F9252427FBD
-4B27B5C81F4F6D98CC7B7E289231FDEA58E629C4A414C5635B69B7ED30BD3583
-2C0CE0A350FA686F91C11AC4EF37F651FF61BB9D087E42A7ECABB2073D930C03
-E206ADC510961C03634984D380EE3604635695DB7B240CC9D60E31E684867FB0
-C7AF5D477F96C24D377970A9B0431780F0EADC1FCF162245EEBB2C99946C28D8
-E85A85CE650089EDDE2C11C224B3BBC65835D33D25DCDE8C9ECF38FC58D24972
-EB715C666E5598E6F6ED4268BBAC9F99D725B95F81B3A93EDEAEA3B33EC2025B
-C944E72BDEBEB532A01D263064123E1514EA9778E34DAD260C3EFB820E9B7B2C
-005FB6B60E44782CBB9AAAD0D84E2A7FB9B9A003B2E9C4BE6528537B909FA590
-F2AE7CA038C6912DD59455C76BFA330BD5801BB94B2869F9F4011DC70BD31FEC
-A18F3944CEE997E9D984425D95C28DD02D8E0E0DED0D1FAF045C6BA250868E80
-730180003EEE66D87118E677DB28B9F54AEF115FC1F1BDE48DC42BADB2F70A05
-0112E3E69AE8F24E90D2C020131BCB703D4BE761B59237786AA2565B1FBE6F13
-66F74844A3B2BD29F9BC483BF9931838BD701F8FE96B0751A3C2E93E326FF14A
-037BED6C2D42D93E06082DEF985E39557D9A0A607D5DA570E084CE011B3F96B6
-2F3633344FB5DEF35A48F468C019A9A881C036F095A4516AF9289085217C2556
-62808AEB100B2D3D049629C688392CC8A62BBC7494881B5F64F71F6A280F86DC
-288C82510A59277BBC18751679448EFDDB168F3BD63947E6C96897DDFF56A60E
-747AF59AE10C996931ED47E0567A0FB1EB9C2A7F062E04CB75174E05D9571D1C
-FA2EFBA213E13CA73D9FF1CC4661E04E4D1267CF8E792F6AC270F03C38B7DDFB
-9155F17C13DC7EFBEDD541AA9FD866F3214FB78FC78DFD68A4B8819144D9A28C
-DA70DF8489B06196672EAAA63953DC4987FE1BC025CFC38CAA8DD29A19E0B007
-F99DF8D4D56FF048A53A5A4919256A3918ED9C87A681B168120E65E24EBA3060
-EBB79FE24DBFCA590B47A732B5A84F68392E5CCD7F0AAF8AE46E8B2F7B9B629D
-984BE10229CE058AEBF5A5625F3EDAFC37D75C087BBA244FCDA5C6CA4D02EA1F
-3F64D397F84FE2AC9ED7D8F03BB56BB25DAFE7E691DC2F7F42B82B79EDA8111F
-B98941BF10B58EAF2D86FECA8239774A6AE2AF22F8A4103D0CAA22ED11E639EA
-899DC81867C0E3C42F6FEB53370D06AF2975843410C8114F5C1057D53F078FB5
-96E572702A18C71E09DD607BD6CCCB2CE9D3C84E9D626CE715805C0697204A81
-DBB43CD0B952BCD9EADA1FE80EE1E24B1C328FE08783FE66C8A1F615EAF8CFAA
-DD5A57695ED5BF8866603CFCB4EDF22FB010CE429278CCCD13B39C7AF2135FE1
-DEFED11CD2275ED4C51DAE380DF3CBD87A5502AB213D816FF6ADF4BDFC53F18B
-1BA97CCC685B11BB417FEFB94140FCE2733949AC3E2E1D25BEB6E6D2E5D83144
-463283C90090E110280FC2C220DA957E4F74568CADA115E02BA45417C09CC34B
-EE51F2452A50D20A5B8D532C283E46E6AFBBA38DECEB61836673F76E8B20FC0E
-238CE894EA5EA7C7D0AD342F87831DBDB01586AF952CA32796A6276B2AFE3269
-0A26B0D6473A5FBB2A7FDD47EB4CB0AECFE2EB581146A37B403EDF0E53C2F969
-450DD44BB534B0D1F8161CB2B04FBD5FB691FFBFF6AEA8664FD8F776A2C328A7
-30E745E7F8D46289C8CB4FCDAF7A42371604E47AA073B7200173E1D0075A7895
-747C48506669C5FB8EA2EDAC1BA526BF2A3629C7457CECEC6D8F0296C2107BB4
-AB5E3895B2DA8C0B2DD14E756EAE39CC14480AC37EF83226903389C6AE3A4109
-C93577F97BC888773C24DD888767B11C9628204AA55DFF463AE17936E6BCDD15
-F93C818EB1DF9F2664B1BC06BEEFD54A913448E69BDCBC969B7653B868D54B81
-8934B0E26F35BA405917D207E2C02266F89261C2566261D204DF7BE4E4FD30F8
-E5914FC6956A02F641A478DCF80C02A2B42BA2A326D2202673C65647475460EC
-99999A568C1B4C259E3B7A16B741004FF2901AF4F186D02F44B0C6D3F53A6F5F
-B4066C137C8687ACDD32F7062884391D6861FF0543A377F06B4F85490F096A1C
-6213247A6F0C7DFD5EF4940ACB1562927FC7EC5FFCB07A393CBF6FC21C94BF73
-453B75ABAD9FBEDC164EBAA111108CCA28F219C0003C488A54BB9B2BF0858419
-538058DEBA6C22CB17B7786C34D3F569B42D7065ED309A5AE6F8D457B9655ABC
-BF4AB6BA6BA1EB95AFE3CD45B37BCAAD8A715629142D9D1138CD3314CF2E777D
-BC790A63DD1B724741F23B4D3B39C2D3BED0023BD240C19E129B6CF5741A6ACC
-D6C0310DF5A560D7CA26AB6AF212131073CDA02C770A275F7DDED8C52D673019
-AC4A4D4F036F94FBAA1448A0BE735C2CA1193B0B3795B3B4AB693C5B97EE0DE0
-CA05AD896B47D71CE613090AB4B0F5FAFFAC48A7F52EC247ACC0CCB10A9DF052
-6D19E742A514CCFD71ED7EC2C7D86118990C93748459293FD21BFBBA03C57C59
-18572EAED78F8E0A39A03A7C8C1ACE30AB791FB6C477A4B74F21DBEC1DE8F611
-B1C849F0A01F93C4E1D76F5E0AF2537624C2A263EE163734F71701E05D77C1B6
-AD220682785BDE886373582908664529C9D081667C7354AB745600E3A610F672
-53AF7D1DFBF502594B2B50194406F831251EFE156C063B458BD4F42E7DA02833
-23CF0005BE43376DECD1A306F75261D6248A6DEDF5F56AFDC8CD410BE0213C4C
-BB9304DD363D0D60AB2B2D645A8ADAFAC099847344A7C010CD16E61236DBC4F6
-D9EA4FB7563A01E3F799123FAB7977699D1134E49A5E079A69D8E9296A062F30
-2F163064A215845D0D65B815FE0082852CABE0481120CFAA3B687B32EECA8F62
-CC327D1D7BD071F9945AB8B9539AE8E8C5A717FDA594DEFE8511BBBAAD08D7A2
-4072A4E4ECA0F3EA8FAB76883439ACB4727A36DF72DE574418B13CAEB099E9FB
-466DED499B8E01942E2D6F72035222BC90E6BBE16ED4FB2DBEFC64CD371A6FE5
-97D70A6E6319DAF2AF90064B7A240A6B11493984E63B84DD3D59B4243DE9160F
-D2657C215AADB68343D6ADA3268E20CD294301ED7C46F137DC50B152A2718BBF
-8EBF5880626E9DCA1DFABF1AF6828E8D5AA9150BDAF9701F288F864D8C91E976
-9E9BE865B6DEB2796C6C3FFA603A947B9F43790A98058936B3109610B502B2C2
-320E75318B535D194D764C0AC7A322B5DD0D4520F96036908CBB808212A7B27E
-CE14671E77725B8EC619C68EB5657863D3663208D21318F7F9415B93B1E72BB7
-83612E137E85645CC4A1327859818781CB1DF455AD4BFC77E49A90F893179F5D
-ECF976993082E64B63ED0533008AE77515453DA9B07AB2F1F0B1CE816E6E1D4E
-D0D7A445F75F126538FE849BE9A9CA6BF221DDF53BD7E9A45017D919A46B9287
-1D1D98703C6622F41A997BCE4F77456A23418E6BB7C0F9FA957FE88A449DBD23
-D713F39CFB2D4A639AB99409DC6DDA631A53CF8F5F617159E03BCBC89C688A22
-971129FD158E8AD10D39AD3D2E6A8A469BB27AB8F929B28A3459928FBBD0C33C
-4DE82E1E1DBC8DDB977706FC4B5C14087456D9634A65BF0C97D5C49593350CFD
-826633734D9B96E850FBD5F3F319ABBA61397724E8D21B14FE56B6367ECEBBE8
-2D7D0CCE1C2FBBE5817C3D60CF93CAEDF9886632B27DA37F7C1A0342911D160B
-E520A5D20B4013983021365E2BA6792766B0541F3262A83C4E863A94FAE921E0
-57EB7E291DBE76944B7CF7F0D7363681586B405EEDD879BB508FA7E4203C8854
-44027B509D69E1CAF1BAA5C1A239999E190C7B91D315AA81B289FE88E5C43D0B
-251FAB17BBF7D49A71F75364C6DCECAC2C22ABD8D215AFD535C9EFD9629F178A
-A75E11332FF6B05A4B1569306E3F3616EE35D8338F65B6601D3535B2C6EF7EAC
-C71EF79C4EE2A862A75531E4131866D6836F7569B1659A734F35C78FDA7F3DEF
-39397290CF54AA9C263E7AEF736798672CFD722612716938391A1053B727C7B1
-BEA9DA04AD5B47C42E7B8A53F98AF379F3353F0FD438D215B517A69DB1CA5F27
-B567D55144197A840F0BCF876AF832CF3F620A1E2EB286E45794ACF216062F88
-D70270FA4453AE510543FB2E62CAB84A3BD7E2F5881B20B5BFE7FAC1125F075A
-84070D639DDF28A73E73478FD27FFDDFC0246B3AAE90143AAA71DEC5E440C660
-857432CAB7E1E0DE1F6ECBA47F0E0448E21EA69126434DE576DD22996B9C4671
-1B5B07B923B59A56A39F22396B2BE68B14283BC384F7EC76C90DC17BF57AE82E
-AB5BC5D2F39C916F68167A22824BBDAEF18501224005E4E63D8A357F85CDAC2E
-1F7FA28FC65DC65FF10059A658F64A06E98152D580385B2DAA906ADC3840245C
-7AAA12C0945F8E14BDD097A4BA5F2BE5F6C1704C256FDE77DE6671FC25B05400
-61EB206F67B7C752E406CE88205485A27E626161E3FFEE0153BCA76E4F474E22
-57DECDFB9294B874FC26D354787AE7D53389C77AFDF711FA5D7552FE3FCFA9B7
-DAC7564C749913F4020389E4C7F4DC4FE13ED85AC8F57D0477D752BE1722B02E
-E2B54C21DA7A976EAF928B142D2E0A5591DCF14420BABDC027E06CE3CE027336
-C20703A85CD2D290AD1DC4D347A05FE5E3BB87889B74B7E0CC251A58B2F999B2
-F04EA13EF3C6CE11D6FFDE47712BE6C84428E7D95E26DE1BC6142876868B6929
-A8F88012693A34E2740818DE3FA7458EE6160364795A3DF3CE46A3BAEDB5E361
-B1BF48DCC0B9B9045F65A4E9D61BDB537FD76AB51C39CC123DDB09534FB63C1E
-A5F85BA1DF0EC2736D029EBBFA7D935A20B087832EE66475FC2AF6E938363F3F
-708949FCCCD04CB56E8A00628106F12D7D6B31D08D8A047C5B9E39F4C8F1A7E9
-8A06D46ACF7ABE91EF88322FC5C8346310953F9C61CAAB6B8AF4C489447D6A08
-125F9E06EA30D6B07DB76E305626581D69929EA0B06E104674747A436637D015
-34A880E798BB653C9AE9E8BD619FFA875FDE8F488CD798DCDB0C63532D0D1A7C
-C866EB30FAE071B43C02EE5C01198E81CADFF0686839C2D44FED8257A2BE9E88
-32A38671E067BE2A49D3BC5C0E7893E12A04355315FB0B46EB033DFB8C101EDD
-84749263790C308966FE76F6789F21CBDF83A280C6D6FE8BDB669E2F30795E46
-C6EDD896F762C9F3E647BB51E43A7BB4A949F51D5599C25DB872F75D72E9BBA1
-616BEA9E026069F0262868FAAA16B44DFD016F80A6DE44A4A69B5AA6AB8C0424
-C2932BB816DF4F7F74145AE2A0CCEBB71DDF61B2208823E42D3AEB663E3206F2
-340F7369C6645397100FE513FDBA478C5DE5C9A0839B5DD2430725529939B414
-89BA91759A62625E40B92E834A9EFB3C68005876010F9CAA8BABEEDB06B6A554
-21609C50731E2435361AB8F53BF71B878591F8E0BDECC464736D96271F8872AE
-ADBE8BE4A26B8145480F7EA4AFBA97EA46F6EFE3A52A20711ACF947EF3F8B580
-500DC99468972BB657E57245D4FC01F8665C939D385BEC9126193E1DB54E1078
-042F0B0984E812A44726C4B369EE9CE54083A417BC8ABB50A6F2B185E3B8BCBD
-53A75936812779305A859E533617E5192DA6C3531189CD57DB856B29807F383B
-530DE0218926F7A6FFAA401D3864931FDA344BDA891E32359EC567739B25CEC1
-A4C8169F251ADF4594215549F7F225DD1F20F1269CEBFC88CBA7CFF4B7214B3A
-C111FE9B511A8703810E222406D86F41996815618661ABB2C69F663AB97797B3
-81D7BA0172D90246E5B076662ADAA4D2BC8FA1BDA20F13F9CB5A70465667B32F
-EE2A1FE5DBB8BF41ADA4B7D3970DCE1972508929AB078E35391BD8D8C0FA2FC9
-A0C63973A0236E7582D4EF32D3213BEC05DF0ABF760767CC5020B609E8225CAD
-E64A95D1E7D032833DD90ACCE8B5E40A3D57D6D5F0B36617644E83AD6BB70DF0
-DCD7D9410B7F47763F7FE5533806A1DE39BE6241C07B2BEBCE630CF7550B1595
-81EE53E4C92D15FE69B8591DDA933337F7F789B3BBDCC5526B10BB959E76225B
-2569292E55B90B4465A44624AA45A4327E23650D4C9A941E8D86A2D619CDA196
-EEA705015C6EA8330D3C04F293512955F38C4170C12D709C55A2832C58930C13
-D9B37FB7D4C8B0FDCAB5BA07FFBFCD805FA6089DC09D2CEBF1DC3C894CFD93C9
-9BC945C25591C38596062BCF218F28DE9B4EE244182FDA170A07A7A6CFFFDD8F
-B08F7AD8857066E582F48C596F3C3B3AF67294D1C45C5E5E6C2B7BF67C8AE472
-79835988AAB90BFF38E234EB1F49E67200F77BA40CFE10463DF43FEF5FB13F1A
-7CBEDA0B168FB8DF78C793CE54D309AD9212A1EB5883C5FF17CB637390D2DBD6
-07F05E04CE60D3211C1A32304D1DF076EFEAEE3ABA07DB78D9C13F58FB5B3DF8
-1A92DBEDB9EA5C55E3752855AC1225A2345D3B9E37F4068272AA3E465C74D122
-782864FEC675506304AFE1EBF79D0972A652D452FA8F70F9C6BB5F7B521E534B
-1EC7CC493DE8D55C2F0007B2204D1E59383FD1380519DC4E699BF7AF8D81DA1F
-8B0E9626F17C2F620117230E9BF7C4A58F42F8CC037182D73D7DD884A04E0C38
-C9B7B80589278B76C2C858C9735A5816A0CEA72F099E038895151004E1DC8CBC
-B8D53BDA668D8F985BF4FECA6E8646042DBEAEF1AD6579B60FACA93175F3DA04
-40F034036E621E1C7F31A376B3765B285B7E4CA83CB8CC1014658C2004D777E2
-2D08F4B307A0E63DBB23B21D2A49101BB7CEACD2B40A686DD7C66F4FBC5B6163
-24F3A4F48706C45D54FE0056B5C4E748FF43EE41D34563867E41D8160500122A
-2115AB57213917F5B1BEFFDA531DEE363AE61D480B05F7F2F440B851B6CE6265
-2FFA0A0FCDACA7C1FB9948A63967B3E4E106A7D2194844E368623FA61D327321
-C0949D6495FD37433D8157365435FC316539671407676D347F7841CAF39E315D
-00B2F5878D64D0BD920D3E418CBEBE3EF5717D509F0AD20C2B9BF8B481F8D7ED
-B1ABF3595255DBF1DA8AE4FEB4EF00FCA5E681AC5C80F71ED707CE5B6D0DD8B3
-800B87042E1CA1C3FE1AC461FB47E7A8AF5977DEDEBD2B1FAE57780342CAD7B6
-205770B6D14E8C4387DF27056D3E3AD60FE0811A1F9D2D7DFB6D1D52CA8F8E6C
-3EDF8F78AE862AF1D75546E4C0C624CC57A18FD61968CF742FEA4B45C758CD53
-78DA3A32960328BD4079C7280F19AC3FB66D24DA8C9235AE7ECEBA537F09A958
-F5FD63C4E3A0C49F44F8CB0A828D2A7DE24949138C7206354D6BE8CDB99BA5D7
-C60CB286AE290268214AC0A0C3F775BC92DD5326A100CF4842EDC00AEC236CDC
-E4F8F8448596B7E59BCB5EFFCB7D8C90837FA5BA690B9FB4D4F24BE0EF5EE864
-717394793E045BA233A7B146AFECA0664577795ECACF06E811E1A0147A38A3B9
-2941416AFB19B4C82A73921AA970B08D68818AB2F159E527EB7C48B64C43AA2D
-D5DD0DAD15AD0161667D273BFD59BA13D7AFD709F43DA9E1E5B3B5CCFE7EB38F
-08DDDD02CC0CA2A60CEDB070D54AFD8F8EEF0B460E839A2904A8DE16CE73F632
-3CBA9A65DDC7DFF06E5FD2B074A6312D01F8D75491B87EDBDAF045FD2093AE79
-0C2CDF2CD7677D4639E412812A7E95224C3995631589DCFB5363C82E7D1F66D8
-3224A7172E5F0DBB88275EA86428DF0D223AD4079C9D233CCF7C83D3D488EA8E
-0D1A5710DB03D00B4729E51803322DB1C649D2C0FD6D3ECDD66DF8EF0FA80B1C
-C447EBBAFFFE5BCA6262F252CAA42FDB90837425645E57637A4FE5DE5CDF423F
-85E41136A2DB6EEF9FF48965C73E07A1FA4C9C0DB88E5FDD963E55528C8986E1
-030CD62EF13B3DCD4936080F90EDD2CFBBC294E666E0D78D448CA04113EFF2D9
-C467D9E7616C426F93C1AA8C3D31D26B2F14C4B1ED42390E613B4881D137F79C
-07A1E8874FB91F8C3F561945FD8903D4BE99F18212E8DB95BE4220E57876DA3F
-5D502316602D0CD1B1121FC930F08BCAC9D6E5B9ADF80B3C1CA1215756F11ECC
-7D2DA3D97ED094920C38CC4A68D7BFB6F75E8431A3840D5845CA8752F14AAF8D
-F5A80ACF8E703D88EDCBE251C10238BBAAA923DC490049E76DACCD2FD320C349
-7FF97E3E2A9EC49C5EBA951F0EEA06D48727CCEC45DFE86D667725454B700F97
-06B1A6521B25A0B5034BB64EFD4C7AD11E83F24BF7ED607789A1AE805881E4FA
-A5A8610DB42BC7341F81D63CE70A7E37715449BD850A4CA83A0C0EB1A33A29D3
-82630F9F62CAA98AF0AEAE3E0F450B925E24A82907A642366EF798CC064FF67A
-D3BC3D3CF3BD23641A91F2DB09680BBED2586A8869FC8015134901F7F4684B70
-73E4D6A466F013F76619BE61A4B9F66BF167EA7FF7DCCFDBDDE96DE78EBBC0C4
-A4DAC9DE8D709078F4C134FC1BBF53315977ED4C9C41CC4A02026E4C3443653F
-39B23880391A2320170337F211CD83794118E5A014922CFBD8482D88F5622059
-3DE77CCE12C636241FAE4F5B91EFEBEFF1EA36C91465BB15A49EE3202451B862
-BECD7D819A56F7D7E46F981BD96FF1FC2587943D90F4B0F7B4C6ED4B76D6050B
-01C551C265BCFADE1E2D72A0FD4C8AE9559C7F2723769B1E3254E33B7725321A
-1E57D149D9A3091EC5714180DD68B89D7BE2AEFEADCA9585069CEF9D5FBC51F6
-B526E00E168E72F5CC9A70349DE30D46C50D30536821A4D988488C72AA9A8E87
-52DF5FD0ACDBC377A37AB3140D89EE5803A70886696176D2CB7D226443866046
-174AF7D525A28D851AE35BC42A2FC7EE4777EFD0E1650F7BCBEF9DF1AB64870B
-CA1E15C7D67B3FC527B86723054D6C1EF1A869A9FCD5244D0BCE4182BAFF60BA
-C7DC0ABB04C31C92741C14627D5ABE692403C6624B6CA64544E905B11C6D8FD7
-1F28055E4BAA5CB25996FE88F502742F42E11D087F61117F9730652F493329A2
-453D9508DE874DD92BE4185F6A7BF99E562EB614DF01385B86F6F271F355FF1E
-ED5A84D534446E834B5435D483DC20A729E81CEB96EDAEE53D2E431BD905046D
-712133BB30F33DAF2FC62BDB3A171BAC8E33297C08360CF255050DDAD58DC96D
-280AEE9F9B66D2D8806E2CD32F8A08434FE91B7451AC5948A1DAAFD2D28CCA24
-8184E20D0F00EA9F2C663E7C4ECA2F9AF6EEA56F282AF32DBD960D40D4CF055F
-F33D5C25602C2D6040BDAFBED1926120464F183124F48D34BB54A06A6724DCBD
-DB2CD715999302DA068272B4E5742DD8D017E604C4114B1DB529A841F633160F
-CFE80EA9B3B52B940AC0F685DA509ECA4B420A996E8488933EAA721B562450B6
-554302451C9AD6A56A84B85EAC18F03535099C8363599D4397454E19C0AB2A34
-9EE7A3C94165E396B9EFB97067315FC4762F2BB4EFD7FC635FFF0593528D9079
-69A5556D34927059A46525E6445A881CFF4B5B790ECF680068973A47EB6849A0
-52B9F18FB039050940EA4F9B51A3B9A099F33147569AE9254322ED47A6C7612C
-46EA207F0A0FCB785E1DAEB571BB99C97D296CA1DE3838CAAD06A98FF8146056
-ED014E14180D505B17AFAE35F58696C16D8C46F13290F1600075A363489C9D63
-6CB4DB7FDCCF49E15B6825CBC4E04A2D6BA136289D198E2C851D794A9A3E8E45
-7790862DDC9EC0D12DF50176A194F39C7C13C88150D2DD1208F386BBA3B0FC1A
-77F94819F12D78D5C59139A1DE0F2DFB3A7FFEC4FC38067455003968A57F73B3
-6C15268401F75B5C843D46EC956AA677A8DB075B61E547DEC35A63124769324D
-BD64C1B1D38777BE93F60BF4D92C85CB8C9ED2C8A77EEE0A4EBFF3A44F237305
-EC57E50E3120CFB0DF8D573A96A740E1260A26C3174AD869CF2EEB226ECD812C
-480D45502C3A4BE2B4EF9A8EAC7DB836F0C843971067F690B653D9C722655066
-D113AAFB04FBDC5BCEE0FF67A38C1808943882E4CE60A6969939BEFE16C09B59
-CE50B529C3BE6377368C3E827E9441D96BB174BAAC8B518671E3A9B95D4F1722
-A26F4FFF48348CEDACCC4FD98F71147D0B760B320705C1C13C9815E2CE82C5F9
-D6CF04C81F1BCB9F12A188F9828498C220C6DF1738CA9F236B6D6A01D747BB6D
-F322F38D0D60A2E07E0BF1E259214C3F3EF0A72074C261ED09B05DB3915D0835
-B2BB52B6ECCB04E712B6BFE1A0DA7437DDD8C4C05CA45B1D5CA17EA99BCE6428
-7E635AAB8F2BA639F28C52CD0800BC348990D0E3832B0303A272D6C99D8A6044
-C5093A422D646898EF85ADB647544B2CE33DB5DC66717506CC90ACB01CF58830
-D50F4CF7BACAFA2311819C3F50A9F91249C624EEE17EF5752C6AF77D6B852703
-81F95A42593045A69334D6DC1280384CDFA0D8088D97332FDB06A02E5DE9F962
-1B41C68A0139BC5F03FF841D8E93FAD2DC08E645F476034919C218693989244F
-DBAFFDB4FC0436DA9D43C8A2D55CF8DDB0E7ACDF9D564BCBE38073E74D65C8AB
-0E89D87275D680F0FBC2389D1AABA196474E26BB4BA01527A72E554C29EDD3FE
-7B17BEF3AB22F2C7C0EFA69C708C36CDDA24C38A845EBA9E9A3E6052B54C188D
-2743EF1487B6DF0E6E622A697BBE91D5627DB3F32A57C0AC98368FE53BD09844
-A326B096D01FA3547FAF440D44E079EC0EFC2A482B05052B2D57DA79B8B811E6
-DD9D0E46E838F1402F32EC5FB127DF771049F7B79BCF62C14E3FB4D6D7BBDB80
-975272E6DEE0109857F51D57E304B74DE4AE99ECFCD0A40E57C5E51283D8F270
-291665EE714A6596DBBB5285FDDC4B6328BA6745998EAEF40EE717C63AEF8A59
-E87D8E3AC8161B6638FB5D0963F8795587949FFD6F58C5FD18741BA3483B7FD3
-FC31F188B096FEC566BA23ABC2B34B79DC293909C9E8393AC9A26E6538672756
-3FE2EEF3E04ABA6D344F2DF359AE718C7D0EB5CDA5AB3D09C62C990BD5BD7E73
-3F1F8AF93ED0FF3222D7411CB9AD3C3AE9EDA04DD1AFD21A4653AE6A890E6C07
-1607F1668E4B62730DA65DF88C3C63FD7816C32F26D21A87522C2097BB925D92
-CBB694A7F77E91F3FAB14D0A493384DF902DE5D5F4FEAB5F5BDF567878AC8B4F
-98FBFE8FD16D07A58E2211B87983D40D5CE6349A207FF195B7F09B914CB6D688
-B103A5206380A90713D3C872EF8C026D2E302BEA473BAB705DE58D802A47C249
-9C40EE6F20398E591A3878D4A9DE9F6EC097521DDB694503AA8FE3BBCF24A5FB
-3DD6CCF1247B5D9724508C63A3E107DE56F0802CB083399BFC3A9DA62E7575E2
-58AA589E85ABFF222717335997260A7F56965DE4DE551885BA8A1DAA5C97AC34
-ECDB36FEBE3D8428A4681871FEF7CBF2B5DCFE747550D296B419140C39EB3AD9
-D65B6146705DC3FEF0131533283A100D9DBCAEDB8A10CAE4C431136FD94089D7
-64402322603B7049D4D10F97FD54D03D81B7B134293004BFB852D50DE5C6C5A8
-29F3FC4855C34AE134EF939755B88270B114106573415FB185E395F6FB0A4698
-B105964A9F374AF011972D67BBE0B3CDBBD0D9918A0E0D2653726C630FC8A63D
-7C5BE82A965EDC1E0A57652688375FA60463EDEF222D4A6D726B768D8EA06584
-BE7D23F6FE42CF8541F4BCAE1B01C73D6500207B211720DF98B72D016CC513FF
-9109B59C4DBE5108CAE19687C1682A36F39AA8AD09C5AB7D69A13EB0BF2F50A4
-0766AC191B105EE28BF0A87862C377E47EDAA69F99B7793F5F76114940848E50
-CE05005B4E2C91103DB7BA7BCE79755E4324C0D0305EE203294CC82451EF3780
-106156CC6C6BD07296CA7B927B869F8A9755CF9173F22D30EBD3217A98616E3C
-8525AC8ACDB07F9311558AB53805673411836886A919BBB916416DC1C2061CF7
-448ADED96B2933FD25C207BD374AB495DF564F25554274A3D2129CF7E6562F56
-E3D7234B8660A536DF464418BD08E3DB7CC2A2A8B80A0CEA897505ED6367A460
-3B6C0CE70E7C5F482C6B3FCFDD8C8266E023C421481CDBD041469219AFAFF611
-97F1A2D6B13A90A76AF1FB2520D973DB1CA53BBB11A81115605A9ECEB0AA60CB
-972E5FC2C431F1A5EB305D09C8B4C6D5CE1E397CE7FE9DA819F132192B2B91D1
-2832F636D75DFC3A82143BDEE17461D536B13D21CDDC295EB617AFD850D59356
-7172AD007B843AA74DB797099AB440C40BE561612B4506A8E26D1C4C5A8DD4D6
-2B8DA07722FA903A6ADD179E0214071F1AA8A21022283E7380AF0B2656DAF629
-50E8EB7C686EDCBAB6E56C5198041DEB47AE8BCDB4C30D318D2CF076491894E9
-C9BBA0C6D9DC4B5962350AEF5B9DC1EFFB0C9B8F562660D677F376B2279089D0
-294FD57B5ED589C1D28C6E9F02C821134A221334E1B4AFCD618FD86BAEBB31CC
-28FF741E785DA99568AC909B091BDDEA56D6E3B75F4307E3A989C1BE6C92546C
-F518EE6BFA37355BF3A752C26A014FFD48B98F7C1B11B625A43E677DD04B16B5
-B1B5F666AA67EBD602583D810578ADF8FBCE669C3913DDFECB2F64745EFDF7DA
-13E21B44417230EA477D2E13452EE0E048FFBC3B3F3E32687948361AE63B2F3A
-C2393837699C356E580C995217D2BCADFDCCE3A6276B86DDA6DF06884B153369
-327D3461E0493B6CDAC5102E62040437522DBA5DB6B6A4B30BE8AF1E9AD4DA47
-AA79B1AC528F44184C40B9FC2E402F602FA679EFBF9F374BEE06E6332B112399
-D18B8822C21B3B1DA3A84B31023D39508C1F0C97CFB05298E67DDF6EE891E261
-67C5A17051C6DAEC3924E7E9FC00C98225CCDF01D885724122CBFD1354A59CC2
-35EF7E987F633164341E2074B26689C6797F81618EC137BA7AE502904A211920
-D7FA213A6F0BE82D49F7237690413AD381F5D2A3BB67D027C48455F48E717DCB
-E1D0ED373D62E180BF0AE16B91605EBB768E97242CA8DB982AC0C2DCFD4B5EE8
-95BDC8910A12F20439946D3CA70A5F67A62B82BEC253FF1C68B1DB9BE887923C
-1B4F803DEDBC42CB12082ED81E92F657D30E8652E76C6D93B1C7196BB77C0DBD
-C2DCB9E8734272157E4BD32B57FAD22278DF0B98DA7ACCE25626F453E8A7387E
-F75FB71ABECBCE09E6D35C7CDCD550EC6907A8832D6831B8F16C6FF757E3733A
-3D028A0456B64C686A35EFFED2BEC9A9A1D93E98745DD6036FD954AAC48ECCC5
-470FE468CC4AEEEC6D6E650378E5561990EF37879B517DA5D550B5DABF216D27
-26941BDBE7286F95F3DB4673BEA513C8AE8FAABD78ACF6AB6918308627EE223A
-BFCD0B05C18134AB378AA07512D71E7AF987C925AD05686B6891EA8573FD13E2
-790918687BD4DA3C12A9E0F33FCB6AA2BE3E3397B970E80338E5338F0F603B86
-A42FA5A6285CDEF0739EBEB1B9133E86BAEE66E1AC48F83BECD4FA2CA3F1D5EE
-8EA02DA4925191191A953FE68C13398E2D80796714C07FE16CAE171AC6BB0870
-0AA402B06C310DC99F0A07669C57B5292530FB8DF265DB909A86B8D076468B4A
-B24AA398EE42F29BB41E7A640883F9D6021F4CC7E949670DACA3233FFCBD64F6
-AAE2DFBB7B1E69F24A6C0A8D86081B2B09270D561B20EAD4D6B1D40B7F333A0A
-F1B2E915DA6709BA159E81455907510390AE7C870A4F38BC8DD19149558B9687
-37B0777DC5D7964E3B50F4CEF6EF43F38BE9F01A68B60FBAC4BEE09E197C2554
-C413B003ED8D8A095BEDCB291ACC0FB3AEC024D779BA9D69FD3D0F5D105F95E0
-EA00C1483DC52F2A37BDD09F1F416BF99C1299784AA46D36515387FBD61C1C27
-A2B6E55C6B086E87B32921BD7441F10E49DD10D7D82E81AED5FE4C5AC09F617B
-9BEED75211D3FED854D9414ADC9B6AA0529863DD90FD48A3F82DF1F7C634D83A
-261AB18F257A389AE958DC7315251E670296B0F415AB99D1FFB56AC1E7E61BBE
-0DD2A5C6DCB7E270957BAC7584BFA9A6E21CFB293F0F51C58199D2EB431037D2
-C44DB61F55B46B3F034CE7127628B7A3549AA2CA1FF18DD7AECFC4EE7B3AEC3D
-D0A1EBF2F7E045BCF177FFEC6A32B8BD47EDF924EDE5FAE04FFAE9904F4229AA
-DF5B82485C624F0B7319B147CAB299A6FC7EE302DB985DACE5B13F8FA8E73504
-96E522B8D32869418AFE99B2EE70F52CCFE638419454432B9688E631272806CA
-FDC72B2F2971931F3D32AEE7B8979EF969E122CFB6D7AE0C314C3CF64859DADA
-99AF547DF83E7B74AC852752D25B6EE4A29B6CBA28CB35FDCE44C0CF816E1420
-9456518D9DC7A31DDA813F7ECE178F6C80A53010BF2272F50E93F5EC18E91D6A
-BA5DD888E1E9FBAB51276F78875DC0E6EBF759FD1C92A7D9E86D57B9632E5D3B
-823FCB477610DEBF376FF0DAAF01A47E0CCBC52F0052C93C35EDAC9BD26C0CC6
-5D62756F5476CD1BD7581567F55A6F04352AFB226DC7087F9D5B254E454126DA
-1C12C7ECD608698A0B2E3595CAF63B8BB3C1DC9AC379FDB7F99F255C8AC29A46
-AA322BD508021592969A16DCBA6959C5B92D0510AC400844405C810D6E34D41F
-DC8867E6A9
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR10
-%!PS-AdobeFont-1.1: CMR10 1.00B
-%%CreationDate: 1992 Feb 19 19:54:52
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-251 -250 1009 969}readonly def
-/UniqueID 5000793 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF7158F1163BC1F3352E22A1452E73FECA8A4
-87100FB1FFC4C8AF409B2067537220E605DA0852CA49839E1386AF9D7A1A455F
-D1F017CE45884D76EF2CB9BC5821FD25365DDEA6E45F332B5F68A44AD8A530F0
-92A36FAC8D27F9087AFEEA2096F839A2BC4B937F24E080EF7C0F9374A18D565C
-295A05210DB96A23175AC59A9BD0147A310EF49C551A417E0A22703F94FF7B75
-409A5D417DA6730A69E310FA6A4229FC7E4F620B0FC4C63C50E99E179EB51E4C
-4BC45217722F1E8E40F1E1428E792EAFE05C5A50D38C52114DFCD24D54027CBF
-2512DD116F0463DE4052A7AD53B641A27E81E481947884CE35661B49153FA19E
-0A2A860C7B61558671303DE6AE06A80E4E450E17067676E6BBB42A9A24ACBC3E
-B0CA7B7A3BFEA84FED39CCFB6D545BB2BCC49E5E16976407AB9D94556CD4F008
-24EF579B6800B6DC3AAF840B3FC6822872368E3B4274DD06CA36AF8F6346C11B
-43C772CC242F3B212C4BD7018D71A1A74C9A94ED0093A5FB6557F4E0751047AF
-D72098ECA301B8AE68110F983796E581F106144951DF5B750432A230FDA3B575
-5A38B5E7972AABC12306A01A99FCF8189D71B8DBF49550BAEA9CF1B97CBFC7CC
-96498ECC938B1A1710B670657DE923A659DB8757147B140A48067328E7E3F9C3
-7D1888B284904301450CE0BC15EEEA00E48CCD6388F3FC3BEFD8D9C400015B65
-0F2F536D035626B1FF0A69D732C7A1836D635C30C06BED4327737029E5BA5830
-B9E88A4024C3326AD2F34F47B54739B48825AD6699F7D117EA4C4AEC4440BF6D
-AA0099DEFD326235965C63647921828BF269ECC87A2B1C8CAD6C78B6E561B007
-97BE2BC7CA32B4534075F6491BE959D1F635463E71679E527F4F456F774B2AF8
-FEF3D8C63B2F8B99FE0F73BA44B3CF15A613471EA3C7A1CD783D3EB41F4ACEE5
-20759B6A4C4466E2D80EF7C7866BAD06E5DF0434D2C607FC82C9EBD4D8902EE4
-0A7617C3AEACCB7CCE00319D0677AA6DB7E0250B51908F966977BD8C8D07FDBD
-F4D058444E7D7D91788DEA997CBE0545902E67194B7BA3CD0BF454FCA60B9A20
-3E6BB526D2D5B5321EE18DD2A0B15E53BCB8E3E01067B30ED2DB5FF63F50ED7D
-7095D4E63D60F60B6407053A6C7C2B30C424C7BFAA7180D9D7080276A8B47BBE
-9E556034AFBF70B9B88D345869D96C57CAFCFA148BE140BCCDE6A4951646D953
-3BC0CCC8EBCEC593DCDB97D883FC8742B833E3899664CA77945407382F699101
-240F732E1BF75EF4832B592CBC9809C6CFD90AFB12DB06411FBB44CDE3E8E880
-7EC418659095F67B55AEFC7D54CCF036060946EBE6C68344E3446816E606E28E
-8EF2CCA98524AE18876BAB09470C9B2018FBBEFE76DBE58CBB9A252AC1E04F0D
-ABAD11178548AEF107FAF3D331C2F86C30A43B9829DFA844A2025DD4CC4A2EB8
-ECC146F42D7D9959F4CAF38396051C9B7C4A7E471E819A144106B44759C87548
-57187D6252FD8CE45D961736E69E7B4F51E96FD308E4C8E96CE72425EFAC417C
-875D0E0E051ACBD89B17BE738263FF6E003BF69B954F049B2C2FD3A316AA3443
-84AFBC9106890688CB5BC4118B391EF56519015D99800BBCA613B4A5DA78227E
-FD55D8692C3D1D8D8555ACAD3A3B9D648A7AE9B8A56104FE3F130A4A4A3521BF
-399E9FEFFC727E07AA69625D9F5F129F9798C718CAAABF43151F07E23574C92E
-1BE3B431A16AF35CFE19F096BC2AC3C9B4449E122CAC98B4F567B918ECD881C2
-FDF3704C02916A2263D67864681A19A246A39DB6AE3D942AC8C5EA5C7BB50B01
-017263FC1F0B028D6A21389CAE4567FE4C322E209889112EF5CA1B50299DC103
-19DB61B3764B6430F0C5C497011695C2F149F643983893E9955CA4FC88754A21
-3D1A5E9478038E356ED2FC535219B3DD3BCCEAD202AABA714833888B9D2F700E
-4438F4721B67481408A5CDC350C2ED16E28BEAE8ECD6892BFD2B0D73A848CF83
-9D942B3C03CA129259BBE4A2139458E1886F929B211E8BCB6F875483A4C947C5
-12FFC101D00D4B13C28573A8F4294D4B18551CB2D39026E2E0B2D12CFC039127
-1DBBA28BB71BD279AEE5D6DED289A3DBD48DAA0E8E47034C9C2B9606E88EFE8E
-3C610FD9C2F428FDD481EEBB3A5073344421BF251B88A190668ED326BD247958
-D77DE5ACEC88C068CED10EA78DFB8EE814C1EC2EDB7A935A5021A976D021C75D
-8FB1C8E66AF7CC62795289A79D89E6DE0B82F52BE05866BACEB92D5C6DE14E68
-55A820457A4275DC394324393A235C9006B2611AD62B2DCDB2B5E1583003CDBA
-B773AC5CC6E9DA21379D53F75FF5EC391F5D1D12A1B06B72A0634FC175E3C835
-B057B6D94B26513F993EE34C3D09D267824C3C44331E4E1229B15DCFE08B3574
-C44095E787DEA29E0061CB23317C49F434DCACF90DE4322F52C5B515318AC1D9
-EF5FB1F77C2FC36E31F19B1FDA6BFDA590B53356B5093ED0A0FF4E4F9EB50160
-5C852954FAFED3D47621376F2D4E48F45B1091E45AD558DEA4094E2687CD2437
-AFB39039101918D5560610120C6D62190EB9D3874EE02D9C9FC9734622264291
-C870C9799D7C6107D2F1560F9998FBF0C8F14FBB57279B0CEC736E3571C60ED3
-836783D0A8CDECEA0F0E676C29851EDECD5A7B4D0D2A1B932C5284AFF5A203B5
-FD5A01B9919391DF0E0E117D91663CFEA4CAE24278A9E02491756A9EB23D1F71
-0443326DF928CFB2E1F9246CCF09F5D21537213B79980DE90BB728159424B8B7
-BE76C4C0350BBC44C0215B0F1C08DDE499D19D0072BDCB33E8369B8AFC0C9F2E
-02B322DA228A35E302E80425F604146FA944B7E1A1148EFCC7D6FCB416B99CF1
-F3E2A0096C247D55F11511DCFCF722AF143E01EB4E7EF82D8CE7F160B7FD56A9
-499D756D3C0F5ED27A46EA1B787102D652D4567BD5A43E430D7CE9DC0869F9C4
-0347EC8EB0FDF0BA7CCB95CC1B9C67397D55C964285F7161904C968673BCD7AE
-7AC7DE5BC4E215F7D963C345826B6329646DD4B472892D7B736A867B4EDDA580
-445D53283E16B33EF88F34816D3E4E2DE13FB4B8C355ACA7F9C3E6CC1FA0C05B
-4FFAAD598D4AA3FD3576A56B40B762F9CBD9D965AEAC5D7C4DFB236B12E35978
-990F4DF760EF7EBBF367998BB2039D929E904EDBD700D476D851DC5499FDEAC9
-B4765B6BECCD0FC4607A1A42EF37B036E6D751A7972D9141CBE0B54D523FF501
-C8BF2D7B139E277E9B476B8FA993FF4E867941E996D895050BCAEF5C48A148F0
-6766C27991DA1164597F01788771512E64D3067D5D20465C243D48E8B33B8A02
-A5BF9E1D5153946BCB3128DE46008D2781E2710C21FD83D3997C175D01D9975C
-CE4FC1623309996B108F491D787F739854D42045627F619668F5E9230CE6A2E6
-9A3DC3CB8305629D860D47D9797A35B6C473610787C187A1C07CECD1B49AE8D6
-89D90FE37452610D29D46DACBDDDA477859AA8D6126590EFDEF664F232FD2DF3
-88A24FA3E2C60CFE269E3ABFD6B44FB47F3B20021E28FC3F08A8274443CA551C
-E6C98AEDD0FB7397BBB62E4D629A243A3F4A70408B370F6DB39F0383D8B88258
-62B61AC4B8991487DB209B382EF369B63EE1CB8155B74BFCFD94262DA5F961CC
-9CBDEE30A3940C9E2E1F3A40C44845D2F375AA9894C258DE71C0DE1BBBCC9011
-ECE644FE7B0D7B774C09189ED8FFA936490A0EBDF65FC78C3514BA8D699A9A2B
-BBECEFF3DA3F889A66C0D4ECC8906004F66A8E1D4B4CBCC789F4AA7E11705CAB
-2DB3F91167B4A67311F45EBB52906B7C92DBEDCC028D48DA38C0CB2349F726D5
-9F40A02DBA5554A36502590EEEED21A8CE969D7641ABF2F69821DF257B112B44
-CEF97664303B78D5C69B60B13533C8A2DDF4311091E2670E107569334A3DF749
-EF9947639CAAF7FD25C073A5FAA0EE4E502DFC82F77B8ED8B87C001187904C8C
-40F555E42DB3DAB6E3852F7999483CBC5FC776F9C04708D684BDF8F48A5F82B7
-CCAB5173A7F0A0352750E1000D7F1162C9746DC3FABC90B59A02DD15D5313B99
-148EE0458C3E00552E784A454990D1D0E69ACD492CFB135F98042B5261694695
-46E48530DFC77A46423093EE463A730DAC0005E5A81EC2312D856D56E1950ADA
-0D39607ED358F3192874E07A10F184B997299E38D91B5B30B6F69FB73109939F
-6B15DE0893E01752180083D0CFC4C58F0B5187C6FA93706E1AF158EBE420B9C5
-DACF90E293AF033525B01AA59928D1812A58635635AEDEFFDEEDDF8124849C7F
-054824E91BEB2774A2810DB70966C16874AB0D155DFC598128F28663D0A8C844
-FE4F62788F67255CD3C49316E24AF0B69D2864794A50F99E3D1A537AE48FC510
-764498724857D265D93431DB8728C7FD16E3708AA3E872637C811C242D68A7B7
-3786768CBD8661105E8D6E32519E2FBD817A81C3B860109032F14A0F0144EEB3
-BBAE40B8CFC1D7568FB086A8234DFF25619263A3864CD1515F60EA5F0FC473D7
-A5788361F21783C49FED8EE59E8FFBAC83F6347DFB438BD095B9FE86B292E307
-F2BA352C94D75C8F1E43297561145D0D18EDE7450C7829D3B52ACDAD2CF403CE
-69CD483A24274B150854606768903F0B540288E5A2ACEDE68DDCC66DA15B42B4
-0201A313D9D84AB0799774E90073351AA8AD6EABEF7B3F5B9F714EF6F653ECEE
-F1EA97986877754A6C568AE9002C4EB32DADB01D08EC4A7CD005761DA1860045
-6B96B35E70F226979D9107069240236DAF2086271CA12DBCDDF3FEF17A66831C
-2B4F11304A5F6D279B52282EAB5A7A2799F2F1B2A1C71D9C457FC37A8BB47645
-51439717B50E130A2D8538600F19DD02FEBEAF5C0A265D576EE86938B8E13903
-D75A437AEF9C31E0E57B3A55F7DAB170F2068ECDF9240CDB75F8442C4DAABA4A
-D12670C853A865879EA5CACFE346C30BFE7CB1ED47D0A2FF25A38CC4B41BE3A3
-960D5BE782BF619C16276C209A165AD8E552160D37C130CB1475AC550D9BD5A7
-B540B3096CC7CCD1C837CB5419CE30E5EE39C0E442B827C7DE9A91AF2CFD9F84
-DB541DF9BF8074EA15E3271038D41A00196FE0F569A0ABFCBD3AB6AA64BFEA7C
-503658EB6CF6E3F588F63ED2C0627256DB2DB340753AB822300C671330B57CB9
-4FEA970122B71F09CF17F2399EF7C300F16D09AD4F9A26273D46A93B200D8874
-47392010A8609EA068210758648AF367F4DE577B72DC97A8BD41820E33C42402
-600DD99C0E713F754B0C6445C42C3CD5D3F7E9A542B3592CA1893EF9EBC00BD4
-38870418537EDB096F064B0BB278C6AA9B7B4E208ED8B3DB1519DA3E7ED5A505
-E621F9642B3DF6B2FC315073D349E350775F3503210BB3BDE7D4113653CCACC0
-5CCFB46325729964BE728B772F6C1F67829AD09CBEF534FFAB8F8997380E22AE
-3B026926FE72CA2B5ED4156A85667095E2B4D951C720C5615795FFFC8424AF36
-B2C9328F1DEB7101120414274F27F1D806F024DFA57FBA9DBE98F60888A516DA
-F5E2AABE35B07FC96EBD0E8199DCCB2A62F795D965B9DF14BDC21F2A15DA68EC
-36247FFE1010AF9B91FC75E02DEA82456F48A39060B72CE7923A9BDFB0B39020
-B53ABED08AE275DF6B5CF216C7F7D7E587BFF10E6B06A0C525D575F7175E1156
-CD72D90E1DD6A50B93949B82DBB970912E2A27499DF0C3DDE3221852ECF8E9C5
-8143F15DA725D8A9CEB6DB25ADDAC73CC3BCDBE9AA576BCB0D067F05E77715E3
-2C70BD69F44A37D549FB5052AD80941CB6D08C4E949533BFBA6F82F5DD589296
-3521415EF71A3EF5DD1A83178A88E41C37B06C3D98518D00E7BD5F9B33650A67
-AE9CDB41B9D8BB6E4244F32F003CA06CFB1CFD3BDDCDA4B7A7657C362874B2C6
-0F190ECA2CD3A8C2800101BCAFC9F97D7DA45AFA4AB9DCF1B9BBCF1E4B6D8E05
-6A6C8964A56B069DC91287596D70C4D6DC0612F3EC34E04051E9AA1FE83368E8
-385B4ABB8B859FF2CF97DCDA031B954EA4BA8FB5C459351E35A1A90499992C70
-A6D5A7B084548285D2F3A04ABCB5C7F59B64166B2A2926084D9B924FFF91E533
-50FA59CA5F5AD82D28DB82812095576531F268ECFAA5680C1A61C917CABFCFF2
-0BC98FBA6FBE1BDAE2ED1CE7DC2D0C1D26045B8F59BDDA667179E50721A645B7
-5F6ED1A1588313C645D2452995597434B4A9D8772FD97A00EE5C140F77EB31A1
-34A49DC5DD78171B11E3539F9E1B2BA70C87F0F21CAF8B099E5E4FFDB9B996A5
-5077AC868697A8EC2CB2C516202CFC7D9516FA563AF28F2768B32F2D0FDACF25
-B35D2CF6CD204467AE0216DAEA552F3F08B64274725985DAE2AAB9081AA8B086
-130F5D3ED028DED37F098FC6C0E6AED9D9BDBDDE80B8F3B72A77AE9F1F67F4ED
-8D38B2BBD10C6070DF36CA07D51AEBF0B8D45C8D3632E5BECCF0F237CFE940AC
-0ED54621626485918BA102002DB3744D47E45E42791E6C0FE861E1D0287424D2
-FA7F14514F091EF01901C0CE55BD0F50964EE5A67C9360BDB5D4DF6ED5B181B7
-8A5D841C7EE1CAB75D8E8C618F0F224B877C6192A515C3C488C198C0A4032967
-894218087B8C81AE796B4243127A90FDB4156776B9C405A651ECAAD1CB49744A
-70ED17D817551FE3C2373CBECDCAD545B3B157519F8C4AF7CE8F8A78C08B3911
-7A18D0E62D3B77823D6AB74E3FA791E3BD1E402D7E4179D9FF05B3FDAD8F3289
-6F046181674F75DC42B9619D7480568F8458923A3F1458B8145E4B7C8BCB0C8D
-14401B86C5893960FBA65E3B4C65016D8BE9E98C57853E27D244E946C9BF0532
-287997DBE695EB984265BFBF32677C29EC3B5488EC8460329D419A2C0987B3CA
-B79BF3EB9A53E452D2A354324EC24A3B2BD42EA10EFD3A0BC7D9AA366CA783AE
-7C8DB6AD514F913C96837E99CFA81D645F7E83713E432B168AA56527DA1284B2
-0DCC88C7DECC367A0C0BA4DAB9D1DE72E8CA4D9411E4DFB92FBDF07CBEAC37A5
-A6DCBC6658554BACFF47DC7A9A18E0B833751625735A388EFA95B2BEB76D08D9
-14F5FD8F2BE65AE086F5C9C13EAC6EAA7B364BE125FEACD92AC2D1B915625AC6
-20005F47E645A7C6AF03A35E1DF084A7F5BE20A4555410F53B139E5267332E20
-FA509FD2F16DE9D8D388F67B8330F142CBBD151F3950C0B0CDCDB976667868E9
-279F98E04AE873A14FF9ED3C823745DB48D1402EF0F9F0383719D6BCE18B04A7
-B650E848AC680D43E1D6D79A73D3E1EABAA794B201CA4B8E24DFC70FE40D964F
-22EE3BDDEF5729EB941F41FEDC66A360F8D42F0E8CFD18BA3C8F86A268E424A9
-F3DEBBE933CE14EF381428AB9EF479C75A4A61FCA2A3AF072D04902CF177BB89
-FEB86CEEB9181DA7208B9D39C18AF86561575795D4A1533C7B5AC3889400A7A2
-F67CA71197E1EE6055D505F5B6D51F54E41AA5EA7F2338139E775E9E3036C244
-5AA88D894C02E9DBC9FAC8AA8818BF8A1CCE5DAA867D0430C1E4349328A08CE7
-0B93B1C45444A2290892DFA8AD1526996ABCF7D913DDF87C6D396E47D4337581
-3BA1205D59825176DD82539D74F7BA41C54A870C5DD8A992CA0CB9D110A8BA96
-6EAD44574F32CF679D2CB02A84FEA785150908D48214510BB1841DC7E07143F7
-96434EE80586A53FF4075518B5A352075265BAB2A95C00513A996E27A3947BC0
-C3CEE94873073A4700A757E774F2F20A186B2949ECAA49A1062018554C051EA9
-53EE606A67F7C5BDB25B621F7B33A0F89E5E098803D45402FDD5E95A1ADF7594
-53ACF240CD27EE946A257E8A49881DFEBEE0B4FC96578F132D134F7A6130051B
-4782D5439F97BA1621E6DB8527549115D5669A70D8C48A95D09F41BA17664A7A
-B1F031F9AD1E533B9390E2427EEA07135185E629CE772345179052357537F01C
-0860CE8A6989CB0B15827796B74D817F7F19ABBFA4BE25470A3D8F02B763B1F6
-F4C88D590ECB6EDF49908E31C66352A5A99C6AA798CE0D4A68BB5A3CA9EFE67C
-CC46A5D03C776F1881D96B27F107594C0D2E07EA449E8AC1030AC771324455BF
-279ACF071441BE6A095E2255CC0ABBDBC89F2F1474C3817CCBBC5E8D623E863E
-00332521B041693EA1BAD7487C1B9766FAA4D224E35798D3AEFADA4CA92C1F9C
-E491030422C3BD30B3E6A88B3ED0AF90CB1F28AFC0D06E9F6ED45E764440EF48
-62C1365903D0FF2C6BDA137610B97FA0027A96BEF3AA6962E9A75DA0AC253E1B
-ED965E0E866A53CF93885C010E097D8AE3729DBB8054B621BEE1F42BCB0C5DD9
-6BE3B110519656D495C622061C6A47E8B8F9B423F408840C91693B855E33EFEF
-6043534BFFAB8923D03A3A155543ADE84D5CA343FA46A824944F697642703E03
-2BA45892979CBB06DB9D47B56A24D28E39055407A50A19F8A551D9C0DBCB70DA
-F7DBA66F690299EFD7A8504F4BD7CF36AE627F08583B445995A037C949DB5D8B
-51F8DE74041057CAB908CFF67AD6282233E2CE92DB23C1188F0EF7368A617CD4
-972CF2F8596549DD95BE03676E1F58F6E24638AE8C7DBBE6EC0AC9F31867523A
-097B55BA89F52A9FA595C67C1241CCA76DFE1B4BC03599D63DF3133454EDCDBA
-024DB178BEC4460346367DDA3358698AB28468AAB6D67E86AED12A9974E7F517
-7D231A7092242E80F24CA30DCC5B03E19B890DDECE1C37ECED6ED092E1BB182D
-081632803208E53B7211C40AE01266DAC9F73488ADC9DB4960EF6CCF9336D374
-7391074D0C95E83B712DEA2059700F4FBC22CD89330227E9FF4B421FBC2812AA
-9965F92D5438A5B95E61BB1FCE0BD2337A39ACA1D9CEC95C37A82652745A84B0
-B9C90EE8B7A0AD51162B51754286859797971684D8CDE1987307D91B555EC84C
-5D45AEE0FCF4062E58A96B5834660F16422176BC7A6B58F34E3C2D8E54C52825
-1453C1F7EF626FF45077EFA76AACC5DA7E5D8B8DCBD178BDA4D2E8103F0A86D6
-33097153DE635BB4FE2E4A75C4F699872218684D0B0E51B69CF9E490F70AD35E
-4A4839EECBBBBBD7E7D12140DB9B9EA85B7F4C88F25D68ED2E9214EAEDE8B5B4
-EFDC90D6EA6598B0D0E9AA2532F2D9789C86473E9C2E0B9422501EFDBE800BC7
-3BEF94DEF85551A4F3DF7F57F885436FF116BF17663FC73838E8AA3D45CAB284
-51197A9600A914D53CF7343EBB46C2B3C81C3294F748344FB0EED2C6CA0CDEA0
-D506F7F3B7280A60D8D91906A107A1D83BA63919D52E5FEC355E0CDB98BCB9D4
-8D6A282FB4C51FF790AB03B42291616597D6ADC7BE4381340AAE967DAE31A421
-809EF994B79AB08C24E6B133712DE82CAE52EE64E884CB5EB219EC4A4FAE908B
-8EC25EF5DA204CF1DD9EE83B56CA1C039DAF2231070108A1AE17F0F3C53318BD
-5D313875D4B6BE299318F027E214FA0E9478D0B6B6F4E9152A5774762122ABEA
-F86B42F51876B45AEFB634C00554F342C5A89E4A826C205909BA83AA27FDF801
-D448B46FCF635AABFDC7A939658CBB04BAED3703457DF907379C37EB1E80A081
-BE3E732E01C6A5064C0DD2F673E36FF6D0F43E48978000C23712F38C45A845C3
-957780724DB88E8B7107984F083C914E104A8B43797D752CFF41BB6ACD6119EA
-1D18A404BDF3857328C3EBF3E9CC9576CD9085673068E09381ED8C9E246DB450
-4388398B36E123EE5F24EA2A4BB20B541CE4E15EC0E829513138F602EA5DCEBF
-7A11E16E9B2C3B1279730A769D58C511D87E4F9DD1D2E4D424B2EE086278EAD7
-C2419D6013CAAD5111CB9E659E0D4F5F7FF1791B81AB7302366FF305DF777710
-972A6F2B77790E381EB9B616F72B4DD3E9F12298D977B1F0D6239015384CA2A0
-ACC733C09ACD019CAB34854D8FAC451456FBD8BE0EA4E277EB306EA32B894AF2
-EEAB708D50B3D0A7316CBDBC6D92755D21DED8DBB1BE024CBBA3476286950F39
-10090BEB44D0E858D6F977CF10B8857E47B9420E63C8FADC90C7A29741F35CF8
-A79FB006DED8A76C108D59ED676CA1B10C41C2E261D6736C08F2B301CBC6BE20
-E6A249E5EE7451D8D2D3B5FA2B991A7AA5DA8AEE501B2467DEA909E659FDAF53
-3C990CD4FFE2E7FBF26386755AD2A74325A4CD324C39E78A0FD31A45567C5BEC
-F0003111EC559BA6BC623E4244D507D7CD9436E0BA3BAA156B05A8D0CDCCE42B
-429648ADA0B133B8B0AB63C2EAA1B0326EB55DFF8D169B937EC5402C355B0921
-A094A237115B9EF02365809474FDA0C24793E6F71D39E3E956F881BC394F8F5A
-143AD4F00FE1C4AECA056543B58BF4CDFFCD94AFA2FDB3D4B69BDA5F4812B86E
-4E8DC4F3B29F83EDBAB9F9A6582DC95098900BF52FEDA83B1E796B940194F242
-B49617099463ED76F552F5AEF369DFBE54465FB286D5CB03DA954683AA52BCA2
-9DAC9F104E02C0575A9DCB4AABB216306AFE5AEE9B903E0CA33C07E5206C610A
-09B71985022865471B6396834D45A2CDE1B36CCE0C265BBA035E4302E4DE9D53
-DF8D179AA111F3DC914E1D5F3A2CCD4C3DD9B23F033772EB9EA8B069D5DA6098
-42D7D4955419ABB3438EE197D058091A88200736CE8DA1557E8DB399997F5665
-E938542F9D201769B9AD834C78EDCFC047BDE68CC0D773E11B141143F2679566
-3D848A93988BCDC30D86DBB3EF3AE4E82FA43402156C385075144730EF9F7EEA
-0553A0C1694D70414D12DFC9D4E47486CFCDDFE71D88587A03902C9380237FF6
-9F672F33087E98C068CEAA5C3A3F57D66FA17053545F385871AA445C8EAAE137
-DCD09E0B30F7FF0CE9B7893EF9720AC0C7C0AB1B5BC8595FDE23038F1554EC35
-DCEC6D947F52FF01A18408266190EE44DF8CA9A1B76530D549BA5699B51EBAA7
-9E3BE3B7252481F697BFEAD643CC043DC09AAFD27FA6B8D39A83236B28414B34
-1D467C27E5126994BA4F200E3CA78D83BA8CC56E0BD4F2FBE89D2EEA89651F2B
-CF22F45A249628FD3C3E396955E6E09334F24E920109F20C6F6987451F6FB49A
-3DDD9B072E68A7EC450C8028FD97CB35FCA8DD545EA4C8C6684EAA8BB060BDEC
-B7B214D369C22944198C2FF847E01A3195CA590209307ABDC3AD0867DBD263A8
-D4C1004DB50D6C570C69E602EA1B7F6F542E2D9310392D4280CCE05C195FFC1E
-99A573A2F8D4D6374693B5DC8409422A7D0F6AA677C0ECF93CAAF745007450CC
-347977F2F0E50D2B3CD26D9F9B6CC79693578D3358D80EEEB55EFF0BE9182197
-9243E7E98541B12FC7BF34FED1644F14BADEE4586C28D54CF6CF8AF2C3155AA2
-C6DB1DE07E2A0BFE24097657E08EAED3BC60499A1E3BAF58872412CC89A592FA
-EE68889148088F7E617E24EA1827D79256909D59FC97E3FEB9EA13BD745A57DA
-065619B1CABD3C4EF0FE0639658936B18227487BC24CFD1E60BA6C895FFA8626
-001BE5D2168880CE06D7FBD654CAA41C9085CA2E4AC55501922B8384E565B7B3
-A21E68E161D456F722AC293C38B92FD21D89A407F0E5DAC64B2599B427ACF3C2
-B7E951C93D2EDF43C208D955BEBB9BCF856546CC398608179A7EB470E75BA5C1
-FE438B5D84FD8D51A8A5C2B42E1658CC6D5F686AAF3ED6A068AECE286C1AA3F2
-9E990221DDCAC43E7B457B5F38DAF1161AC570A4AC17817E702E048E2439CEBB
-6F7674F6A5060E1E864D9A201DD1DA14E12AF15BD53FB0798846C381A5FF18C2
-6FCC27E6BCB84A500137A7C991E97B037F585F909F572225780CFA937BEFBD59
-25DABA454121BF556C525D859AF72468CB36D8881028B0E82D2193CB77C8FC81
-D0EFEB810B36A6D4294FA63A2BC355980CBDFCA46ADAEE533EB582A4C6F383F6
-430EEBA70A27D580880A723D0CE5314F4CA65B07C0542A6E1BFB2A44EAB7062A
-7BB4BC7D5F9977433BA0862EF6BAF7C30BDF317098C0341527FD7E182F43A8F2
-CB5763A66852600B970A457672BD50178B16F37E4972EF22CC35083835AF934C
-75EA220358DDB07FA8EBE1AC8EEA949638419D1D93A5C558AF5D83B222BF1188
-AF5E167B501DDFB7FFD0AC3BE3F327A3DECE57A4B526A744FE41F68FE22C60B7
-73B9BCD923B3BABB98AAAC629D101C8D91F20D2ED7BD38486EC9617A73038FB5
-2A79EF9358F1B2560AD5AC9E56E0064192E6728A59621933E995CD3138667D7A
-F6B06ABB67D21FDAE07655CFD75C66A5EEF6FACD236849C768D2EC47CDA54AAF
-C763AC09BCB867D3DD255646A5D48FF7C176552E95EEAC08B235F6FA29B1B414
-B63F2BC817E0B2A23D9C55D84D9FD20302AFD9E0C6B2A986BC36E034CA05EBC7
-FEC81CA1732C2D251BB035753715EACBCDC04933C4B3B6470974D992F3075CC5
-EA65EA2DEBE6A89323719E39C292803F9F0972C9D6279D9BA770C974AB4B4BD2
-F177BD7C42C7DD13F1D5CEC057ED0FB18F200D1DC624DCABA5F6CD7C9B9D7F41
-244928AEB24CDCF31559561FA5F7471B401E4153C0BB6A14FCAF6E33A680A31B
-318F08056EDE6CCA39A015BD7867CD75D547678A009DE8F9077C7B975872CC49
-44A901B5271298E3E1D2E4E3DF433090E55259106509F62551DE2C23FBF84229
-D9AA4C9644B9620EA49D5028A0C766260775B2F1D9D07AF5C9FA2A92E3A08F8D
-95854C9195EEF55DDECC8F7BD38616E4196A75667A6B2452FFB10635B7DABEAF
-F2542282DD88BB616490FAA4B194AA0DA5F3DF44925FC33C2CC1EF4BCDA42350
-5AABA0FED7AF13A2258F0C80EC35B4F9E9C8D6E2FE6601E84B8A403C0A3D4305
-CBFBC13A71330A520A6B15433AA878DA13D78703E4DCB38822AABEE4D4A43730
-86D515B3EC28751A6E059D30AF945541039C5414C0814D04CBBD6DBACC2223B2
-5DDE2AA500F4CCDAD8F3E9F466BB8197F03126F39CC1E176038E927C50BAABA2
-C630864E7EF45BA2709DBB60AF6218484B7B00CB92BC2EF6ED4F2BFD791B0AEE
-3292224A4AB40B8F96267079CB4F985D83F956C24E9E3C4B7671D84C74558CDF
-4F6D8346A7C863CF7824B4970C4B8F7EE81CF88EFB91CA000FAA43CB69F1E323
-F95E9AC517636F42F95775B9B7CA83B4126C1A9D3824110095D1C41F3B3E61CC
-D0A6C922D5DDE8FC4600685584B1DC47B7C566CDB0244E1DB7143139189A21A3
-4716AC0061D12B88AA137E3986A3321F6913AA1A594AEC708D14E69C837DC7C0
-9239AE84BA178F7D2E86F3165E71F906303AB91FAA13F566C5ADD44B9A8DCC96
-C0F0684BEA830ED0163334C062E4C96BC5AEB4A41E36312359C176DCC9CDB7FF
-A6FD1180A3E1ED4B2538E33080155307AD4A71D70EE926ABE4ADE1B3F6758506
-A6F44E826C7DF2505E57ED63C535142B706D9741485C16B6CD14D50FE93A4226
-B5E9C793A0A9B8CEA2157715F974D7B6FB0E3499CFDDBAA64073E87317E69EC0
-33C33435A0C3098F9D96063B21393DDD6566467C9EFAC8DDA8933665C0DA2709
-2631AC7EEB745570D2298339F669199F60B4B1B6C87DF15144A9B480AB72C127
-F300204C364CEDDF7B82A522F7A5E84E0ADBED642CBB1490F83E713194A149D4
-0F8EDC1909D1103F972BC61E62EE41C4F70685398671501F1957764252393701
-4CF8307E7D17BF01250233A54FE74A0C0301BFFD5C6ED9019816CFD3DF0CEB0E
-06AAD5A78826D8B7B3AD1708433B373C52992712423E17638B58EB4CCB13A57A
-941A1A6CC5A4F5BCBD20B561133D6C2A9D7FEAA728D0BE1E29C8503C1FF126AF
-5B5F4A9B470E9BAA573C4CBEB12653F3154974129D339F5BB4BE78A0520F2A45
-AA3B2E7283D394B514E00CC34EA4F26727C7CCE5F362FB4FE58A3730326C01CC
-63B42F4B16DEC193AAEDE56055DFBAD3DB7C306FEA3CEAAB3C5DE8BB5F10F475
-80B2781A6E7FD9C84A449786D8219976D269B1D6892AD7B61E3677CD27F6CCF1
-A71A025A5AA0940938759DE27F2399D7B10EE3FF3E87DBF737B618484F638EB0
-73500C5E5EFDA98ED16D4083DCC3C550A41E011F6AEDF631F15AB47DCAD54EAB
-1F51714DC21CD4E1502D184595E0015858C06013DFE3B5C23470F39F6D2FF47B
-3A806CD554BFFBF979BC5EB5C4982630DB513535A6A7B4D58FB95AA3AB57D4E2
-A3E8E515F3D7B5EF419020DC9B8548ABD1721B1C84E7DFFD6C19119F2C32C40B
-518C6FC5E316AC52CD44599E41ADD5C384352114F693F7A936076EC3DDC26E8D
-93F258BF38FEF6FC5E6EE27902A572BD5F4FCA6966FB09B716BF5006C78A716B
-3BD84E823E911294CEB5A1C2F01B77A4CCC834AF11BB2B27843480FAC752A959
-FE09FE60A872387B2C4C35B1040F22A2A5BF96A64BDA6CAADD23C73961D664DC
-755723A618322DC608584ABC62455DA3AB0F39ABB6CFA36CB1CA2F44EF969919
-9DD7D38FBFC61D73EF3F2EDE5427E95697E837F048387234FFEE1654168E8928
-3FC884BDAD421DD647C739DA4DDF47A8A1B9721B856A1E10D517DC3DD99CE724
-337E4E63F614B418A7E8B8BD89F3F52375A6D67F3633851FECC9559094CDBA3F
-12405CED7F8887F54AC96010FD12DAC7064F11E381710AC21DF1F8D3D20F929D
-626DCDDA1FF92E4CB7EAE8F23D0E5E62CA475B9675D04B05D8C69EC5BBE3D0FD
-85A4687DB304C23972470FCF10F49FD1B17C9DBA81CB6D93CB01A0E127E992E0
-40379266999CC2380FEEEE676A65E47AF72A3DEBC18FD7FD4AA416E4680EA97E
-FCD679AAA6A752B6DBE43088A1726ED8A96FF700AC9156C0357293A7A57B61CC
-BB79E5551A1235288959045CE9E83BFDE4B3E3ED6FC9A3223C3FE15C17085DAD
-987E5066BC509508583FDA7A9E621440AF3C06DE34B3444766C89E1E7DE44ED8
-EC9BC244E700D62079F298749EF931EDC9A3AD600B42B27FC791C56A6E8B4FB4
-81E7C9767B539BE7DA2F6FE3BA919042C2AD3C93DCB46CF516A3B6624BDB6F22
-9FE0D2EF492B5BC2ECE7A52E3F5726F0E51A7F21A1B617856BF4F9D350D253F5
-544AC08D257486F6D3948F40E56C19B0388EC42456B904F1237363FC18191B82
-B6E7C6A60154E7AC5BA66E4B19B338E8043B4FEBCBF1699D3762C18715342C4F
-226D24F085263782A2C95F5E383ABA7338D1481F1DCC3BAD9FA29F7150352A2A
-D5D4E0699AA98905424F318F74D4F5D411E0F2231AA20F247E55D8DB6BE3570E
-40D90EC91CF2C669BA1DF484D87BF8BE295FDB3381FBC5AE6EC93D530B2F86D1
-F3CC1F0C8778DF2392D8AF2340940A157D51A6BE8B21CCEC6C1391F5985FD417
-E222CADF1C38E9F1C745D93E7F85C0F916A3FACC63D4DA66021BA75797EC8234
-34BFF82D79F80DD5193EE7558AAFB2104E221C7D22B2FDB61EFA87F464EF759B
-E7289FE63E13E13F7100E3A98741E513BF1ADB1A84DDAE8DD7E52EF83128C015
-611D3B559D4E00D609AB14538DCB340F327801B8871FAC2A9B86B1A2E43581D0
-2ABD8A6A80457CDC66AA1B3DADEA474C74FF0306DD39E327D339B26265CA4D0C
-B1CE1B6C0BB8894094436AA791E19A7059856032171B9B8D908B65C44310D3EF
-2646CC68CE584E108F821088021F938D56BB811822677D0CBB52339A41AAC1CB
-1E00C00D71E4487E4C4DD73C3F9E6A11B883D0A456EC9A36795C899EA395AFCC
-BABDA4842D17766243CFFA6F4EFA0C1126ACC68D0E301BA1B7599A8A9ED30177
-C4B3BC0C885B388765619F0F8D8A9D6EC66187CB2099F4D033198E1A30BDEFC0
-FAFB5DB72C9FFF8319409552C4DD5CB57F78B24CF3FF7BB0ADC40526105E27E0
-F25CE258E3582A8E21FB3C98F08D4BFADC20074B1FA8D53D41D6576422DD081D
-A907E13E277CD55F30C8226068B979DEDB917F5B00959713E36D834E98D14A8C
-C44E0A7CE11AC30825DE99E2850D3A85F7F6290F77919B87AC04676A98B2E4E7
-48B87B9D52A50E0BCF7CDC348C76A39DB631C24CABF14103A465E90626F2836E
-1279B8312D76573803A7F43DA396D813DE3CF4C503E372A668082010CC2F1E94
-05DADF555E05118A3F5DE5BF50A96959EEFDD872BDA6DC20AC0ED1C7DC1E1797
-BAD69D3F25B34E8156CAD0D17C2A15BBDEADCCCE021307B2F24B822C4805C4E4
-9B08CD76552C50A15CA68B1DD34D8B1F6FF1C365EC2B7992F29ED478C165AA3C
-790A26CFF3817E559D1F5ACC0FAB00ADE9B53FEBAB501FFDF13A2C3025865889
-9DF506626A738841E9CE4EB1E773F25873C05C87482E92257F1401BEED54ABDA
-0E50F555E0154720FFE532DA4CCE16E5D28495BAD18C0AEE12C02E1F1F8A53E2
-D8486034CF7D8B55E5565495CC953873CFD2A8DE90356A65BE8C177CF1ABB06F
-FD1A42635B75182CB22710109AD28C5E7EB9CEACB2DCE9BFF5A2D16F6D89E90E
-42BDD9499D7E8E65808313912BAFAAD7CEE2476F0D7AFCBD69A4F4999B6B76F9
-C3D873DAE63A8D37F6AA266604F7E07B8504B694CC03DFAC701555F4C9EDD059
-8E33F23EAA07CEEBF3EEC3CA8B3811BE15E1F580A9D433F7813E654EF7716C73
-464B5F921310D7BBEE984006053D194D28655D23CA1DD13D8F547A7C6081DCF6
-F26F3DE3A8ACEE9DDF1CF4539F6150401FB47551D01514E582208788E4310D26
-278F838C4AA0CF9C624DE6C278306038721E67A3AF8AECC427B2FCCE85001032
-6AD521122DB620831A63AF7764359C33CFA8AB55EB2E3AFB265D31675D372BDD
-2C509FB96C5EC18BBCA5C6A6DA6D8FB3B10FFD8179A7C4BBF4B44CE9DF3E5C0C
-F4E22289EEEBAC17AE0A0CBF4033DA0098BAF51D907AB6AE3CBB18285C9BE01A
-D4C78D416DAA8510CDC2B6E2FFD1FD48D3B55A02EA192E91DC819CB7E7DBF670
-767EF0EEB4B56229933392F0597D1C5171ADAF7545C483D08D0D7165CF04A46B
-8352D4B2A7FD5076AACA863B8433B640F87036C461558F07C6F7C6A9D4662F1B
-8EDB054F319E28125B93E45FC86A7AECE563126E71C4F209E923EE6D18D318B4
-5DEA60298668534030F29A51AAAE6AFBD7E54BD69D3540CE62E3C424A19F2B79
-9EC12BCCD362E40B3F918018C95F59B2C1C872FB2A39A959058C6DC809E7B1D8
-A3B7FBC8B0B83CC5C0205209EF605459E6F2B0724D614B083B9144FDCDA96A34
-C5968722B4136B98D9DDD41F9221DEB24F17BEB9029ABF00DC7BE32F9F4E2060
-95C49D98468BAA020E392733110F36C70EEF55B67E4F424403F1A4CA9D09B9C9
-5F5C370B5CC45E6431D70A932BB8AF8125B9291B2BC0501C835C6BC27387E43A
-50FA573896C88C8C9F04987DC8445EEDD65113095D46A364E314FAEC4686787A
-B857B43E2F0965FE1FB8F21AC2EA3CC336EEE9FDC8336942E3D2CCBB27BACEED
-04658E1B8DB7EA959BADFE12EA2822C120734AF2F6288F9290E997A7FE6308D1
-1AC32DA2FCA9539679920DB053BB1F035B126795749FA897CE1ECABE46BD4B84
-F483677F7955BB3E5CEBFA40198DCAE3EF45A986AFF650D1A3ABA5317E0E3D5B
-F7C3C78D61A6140C06540C4986AF3DB5C6352780849981FB6D167F7EF9982220
-7CE3022B5A3033C61012E2F12D3A3F78B66518AD2622EB37E138886C02E7027F
-BB6127C082221ED9168B71828BF8C544850645526377656AB731B643D5291F21
-3591541FC1ABC6EE895A0292A1C01C6513C6118B7A04795652D5D09659E1CCF3
-A83472143966721C927ADFC7DA682A49516BA641A27549F3782A2E754FF03EDB
-05308F6704FAAF25158A8690425488A428879B0C8A26D2026722444D270BBF12
-BBED114F6CB5A5703D5E55C42611DF8D174C6143E917DB1632B119E524DC7F18
-748E6D9EB165F5B7F61E6A7FDD396302EE2B61C948EDC6CCB5C909F9057A8558
-02BF308AC21D9EDA60ED2B86C77E9D44ED0F16209E900645B4580C846290AB9C
-9BA0D162F856D751BF1BAA7F32CA75B96256C7DA5DE39930410F5E23C5EA7EEB
-5E05C87EE87F9A997E0472EAE92686F0D9006F655D6DE638861E425F41F489BE
-350CFA2347313161E3F2405B90EFBC128D3EE838E7EADD2F4E9C13A7C138C859
-6DF459C0EECF70D7BCB04069F443CF7DE32DD584122B0F6B3087FBC0FC8012FC
-85EEE77AA41B5F951B1C98714296824F2426B45AC6791B50CCBBF85AE27B3808
-D4DBE36021108FB666FFBC8029B80672A0B0BBD32501031C8AF8C26A84045D06
-1508895126DA872C9C9088C76FECF046FAAA99BA09747CB1C15B2DFBD7BD135D
-505A8360C5EFC97878A73B4330C4EF1E15BEE3E9BF90F0ADE96FE02E179D83EE
-18AD9713C7DBC8211EC46AA12011E720DEBB4E36A7AC7C368FFD41C692E1C9E7
-4C7A4961A864B104F7CF7FAECD685D76B65CD5C37F26126B9319EED38BFCA9CE
-6C82FAE5CCC40DF8AB6F5047EB6C35FE3E5D1D18969E7459A3819CBDC04E66D4
-DF3FE238C69E132D1D7DDF68642BB93F075B3DE24BCE78804E617C1CE2F34632
-705E766EBF67DFB2643E80D887E78113395A693DE73A1F7680CDB9989727E31B
-95439385A5D4907EBA92A5CED721C189BDB8276C101D4E9E27ED29C66405B167
-E076921A1DAD725E3780B254E001D8F153F14F6027F1FC2810D110BFAE546193
-2006CE9E653416E6FEF423F4080886F3568F0E31B041E6514262A4970A4397D5
-A58792228CA938EA13E958322C22474F5580EBDAAF04F8E1EFB12868733EE9BB
-80703E1E9840F920536ABD8CA9F5091E8A9830599296AE5E97D0E9137F7FA3BD
-D747F44752460DD72609FD774E3FBC0D8CEAF089A92FA249CE089AE26CEC65AE
-1A6879429ED62113AE68FBDC0A42B4FA377D528B12416C70CBE39FBEADEDFE31
-C8A748E807C38ACB86908544CF78E3BACCFE3167A5C40FD1B98A8B0BD8B95DFF
-BC1D52D08AC901AB5697248DB5846DAFB1F0685E8387DA8753D7D0EAD7F1A1F0
-A63F8FEF5544624DB211ED6A728B901FE0668B3693B539669C6064A39C97BEDE
-F108BC3F10E931396BAA969C9FB6D23A5A82DD34445C54C3EB667E80A4BF016C
-A8057FAB1966C1F69A58490D2DD4CCF1DDEFCE78E7D82238B5F8A1E23608D10A
-068545C57D10878748AAB507582832DCE8D75E0DAD6C42CEB39D2FE66B6F87D6
-A655A0444038EFEDA8BD89C63296311F5540FC6D7FAB788E27CE03565D132C4C
-96CC6DEA6EDFC4E0D30BE4F3248C95AAFFFA9BEDC2887EAD54D1830D4BC84270
-B63F9AB573CADB7E720367FD3CA18DDC2938B5E7502AFAC6410BA0DF7E6E8B9F
-7153014FE2B690EFD7C8B93DB1BCF5CB2ED7A8D5AEB0F3BB5F960A6718FDD1FC
-9F5D230554935FF47BD6C0434699B44B587480733D2429DF88975A32D51E2CEE
-0280E7F4F715E6F6B7EAF741D5CCFB4152CD283307618DADE3D0034D34A8539A
-B80549EB41C46EB5164377C8A77EADDA82DF05D50788DBD2330228CA555F12AA
-6D045CAB8F3F0BDD5B50F497C5BB074F9CF9127E5A6F13B0DC18372979ECCD4C
-7352A8853C44313DC6324979ECF2BE0E052CF33C70A7335C500DBBEB7B437335
-E146B6FDD7AFE11539B590E8F3A7E8019CC25DA13A7123203A2B39EB6D4288DA
-4F30194E30248116BBF60BC5B4F326CBE550E2CDAD42C58008353BB35D634CDC
-D5AD5DC3AD09F273CE4A65785F4703A9DA2E9F79D3EF1EE8F31A32CDB123CBB8
-032351A7C8EDBCA024F299E0B97EA93ACC30D8AF21F8E87F000F3EFB7152C71C
-39A10C0B32AA1220197BE941B184431719B16975B1F38C9464D742807253A5B4
-0C96AE037F52D66BF1CC9F9899F51468094FB75F462A4EB907D7F41C02F91B68
-F5EBB2DC94DAE3DDAFE3F930DBB32062886C93C4F78969E950656BB0D3E475AC
-873277C0A094B7FA5B2F5B9D5183747D34FA9367BA0EBA68E478A1AC5D17D32A
-BDE55AE03099B90417055ADD71513EA9FDB4E45BBD60EC967E58EF1C556F66F8
-4019495AA6921D173BACE8D97544613ACD9E251BEF43B1ED4BC617160062C2C2
-BBF5834F368304BD217E3DBC4197278A170BCA1F96F724914F1DD496D86BAFC4
-BFEA978877EAB2605C76AE0797792EC3242B69EF0894D47790795C2FE8ABCB86
-0F84727E8FC73A456B1F8A5631CF09C445789EA8EAACCF0ACED0469C465B495E
-40F36C3619EC96DCF6F78E23586C02BED2023A8584FDDE2E54C6B583E05E804A
-AE42CD879E602E814E66390F740BFED677B6982DF2DF0298264BC35262BCB16B
-500DEE6AED56F561D14662C5BA0A966BA50B3440F532452F698554DEDEF77504
-0EC17E5B0BAC3E4898BD615367F01F2DA40E4241D16E68799470843CB5B65569
-1F7349565738E94E9BEE6C7950E2051AE3E88F215ED69D6485BCCA6B5499EAB4
-338CB8BCB758A0C27E3EBAADE3B27CE29888D0B12CEB105351A7727B05933218
-D49AD5992B0FB3DD8AE76EFF16C560C8B15F8C6F39A33408AD1C78C395219B52
-DAE812C5E015AB02E170A4D5C6FBC246DA7837F14388D117747F933FFBE0DA95
-67370FEC2D4757DFD0DC8BAC60864561188B7A4EF8EE5AE0A57E6D16E233ECD2
-96169DC97D959F2186F21F41E3EE66A4E618690E4FE507199114D52322B46747
-2016EFF537B5E33C8EE5EA62CC839F159464CA79461F4019995F32528FD23A2E
-90AB852FA84AC3C9FD9AC73E19F7BB3378BE9239211A01BF2370142FA7F6834C
-F68B9C191738B12EC57B5B32C84B0DF6C0573759E70731F8D018D11246AC3F77
-77ABEEB0894A7A5593958321ECCA8FC92EFFAE2C24F92F567E9815AAEBA09F2B
-D1B6872BFB73296B196440B95F9AD1991943B2274C667C1A23ECC37EC9214393
-08A20EA18292803B8BCFB5D51780A995E397B6C73F895E6B10B9182731912366
-884658F00E726D315EC0501A357A009D592BDCBB9016F1D25F45ED1AEB6A3E1B
-855C5F5F71D8463A33A616CF4EE7289735806751DC1267CDA62320ECF760B254
-1F9A52733EEFD6F6AFEDE308DBD62577B94E01DA7DFF53061BE85D97943DBFFC
-504F66DE52C820BAA54593336F8725F65DBA718558484433EC4083C855372F22
-EC9A684E82FBAE1D09ADC8A34E96FBFEC4177AFAD426B244149183B6A4937816
-D2197C7BB04DBF383A6B669B7C42ACA1D10E2814F58A066D12A5166739AB706D
-24C65AFE4D3FC725181A2DD9EE7F10D8114A0BD40A5B7D50503F3A308167F5E1
-416C0F4898615FAEC0CBC99EDFEC29BB30049B83AAD905B4F7421790B044CDEC
-4318AB55B5396264BAC93E13F542B3C1E20BF83B630009F4270E07C314DB9D5D
-5F5E284063593990A19938B1DAAA6EF8254076FF6D432FBD6EF500DB169F39D2
-3F8A0DFE840D2EC1CB3C4760C3AC0DDDE5637ED19E2E20D9B2394F8A17D573A7
-58E0DAB14BD1B08209EE56E5189AF9CB72E8D8FF2EFDB0C0CF071E2DE5A7AC11
-05C977CEC7A5CFEC266712C58757427526581199E63414BBB393020DC7066493
-26B15043621DBE6007E21F1FE3E74E5771150E3C7171D24ED94BEDC5F27E9A2F
-DDF67E9DA6C8A7BDBD1BA1A1EA86568270B51649641792D895D26DC424441CC5
-A212F25A11ECF2AB7899773113F2969F63B45A0FFCF56A3C75E400302E21CA16
-78C19B2013689993A19E6952159AC719D08E852FDF54CE2CE5CC6C3349756FB8
-2C5D506ABA8A3E1509A7B5495813601F52F3D256716486D414C847F99B7842C9
-46E5390B5F480821730B7C980E4FC4FE83F1EFEE6DE8EC722CCF774223790554
-875A4CC6F4E04980269A4E2B2F6AE18FAB7E99B015498730B71C2FA51C4C6521
-F73AF3828A3974A518923BFA08083A9BE1F8FEA4535A59C7B4280B5E2E65C0B5
-59763DF53F8409BF5810204E337D1E62A171A8B0F01B312CF3946E2C76BAFA4D
-9C216E36CBD1BBF973D9B2F2399BBD6B49C59E7977A4ECDB0B01CF7B33A16FF1
-DD6285BACDAE8DEF665A9C1188878EC499E7A3060915484B52C49868BEA41F21
-C6B3E5384EC04BC64B35170F2898C331FF5CBE2789C64EE66EDC7BD67020F260
-E4C2826CB6A0ED1978D3D1AA334F47D993929F0762EC83B50D8896711976C1AB
-9CECB18FDD3241D9D097EAF6B9883EB2BEBDF39204C27C76A4D3CF003C0FC1EA
-A7078F28421D5AEA923218FE1304034B3FA89C8FFB052A125FC6A27E53BA617E
-A00ACD83C20A42E3ACC196C7BA7378C111694C9B37035E12C3BD1EAF1AC92644
-B25FAC3C56B34882E230E8B07B837320161330158721252A20C674C5B7D97C49
-D3A083CAD2BD8F96684AD4F65CD9C977F537AF84F58BC9A92CDE55A1A0E599DC
-3374887243F2BA7E64D77DC4505A9DE891F9362B1742C5B014BE202BFDC8FE23
-A3DD1B31D9EA3BF07CC0E5021E9D7948D391B35845B22EF63BDD5486CB4DFB6F
-35AE0DBB4FF97365D02F652DAE17ED50586192DED01F06EE8475E4BDD9A92013
-8FF03CDE727EEFD293A6666B28F6105FF18DD8C078AEB8
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMBX10
-%!PS-AdobeFont-1.1: CMBX10 1.00B
-%%CreationDate: 1992 Feb 19 19:54:06
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.00B) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMBX10) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Bold) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMBX10 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-301 -250 1164 946}readonly def
-/UniqueID 5000768 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F00F963068B8B731A88D7740B0DDAED1B3F82
-7DB9DFB4372D3935C286E39EE7AC9FB6A9B5CE4D2FAE1BC0E55AE02BFC464378
-77B9F65C23E3BAB41EFAE344DDC9AB1B3CCBC0618290D83DC756F9D5BEFECB18
-2DB0E39997F264D408BD076F65A50E7E94C9C88D849AB2E92005CFA316ACCD91
-FF524AAD7262B10351C50EBAD08FB4CD55D2E369F6E836C82C591606E1E5C73F
-DE3FA3CAD272C67C6CBF43B66FE4B8677DAFEEA19288428D07FEB1F4001BAA68
-7AAD6DDBE432714E799CFA49D8A1A128F32E8B280524BC8041F1E64ECE4053C4
-9F0AEC699A75B827002E9F95826DB3F643338F858011008E338A899020962176
-CF66A62E3AEF046D91C88C87DEB03CE6CCDF4FB651990F0E86D17409F121773D
-6877DF0085DFB269A3C07AA6660419BD0F0EF3C53DA2318BA1860AB34E28BAC6
-E82DDB1C43E5203AC9DF9277098F2E42C0F7BD03C6D90B629DE97730245B8E8E
-8903B9225098079C55A37E4E59AE2A9E36B6349FA2C09BB1F5F4433E4EEFC75E
-3F9830EB085E7E6FBE2666AC5A398C2DF228062ACF9FCA5656390A15837C4A99
-EC3740D873CFEF2E248B44CA134693A782594DD0692B4DBF1F16C4CDECA692C4
-0E44FDBEF704101118BC53575BF22731E7F7717934AD715AC33B5D3679B784C9
-4046E6CD3C0AD80ED1F65626B14E33CFDA6EB2825DC444FA6209615BC08173FF
-1805BDFCCA4B11F50D6BD483FD8639F9E8D0245B463D65A0F12C26C8A8EE2910
-757696C3F13144D8EA5649816AAD61A949C3A723ABB585990593F20A35CD6B7E
-0FA0AD8551CEE41F61924DC36A464A10A1B14C33FAFB04862E30C66C1BC55665
-6D07D93B8C0D596E109EE2B1AAB479F7FAA35279ADB468A624BE26D527BFF5ED
-E067598E1B8B78188FA4BCFB0B51692D07B0BEBB930C6F0997B437E2C51B876B
-61A563A2673932C2045833FAA35DB22ADE12102335D5DC734AE3AC5EEE6658D7
-92EB62131E1DFBA441F53EFF9021D9D4C491F26BE8F54C61165CAD778CE8695C
-EEAF70E3B20C64D4C2B34A084B5770BAB2A974E898F62BFE90F132A37E2DCA4F
-43E13DB13C94DFA8ECE2B7374827AE168634FA007F8981ADA046CED3448BF453
-FCD9A4F194FA648F9FC0971734BB69CB73439CB0DD021D44A7C11BF295E81733
-4DFBA460FF3D654F9FB337E99E6D66FBA87A817EB9CA1536C84833870E3626DA
-55D48DE850D3E6F6B29DA0E7C9D681283586F208DB8D58042E3A7CE55BE84822
-C98237911453E479EAB65AFEBA3F61A763B40E74535BE56C9D8D06DDF9441741
-5C9D9D917439368736619717FAB4F06E2C329AE0BA411F3FD522D9C33AD8369B
-D7DCC9DF993778482F35F965973DE876FA19E109AA198A00658AB3F0D8E3DDD1
-08A573F2D525202AFC57E05D141E6C0BB811E1FE280EEA002B7A45BB363AD06C
-318D320D2C81AA5DCC842CEF66E7DF7670588CB39C9F42EE7763A3A17372432A
-173BDEF7ECCEA297CCDD76A835C36DCE9DB8F8CB66CC71B4920CF5BF055A5260
-5B41A5373BA6E4F63C85671D979EA5EC30D22163E6D206168A3827F465279870
-CA80E6632872F721BBCC622EE4214BF723551C846765495FA9921E11FE1A950A
-53150C3F5D8595958A47E0B16064CC3AFD65DA294FFD111153F4F233BC5468AE
-69585C16CFBFCA32C4B96C161F47B56661DF84FCD8ADD3EC086CFB6BB5179BC3
-A5469A1CFBC8620BC711F42D0D3139BCE4E38698D9C574450DB43B5A19FA6D54
-0368BA9F7A8DBF96DCD0B8968CD194264E6DD10A958846C278B8C2BAFE7AAF8B
-44C84C955F1A89A13E62A054BC76CABBBF6296DE00A79CD7C8C61C70F127618E
-9975B59A880685E126F57AD80F8F4D376E1B476BDFDAC868FB6AFAD9D694B561
-001623C4D9F55366D053B52F2B09EC08B81901AE0986C5350312E626006038AD
-AC15FE313FCEE1A2E61F8992AC00CA7BB7F997707EA377D37EA6FF35BFBC2866
-A572B31491F9B80445685DBA5E62F166E80589F768FC95BBC79158C23B2F1BD1
-25816F1486A64F76D99A638AC0DC101FDF390811B3C118C2D972B2E7587F6F24
-7F1DB2DD922D237A7D18FF08FD665355CFBBEE799D3BFF11CD94CFFDBA3E725E
-DCF4CDE4307E3B199D91893A365D04F43A5305BDD2538E28A0788E061F3A621A
-B4A04E5063B47F0109C1693A284FA43E8F1EA9B68145FF51C005D3FA40713BA8
-1879BFC3CAA881B9D885A0C1AA8BB9A8C848963020A5B15F862E7DCC78F25D7C
-56437215999EB78142C128C6CB1E6E75EBCBB1E4614E8516FEB1E68400C61326
-D9F9E8A41216901F77D9466455E2A0B45FF50B27B55A1E1DD4F243C92BA6B175
-8F7695CFA1E91CDD8651AEBA3D258FFABA6280BF2420A98FA7CECD552D152CFD
-A8CCC94C032087A28D68332769DD2CB4ECECB15717C245BA305CB616CC72644D
-C78326E77FA602364A7B1630CA0BD0282FA781E14282982C1AD13479B6178D28
-1CAA541FD3F4316F4FF81C53496DCDF5F86E0D7C870FFCD85B36C936B1E08D78
-CEF3823546BE4329B97EFA4E2880AF3361C0DD67F77C8BA6F1CE3822B7FBE567
-064ED0477949BDA06483F8DD04F891473C8FBF73A61F7C06B20FB8B5F0BF4B77
-1429190979A4BDB29D77E94D5FB486A93B8B61DBC84AE06B4E06CBDA3A942043
-9F9926F541DDE4E9B7306FD7A9FF7917C89D789205E574FA14895D289BC54C91
-EEF6697B45C81A07425589FF1A1EEE5481ACA674E621EF4FEFFDC25B93A76EA1
-2208D45389F863C7BDFD9BAB5F587C21254053FC6E1CB4C43BBADDA2740DAD85
-E278111292B85004B4980AAF9E27817FD8663E324CEA7EADABBC00A49FDC52ED
-E7DCE1652C7C22879519BB81D60EDF9327B2032D4252E6E4D12B7D35C9CC66C2
-791B827A451F31B4CC3C7F6D3F50F902F03265FAF92A1E586D32562E1346F043
-A8B57B7CCFFCC538E578AF5B8FCAA2E48CC48E4AFFC1B61D44C25A910688DAAE
-6D97511B2046183579756C1FC993461279BE30ABA487AD353B58E5C9247A405B
-FDC64A496B1E7B31E429A889A3B4F50A9454FFD1203E89ECE10E4CA98790E180
-426BC3D6A30015F2F8C1DF007E8F5389D537C4462C206207BF8C35953EB2009A
-9BDCD1331A8ACFBAEFEBA85109CD6C816F85B11E1F8EBC22B9E230B19E224B38
-0DACF1701BE6B001364000D97712248CFA7C1F29CDCECE7C6EE0F1E0917C9B1C
-CE257D760AE3CFEE834CD90E36E987886D2065F9E54B58842CB8A63B26A03CC3
-9A239CF1299CF3B11DE75C71DCF4EF14DFC034CAA1C53FE1FE84C17F5AA65B58
-887508A7CBA57605AF71564771849D435270B13AF75C0C7EBD272B51B9CD8165
-6ADB63289C18799ED0E9A11A6B99C6DE506A74F458D09B8FA9772D95264BFA06
-32C06E00C60C4A6CF4911681E3EBECBE23D44F63F8EF9BD6E1A00337E6BC2B9E
-65426659D3329585711C2B44F69D307ED9FD7809B13B2324847336F69C16134B
-60B6D3DA7A0D79951834D6225EA94C32ED8D61846A11B95DBB309FF115DCC31D
-102E7C57194E82B8B2D9E4770758AECEED369C1E41EBF7A51FDEA1C4E2E6E9B8
-5506F242B5E06B34E62D3B21C680439F14B5439AB4A4A5C5321A7EB4D73C7365
-86551E8E149EB6DF8FA73BB24F43DBB70CFB986ED0197B8C1CC209396870FC0F
-7A97FA9A2039327DE29EAB7C29D37F0F2B84C680B70D165C74271798355349A3
-DF56B7B52349B60F18E51D6D4FAF885FAB78B9E3CE97304F349D695A1E194DCA
-125CFE820A4C78E445FC3EB30A5864506ABF619BB246EFE98694F23E35AFE6B2
-CB8FCD779CF78DEFA733B1EF526B0EA5D23BDEFACCFA487CCEC90948D99BAEBE
-63E61312123277BC64C4F4AD478CA5AD2ADA911457B67BBE6D2911E760286FC8
-EB3F99DAC78F087BD54EF09FC289809C8D0ED6DA153722A8899250E1A4425ACF
-6A409D4CC1A0F7796611BBAAA984FA4799BD1AB39C664CF2AFD39C4DBCE9FF0A
-512CCC12ED9521F6248C31813AED9FAE15EA9BB0ED16518FE690BB108BC0495D
-D4BD1A7920B3BF3B2D410F6CDE03465B4D9702EA3C4D2B04FED4D2C3C056EA8D
-42A781E24BC1E131E43DCBB9CFDEAFCB8924A05312DB863148BBD66A665FC4EF
-801A8F8953B3AAA28AB616E009D0D91B15BB7D703740803097901D83D9EA53CD
-8BAF27A0C0EFE4C4B41CCD202C2D74E8D59B3745F88073C399CD994D2787FC4E
-41100ED8A5DF5F3F026B9E97C8AE235718F926A5F029E86229E2737CE5A352E4
-07C5E2AF2444D0A5E4BE4AA8118885D8A10F9F9FEF04CA7A3D858B98F8C2F844
-6AF77E315C733F8F39253D8845E0EC93FC0A51459B0424DC229AEC7C566F673F
-359D382EB48F7F57B038B40DFB84E8F631092C155FC9148FEDA067BA06E34774
-332678FA9B7248112B72E144E89CABCB891837E8104B7FBF8D73BFA21174935B
-70D1061B86D8EF295F05690DFDE11EFD19A72ECA2D03E441744CC9AE817E7D81
-FD321A79158392EAD7AD655CFFC5B3CD73AF01DFC4646FD5F9A0D38FBC890602
-0BC3DFA976F1E08EBE8C26FDD7406A704B0D12201CB63D02E8F67255318DFB2D
-BD8F3764CF300E6529DE8DF03BA91F49E9AC9183B9EE327F84B3C58D46C346D3
-903FFD441E89A468EACC18B62F5B510C05517D7DFF6331AD1564E2574B73F21D
-E9D2E9051A10E58D91EEB4EEC46AC2D6C65CB5C232DC10E9C9DE6FEFBEAF8248
-CDCC305658C9EE2D797E5DF1568ED497FA557ECB2586E90895DB67844580E06B
-4835406051756DD4A1F9B07650FA07729C5C6AA0FC59B6B1F6B2A9C827851B7C
-C0CBDCFC3A9E82E6E3A7459C83766C41950227AADF61D59AE7F60B252BB213D2
-F382379F209892E756052A01F4E44D5D218EBF04DCC5A558A3ED81F563DEB0D3
-233CDC1B47AE6796ACB2E0902A3278379EFB7132E81E5DBD6D720EAE2A35391C
-0C65A9D453A1FD2AA5D3EE828CD3F7D3C389987507DDCD18732CDC5206AAA7C9
-51FB079D4EF3C98C1DBDF81D9E509F3701CEC6A72399F51C588C9938F5AD59F9
-F3D828550FA39AACF71D530F43492668AB62986155E8980D514D26BB8404C930
-68685812BD7F60CBB33FC12E7D7244D573976FB495BEA68D0DA56F29F58C8F34
-421DA3A7CEBBE56F31D3174DD5DC2DA8948E5D0D071CB712F7F263E67D577C71
-00F24408C03E93328F8BA571CD37FB4276A94D6A1C94EF32BF4CEA6857F6ACE5
-C68062E7287DB8D7B451D9E7C6FD0B0CCDC5E91939BF5074ACCDDF95AFB9003F
-86EC54AA537C66C63DCA8B5E2E9C41D7F2F4BBD6A14E8643E676C90D717A81F0
-8C42ADC28B09155F8A112BD922EA25263CC9ECAD151150B14936F6BA1A3E0524
-9EFFF0C1CEEA0346F9069B6E32664906DE63B814E007E599EB44C51E93A83379
-8F621A09A1D47EFAF25A809549146FABFAD85B2BABC00309C378E42E2272C780
-A9A931FBF1AEDC7EE5A7A2836988D71D295A553FBA9DE73423BEA8DC9F4B88B4
-DCEBC7B547A1DD076C1CEA0F2C1DD630BB7EFE7E25BB538C3EC2ECD3564962AE
-7592CBC48C6980F2C67884C580D1342AB8091BB04538E2EE2899ED9FB3B39DBC
-52B6B5C74803F6DFD75C26F79FE52EB4E89328E8DC3EA8835682904E6653BD32
-C532CE68695793DA9F40141476D0CB01AFF5518B5EEB69FA36EA43662E46570F
-8E3E3DB13F4DCE7B6B41016931EBD6BAF54539566326476AEB9F28E9FA739A43
-00C14B7117D7F96047E5473AC31984F7CDA2EA93931D969B34DE352523477C44
-7561BE75424B5052AC9145645735EAEF4D2ED99DD1B90CE9D76DF2C78C9019FF
-8BD1DE5B026BA5A1A8F3B2ED1583C745453190A08A11EFE0A31B37BA7775F3AC
-DE280A5742794A4F51EFEFFA92A00AC3A7DB1F4561EE1952DF0CAE5DA8194EAB
-B424E62A55847138A4F70DBD045BA473C794C0AE9342D3EE6ECB1F85A45C9370
-9AE60B8127577A1646A33C85AE36BD9DFE5CD47FED29A5A0B7290334F96350AC
-83EA879A52974A6B0F36AD2E2D55B4D5F32AA3D479AB8086E67C345E38C67CE7
-C99237E0A58C864E279D3EE49393A9D98312C67CC3D4038B481A704FE1E1F2DB
-6FF997D32B7267138D5C48F672F495C2CA7EA2BF90C1DCB4B0D05B3A80FD0FEF
-4BD7CFE74ADD96DA091F8445322D5E7A8D38214E765EBDB20BF7FE405B8DFB1C
-1F1901AE9DE20733840832CBE8AB5803679B746C0E87468C57F1193E7E3565C8
-1C4034EB0CE9020C3B25E4F5BCB5F95D8CC0463E3E3F0EA1E0035A568ED0A842
-FA68FD08DF0431C69698A515688A22CC8D18505261A55BA0C3EAD252CC14CE70
-7EF861D171E5BB339A916E34244A707B338D83ED10AF04D01B8421AA49FACF0E
-3101FF8BC28BE995CC2455C81A4EBFE93DC1E795026B016E1E30660C5D639EAE
-C3DE894876F44A17FD6DDD2930D4AA80112EE068D57A9135763F52DC6A9FAB61
-FF13C69AB939784C84F14F5D05FC73E2A42986EB0B512F7E937247DDC94C1EB5
-07019C773C153F5F11EC2FEC245355E2ECC936854523DE27433DDB4EF43247D7
-FB83591AE1D693FD0FB36DDDF79F98EEDB5CD05A4E51BA576166378F2EA2C286
-7831B7AE43CEDF3A673D79A02198D674121E982FFEA282B484F001CBDFB9751C
-863571824B896FCE6376866E300CFE73C530FC34A308A561635613A58E5803FC
-22E6581249AFC8FD324970F557E9494192D475DE84676616580CF54216A57F7E
-678453A03EDA0CB6328156C662D3C421D4C8C754E678EE08F7FB08D3C60083B7
-A8B0944178293FE2CC836A8E6C2D44916840F3AE260FAB4DEDFD22B21175A902
-E7AD30469701F5E6ED97DC54898A706F8252A8165C80F069238296AE2713BE74
-2EEED9385C6D6BC5DFF5BF1DA15F2AD374E6AF8DAFB637153F3A4D7E6BA31100
-BEC9C750E8D7018BF34A24D36B089D3715BA57AA239586B924F3ED204BAC594C
-E3EECE4F20F3A686CB7E58BF81BAE2FC54A741A62A6E69D000F65560AEE11AA4
-E0F6401C9C931091084105F26E93B07E8092FBA882981EE91314C2F1994321D1
-9A1000B7C8B86D41E1B14503FDBE5F3841E2A8126DC601AFB44EBA359AB5D1C3
-3322A43D78D2ACB2F8075B82ED45759B520634A923122607334E28ECC917382A
-6B880F17B96BADCEC1BB3DFC03A4EB562B1B226D642C56DC932FF1F5EE0B4FD9
-31BDA0E522E700254671C31554B3389989B894AC20282FC43490180A51BC2300
-A0101D5BE646DBF758BE980EDFFEB0162780FAC44C64DBEF7041FBC8D7775BC6
-160C9B355AAEA5B68037C158111F7B15E3C03114BD0C63365FBD8F64D2AF3836
-0CE0F4F8598489583E547C1BC6DED69033453B74E4894809B1920590D6BCEE0D
-72981CD228C4690DD6DCE7E3155850452EA82172A746B7A8B0B225ACD647C667
-8F1F1E4A65483790045A04AC45434CE9BD3108BF1D294B1D7FE70A8E44AD241F
-0F4ADEAEC203BF55B30F2B3CE92EE2186F9665B581A1513D5F56C2FE9B0B54ED
-6CA1E375854E54B3FCA768D7E15C75F4CC2B9325B1EE1A5B220FFB317C6A9004
-6A27FF3A01092378CBDAEB0858461358D348D4E402C1DD47537479BDA0DBAEF5
-35AFE7F1BF7B03A96FAA60B237C72FC2C3FD8A76E4BC77271C9545D22EBE0D82
-943F871ABCF54814C72EED4CA64F5536562FD15D95B86D102647DF14C0DCFABD
-184B46ADA3850112A97AA11956E6B458FCF67F7BE6CF891920073DC1C27F9CC5
-E83016FF6DBEA0E5789B07F9057CACF9B3912B82C7F739E1D8E3FFF84A0B7F5A
-C86B7A07B4B6CD53A15728C3F35D5A9BA0101E514D7D3BFBFC8891EF1591229F
-ED0E065A981127F819F7389B02D9FEC6792E6FBCF7F231E950BEC5D7BB218C92
-5A845FAE27D50A5A566080927871608111FA32825DF4F69E444F5BC3FE70622A
-A48044D9DC7E7138B810E566ED42E6130233B9CDDDB25F3D0BC0B23428C9912E
-A60A2C5D18B1CA97C27E32AD76D449305C7DF370B5A8D23E4EC14E36AAE4035B
-B33EC54A7F7703275AE9FE3BB20B9F893F831A37E3341DEB2B3BFE9308CDE12C
-C8AA48CD8F2B4F9A8CF991A26F0394DC4803A00F38C95533A52DCD60F3873679
-7C40226A9DE6F657177D12E0B074941B9250585E5DC274494561E277AF40ACAC
-537D7A5713D7F29A8E0A523F07BEF15FA77C8A32170207F47A83AC2DF90009FA
-D2BE9B660ACC1F4D93E35D978164D79190017DD2814E89162BAD5D08C936A8C3
-DF71157C707BE7F6F89821A1FCDE773492332B77F1387DC016D8E097777FDB42
-71DA85F0985C33DE19F74435671DF8E8B39C6199D742787AA044268D20DCFED6
-D93A5A4F9A61A57404CBBFEF09F903C5FFE4699B215FCD82B4DE58DADD8CB1F5
-F9BF1373B46891013342D1922F530EBCB77A27B709CC2272CD515E7414BA9920
-EFDE9B6A8370420692596FCD77108C6D6C52EE732893EBB7133ED3AE573440BB
-9371F3F91F8933D08D881E86F59585C06A81A36FEA9EB77F3DA227D165162448
-EADFE5A310D2B433EEA5DCAA0ABC3EA326C593E382F9FFA51AD9C8AB8456C4E3
-E0055683BF721DA2F61EBF8F80AF8898D45D654643AB01E5E66877C0E4998A66
-63A11289D6844E6507F199F28A4CAE836A6E980F260DC0BF01D16E4431FA4F3D
-9AA3688C73CC869B3B2940F29816224E63672D57C5BEA23A33BF2E3725C5D999
-1760C2FCEEDC0256546E635D71270F32BF692A586E155F2005EEEB280C6E0A8A
-C9EE5243C4E3F72625C91A52AAEB2B2579DA65686616C171B7C5D3787CC00B80
-3613F57146655447EE4383B0209FB621B3A852498CBD4E44BF41BB0F40FEE91D
-D12576D37BFA78B11B2F6B688284533D4D62683897CE47074DD18D397C53EDE8
-F01C67A3F887B31F5D62AA0AB8ECB17B725C535AC65C0B3B42E2E72ADF24D2AC
-CF0FBE8F8B6FCFFC7DD742E5FEB4C4B26B4FDAB64509B1384D2ED4CBEC344F82
-EB24565F98BC17CCBC0AF6C53AFD3FE56BB844CFC2A91F41238601D4F92E74AD
-6890CC9C457A3C91A5E27BE25AEDED2808A909FFB0695C09BA90B78ED3916B8F
-B03AC06EA299CAA9F02B209D0E089F03A733F43467F209B1BD82B3780AAAF533
-DAABD765C58C2EF6A4A407D74525294E344532AAAED7CAD4F0B3D6F613785041
-D9D1AC4ABDA4DA7DB3690C18B485D0A3231586ABFA036376198719B0032ED153
-2BC51A787A0BF84B0CCBA3B3CE000AC64965CE4126596171D9B0247B16AFD919
-6A1BC3F5F3A3C5AE63B255CBFF18D2F7B08E3F00DA74928184BE4873AA0FB462
-A2DB6A38E8EE898C650DF5B616854336830359ED766CFBD4340C963B35B6C089
-6CC781BEA636191CD88EEDF9786CE101024AC1FAB4527389B9220DB65454351D
-C5A0E5E4AE9E9733AE81C4C1CA600467308B125DE1A57E929E2C7FD9A32D07A2
-916333730C82924980F28A250E3B6C9698F94779A2CDFFD74524385526A16726
-7551F56EAF95321B373AA0EC8BB2804D2FB2CB0552C30FB49B5B4BEA47B46B23
-A4A1A15CF20E6C26972F41B915B64EB1709B423784B256A452EA141D761D3202
-8C8B4F93637EC0F8F0A006B43FBE51EE7B803561D5A44A4CB710A301A1F2D67D
-D26A6A5AB0CB99777B87508DF73C630785170CA1C7407C82E48F2703A13BEA32
-18867CE753BB4A00142161A719894E952ED5A7A829E59B8AE4A5D8281B73FF3F
-0463BF3EEB22E08C918AE241693D3BF9C6113C91911B0BBA830CE43123DBCA42
-152576AF0C2891F2EF4A960896D06ABA7C76708F19A06177B815961CA623EB03
-D3E9713B0146E777F06E798B6F308AC9CE04E3EA51566318D42B6663C2944F41
-EA6FFA84413CADB4CC71F9A38B2A19E99A1FD168B3A1E90260C9CCEDE49C6953
-222AD8242157F4B7912EF29873EB8F33966D37C37C35097DD319D072C4390404
-87783C7DBD0F3E45FED47CC1F46BB3CE76B3AD77F10A6DD6C197670958D3AB5D
-E524F094ABC2F5BFE5E18668B46498B3089937DF128F84F4E76D1EF5B5CFF4D1
-27833019DFAB3DF42CE58374415166FDB515BD437A7D79E2C8949F42E7B838A6
-E6A48B6C6A9B626BC7D08D5F7C0D86DE17BA70025EAE7A6821D4C4478DADE190
-E5D2A7D3E8875D3AEB39625B52437F6E407A3224CD39D1B2A1D6F3B1D699045E
-A43C4908C4E17CC4D658E5A83ED189248B7697EAAB76125F9BF07F5F6193C932
-4C8CC04E9492C421F852925937E7AEE77148F8195D65ECC727E2C47B25DE95F4
-33DF42237EF6BBFFBDB24FD315D67173212FA7CF46E002DBEC83B8FDB4DB934B
-37DA41679645AD8F9338C330F41E9A1988C9CA7176C117B845282F4C3659F684
-AD38574C1B365F09ABFE8BA991C2E2887328595D6DFFD8ED8BAB65240C984E66
-97CA8F27BB60DCC3330D5D2AFF930B6A2C34E68E0EEFFE15D0B7214928CC0567
-6E80525D559EADBB97B348D3ADE86B54BA2F288CD080351B700D24BDD0B9338A
-9CA2FE492B5F2A64C312D7F6622373BD8DA16E98A8BED9F20D998103A864CF48
-A998CA03E9DF935432B5FBCC67A55753ACB54DB5EC66CDABC74FBDADE6AC9D0C
-BA8487EC99E5CC3C7275C9BABD227E398114C295583FB0319A3A2B6CBB35D1E7
-1BD4011121AC5FF9825697845EAC94DAD20C69505C8E8A9E76E229BEC530AC56
-5846C55839E42BFDAB0E2F300B50E14569249EF10479346E71F7EAC14C94A876
-C9ED6CDA2168F77D9D5298AF2EC5CD7A2DB3A17FBFDFA5047DB9D140137682C3
-AA488393E41981BF6D31FF6BD31000BB75B90818A74E604D9B2975F49FCBBB05
-44AB0B831EC44E490DE7B6729EB6769F02EA0D7D2C44EA5D49C992A123E8DE77
-47C62C78ED11D1E72C8A3BE10EAEC44688925EA33E8F0F98C8EF669889D563CA
-DEA428EBE8B70831B5FD5027DF0C2B41CB8E5F32B87BA139A9CA0360C777829E
-5336D83CF2BD078948D8BC4399D82EDF1A31828CBA5B2732B33117032A0172C1
-202830FBE8BCA62EB2F81CF6D1A5DDD1E4F83DD5DDE863AB99E81B2408D25D23
-06936521C34AE1DCE47977DD442E49B695D6DB51914BDFBB5521EA8A029E34B6
-B5873AB2E3FFBBB6C17FA91E4009773BA25A7DF6C98E84B93CCBDB965EDDF273
-C3640571896AFCCDCBA1639AFEC0BF3635B07A099B0D1C7A870962EFA1593F30
-8234A0D459F895468CF0515FA9EC4863E7CBDA36D96BCC95B58003E98B1C4D31
-159EAB47EEDFBFF5C11CC024E31F33C2587F533CB536730ABE560567C44F6510
-0A4EC71E5A6EAF54CA17607155BBF7826B1DEAE1BEB13BE2BD5DAA55F1F864EC
-8ECC9B262935CCFB07A7186A17D230DD5F0C797F0EF0137D8F93516D1590E0F1
-BB846CA217CA9E53430B208C653E8339D2F646707B5157E5DED3F388323A9E53
-FF4506420E5F61220007B1D580D8C1CFE67604D41878C45B5A7347B0E7AA095F
-AD7CD8CEB493E2C0A334758518AB2FDA6BD7CC154DCB4F186DD805660B9413B0
-302B90B2098CE09912944AAB80F02BB82FDB54BD5681F859C4812BCF7BEF6386
-3AA10A9DD7ADBBBB828A91B55A02D7EEB6E10A2B8746EC70FD9DD6FF32F7E501
-F568B85C3B35B63BFAFCEDC860F8AD9D1EB58E2359BE4FBEEA5C47219C106C9E
-91CFE749950365E5A75D0C0F265509338651EE124FC189A503886DE0A525BDDF
-F08F43A752E61B65FB79DB74D438C122A1F345F44CC0819505C5424B4812F0D1
-DCFBC29E6F71455329E0913E50755ACBAC66E0C5D03A1AFDEA8BF46F7A5E718F
-EE46284BB9C9D2EDBC7B94B94669D0C093C36C76F9CE74BF7E9BB5D917885590
-BE46A81AD67F6C67075444F012EBF4CA3D29786661211C12C3382AEF5B1D7DEE
-04CFC9FF0C684753BD7AC3E330AE2C7816F7455BF775ADF3CA37A1692B3B6B26
-30E0E35F03B52AF682F9B51CC2D3B30AFF066A8DEDE9A1ED6E8E13BA7999757A
-3E151B6BA055167E699BFEFBDA4EF755FDB4F4DA364FC2AD30F594E796254951
-56710CEDB64B589FD68FB2A8308F76BF44E067163637FFFD99A53BE0E12494C4
-91DAAE5CD14F66DF2676712648D992167189539EBAF168B498FF6DED41E0C2C3
-CFF85FFE0B6D054A8BF8AF20CDEA6BD6ECC584685AAA3B5EFB8F67ECCB766CC4
-3AE511C45C0C7F80827AAC1F878F967ACD4CC42FA68F53C7CB4A3AEB360D2665
-C62838C3CC99F6789435F9C4A63240AAD27C1124180CBD24E288E794B8BA9EF4
-2DB81E9608FEDD31EB1E62BA62CD46B5141018E42D9D1ABE9B549B0116563969
-B6001EF0D3FD723248102048F3BAF997112A3C7BC4CCA3C2BFD8AA94778AA5AB
-C13E48E6AEB602A9C26F0C5E9E718194CFA99A205585E126A854D750D5D6B5A9
-6D7EAEC86C750E0D79ED8C1C9044CECC3F83F3B8393A0AAB6386CE31819E4A24
-32029FC427C5E4639C634384067C9B9A88D557D19BCDC3EF8A21F45479F65F8F
-686299BB7B14A0D6960ADC2C4C5A1CB3FC8AC5EF13020FA618165524D005A788
-6DDF3A07371151BDC667027769F67B17250DC5120ABC34090FA4F4B1E9EA7C4D
-A0B56F33FD78F01DBE1570D3923BE0C4986319405F0FF17812247FA989815CF0
-0EABBC692F69D8CFDF1054A8D2C7D7A7C0E4BB302D64419A78CBC409E9B2A9BC
-E6B9E1ABCD4B5A15AB95AF89C7A1E95154AC2E98C2DEE7F53A32C3066CC36B96
-B27AA6F81A490C28D34B54F045636BD77FE8749BD190303313054AD3EFF98E77
-D257920CDA69876ED7A04347E6DE0F15C2135D8B9C87F69867C6BA3E1FA2CF63
-19B53C521DBD9905CCBDBCF44DAAA32212C5EBE2E2201428CAEEA1F75F5B051F
-01662BCE23E6FE97A80955E786309F2F799143BC40E3108CC05C0A6DD12CAA3B
-05AB0F8F246E8C00DC70C725F96117A3A8FEA4AF704ADBAFF613445A5E616BAD
-0EB0756DB7DFA55D680A4CB0042975B2A7D7E89552A4CC345F7578061B3FD3C3
-A0E082906EA1F9F9933E028638715F54B78C098065734BBB7E9670D583B18976
-038E01C5CDD817D8B4E44FAB6546A65BCD3364D2A2340AC806FC6438959EA3AB
-FAF2ACDA73CD645CB3DC4D7515F6592DF6C6ABCC71E49F903EF39420F069E7A5
-B619C472EFF0F7EC411F78A9FB1946C5010DA3AACFE46EB09085A779E52C464F
-8CB8E454E567A70346FDB71ACF79682870472C10B70DCEB7599B00E3F5FD679A
-90D628751EE62B1C93C7B4CA0651818882B300797B7DBE726CC3DA8148C776D5
-5BA39C49757C089C3596BCC6A97BD6E754C41B0C3E2C4E572BE54470BEB3F8D9
-0BFFE2B062748E356BFAD08D086D3301B8CDF722D5872548DFD8910CB631DD90
-090E272EA6CF3D88E50502405C08EA2749C27E58EED2FEDC7C6447FA2A40AB48
-03CA0C2ED4B0754A637A2BD5EFFC753C6CC616D322000CC3DC803CCD759E3FA9
-D3DF1CEE305BF8762898A2340A2124C1B5CFF69B5624E8286ECC4CEFA0C603DB
-16820055001382FB1F3EB1C07DE6C237F052C17ED0B4B6CF54133A272218B42E
-D0C071E07CBCDDD2D252ADC9C1C662156D9BB3EB3AC03D0DA88A7A9B801CF726
-5218F59FA52136746B6797DC054F8BB54DF3D92791C5C56BA2FC684EB5090986
-80CAB8D615920D2476D7F1F3BB3D620D15A3599D44DC76A96A5A5B8040AF0FE0
-61511F85796D371F33B4FAA4C682EEA185BBF957134B7EE70E07E386C5036413
-40781C4036B1EAE0DF1359FCA7DD2E4B3DA19B28297B8400D014D94BA6B9A4B9
-33C4A26615F770F7DCF39056F36315163687876253F6C7819CEC1AB35062BD4E
-3F0D2B420811B2C5DDC451726BFF18F5EC6F6DF0F4AFA304A1608386FBCDF243
-CADB792F3DCC642216B18E85624E8D273D888F90FBB871A0C6EE9C6D7C573F7A
-2C6CA7AE3D8E2F52F5E59246F0AF82C4175899BAB8F24ED954233E1823E4F33B
-5E8D3928B44D790F43D63B7884C1150FB6E72BCDBD02CDE81A75E071B5A05086
-F73095870B2192E0F5DA207315E814D973D1EDD78C66DC6D56175623E4BE1A62
-E113E91F0783FD6D0A5115C476E24A21F0819749EC64C55B9295232B112DD58C
-60293DABC481BA63DF63DE9DAC180E94302FB67501B98909205F3294DF0196EA
-2FA1FCB89A0B1D74F46C82D5CBF9DBFD3E98B4929F6B475343FA673B1CF0C56A
-76B903A679DE31AB98ADBAC2D08457DB8C21868169DA055E93C004BFE13160BC
-68B161ADD4B078BEA7B2FFAB6DADEFC3273D393B81F11B19D68EB69B524C4C69
-2D09F057CB99896335595E587976B8DABD67D0654D
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR12
-%!PS-AdobeFont-1.1: CMR12 1.0
-%%CreationDate: 1991 Aug 20 16:38:05
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR12) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR12 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-34 -251 988 750}readonly def
-/UniqueID 5000794 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5CF4E9D2405B169CD5365D6ECED5D768D66D6C
-68618B8C482B341F8CA38E9BB9BAFCFAAD9C2F3FD033B62690986ED43D9C9361
-3645B82392D5CAE11A7CB49D7E2E82DCD485CBA04C77322EB2E6A79D73DC194E
-59C120A2DABB9BF72E2CF256DD6EB54EECBA588101ABD933B57CE8A3A0D16B28
-51D7494F73096DF53BDC66BBF896B587DF9643317D5F610CD9088F9849126F23
-DDE030F7B277DD99055C8B119CAE9C99158AC4E150CDFC2C66ED92EBB4CC092A
-AA078CE16247A1335AD332DAA950D20395A7384C33FF72EAA31A5B89766E635F
-45C4C068AD7EE867398F0381B07CB94D29FF097D59FF9961D195A948E3D87C31
-821E9295A56D21875B41988F7A16A1587050C3C71B4E4355BB37F255D6B237CE
-96F25467F70FA19E0F85785FF49068949CCC79F2F8AE57D5F79BB9C5CF5EED5D
-9857B9967D9B96CDCF73D5D65FF75AFABB66734018BAE264597220C89FD17379
-26764A9302D078B4EB0E29178C878FD61007EEA2DDB119AE88C57ECFEF4B71E4
-140A34951DDC3568A84CC92371A789021A103A1A347050FDA6ECF7903F67D213
-1D0C7C474A9053866E9C88E65E6932BA87A73686EAB0019389F84D159809C498
-1E7A30ED942EB211B00DBFF5BCC720F4E276C3339B31B6EABBB078430E6A09BB
-377D3061A20B1EB98796B8607EECBC699445EAA866C38E00420B0477533ADB13
-FC3B396C065B09769DAF0871076FB7FD0DC228CF3EE115446C7159B03F19BC6B
-8FDA91BAF28AD303E26F885EE238874B11FEE84C47AF37E871AB5A85B043190E
-E860B6443C43E27EA122F1E49241CA0D3B9F12495B0944DAB562A85D084312AC
-8A5FB7C4DADB70C8D6CB46D3A904810C8A2370F4DB0B95DE9F7CC2A3A3010A92
-CEC7D33F2EBC1ECEDA19CBB9A1B6B585AD17F92473794BDBDEAF6039C28138E3
-D86BFE8DA8607817AEE030753FCE8C7825450B44B1C8CFA47A5B7C5FD7BBA1B3
-9F2E6475558A93B2BA98D8A09E430B4AF3FDDBFF3780EA6F8934946F0C140677
-36129999765DB3EEAD50A9361CF7A62E7BEBB3E889E89C09E8858F16A5A1AEB4
-91547A9E9191A65547D1B5FAE6100779D077A421B10CA20543B1E314D48367A6
-986F72C7B0EFE220717357CF77A8DE4271D549EBFFF1A60BE9199FFB749A343F
-369CE00831FA4E14E251A63CFCB4CBDF460637B87FFDFF96D61143AD64F74C15
-D3275EE8E5FB9A15FFAE606EAD14EC2FD84A0241FF15AD17CA67931B0DE62AFD
-61DC67421FD0F33CC74663B31151B15A360D1CF66C81376739CDCF5033AAF1ED
-B31EB57DB41565B9351AD93D3FCF7A8FD6A0AD93A2AB02782E69D734D46DB3A8
-16AFDE40A7065C78318E97972CEF0B2A4894C7A69F36CFF3FAE5A1747F33E5DD
-60643D4B739C4F21768A58C4646915280FCD2ACE94B8DFA746424F44C1CB6CB7
-53824FAAF6104AE366DA71F1F3877D11873EE186F14C07AEDC343075F3244FE3
-617112401897CF83AB90EA239C92E6A9E7576CD2B197B549EEA3E567ADDE8696
-C08CAA8F28EE6BB0200E2F9F47933096EF4B5501E475640F98A3A60C457789A2
-4523AC41AA94C1ED307218981BD438A1F2002EF99C26C442775812BB91C22F9E
-C0BCDB1A45629C6D211B7360D9B38EC36EF3786566BD442A5FEB82319A510ADF
-F5B6677673075625BCB1904B9893608610A5062680C2480BE4B8D019A3BF9637
-07CD13A4C76D2D24995BEB4A36D2E8C8BE4620C543B9DA56E9C6A251F78BE52F
-D30234C3D77AAC9AC84C32E52D2B17F3F83239C20F31E01D7C00EA7FFA7C235D
-19E3FA0E1D3E8BD969C18DBA194BEEB35030DFB56A5194A7C22C19DE9F24520F
-1F392E4477948386B0392FBB26983604ABF42E941016963436CEDAD3D6C0F84D
-A7EF79BDA85628324ADB51DF1C56868E615C20B044AC98EBCFB11BA68BDE1FCE
-29F4A3B52F8D03D246523D3654D260BDB3B4D5130B225B85B6C59CD896BB0B02
-2796D085A19115D28014868E1D27B76C80B212AF99AD1DF4C91F0797EC9362ED
-01A5297AF7C7B2BB7475A5FFCE8C2773056B0CBB4F4DFA5F9AD9BC04EADF8FB4
-5E14F7D11D4F132065682CA1CB4B3C7B244C4BBD0A6DF919400040E98B37559F
-CB7BCD587B5E9A5ACE99F1598E77C47060C021882F6CDC951E48D07EE13915F3
-AFDD3B8DE365EC99E0130DA3951A3973932CA5BA07953B121F4ED5961C396347
-357767A10C75917BE815BBDD8A2C62F28CDCE980A70D577481ED07A93C4A8846
-95F3CC1370978DE7FF1462B5A6B640F575060F82F0DB86E40D022F40F0F72B2B
-4C172C10E1997F0242E6FE4499E619EA5C64D935E3299A0058781465B11F06FD
-70415603CC8430F57192A8911D38C68E1A9A081E2F91E731110EAC208D288824
-7AD1C9C1A8F9EF44A8C94FEF88197C9051D53160C34D8B887D66C329A71A1B9E
-50953535592DD191AA1C3F468E906BCBDBD441D96B611A45972341671377A6DA
-203E165A80FD021FF198A0805ACE8D306E91E5C3BBEEE93D38F6E69F05581240
-3A7E0881BC7C7AF28E839A5D6A11331F835FFB88A60105EFA343F878C9D2EE3A
-1BF097F88C99AEA7B96D6D04E0FCC80CD09BB8EA5694AF5D2F2685CC311BD952
-750398103CB0D3F495615DC6A783EB100DD5DAFFE327A178563D0E957BBABB3F
-A063A84D36CF9D0EF8C3F1C3A50E1627A55EFBA1CDFC2F7CF6B1D1C35E0D247F
-90A67162D3670A036C555C7D2D1E9B68C579C1310816CA82132A32534DBF3951
-C7B568D21240AD08521DAC285B9695CAFB9C6286BCA4360044A0BD00395FC620
-F9C7637090ECB691F99F80365604B628C233B37B312955A5D765120ADC65934E
-414823DF5B00B1934F5D8C84C336255DC8B11FDD0ACBFDEF963168124DF804F0
-13572E484B95D4A584E80F9831E9888B8E31ADBC427D09A54927D37CAFF5A982
-6E6604D161F07317946AED3BA78C5050A895ED237C03DC6F2B82A6D5EFA5541E
-B5CF3CDC1226FDC9BFB291CE9817C724D13B3485618D29D2C0AE9F68431910DA
-3460EE4586DC29E46674B2124F6C84FBF0A6B022B89433E5DAF73793EEE1EE3B
-339077B6DB5D9020F5552746996AF3DB2FF789968329775D6B2754EE9D3CB11B
-A9C44B45D0AF772CD041AF2E4D9D528B313F34A66537826D2D7C20E1FAE25D19
-3E56EC362FAF639D3B77848CD98255D5BAD543101E03F4604B9EC135FB985D06
-047F7691187A18E5A2A48ECB2A35F477E8DFEB31E414C920F86E8DA6551CCD29
-07B5D0E0A514961094B30DCD7F42A2C1BEEC12FE7B6355DB040E11A660D6B5D9
-E4DA3FF7030F9FA1983C5AA93BAB3FCF63892D76D39819BB9120C25102E62CC2
-6D68DF3B29ED924D4ED269A8BE67B76BEEABDF8BFC86F10CCEE6F30C79C7BEFA
-D6B99B8091D519E8E4D8206501A78BE930248EB6DA69A88FE7E7D27C29474B71
-185EBB5EBAA9C61D36824070ED7E084C96AEF6DF56BB50B9B7E40A0B3A69F965
-4A767BB92FF108BBEF85FA3558C30924F7D373683F5959E496B6CFBBA29DE98D
-526261FFE01C512DE6CF5619F3EC6560E0EDC7DFB8091F493FBD9614BDDED545
-5F4611CC3859E441AB68E2362277282203364F5D563EB0F83A87B0FCEE9DC20A
-CAA0290881C8348F8CECFB07D9E3F1F396FAE05030EF8004579BE14381C08A06
-08A00FCC409BA57BFFC3C112391416289C6C884CFB13DBD74DCAC1DB035D38FF
-ACF2C127A2A447FA8D15E8E6D2FB3A72DFCE4C1A5778458C739E37816EC53460
-F10FE7C51795A44E11A431713BE03DFF8A32D6D6DF482AF94D6BD8AFF8607257
-0F0E1B725F81A2B99A2AE559A8D02E8181E10E4F5F33479281EF2AC5A7AEA418
-385E1513A62589F9A7A379ACF9AD7E4ABC3C2880402AC9BC100B3CD29434A400
-F621EB805D8E5FCEE8731FD1BDAAAE4050C295466CEE03922A1A33354C99D02C
-6EE73EE9A1187149A02558200ED7DD918EAD46757B6A41D8461C67F02E8ABABC
-BF0E4131DC0FF6F0A90DB058B05696AC2FF26D0157884025066E659BBA18A04E
-559E46EC4ED2F4AE1F4A0D99CA1327F90E684F92FC4C0664CC5FC221417E238E
-F110115525DE2F223CF2A5221943DA96A5906EE2DD559B75BFD8715EDA3B51BB
-1E21ECBCD034FD2D92B87095E52DB35F0B4AEF4AA9D43FCE25A5F6ED84A990C5
-5CA01BD84007A6274D1800192CAC865126AE840A4C63699863AA05556A4FCB8D
-C3C4001727ACB6359217D2169B035A56519BB0611220231461B16BBAB6535CC5
-5229E74E33A926EE6E1B3B8E8E25E6D3150DF8C5958DB5BAD188AFA9909483A5
-03FDCE589CFE5B4A1C39BF0B8D7087A1C7EDD05A4D83FCA6F299D7241AD41523
-CAD0857FC5071E8778A913383576DC1014DA5687AAEA934F8287DBCF6575063D
-7C5E81F654AF528AC4602B36B394E68CA916CB4E8CBD1B71130D6D85B9812C60
-4A9253635B8A221EBB3270B4206E4CD0C63E69C4DC492673C8A4E7177B157A7B
-174C2F2435D4BD5FA717EE46FBF8872EBF5023F9020C4F452F2CB37515AF91CE
-2AE60F7807EBBB83BFAD4C0CD8E5711C56427CAC6BA6F29D738140AA1E8CEBC5
-053C646AEABBA1D01749BD4C
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-%%BeginFont: CMR17
-%!PS-AdobeFont-1.1: CMR17 1.0
-%%CreationDate: 1991 Aug 20 16:38:24
-% Copyright (C) 1997 American Mathematical Society. All Rights Reserved.
-11 dict begin
-/FontInfo 7 dict dup begin
-/version (1.0) readonly def
-/Notice (Copyright (C) 1997 American Mathematical Society. All Rights Reserved) readonly def
-/FullName (CMR17) readonly def
-/FamilyName (Computer Modern) readonly def
-/Weight (Medium) readonly def
-/ItalicAngle 0 def
-/isFixedPitch false def
-end readonly def
-/FontName /CMR17 def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] readonly def
-/Encoding 256 array
-0 1 255 {1 index exch /.notdef put} for
-dup 0 /.notdef put
-readonly def
-/FontBBox{-33 -250 945 749}readonly def
-/UniqueID 5000795 def
-currentdict end
-currentfile eexec
-D9D66F633B846A97B686A97E45A3D0AA052A014267B7904EB3C0D3BD0B83D891
-016CA6CA4B712ADEB258FAAB9A130EE605E61F77FC1B738ABC7C51CD46EF8171
-9098D5FEE67660E69A7AB91B58F29A4D79E57022F783EB0FBBB6D4F4EC35014F
-D2DECBA99459A4C59DF0C6EBA150284454E707DC2100C15B76B4C19B84363758
-469A6C558785B226332152109871A9883487DD7710949204DDCF837E6A8708B8
-2BDBF16FBC7512FAA308A093FE5F075EA0A10A15B0ED05D5039DA41B32B16E95
-A3CE9725A429B35BAD796912FC328E3A28F96FCADA20A598E247755E7E7FF801
-BDB00E9B9B086BDBE6EDCF841A3EAFC6F5284FED3C634085BA4EE0FC6A026E96
-96D55575481B007BF93CA452EE3F71D83FAAB3D9DEDD2A8F96C5840EAE5BE5DC
-9322E81DFF5E250DEB386E12A49FC9FBF9B4C25C3283F3CEA74B8278A1B09DA7
-E9AE4FBAAF23EDF5A3E07D39385D521547C3AAAB8EB70549756EBA8EF445AF4A
-497CA924ACCC3DD5456F8E2C7E36946A5BF14E2E959895F7C94F49137256BE46
-4A238684D52792234869EAE1A6D8ADF4E138B79472D2A90A6CA99E2394CC20CD
-3841733046175B20CEBE372327BF13428EED6A3E2FDF84C2DBA4B0AD584EE9DF
-B51828D3B8F385846158C29C9AC3496CB9692DD10219697B2ED4D425C3957FD8
-C4600D76E045C561216EF05D38177243C314877A69A1C22E3BEC611A2EE5A216
-9B7C264CF6D1839DBBD78A40610F2C0D7C2FE09FFA9822FF55035AD52546970F
-83EED2D30EABB1F303091EBC11A5379B12BB3F405E371519A53EA9D66174ED25
-A2E55463EC71A97BE4C04B39E68112956117C8252DB6FB14AB64534B4BCD568B
-246DB833982B38CDE7268BBF74B6B0C18091E1B1F87D32D66F4DD023D1F10D2A
-7736A960F72AC01F733A11023832CD68FB6288A5977743F6F3F23E0C1657CF5D
-E8374835BDBD2DED3690C84A1EBB8E2383A5E49E610B6F5F0F5F5EC43CFD16FF
-24FEEFB92425CCB577E17FDE4EA6C50E1448DC5726A21888E25B6D6B52DA3D3C
-E4C4C6A73C176DFEB60B6B6191B336AC4F5BAA123E1B3B6FAE4B3FA9DC8F7E39
-335277EF2294315BE95F64EBDB1F393B293FD0FDB9DEE6C89082232013130D28
-9234FF12DF47D454558A1EE8603B2832772E5CA07D18B34A4763D5B890F7173F
-B8F6470B2BB92BA41AF521B112F2CA2BFA2CE30BB510C2855E98D39EF436AEFA
-A2C75E13F452E7EAFF5D31D61135B8328720C77161F81BC1F1679DEF9A49DA23
-97CEC1E5527D743ECB1E3EC829DAFE7C5501ED01F16C410DAD2B8D38B4918954
-C2960F21335076C6E9019C993C027C95C86558BBE86938A2B1863FC3D74A309F
-B561819949153EE30430E32E6D7A1C33319957696FFA5EBBA95EBBF14CB06538
-E524A78C55AFED2D3F21AE4B30DA4AE725EE3287130B30581EB399C0FA37F69A
-1ECC07B87067CB41EAD2A717490A413734C42B5396BE07C5B40FFDB31ED24C1B
-96EC2547B4F38A6163F7C00644F85F68C14EA7CD2C4DA2274382C575484F30B1
-E7B9618C78FBA2F343836DB53812A53107878071A5EB084D0FC3166B2F09403A
-A69F4A3A9E2CA8CA4CCAA69D6D49DA30C03F1D2F8FEF33CC0AF6C7537280FF06
-F3388D498D1823723168B9122707A6F6CC15A9223A66D73363CD28E88C5AF247
-4F72DDE6F49C907259605977F6D6806320B4DC6E0C9F987B8B6599DAFCD30EB8
-7C8CECD1C627E5FE18F45634C5467F675A7E9A771DECE093900422AD704FC2D5
-9F138AD9E79C9D49B7683CADE9EEB8E720D281D616FF985DBE5087E19179616D
-BE3DD38A08A6D35351FDACDEACAA086C66576F908A1F30591AD4BDF0291C3BAE
-312B32817CFB7121746BB0E7DCAC178CEFBD1ADF839F94BD92FEA13B2398B0F1
-A35391825765A596C6FEC491A0D1E9A1DB0FA129792BA705113FEECC39CCCFDF
-2ABE2E50442920228216530A6F455A015FC2DF5AF8803354C412F031187367D6
-15E73F222B69EA11725E481384B83357F187E6ADB8A5BD01CA9BCBA9F8F067BC
-C950C510B2B30E013DB35E952BFA07A63B1E6D698B35FED3DC05C3AAD19EDC36
-B24DEC3FF944C84285F2777912B87A7476DE924969C950D01AFFDD3178257C22
-E3BC95CFCAAC0038BC3AC7ED34DD34A84C2FDCEEEFAC14B1524B3B4C511B45BC
-C09D128B23DDBF366B64936FE57E7994E7F7179D3D978C082D9966E59C3B3AD5
-7D9788307A4F347827C3E337C27B0757449831683AF0CB0E4208D2320AE7DDBA
-60567F301870F35EB6B4E1ECE7F0F0995BB320795DCD51B51E67D6407F62AE86
-D8EB5633C774CCD734E233E33BD4AD2D44F2A154B7BC7647A3BB0BB5325698C1
-763BA4FDCC4BF877F4982A34C0C4479A142B5382D326413B1DA123D0E63BCDD1
-40A316437FD08A37C4E539411003F9D8EA28DABE21A9DF3F8A5DDF4FE8C6B368
-A3592F00BC19CF09B71F46B2F19343E9315AD5F016481A3BB7BA711512A4DF11
-B44B4129CA553D1959346A451FDB955572D14590ADF3E5229917B5C1667465A7
-D858CC72A228B83E2559D79959F9464129861E731A1433017884B5B2BA5164D9
-ABB72C9CF390593E9CACBF27F97DDCDDFFC4DFEBAA98A8E569CF58AECED5CAEF
-C1ADE621DD1F80AEAE56EBC126F2BB3F6A359408D9E68801236704356C8C19E1
-EA6C6B1491C1D40EA0AF309A5CFCA24366662E87D7FBD89452DD13EA1A8FA0AD
-CDA19E6FE272A1E980ED50E642A2F519606025EC41E9581419A7E87E1043714A
-EAA3A9D3AEC073D2DA0EECCEC207E5DB0B46E27324B1F3ED2B1A383043848A4E
-BD9BCF168BFD4BADEC3F0E79C72D59FF24426E502EB09A58E28E889D033B53BA
-215D2166854D375120444BA4EF33B1B8F8064E4BD84E12534CE651D078CD3BB4
-8E6C06DB5FBCD37FD2AB91D62C538395E795F546B63ADD840D044E9165756B97
-7BF8F91446A1072F60306832BFBEAF6C72C0B1401FC46B5D772F7881EAEB73B9
-CEC461027575D1C267F7EFBDE5E3C384D32BECC4B3B6EFD30A9E7B36A6246632
-843FFDC09C3E0957832FA22FDE31E4F49AA473CF98D454B04952047E206426EF
-2EF33BCCAA5F596CAB8E4B7902602D912F29AFC9A34863FCD1E0DC4122BAE1C7
-80E6351ECC95A730E552AA8B2E814F2D8A310862EF47
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000
-cleartomark
-%%EndFont 
-TeXDict begin 39158280 55380996 1000 600 600 (README.dvi)
-@start /Fa 139[51 1[51 2[51 111[{ TeX09fbbfacEncoding ReEncodeFont }3
-99.6264 /CMTT12 rf /Fb 182[36 4[69 5[65 1[65 37[50 22[{
- TeXaae443f0Encoding ReEncodeFont }5 83.022 /CMMI10 rf
-/Fc 145[42 3[23 2[42 42 86[42 15[{ TeXbbad153fEncoding ReEncodeFont }5
-83.022 /CMSY10 rf /Fd 134[40 39 55 38 45 28 34 35 38
-42 42 47 68 21 38 25 25 42 38 1[38 42 38 38 42 6[51 62
-62 83 4[61 2[64 62 4[32 4[63 59 58 62 6[25 11[25 46[{
- TeX74afc74cEncoding ReEncodeFont }38 83.022 /CMTI10
-rf /Fe 135[35 3[35 35 35 1[35 1[35 35 35 2[35 35 35 1[35
-35 35 35 35 8[35 3[35 35 35 3[35 35 35 35 1[35 4[35 1[35
-35 35 8[35 1[35 2[35 35 35 35 35 4[35 35 40[{
- TeX09fbbfacEncoding ReEncodeFont }38 66.4176 /CMTT8
-rf /Ff 139[24 29 13[33 36 1[33 36 97[{
- TeX74afc74cEncoding ReEncodeFont }6 66.4176 /CMTI8 rf
-/Fg 134[37 37 51 37 39 27 28 28 1[39 35 39 59 20 37 22
-20 39 35 22 31 39 31 39 35 3[20 35 20 6[51 39 52 1[48
-55 53 4[25 2[46 48 54 51 50 53 6[20 35 35 1[35 35 35
-35 1[35 2[20 24 20 9[35 20 20[39 12[{ TeXf7b6d320Encoding ReEncodeFont }
-54 66.4176 /CMR8 rf /Fh 202[30 30 30 30 30 49[{
- TeXf7b6d320Encoding ReEncodeFont }5 49.8132 /CMR6 rf
-/Fi 202[33 33 33 33 33 49[{ TeXf7b6d320Encoding ReEncodeFont }5
-58.1154 /CMR7 rf /Fj 134[59 59 81 59 62 44 44 46 1[62
-56 62 93 31 59 1[31 62 56 34 51 62 50 62 54 8[85 116
-85 86 78 62 84 84 77 84 88 106 67 88 1[42 88 88 70 74
-86 81 80 85 7[56 56 56 56 56 56 56 56 56 56 56 31 37
-31 31[62 65 11[{ TeXf7b6d320Encoding ReEncodeFont }62
-99.6264 /CMBX12 rf /Fk 133[60 71 71 97 71 75 52 53 55
-1[75 67 75 112 37 71 1[37 75 67 41 61 75 60 75 65 8[102
-139 102 103 94 75 100 101 92 101 105 128 81 2[50 105
-106 85 88 103 97 96 102 7[67 67 67 67 67 67 67 67 67
-67 67 37 1[37 31[75 12[{ TeXf7b6d320Encoding ReEncodeFont }60
-119.552 /CMBX12 rf /Fl 139[75 1[79 1[108 7[108 2[88 3[94
-29[140 9[97 97 97 97 97 97 97 97 97 97 48[{
- TeXf7b6d320Encoding ReEncodeFont }17 172.188 /CMBX12
-rf /Fm 129[44 44 44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44 44
-44 44 44 44 44 44 44 44 33[{ TeX09fbbfacEncoding ReEncodeFont }94
-83.022 /CMTT10 rf /Fn 132[42 37 44 44 60 44 46 32 33
-33 44 46 42 46 69 23 44 25 23 46 42 25 37 46 37 46 42
-3[23 42 23 1[62 62 85 62 62 60 46 61 65 57 65 62 76 52
-65 43 30 62 65 54 57 63 60 59 62 65 39 1[65 1[23 23 42
-42 42 42 42 42 42 42 42 42 42 23 28 23 1[42 32 32 23
-4[42 8[42 10[69 46 46 48 11[{ TeXf7b6d320Encoding ReEncodeFont }84
-83.022 /CMR10 rf /Fo 132[48 1[50 1[69 50 53 37 38 39
-1[53 48 53 80 27 2[27 53 48 29 44 53 42 53 46 9[99 2[66
-53 72 1[65 72 1[91 57 75 1[36 1[75 60 1[73 69 68 72 6[27
-48 48 48 48 48 48 48 48 48 48 48 1[32 27 31[53 12[{
- TeXf7b6d320Encoding ReEncodeFont }53 83.022 /CMBX10
-rf /Fp 134[123 123 168 123 129 90 92 95 1[129 116 129
-194 65 2[65 129 116 71 106 129 103 129 113 12[162 129
-173 1[159 175 1[220 140 2[87 2[146 1[178 168 165 175
-15[116 3[77 65 31[129 12[{ TeXf7b6d320Encoding ReEncodeFont }39
-206.559 /CMBX12 rf /Fq 138[54 1[38 4[54 81 27 6[43 3[49
-22[50 6[70 1[73 7[49 6[49 1[49 3[27 18[49 25[{
- TeXf7b6d320Encoding ReEncodeFont }15 99.6264 /CMR12
-rf /Fr 154[58 16[96 1[98 4[122 7[90 101 2[99 15[66 49[{
- TeXf7b6d320Encoding ReEncodeFont }8 143.462 /CMR17 rf
-end
-%%EndProlog
-%%BeginSetup
-%%Feature: *Resolution 600dpi
-TeXDict begin
-%%PaperSize: A4
- end
-%%EndSetup
-%%Page: 1 1
-TeXDict begin 1 0 bop 1353 2306 a Fr(MeT)-11 b(A1)43
-b(README)1574 2842 y Fq(Claus)33 b(A\031mann)1621 3131
-y(June)g(2,)g(2009)p eop end
-%%Page: 1 2
-TeXDict begin 1 1 bop 0 1241 a Fp(Con)-6 b(ten)g(ts)0
-1809 y Fo(1)77 b(In)m(tro)s(duction)32 b(to)f(MeT)-8
-b(A1)2620 b(6)125 1962 y Fn(1.1)83 b(MeT)-7 b(A1)28 b(is)f(a)h(Message)
-e(T)-7 b(ransfer)26 b(Agen)n(t)63 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)143 b(6)315 2116 y(1.1.1)94 b(Main)28
-b(Comp)r(onen)n(ts)f(of)g(MeT)-7 b(A1)60 b(.)41 b(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)g(.)f(.)143 b(6)125 2269 y(1.2)83 b(Do)r(cumen)n
-(tation)53 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)143 b(7)315 2422
-y(1.2.1)94 b(T)n(yp)r(ographical)26 b(Con)n(v)n(en)n(tions)57
-b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)143
-b(7)125 2575 y(1.3)83 b(V)-7 b(ersion)82 b(.)42 b(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)143 b(8)125 2729 y(1.4)83 b(Curren)n(t)27
-b(State)44 b(.)e(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)143 b(8)315
-2882 y(1.4.1)94 b(Pro)n(viding)26 b(F)-7 b(eedbac)n(k)82
-b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)143 b(8)125 3035 y(1.5)83 b(F)-7 b(or)27 b(the)h(Impatien)n(t)f(.)42
-b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)143 b(8)0 3271 y Fo(2)77 b(Building,)29
-b(T)-8 b(esting,)31 b(and)h(Installing)f(MeT)-8 b(A1)1912
-b(9)125 3425 y Fn(2.1)83 b(V)-7 b(erifying)28 b(the)g(Source)f(Co)r(de)
-g(Distribution)f(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)143
-b(9)125 3578 y(2.2)83 b(Building)28 b(MeT)-7 b(A1)68
-b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)g(.)f(.)143 b(9)315 3731 y(2.2.1)94
-b(Compile-Time)27 b(Con\014guration)f(Options)84 b(.)42
-b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(10)125 3884 y(2.3)83
-b(T)-7 b(est)28 b(Programs)76 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(11)315 4038 y(2.3.1)94 b(En)n(vironmen)n(t)26 b(V)-7
-b(ariables)27 b(used)g(b)n(y)h(T)-7 b(est)27 b(Programs)68
-b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)102 b(11)315 4191 y(2.3.2)94 b(Kno)n(wn)27
-b(T)-7 b(est)27 b(Program)e(Problems)34 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)102 b(12)125 4344 y(2.4)83 b(Installing)28
-b(MeT)-7 b(A1)36 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(13)315
-4497 y(2.4.1)94 b(Directories,)27 b(Files,)g(and)h(P)n(ermissions)60
-b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(14)315
-4651 y(2.4.2)94 b(Upgrading)27 b(from)g(earlier)f(MeT)-7
-b(A1)27 b(V)-7 b(ersions)48 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(15)0 4887 y Fo(3)77 b(Run-Time)30 b(Con\014guration)i(of)f(MeT)-8
-b(A1)2075 b(16)125 5040 y Fn(3.1)83 b(Ov)n(erview)75
-b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(16)125
-5193 y(3.2)83 b(Con\014guration)27 b(File)g(Syn)n(tax)54
-b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)102 b(16)315 5347 y(3.2.1)94 b(Con\014guration)26
-b(File)i(V)-7 b(alues)62 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)102 b(17)125 5500 y(3.3)83 b(Example)27
-b(Con\014guration)f(File)54 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(17)1869 5768 y(1)p
-eop end
-%%Page: 2 3
-TeXDict begin 2 2 bop 125 523 a Fn(3.4)83 b(Common)28
-b(Global)f(Con\014guration)67 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)g(.)f(.)102 b(18)125 676 y(3.5)83 b(Common)28
-b(Con\014guration)e(Options)c(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
-g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)102 b(18)125 830 y(3.6)83 b(P)n(athnames)27
-b(for)g(Files,)h(Directories,)e(and)h(Maps)66 b(.)41
-b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(19)125 983 y(3.7)83
-b(Con\014guration)27 b(for)g(MCP)21 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)
-g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(19)125 1136 y(3.8)83 b(Con\014guration)27 b(for)g(QMGR)76
-b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)102 b(21)315 1289 y(3.8.1)94 b(Con\014guration)26
-b(Map)i(for)f(QMGR)71 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-102 b(23)125 1443 y(3.9)83 b(Con\014guration)27 b(for)g(SMAR)34
-b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)102 b(24)315 1596 y(3.9.1)94 b(Declaring)27
-b(Maps)g(for)g(SMAR)85 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
-g(.)f(.)102 b(24)315 1749 y(3.9.2)94 b(Con\014guration)26
-b(Options)h(for)g(SMAR)36 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-102 b(24)315 1902 y(3.9.3)94 b(Con\014guration)26 b(Maps)h(for)g(SMAR)
-61 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(27)315 2055 y(3.9.4)94 b(Greylisting)72 b(.)41 b(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
-g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(31)125 2209 y(3.10)41 b(Con\014guration)27 b(for)g(SMTP)g(Serv)n(er)
-43 b(.)e(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
-g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(32)315 2362 y(3.10.1)52 b(SMTP)28 b(Serv)n(er)e(Session)h
-(Con\014guration)69 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(36)315 2515 y(3.10.2)52 b(Multiple)29 b(SMTP)e(Serv)n(ers)f(with)i
-(di\013eren)n(t)g(Con\014gurations)20 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(36)315 2668
-y(3.10.3)52 b(Protecting)26 b(Recipien)n(ts)80 b(.)42
-b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(37)125 2822 y(3.11)41 b(Con\014guration)27 b(for)g(SMTP)g(Clien)n(t)
-52 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(38)315 2975 y(3.11.1)52 b(SMTP)28 b(Clien)n(t)f(Session/Recipien)n(t)
-g(Con\014guration)82 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(38)125 3128
-y(3.12)41 b(Lo)r(okup)27 b(Orders)62 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(38)315 3281 y(3.12.1)52 b(Lo)r(okup)27 b(Orders)f(in)i(Maps)57
-b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
-g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(38)315 3435 y(3.12.2)52 b(Lo)r(okup)27 b(Orders)f(for)h(An)n(ti-Spam)
-h(Measures)48 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(39)315
-3588 y(3.12.3)52 b(Macro)26 b(Replacemen)n(ts)h(in)h(RHS)72
-b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(41)125 3741 y(3.13)41 b(ST)-7 b(AR)g(TTLS)29 b(Restrictions)39
-b(.)i(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
-g(.)f(.)102 b(41)125 3894 y(3.14)41 b(VERP)50 b(.)41
-b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(42)0
-4131 y Fo(4)77 b(Running)30 b(MeT)-8 b(A1)2857 b(43)125
-4284 y Fn(4.1)83 b(Starting)28 b(MeT)-7 b(A1)80 b(.)42
-b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)102 b(43)125 4437 y(4.2)83 b(Using)28
-b(MeT)-7 b(A1)27 b(only)h(for)f(Outgoing)f(Mail)80 b(.)42
-b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(43)125
-4590 y(4.3)83 b(Using)28 b(MeT)-7 b(A1)27 b(for)g(Incoming)h(Mail)70
-b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(44)315 4744 y(4.3.1)94 b(Lo)r(cal)27 b(Deliv)n(ery)g(and)g(Sp)r
-(ecifying)h(Lo)r(cal)f(Domains)43 b(.)e(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(44)315
-4897 y(4.3.2)94 b(Sp)r(ecifying)28 b(V)-7 b(alid)28 b(Lo)r(cal)f
-(Addresses)47 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(44)125 5050 y(4.4)83 b(Using)28 b(MeT)-7 b(A1)27 b(as)g(Gatew)n(a)n
-(y)46 b(.)c(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
-g(.)f(.)102 b(45)125 5203 y(4.5)83 b(Using)28 b(MeT)-7
-b(A1)27 b(as)g(Bac)n(kup)g(MX)h(Serv)n(er)59 b(.)41 b(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(45)315 5357 y(4.5.1)94
-b(Note)28 b(ab)r(out)f(Bac)n(kup)g(MX)h(Serv)n(ers)19
-b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(45)125
-5510 y(4.6)83 b(Miscellaneous)27 b(Programs)57 b(.)41
-b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)102 b(46)1869 5768 y(2)p eop end
-%%Page: 3 4
-TeXDict begin 3 3 bop 315 523 a Fn(4.6.1)94 b(Do)28 b(not)f(run)h
-(programs)d(as)i Fm(root)f Fn(User)45 b(.)d(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)102 b(46)315 676 y(4.6.2)94 b(Displa)n(ying)27 b(Con)n(ten)n(t)g
-(of)h(Mail)f(Queues)34 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(46)315 830 y(4.6.3)94 b(In)n(teracting)27 b(with)h(QMGR)44
-b(.)d(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(46)125 983 y(4.7)83 b(Reloading)27 b(Maps)d(.)41 b(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)102 b(46)125 1136 y(4.8)83 b(Logging)62 b(.)42 b(.)g(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)102 b(46)315 1289 y(4.8.1)94 b(Log\014le)27
-b(Rotation)78 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)g(.)f(.)102 b(47)125 1443 y(4.9)83 b(Regular)27
-b(Chec)n(ks)44 b(.)d(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(47)125
-1596 y(4.10)41 b(Dealing)28 b(with)g(Errors)79 b(.)42
-b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)102 b(48)315 1749 y(4.10.1)52 b(Resource)27
-b(Problems)38 b(.)k(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)102 b(48)315 1902 y(4.10.2)52 b(Database)27
-b(Problems)g(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)102 b(48)315 2055 y(4.10.3)52 b(W)-7
-b(riting)28 b(Core)e(Dumps)36 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(49)125 2209 y(4.11)41
-b(Replacemen)n(ts)28 b(for)f(F)-7 b(eatures)27 b(a)n(v)-5
-b(ailable)26 b(in)i(other)f(MT)-7 b(As)35 b(.)42 b(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(49)0 2445 y Fo(5)77 b(P)m(olicy)32 b(Milter)3006 b(50)125
-2598 y Fn(5.1)83 b(P)n(olicy)27 b(Milter)g(Ov)n(erview)e(.)42
-b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
-g(.)f(.)102 b(50)125 2751 y(5.2)83 b(Nativ)n(e)28 b(P)n(olicy)e(Milter)
-i(API)80 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)102 b(50)315 2905 y(5.2.1)94 b(Data)28
-b(Structures)20 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(50)315 3058 y(5.2.2)94
-b(Start)28 b(and)f(Stop)62 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(51)315
-3211 y(5.2.3)94 b(New)28 b(SMTP)f(Serv)n(er)50 b(.)42
-b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-102 b(51)315 3364 y(5.2.4)94 b(SMTP)28 b(Session)e(and)i(T)-7
-b(ransaction)39 b(.)j(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(52)315 3518 y(5.2.5)94 b(Set)28 b(and)g(Get)g(pmilter)f(Con)n(texts)
-38 b(.)j(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(53)315 3671 y(5.2.6)94 b(Accessing)27 b(MT)-7 b(A)28
-b(Sym)n(b)r(ols)e(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)102 b(54)315 3824 y(5.2.7)94 b(Sender)28 b(Mo)r
-(di\014cation)66 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)102 b(55)315 3977 y(5.2.8)94 b(Recipien)n(t)28
-b(Mo)r(di\014cations)67 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)102 b(55)315 4131 y(5.2.9)94 b(Header)27
-b(Mo)r(di\014cations)22 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(56)315 4284 y(5.2.10)52
-b(Message)26 b(Replacemen)n(t)69 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(56)315 4437 y(5.2.11)52
-b(F)-7 b(urther)28 b(Capabilities)64 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(56)315
-4590 y(5.2.12)52 b(Miscellaneous)27 b(F)-7 b(unctions)48
-b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
-g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(57)315 4744 y(5.2.13)52 b(Return)28 b(V)-7 b(alues)83
-b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)102 b(58)315 4897 y(5.2.14)52 b(Implemen)n(tation)28
-b(Notes)54 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
-g(.)f(.)102 b(58)125 5050 y(5.3)83 b(P)n(olicy)27 b(Milter)g(Examples)
-80 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)102 b(58)315 5203 y(5.3.1)94 b(Compiling)27
-b(P)n(olicy)g(Milters)80 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)102 b(59)0 5440 y Fo(6)77 b(Miscellaneous)2981
-b(60)1869 5768 y Fn(3)p eop end
-%%Page: 4 5
-TeXDict begin 4 4 bop 125 523 a Fn(6.1)83 b(T)-7 b(roublesho)r(oting)22
-b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(60)315 676 y(6.1.1)94
-b(Startup)28 b(Problems)22 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
-g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(60)315 830
-y(6.1.2)94 b(Log\014le)27 b(En)n(tries)74 b(.)42 b(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(60)125 983 y(6.2)83 b(Ca)n(v)n(eats)65 b(.)42 b(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)102 b(61)125 1136 y(6.3)83 b(Chec)n(ks)27
-b(in)h(SMTP)g(Serv)n(er)59 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
-g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(61)315 1289
-y(6.3.1)94 b(Strict)28 b(RF)n(C)g(Compliance)68 b(.)41
-b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(61)315 1443 y(6.3.2)94 b(V)-7 b(arious)27 b(Chec)n(ks)46
-b(.)c(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)102 b(61)125 1596 y(6.4)83 b(Securit)n(y)28
-b(Chec)n(ks)j(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(62)125
-1749 y(6.5)83 b(Restrictions)49 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-102 b(62)125 1902 y(6.6)83 b(Co)r(de)28 b(Review,)f(Enhancemen)n(ts,)g
-(P)n(atc)n(hes)66 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(62)125 2055 y(6.7)83 b(P)n(orting)78 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)102 b(62)125 2209 y(6.8)83 b(V)-7 b(ersion)27
-b(Naming)j(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(63)315
-2362 y(6.8.1)94 b(Snapshots)42 b(.)g(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(63)0 2598 y Fo(7)77 b(Data)33 b(Flo)m(w)e(in)g(MeT)-8
-b(A1)2668 b(64)125 2751 y Fn(7.1)83 b(Data)28 b(Flo)n(w)f(in)h(MeT)-7
-b(A1)25 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
-h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(64)0 2988 y Fo(8)77
-b(Adv)-5 b(anced)32 b(Con\014guration)g(Options)2185
-b(66)125 3141 y Fn(8.1)83 b(Ov)n(erview)75 b(.)42 b(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)102 b(66)315 3294 y(8.1.1)94 b(Flags)21
-b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(66)125 3447
-y(8.2)83 b(Adv)-5 b(anced)28 b(Con\014guration)e(for)h(MCP)f(.)42
-b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(66)125 3601 y(8.3)83 b(Adv)-5 b(anced)28 b(Con\014guration)e(for)h
-(QMGR)82 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(67)125 3754 y(8.4)83 b(Adv)-5 b(anced)28 b(Con\014guration)e(for)h
-(SMAR)39 b(.)j(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(68)125 3907 y(8.5)83 b(Adv)-5 b(anced)28 b(Con\014guration)e(for)h
-(SMTP)h(Serv)n(er)47 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(68)125 4060 y(8.6)83 b(Adv)-5 b(anced)28 b(Con\014guration)e(for)h
-(SMTP)h(Clien)n(t)56 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(69)0 4297 y Fo(9)77 b(T)-8 b(uning)3267 b(70)125 4450
-y Fn(9.1)83 b(Size)28 b(of)g(Queues,)f(Cac)n(hes,)f(and)i(Databases)35
-b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(70)125
-4603 y(9.2)83 b(Disk)28 b(I/O)23 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)102 b(70)125 4756 y(9.3)83 b(Pro)r(cesses)26
-b(and)h(Threads)40 b(.)i(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(71)0 4993 y Fo(10)29
-b(F)-8 b(ormat)32 b(Sp)s(eci\014cations)2659 b(72)125
-5146 y Fn(10.1)41 b(So)r(c)n(k)n(et)27 b(Map)54 b(.)41
-b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(72)125 5299 y(10.2)41
-b(F)-7 b(ormat)27 b(of)h(Session/T)-7 b(ransaction)25
-b(Iden)n(ti\014ers)74 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(73)125 5452 y(10.3)41 b(Log\014le)27 b(F)-7 b(ormat)76
-b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(73)1869 5768 y(4)p
-eop end
-%%Page: 5 6
-TeXDict begin 5 5 bop 125 523 a Fn(10.4)41 b(F)-7 b(ormat)27
-b(of)h(Receiv)n(ed)f(Header)71 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(74)125 676 y(10.5)41
-b(F)-7 b(ormat)27 b(of)h(DSNs)83 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h
-(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
-f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(75)0 913 y Fo(11)29 b(Setup)i(for)h(ST)-8 b(AR)g(TTLS)2651
-b(76)125 1066 y Fn(11.1)41 b(Certi\014cates)27 b(for)g(ST)-7
-b(AR)g(TTLS)63 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)102 b(76)0 1302 y Fo(12)29 b(More)i(Ab)s(out)g
-(Con\014guration,)g(Compilation,)f(Debugging,)g(and)i(T)-8
-b(esting)812 b(77)125 1455 y Fn(12.1)41 b(Compile)28
-b(Time)g(Options)36 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
-h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(77)315 1609
-y(12.1.1)52 b(Generic)66 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(77)315 1762 y(12.1.2)52 b(QMGR)77 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
-(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(77)315 1915 y(12.1.3)52 b(SMAR)34 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)
-h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
-(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
-102 b(77)315 2068 y(12.1.4)52 b(SMTPS)59 b(.)41 b(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)102 b(78)315 2222 y(12.1.5)52 b(Debugging)27 b(Compile)h(Time)f
-(Options)67 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
-f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(78)125 2375 y(12.2)41 b(P)n(ossible)27 b(Compilation)g(Problems)f(or)
-g(W)-7 b(arnings)39 b(.)i(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
-(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102
-b(79)125 2528 y(12.3)41 b(More)27 b(Ab)r(out)h(T)-7 b(est)28
-b(Programs)55 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
-(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
-f(.)h(.)g(.)f(.)102 b(79)315 2681 y(12.3.1)52 b(More)27
-b(En)n(vironmen)n(t)f(V)-7 b(ariables)27 b(used)g(b)n(y)g(T)-7
-b(est)28 b(Programs)47 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
-(.)h(.)f(.)h(.)g(.)f(.)102 b(79)315 2835 y(12.3.2)52
-b(Other)27 b(P)n(oten)n(tial)g(Problems)f(with)i(T)-7
-b(est)28 b(Programs)78 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
-(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)102 b(79)0 3071 y
-Fo(13)29 b(Licenses)3216 b(81)1869 5768 y Fn(5)p eop
-end
-%%Page: 6 7
-TeXDict begin 6 6 bop 0 1199 a Fl(Chapter)65 b(1)0 1668
-y Fp(In)-6 b(tro)6 b(duction)78 b(to)g(MeT)-19 b(A1)0
-2203 y Fk(1.1)135 b(MeT)-11 b(A1)44 b(is)i(a)f(Message)h(T)-11
-b(ransfer)44 b(Agen)l(t)0 2439 y Fn(This)22 b(distribution)g(con)n
-(tains)f(the)h(source)f(co)r(de)h(for)f(MeT)-7 b(A1)22
-b(whic)n(h)g(implemen)n(ts)g(a)g(message)e(transfer)h(agen)n(t)g(\(MT)
--7 b(A\).)0 2538 y(It)35 b(supp)r(orts)f(the)g(Simple)h(Mail)g(T)-7
-b(ransfer)33 b(Proto)r(col)f(\(SMTP\))j(as)f(sp)r(eci\014ed)g(b)n(y)h
-(RF)n(C)f(2821)e([Kle01)o(])j(and)f(v)-5 b(arious)0 2638
-y(extensions,)30 b(e.g.,)h(ST)-7 b(AR)g(TTLS)31 b([Hof99)o(],)h(A)n
-(UTH)e([My)n(e99)o(],)h(PIPELINING)f([F)-7 b(re00)o(],)31
-b(as)e(w)n(ell)i(as)e(other)h(proto)r(cols,)0 2738 y(e.g.,)d(LMTP)g
-([My)n(e96)o(].)0 2891 y(MeT)-7 b(A1)38 b(is)f(in)n(tended)h(to)g(b)r
-(e)g(used)g(as)f(a)g(secure)g(and)g(e\016cien)n(t)h(mail)g(gatew)n(a)n
-(y)-7 b(.)65 b(It)38 b(do)r(es)g(not)f(pro)n(vide)g(an)n(y)g(mail)0
-2990 y(con)n(ten)n(t)i(mo)r(di\014cation)h(capabilities,)j(e.g.,)f
-(masquerading)c(of)i(addresses)e(or)h(c)n(hanging)g(\(addition,)k(remo)
-n(v)-5 b(al\))39 b(of)0 3090 y(headers.)d(Later)27 b(v)n(ersions)e
-(will)j(probably)f(add)g(suc)n(h)g(capabilities.)0 3376
-y Fj(1.1.1)112 b(Main)39 b(Comp)s(onen)m(ts)g(of)e(MeT)-9
-b(A1)0 3583 y Fn(MeT)i(A1)34 b(is)g(a)g(mo)r(dularized)g(message)e
-(transfer)i(agen)n(t)f(consisting)g(of)i(\014v)n(e)e(\(or)h(more\))g(p)
-r(ersisten)n(t)g(pro)r(cesses,)g(four)0 3683 y(of)d(whic)n(h)g(are)f(m)
-n(ulti-threaded.)46 b(A)32 b(cen)n(tral)e(queue)h(manager)e(\(QMGR\))i
-(con)n(trols)f(SMTP)g(serv)n(ers)f(\(SMTPS\))j(and)0
-3782 y(SMTP)h(clien)n(ts)g(\(SMTPC\))g(to)g(receiv)n(e)f(and)h(send)g
-(e-mails,)h(an)f(address)f(resolv)n(er)f(\(SMAR\))j(pro)n(vides)e(lo)r
-(okups)g(in)0 3882 y(v)-5 b(arious)37 b(maps)h(including)g(DNS)h(for)f
-(mail)g(routing,)i(and)e(a)g(main)g(con)n(trol)f(program)f(\(MCP\))i
-(starts)g(the)g(others)0 3981 y(pro)r(cesses)27 b(and)h(w)n(atc)n(hes)g
-(o)n(v)n(er)f(their)h(execution.)40 b(The)28 b(queue)h(manager)e
-(organizes)f(the)j(\015o)n(w)f(of)g(messages)f(through)0
-4081 y(the)k(system)g(and)g(pro)n(vides)f(measures)g(to)h(a)n(v)n(oid)e
-(o)n(v)n(erloading)g(the)i(lo)r(cal)g(or)f(remote)g(systems)h(b)n(y)g
-(implemen)n(ting)g(a)0 4181 y(cen)n(tral)c(con)n(trol)f(instance.)0
-4334 y(More)38 b(information)h(ab)r(out)g(eac)n(h)g(comp)r(onen)n(t)g
-(will)g(b)r(e)h(giv)n(en)e(in)i(the)g(appropriate)d(sections.)72
-b(Complete)39 b(do)r(cu-)0 4434 y(men)n(tation)31 b(and)f(bac)n
-(kground)f(information)h(can)h(b)r(e)g(found)g(in)h([A\031m)n(b)o(].)47
-b(Section)31 b(7.1)f(describ)r(es)g(the)i(data)e(\015o)n(w)g(in)0
-4533 y(MeT)-7 b(A1,)24 b(the)f(follo)n(wing)e(is)i(a)f(brief)h(summary)
--7 b(.)34 b(Figure)22 b(1.1)g(sho)n(ws)g(the)h(in)n(teraction)f(of)g
-(the)h(v)-5 b(arious)22 b(comp)r(onen)n(ts)g(and)0 4633
-y(databases)353 4603 y Fi(1)389 4633 y Fn(.)53 b(Incoming)32
-b(messages)g(are)g(accepted)g(b)n(y)h(an)g(SMTP)g(serv)n(er)e
-(\(SMTPS\))i(whic)n(h)g(stores)f(the)h(messages)0 4732
-y(in)g(the)h(con)n(ten)n(t)e(database)g(\(CDB\).)i(The)f(en)n(v)n(elop)
-r(e)f(information,)h(i.e.,)i(sender)d(and)h(recipien)n(ts,)h(is)e
-(stored)h(b)n(y)f(the)0 4832 y(queue)23 b(manager)e(in)i(an)f(incoming)
-g(queue)h(\(IQDB\))g(and)g(written)g(to)f(disk)h(to)g(the)g(incoming)f
-(queue)h(bac)n(kup)f(database)0 4932 y(\(IBDB\).)33 b(F)-7
-b(or)31 b(a)g(deliv)n(ery)-7 b(,)32 b(the)g(en)n(v)n(elop)r(e)f
-(information)g(m)n(ust)h(b)r(e)h(transferred)d(in)n(to)h(the)i(activ)n
-(e)e(queue)g(\(A)n(Q\).)i(The)0 5031 y(sc)n(heduler)e(in)i(QMGR)f(tak)n
-(es)f(recipien)n(t)h(en)n(v)n(elop)r(es)f(from)g(A)n(Q)h(and)g(creates)
-f(transactions)f(whic)n(h)j(are)e(giv)n(en)g(to)h(an)0
-5131 y(SMTP)24 b(clien)n(t)h(\(SMTPC\))g(for)f(deliv)n(ery)-7
-b(.)35 b(An)26 b(SMTP)e(clien)n(t)h(tak)n(es)f(the)h(transaction)e
-(information)h(and)h(tries)f(to)h(send)0 5231 y(a)32
-b(message)g(whose)g(con)n(ten)n(t)g(is)h(read)f(from)h(CDB.)g(After)g
-(a)f(successful)h(deliv)n(ery)f(attempt)h(a)g(record)e(is)i(written)g
-(to)0 5330 y(IBDB)d(that)g(logs)f(this)h(information.)43
-b(The)30 b(deferred)f(en)n(v)n(elop)r(e)g(database)g(\(DEFEDB\))h(is)g
-(only)f(used)h(if)h(a)e(message)p 0 5404 1512 4 v 92
-5458 a Fh(1)127 5481 y Fg(the)c(term)e Ff(datab)l(ase)i
-Fg(is)e(used)h(lo)r(osely)g(here)1869 5768 y Fn(6)p eop
-end
-%%Page: 7 8
-TeXDict begin 7 7 bop 0 523 a Fn(cannot)27 b(b)r(e)h(deliv)n(ered)f
-(during)g(the)h(\014rst)f(attempt.)354 3473 y @beginspecial
-34 @llx 502 @lly 325 @urx 757 @ury 3401 @rwi @setspecial
-%%BeginDocument: overview1.eps
-%!PS-Adobe-3.0 EPSF-3.0
-%%BoundingBox: 34 502 325 757
-%%Title: overview1
-%%CreationDate: Tue Jul 19 17:20:52 2005
-%%Creator: Tgif-4.1.43-QPL written by William Chia-Wei Cheng (bill.cheng@acm.org)
-%%ProducedBy: (unknown)
-%%Pages: 1
-%%DocumentFonts: (atend)
-%%EndComments
-%%BeginProlog
-
-/tgifdict 55 dict def
-tgifdict begin
-
-/tgifellipsedict 6 dict def
-tgifellipsedict /mtrx matrix put
-
-/TGEL % tgifellipse
- { tgifellipsedict begin
-      /yrad exch def
-      /xrad exch def
-      /y exch def
-      /x exch def
-      /savematrix mtrx currentmatrix def
-      x y translate
-      xrad yrad scale
-      0 0 1 0 360 arc
-      savematrix setmatrix
-   end
- } def
-
-/tgifarrowtipdict 8 dict def
-tgifarrowtipdict /mtrx matrix put
-
-/TGAT % tgifarrowtip
- { tgifarrowtipdict begin
-      /dy exch def
-      /dx exch def
-      /h exch def
-      /w exch def
-      /y exch def
-      /x exch def
-      /savematrix mtrx currentmatrix def
-      x y translate
-      dy dx atan rotate
-      0 0 moveto
-      w neg h lineto
-      w neg h neg lineto
-      savematrix setmatrix
-   end
- } def
-
-/TGMAX
- { exch dup 3 1 roll exch dup 3 1 roll gt { pop } { exch pop } ifelse
- } def
-/TGMIN
- { exch dup 3 1 roll exch dup 3 1 roll lt { pop } { exch pop } ifelse
- } def
-/TGSW { stringwidth pop } def
-
-/bd { bind def } bind def
-
-/GS { gsave } bd
-/GR { grestore } bd
-/NP { newpath } bd
-/CP { closepath } bd
-/CHP { charpath } bd
-/CT { curveto } bd
-/L { lineto } bd
-/RL { rlineto } bd
-/M { moveto } bd
-/RM { rmoveto } bd
-/S { stroke } bd
-/F { fill } bd
-/TR { translate } bd
-/RO { rotate } bd
-/SC { scale } bd
-/MU { mul } bd
-/DI { div } bd
-/DU { dup } bd
-/NE { neg } bd
-/AD { add } bd
-/SU { sub } bd
-/PO { pop } bd
-/EX { exch } bd
-/CO { concat } bd
-/CL { clip } bd
-/EC { eoclip } bd
-/EF { eofill } bd
-/IM { image } bd
-/IMM { imagemask } bd
-/ARY { array } bd
-/SG { setgray } bd
-/RG { setrgbcolor } bd
-/SD { setdash } bd
-/W { setlinewidth } bd
-/SM { setmiterlimit } bd
-/SLC { setlinecap } bd
-/SLJ { setlinejoin } bd
-/SH { show } bd
-/FF { findfont } bd
-/MS { makefont setfont } bd
-/AR { arcto 4 {pop} repeat } bd
-/CURP { currentpoint } bd
-/FLAT { flattenpath strokepath clip newpath } bd
-/TGSM { tgiforigctm setmatrix } def
-/TGRM { savematrix setmatrix } def
-
-end
-
-%%EndProlog
-%%Page: 1 1
-
-%%PageBoundingBox: 34 502 325 757
-tgifdict begin
-/tgifsavedpage save def
-
-1 SM
-1 W
-
-0 SG
-
-72 0 MU 72 11 MU TR
-72 128 DI 100.000 MU 100 DI DU NE SC
-
-GS
-
-/tgiforigctm matrix currentmatrix def
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 64 64 M 576 64 L 576 512 L 64 512 L CP
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 192 96 M 448 96 L 448 128 L 192 128 L CP
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 480 192 M 544 192 L 544 224 L 480 224 L CP
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 96 192 M 160 192 L 160 224 L 96 224 L CP
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 480 304 M 544 304 L 544 336 L 480 336 L CP
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 256 192 M 384 192 L 384 320 L 256 320 L CP
-      S
-   GR
-GR
-
-% BOX
-0 SG
-GS
-   10 SM
-   GS
-      NP 224 144 M 288 144 L 288 176 L 224 176 L CP
-      S
-   GR
-GR
-
-% RCBOX
-0 SG
-GS
-   GS
-      NP
-         336 448 M
-         352 448 352 496 16 AR
-         352 480 L
-         352 496 288 496 16 AR
-         304 496 L
-         288 496 288 448 16 AR
-         288 464 L
-         288 448 352 448 16 AR
-      CP
-      S
-   GR
-GR
-
-% RCBOX
-0 SG
-GS
-   GS
-      NP
-         384 336 M
-         400 336 400 368 16 AR
-         400 352 L
-         400 368 320 368 16 AR
-         336 368 L
-         320 368 320 336 16 AR
-         320 352 L
-         320 336 400 336 16 AR
-      CP
-      S
-   GR
-GR
-
-% RCBOX
-0 SG
-GS
-   GS
-      NP
-         288 336 M
-         304 336 304 368 16 AR
-         304 352 L
-         304 368 240 368 16 AR
-         256 368 L
-         240 368 240 336 16 AR
-         240 352 L
-         240 336 304 336 16 AR
-      CP
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      112 208 M
-      GS
-            0 SG
-            /Times-Roman FF [14 0 0 -14 0 0] MS
-            (SMTPS) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      240 160 M
-      GS
-            0 SG
-            /Times-Roman FF [14 0 0 -14 0 0] MS
-            (SMAR) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      496 208 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (SMTPC) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      496 320 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (LDA) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      272 224 M
-      GS
-            0 SG
-            /Times-Roman FF [14 0 0 -14 0 0] MS
-            (QMGR) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      288 112 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (MCP) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      336 352 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (DEFEDB) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      256 352 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (IBDB) SH
-      GR
-   GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      304 464 M
-      GS
-            0 SG
-            /Courier FF [14 0 0 -14 0 0] MS
-            (CDB) SH
-      GR
-   GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      128 224 M
-      256 160 atan DU cos 10.000 MU 288 exch SU
-      exch sin 10.000 MU 480 exch SU L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      288 480 10.000 4.000 160 256 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      288 480 10.000 4.000 160 256 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      352 464 M
-      -240 144 atan DU cos 10.000 MU 496 exch SU
-      exch sin 10.000 MU 224 exch SU L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      496 224 10.000 4.000 144 -240 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      496 224 10.000 4.000 144 -240 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      352 480 M
-      -144 160 atan DU cos 10.000 MU 512 exch SU
-      exch sin 10.000 MU 336 exch SU L
-   TGSM
-   2 W
-   S
-   1 W
-GR
-GS
-   TGSM
-   NP
-      512 336 10.000 4.000 160 -144 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      512 336 10.000 4.000 160 -144 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [8 8] 0 SD
-   NP
-      192 128 M
-      64 -48 atan DU cos 8.000 MU 144 exch SU
-      exch sin 8.000 MU 192 exch SU L
-   TGSM
-   1 W
-   S
-   [] 0 SD
-GR
-GS
-   TGSM
-   NP
-      144 192 8.000 3.000 -48 64 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      144 192 8.000 3.000 -48 64 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [8 8] 0 SD
-   NP
-      224 128 M
-      16 0 atan DU cos 8.000 MU 224 exch SU
-      exch sin 8.000 MU 144 exch SU L
-   TGSM
-   1 W
-   S
-   [] 0 SD
-GR
-GS
-   TGSM
-   NP
-      224 144 8.000 3.000 0 16 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      224 144 8.000 3.000 0 16 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [8 8] 0 SD
-   NP
-      304 128 M
-      64 0 atan DU cos 8.000 MU 304 exch SU
-      exch sin 8.000 MU 192 exch SU L
-   TGSM
-   1 W
-   S
-   [] 0 SD
-GR
-GS
-   TGSM
-   NP
-      304 192 8.000 3.000 0 64 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      304 192 8.000 3.000 0 64 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [8 8] 0 SD
-   NP
-      448 128 M
-      64 48 atan DU cos 8.000 MU 496 exch SU
-      exch sin 8.000 MU 192 exch SU L
-   TGSM
-   1 W
-   S
-   [] 0 SD
-GR
-GS
-   TGSM
-   NP
-      496 192 8.000 3.000 48 64 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      496 192 8.000 3.000 48 64 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [8 8] 0 SD
-   NP
-      416 128 M
-      176 80 atan DU cos 8.000 MU 496 exch SU
-      exch sin 8.000 MU 304 exch SU L
-   TGSM
-   1 W
-   S
-   [] 0 SD
-GR
-GS
-   TGSM
-   NP
-      496 304 8.000 3.000 80 176 TGAT
-   1 SG CP F
-   0 SG
-   NP
-      496 304 8.000 3.000 80 176 TGAT
-   CP F
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      272 320 M
-      272 336 L
-   TGSM
-   1 W
-   S
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   NP
-      368 320 M
-      368 336 L
-   TGSM
-   1 W
-   S
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [2 2] 0 SD
-   NP
-      160 208 M
-      256 208 L
-   TGSM
-   1 W
-   S
-   [] 0 SD
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [2 2] 0 SD
-   NP
-      384 208 M
-      480 208 L
-   TGSM
-   1 W
-   S
-   [] 0 SD
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [2 2] 0 SD
-   NP
-      384 320 M
-      480 320 L
-   TGSM
-   1 W
-   S
-   [] 0 SD
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [2 2] 0 SD
-   NP
-      160 192 M
-      224 160 L
-   TGSM
-   1 W
-   S
-   [] 0 SD
-GR
-
-% POLY/OPEN-SPLINE
-0 SG
-GS
-   [2 2] 0 SD
-   NP
-      272 176 M
-      272 192 L
-   TGSM
-   1 W
-   S
-   [] 0 SD
-GR
-
-% OVAL
-0 SG
-GS
-   GS
-      NP 288 288 32 16 TGEL
-      [2 2] 0 SD
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      272 288 M
-      GS
-            0 SG
-            /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS
-            (IQDB) SH
-      GR
-   GR
-
-% OVAL
-0 SG
-GS
-   GS
-      NP 336 240 32 16 TGEL
-      [2 2] 0 SD
-      S
-   GR
-GR
-
-% TEXT
-NP
-0 SG
-   GS
-      1 W
-      320 240 M
-      GS
-            0 SG
-            /NewCenturySchlbk-Roman FF [14 0 0 -14 0 0] MS
-            (AQ) SH
-      GR
-   GR
-
-GR
-tgifsavedpage restore
-end
-showpage
-
-%%Trailer
-%MatchingCreationDate: Tue Jul 19 17:20:52 2005
-%%DocumentFonts: NewCenturySchlbk-Roman
-%%+ Courier
-%%+ Times-Roman
-%%EOF
-
-%%EndDocument
- @endspecial 1195 3705 a(Figure)g(1.1:)36 b(MeT)-7 b(A1:)36
-b(Ov)n(erall)26 b(Structure)0 3905 y(This)31 b(v)n(ersion)f(of)i(MeT)-7
-b(A1)31 b(do)r(es)g(not)g(come)g(with)h(a)f(lo)r(cal)g(deliv)n(ery)f
-(agen)n(t)h(nor)f(a)h(mail)h(submission)e(program.)47
-b(See)0 4004 y(Sections)27 b(4.3.1)g(and)g(4.2)g(whic)n(h)g(programs)f
-(can)h(b)r(e)h(used)f(to)h(ac)n(hiev)n(e)e(the)i(desired)f
-(functionalit)n(y)-7 b(.)0 4332 y Fk(1.2)135 b(Do)t(cumen)l(tation)0
-4568 y Fn(The)26 b(do)r(cumen)n(t)g(\\sendmail)f(X:)i(Requiremen)n(ts,)
-e(Arc)n(hitecture,)h(and)g(F)-7 b(unctional)26 b(Sp)r(eci\014cation")f
-([A\031m)n(b])h(pro)n(vides)0 4668 y(the)35 b(bac)n(kground)d(ab)r(out)
-j(the)f(MeT)-7 b(A1)35 b(design,)g(its)g(arc)n(hitecture,)g(as)f(w)n
-(ell)g(as)g(the)g(functional)h(sp)r(eci\014cation,)h(and)0
-4767 y(details)27 b(ab)r(out)h(the)g(implemen)n(tation.)0
-5053 y Fj(1.2.1)112 b(T)m(yp)s(ographical)40 b(Con)m(v)m(en)m(tions)0
-5260 y Fn(In)28 b(this)g(do)r(cumen)n(tation,)f(a)g(command)g(written)h
-(as)0 5496 y Fm($)43 b(command)1869 5768 y Fn(7)p eop
-end
-%%Page: 8 9
-TeXDict begin 8 8 bop 0 523 a Fn(should)27 b(b)r(e)h(executed)g(as)f
-(an)g(unprivileged)g(user.)36 b(Only)28 b(a)f(command)g(written)h(as)0
-759 y Fm(#)43 b(command)0 996 y Fn(should)27 b(b)r(e)h(executed)g(as)f
-(the)h(sup)r(eruser.)0 1149 y(If)h(a)f(command)g(con)n(tains)f(comp)r
-(onen)n(ts)h(that)g(need)h(to)f(b)r(e)h(replaced)e(b)n(y)h(v)-5
-b(alues)28 b(that)h(dep)r(end)g(on)f(the)h(en)n(vironmen)n(t)0
-1248 y(or)e(the)h(lo)r(cal)f(con\014guration,)f(then)i(it)g(is)f
-(usually)g(written)h(as)f(a)g(macro,)g(e.g.,)g Fm($LOGFILE)p
-Fn(.)0 1402 y(A)k(n)n(um)n(b)r(er)f(in)g(paren)n(theses)f(b)r(ehind)j
-(a)d(command)h(or)g(function)h(refers)e(to)h(the)h(man)n(ual)f
-(section,)g(e.g.,)h Fm(syslog\(3\))p Fn(,)0 1501 y(as)c(it)h(is)f
-(usual)h(for)f(Unix)h(do)r(cumen)n(ts.)0 1829 y Fk(1.3)135
-b(V)-11 b(ersion)0 2065 y Fn(This)27 b(do)r(cumen)n(t)h(has)f(b)r(een)g
-(written)h(for)f(MeT)-7 b(A1-1.0.PreAlpha29.0,)23 b(see)k(also)g(the)g
-(greeting)f(of)i(the)f(SMTP)g(serv)n(er)0 2165 y(and)g(the)h(v)n
-(ersion)e(output)j(of)e(the)h(main)g(comp)r(onen)n(ts.)36
-b(See)28 b(Section)f(6.8)g(for)g(information)g(ab)r(out)h(v)n(ersion)e
-(naming.)0 2493 y Fk(1.4)135 b(Curren)l(t)46 b(State)0
-2728 y Fn(There)28 b(are)f(still)i(some)f(error)f(conditions)h(whic)n
-(h)g(ma)n(y)g(not)h(b)r(e)f(handled)h(gracefully)-7 b(,)28
-b(i.e.,)h(in)f(case)g(of)g(some)g(resource)0 2828 y(problems)g(\(e.g.,)
-h(out)f(of)h(memory)e(or)h(out)h(of)f(disk)g(space\))h(the)f(system)h
-(ma)n(y)f(ab)r(ort;)g(ho)n(w)n(ev)n(er,)f(this)i(is)f(common)g(for)0
-2927 y(most)g(op)r(en)h(source)f(MT)-7 b(As)28 b(whic)n(h)h(simply)g
-(ab)r(ort)f(if)h(they)g(are)e(running)i(out)f(of)h(memory)-7
-b(.)39 b(See)29 b(Section)f(4.10.1)f(ho)n(w)0 3027 y(to)f(deal)g(with)h
-(those)f(conditions.)36 b(The)27 b(soft)n(w)n(are)d(is)j(running)f
-(since)g(2004-01-01)c(as)k(MT)-7 b(A)26 b(on)h(the)f(main)h(mac)n(hine)
-f(of)0 3127 y(the)i(author)f(without)h(an)n(y)f(signi\014can)n(t)f
-(problem,)i(i.e.,)f(it)h(nev)n(er)f(lost)g(an)n(y)g(mail.)0
-3413 y Fj(1.4.1)112 b(Pro)m(viding)38 b(F)-9 b(eedbac)m(k)0
-3620 y Fn(Please)32 b(rep)r(ort)g(bugs)g(and)h(pro)n(vide)f(feedbac)n
-(k)g(either)h(to)f(the)i(dev)n(elop)r(ers)d(list[A\031ma])i(\(if)h(y)n
-(ou)e(are)g(subscrib)r(ed\))h(or)0 3719 y(directly)27
-b(to)376 3689 y Fi(2)413 3719 y Fn(:)208 3955 y Fm(<)43
-b(MeTA1)e(+)i(feedback)e(\(at\))h(MeTA1)f(.)i(org)g(>)0
-4192 y Fn(F)-7 b(eedbac)n(k)38 b(ab)r(out)h(the)h(co)r(de,)h(the)f(do)r
-(cumen)n(tation)e(\(including)i(t)n(yp)r(ographical,)g(syn)n(tactical,)
-g(and)f(grammatical)0 4291 y(errors,)24 b(p)r(oin)n(ting)h(out)h(parts)
-f(that)g(are)g(not)g(w)n(ell)h(enough)f(explained,)g(etc.\),)i(as)e(w)n
-(ell)g(as)g(patc)n(hes)g(and)g(enhancemen)n(ts)0 4391
-y(are)i(highly)g(appreciated.)0 4719 y Fk(1.5)135 b(F)-11
-b(or)45 b(the)g(Impatien)l(t)0 4955 y Fn(F)-7 b(or)30
-b(those)g(who)g(do)g(not)g(w)n(an)n(t)g(to)g(read)g(the)g(en)n(tire)g
-(do)r(cumen)n(tation,)h(it)g(is)f(adviced)g(to)g(read)g(at)g(least)g
-(sections)f(2.2)0 5054 y(and)e(2.4,)g(and)h(the)g(appropriate)e
-(section)h(of)g(Chapter)g(4.)p 0 5442 1512 4 v 92 5495
-a Fh(2)127 5519 y Fg(Sorry)c(for)g(the)i(obfuscation,)f(replace)g
-Fe(\(at\))h Fg(with)f Fe(@)g Fg(and)g(remo)n(v)n(e)g(the)g(spaces,)g
-(but)h(not)f(the)h(plus)e(sign.)1869 5768 y Fn(8)p eop
-end
-%%Page: 9 10
-TeXDict begin 9 9 bop 0 1199 a Fl(Chapter)65 b(2)0 1668
-y Fp(Building,)76 b(T)-19 b(esting,)76 b(and)i(Installing)0
-1917 y(MeT)-19 b(A1)0 2452 y Fk(2.1)135 b(V)-11 b(erifying)46
-b(the)f(Source)f(Co)t(de)h(Distribution)0 2688 y Fn(The)35
-b(source)e(co)r(de)h(is)g(distributed)h(as)f(a)g(\(compressed\))g(tar)g
-(\014le)g(and)h(is)f(accompanied)f(b)n(y)h(a)g(PGP)g(signature)f
-(\014le)0 2787 y(whic)n(h)28 b(has)f(the)h(same)f(name)g(as)g(the)i
-(tar)e(\014le)g(plus)h(the)g(ending)g Fm(.sig)p Fn(.)36
-b(T)-7 b(o)27 b(v)n(erify)g(the)h(in)n(tegrit)n(y)f(of)g(the)h(source)f
-(co)r(de)0 2887 y(PGP)g([PGP)o(])h(or)e(GPG)i([Gn)n(u])g(are)e
-(required)h(as)g(w)n(ell)g(as)g(the)h(MeT)-7 b(A1)28
-b(PGP)f(signing)f(k)n(ey)h([MeT]:)0 3040 y Fm($)43 b(gpg)g(--verify)d
-(meta1-$VERSION.t)o(ar)o(.gz)o(.s)o(ig)0 3140 y Fn(or:)0
-3239 y Fm($)j(pgp)g(meta1-$VERSION.)o(ta)o(r.g)o(z.)o(sig)37
-b(meta1-$VERSION.t)o(ar)o(.g)o(z)0 3393 y Fn(F)-7 b(urther)25
-b(information,)g(esp)r(ecially)g(ab)r(out)g(w)n(arnings)e(or)h(p)r
-(ossible)h(errors,)f(can)g(b)r(e)i(found)f(in)h(the)f(do)r(cumen)n
-(tation)g(for)0 3492 y(PGP)i(or)g(GPG.)0 3816 y Fk(2.2)135
-b(Building)45 b(MeT)-11 b(A1)0 4051 y Fn(MeT)k(A1)22
-b(uses)g(a)g Fm(configure)c Fn(\014le)k(generated)f(b)n(y)h(GNU)h(auto)
-r(conf)f(for)g(con\014guration.)33 b(Hence)22 b(y)n(ou)g(can)f(build)i
-(it)g(\(after)0 4151 y(v)n(erifying)k(and)g(unpac)n(king)g(the)h
-(distribution\))g(as)f(follo)n(ws:)0 4359 y Fm($)43 b(mkdir)f(obj.$OS)e
-(&&)j(cd)g(obj.$OS)e(&&)h($PATHTO/meta1-$VE)o(RS)o(ION)o(/c)o(onf)o(ig)
-o(ure)37 b($OPTIONS)j(\\)87 4459 y(&&)j(make)f(&&)h(make)f(check)0
-4668 y Fn(Ob)n(viously)27 b(y)n(ou)g(ha)n(v)n(e)g(to)i(replace)e
-Fm($OS)p Fn(,)g Fm($VERSION)p Fn(,)e Fm($OPTIONS)p Fn(,)g(as)j(w)n(ell)
-g(as)f Fm($PATHTO)p Fn(.)f(It)j(is)f(also)f(p)r(ossible)h(to)g(build)0
-4767 y(MeT)-7 b(A1)27 b(in)h(the)g(source)f(tree,)g(ho)n(w)n(ev)n(er,)f
-(this)h(is)h(discouraged:)0 4976 y Fm($)43 b(./configure)c(&&)k(make)f
-(&&)h(make)f(check)0 5184 y Fn(Notes:)36 b(do)27 b Fd(not)g
-Fn(run)f(this)h(as)g Fm(root)p Fn(;)e(this)i(is)g(not)g(just)g(a)g
-(basic)f(securit)n(y)g(measure)g(\()p Fd(only)i Fn(use)f(a)f
-(privileged)g(accoun)n(t)g(if)0 5284 y(it)i(is)g(really)f(required\),)h
-(but)h(most)f(of)g(the)g(programs)e(refuse)h(to)h(run)g(with)h
-Fm(root)d Fn(privileges.)37 b(It)29 b(migh)n(t)f(b)r(e)g(useful)h(to)0
-5383 y(sa)n(v)n(e)d(the)i(output)g(of)g(these)f(commands)1284
-5353 y Fi(1)1349 5383 y Fn(for)g(later)g(insp)r(ection.)p
-0 5442 1512 4 v 92 5495 a Fh(1)127 5519 y Fg(using)d
-Fe(script\(1\))i Fg(or)d(redirecting)h(it)g(to)g(some)g(\014le.)1869
-5768 y Fn(9)p eop end
-%%Page: 10 11
-TeXDict begin 10 10 bop 0 523 a Fj(2.2.1)112 b(Compile-Time)40
-b(Con\014guration)e(Options)0 730 y Fn(Beside)26 b(the)h(usual)f
-Fm(configure)d Fn(options)j(lik)n(e)h Fm(--prefix)c Fn(a)j(few)h(MeT)-7
-b(A1)26 b(sp)r(eci\014c)h(con\014guration)e(options)h(are)g(a)n(v)-5
-b(ail-)0 830 y(able:)42 1066 y Fm(--enable-TLS)36 b Fn(Enable)k(c)n
-(hec)n(k)g(for)g(ST)-7 b(AR)g(TTLS)42 b(supp)r(ort.)77
-b(The)41 b(default)g(is)g Fm(yes)p Fn(,)i(i.e.,)i Fm(configure)37
-b Fn(tries)k(to)208 1165 y(determine)27 b(whether)f(Op)r(enSSL)i(is)e
-(a)n(v)-5 b(ailable)26 b(on)h(the)g(mac)n(hine.)36 b(Requires)26
-b(Op)r(enSSL)i(0.9.6)d(or)h(new)n(er)g([Op)r(e].)208
-1265 y(Note:)41 b(c)n(hec)n(k)29 b(the)h(Op)r(enSSL)g(w)n(ebsite)g([Op)
-r(e])g(for)f(securit)n(y)g(announcemen)n(t)h(and)f(b)r(e)i(a)n(w)n(are)
-c(that)j(due)g(to)g(the)208 1365 y(complexit)n(y)d(of)g(the)h(soft)n(w)
-n(are)e(it)i(ma)n(y)f(cause)g(\(securit)n(y\))g(problems.)42
-1531 y Fm(--enable-SASL)19 b Fn(Enable)24 b(c)n(hec)n(k)g(for)h(A)n
-(UTH)g(supp)r(ort.)36 b(The)25 b(default)g(is)g Fm(yes)p
-Fn(,)f(i.e.,)i Fm(configure)21 b Fn(tries)k(to)g(determine)208
-1630 y(whether)g(Cyrus)g(SASL)h(v2)f(is)h(a)n(v)-5 b(ailable)24
-b(on)h(the)h(mac)n(hine.)36 b(Requires)25 b(Cyrus)g(SASL)h(v)n(ersion)e
-(2.1.18)g(or)g(new)n(er)208 1730 y([Cyr)o(].)37 b(Notes:)284
-1896 y(1.)k(c)n(hec)n(k)d Fm(http://asg.web.c)o(mu.)o(ed)o(u/)o(cyr)o
-(us)o(/)33 b Fn(and)38 b Fm(http://asg.web.cm)o(u.)o(edu)o(/s)o(as)o
-(l/)32 b Fn(for)38 b(securit)n(y)390 1996 y(announcemen)n(t)23
-b(and)g(b)r(e)g(a)n(w)n(are)e(that)i(due)g(to)g(the)g(complexit)n(y)g
-(of)g(the)g(soft)n(w)n(are)e(it)i(ma)n(y)g(cause)f(\(securit)n(y\))390
-2095 y(problems.)284 2228 y(2.)41 b(If)34 b(Cyrus)f(SASL)h(uses)f(Berk)
-n(eley)f(DB)h(then)h(it)g(is)f(necessary)f(that)i(the)g(v)n(ersion)e
-(whic)n(h)h(has)g(b)r(een)h(used)390 2328 y(during)27
-b(compilation)g(matc)n(hes)g(the)h(v)n(ersion)e(that)i(it)g(is)g(link)n
-(ed)f(against.)42 2494 y Fm(--with-sasl-lib)o(di)o(r=)p
-Fn(pa)o(th)22 b(P)n(ath)27 b(to)h(directory)e(con)n(taining)h(Cyrus)f
-(SASL)i(v2)f(library)-7 b(.)42 2660 y Fm(--with-sasl-inc)o(di)o(r=)p
-Fn(pa)o(th)22 b(P)n(ath)27 b(to)h(directory)e(con)n(taining)h(Cyrus)f
-(SASL)i(v2)f(include)h(\014les.)42 2826 y Fm(--disable-inclu)o(de)o
-(d-b)o(db)d Fn(MeT)-7 b(A1)32 b(ships)f(with)h(a)f(mo)r(di\014ed)h(v)n
-(ersion)e(of)i(Berk)n(eley)e(DB)i(4.3.28)e(whic)n(h)h(is)h(built)208
-2925 y(and)f(used)g(b)n(y)g(default.)49 b(T)-7 b(o)31
-b(use)g(a)g(di\013eren)n(t)g(v)n(ersion)f(of)h(Berk)n(eley)f(DB)i(\(it)
-g(m)n(ust)f(b)r(e)h(4.3,)f(4.2,)h(or)e(4.1\),)i(e.g.,)208
-3025 y(one)27 b(that)h(is)f(part)g(of)h(the)g(host)f(OS,)h(sp)r(ecify)f
-Fm(--disable-include)o(d-b)o(db)o Fn(.)208 3158 y(Notes:)284
-3324 y(1.)41 b(If)26 b(y)n(ou)f(do)g(not)h(use)f(the)h(Berk)n(eley)e
-(DB)i(v)n(ersion)e(that)i(comes)e(with)i(MeT)-7 b(A1,)26
-b(mak)n(e)f(sure)g(y)n(ou)g(run)g(all)g(the)390 3424
-y(tests.)54 b(F)-7 b(or)33 b(example,)h(with)g(Berk)n(eley)e(DB)i
-(4.2.50)d(on)i(Op)r(enBSD)h(3.2/i386)c(at)k(least)e(one)h(of)h(the)f
-(test)390 3523 y(programs)e(fails)j(and)f(hence)h(this)f(com)n
-(bination)g(m)n(ust)h Fd(not)f Fn(b)r(e)h(used.)54 b(Moreo)n(v)n(er,)33
-b(if)h(y)n(ou)e(encoun)n(ter)h(a)390 3623 y(problem)26
-b(using)h(some)f(other)g(BDB)h(v)n(ersion)e(then)j(y)n(ou)e(m)n(ust)h
-(try)f(to)h(repro)r(duce)e(the)j(problem)e(with)h(the)390
-3722 y(shipp)r(ed)h(v)n(ersion)e(b)r(efore)i(rep)r(orting)e(a)h(p)r
-(ossible)h(bug.)284 3855 y(2.)41 b(Do)34 b(not)g(use)g(Berk)n(eley)f
-(DB)h(4.3.27/28)d(in)j(64)f(bit)i(mo)r(de)f(on)g(Solaris)e(5.8/9)g(as)i
-(it)g(crashes)f(at)h(least)f(in)390 3955 y(those)27 b(con\014gurations)
-1117 3925 y Fi(2)1153 3955 y Fn(.)37 b(This)27 b(bug)h(is)f(\014xed)h
-(in)g(the)g(v)n(ersion)e(that)i(is)f(distributed)h(with)g(MeT)-7
-b(A1.)42 4121 y Fm(--with-bdb-libd)o(ir)o Fn(=path)16
-b(P)n(ath)21 b(to)g(directory)f(con)n(taining)h(Berk)n(eley)f(DB)i
-(library)-7 b(.)34 b(This)21 b(option)h(is)f(only)g(needed)208
-4221 y(if)h Fm(--disable-inclu)o(ded)o(-b)o(db)15 b Fn(is)22
-b(used)f(and)g(Berk)n(eley)f(DB)i(is)g(not)f(installed)h(in)g(a)f(lo)r
-(cation)g(that)g(the)h(compiler)208 4320 y(or)k(link)n(er)h(use)h(b)n
-(y)f(default.)37 b(Note:)g Fm(configure)24 b Fn(curren)n(tly)j(c)n(hec)
-n(ks)f(only)h(for)g(a)h(static)f(library)-7 b(.)42 4486
-y Fm(--with-bdb-incd)o(ir)o Fn(=path)23 b(P)n(ath)28
-b(to)h(directory)f(con)n(taining)g(Berk)n(eley)g(DB)h(include)g
-(\014les.)41 b(This)29 b(option)g(is)g(only)208 4586
-y(needed)c(if)h Fm(--disable-include)o(d-)o(bdb)19 b
-Fn(is)25 b(used)h(and)f(Berk)n(eley)f(DB)i(is)f(not)h(installed)g(in)f
-(a)g(lo)r(cation)g(that)h(the)208 4686 y(compiler)g(uses)i(b)n(y)f
-(default.)37 b(Example:)208 4885 y Fm($)43 b(B=/usr/local/Ber)o(ke)o
-(le)o(yDB)o(.4)o(.3)208 4984 y($)g($PATHTO/meta1-$V)o(ER)o(SI)o(ON/)o
-(co)o(nfi)o(gu)o(re)37 b(--with-bdb-libdi)o(r=$)o(B/)o(lib)g(\\)295
-5084 y(--with-bdb-incdi)o(r=)o($B)o(/in)o(cl)o(ude)g(--disable-includ)o
-(ed)o(-b)o(db)42 5283 y(--enable-pmilte)o(r)22 b Fn(Enable)k(p)r(olicy)
-i(milter)g(proto)r(col,)e(see)h(Chapter)g(5.)p 0 5355
-1512 4 v 92 5409 a Fh(2)127 5432 y Fg(\\Priv)l(ate)d(database)h(en)n
-(vironmen)n(ts)f(on)f(64-bit)h(mac)n(hines)g(no)f(longer)g(drop)h(core)
-f(b)r(ecause)i(of)e(64-bit)g(address)g(truncation.)33
-b([11983]")0 5511 y([Slea])1848 5768 y Fn(10)p eop end
-%%Page: 11 12
-TeXDict begin 11 11 bop 42 523 a Fm(--enable-msp)16 b
-Fn(Enable)21 b(a)g(simple)h(mail)g(submission)f(program)e(\(MSP\))j
-(that)g(is)g(curren)n(tly)f(not)g(supp)r(orted)h(\(lo)r(cated)208
-623 y(in)29 b Fm(contrib/)p Fn(\).)39 b(This)29 b(is)g(just)h(a)e(help)
-r(er)i(program)d(for)h(those)h(who)g(do)g(not)g(w)n(an)n(t)g(to)g
-(install)g(a)g(di\013eren)n(t)g(MSP)208 722 y(but)d(need)g(only)f(some)
-h(basic)f(functionalit)n(y)h(\(whic)n(h)g(do)r(es)f Fd(not)h
-Fn(include)g(a)g(queueing)f(mec)n(hanism\).)36 b(Note:)g(this)208
-822 y(will)29 b(install)g(the)h(MSP)f(as)f Fm(sendmail)e
-Fn(th)n(us)j(o)n(v)n(erriding)e(an)n(y)h(existing)h(program)e(of)i
-(that)h(name)f(\(as)g(w)n(ell)g(as)f(a)208 922 y(man)f(page\).)42
-1086 y Fm(--enable-tinycd)o(b)22 b Fn(Enable)k(supp)r(ort)i(for)f
-Fm(cdb)f Fn(map)i(t)n(yp)r(e,)g(based)f(on)g Fm(tinycdb)41
-b(0.75)26 b Fn([T)-7 b(ok)o(].)0 1319 y(T)g(o)27 b(get)h(the)g(curren)n
-(t)e(list)i(of)g(con\014guration)e(options,)h(use)g Fm(configure)40
-b(--help)p Fn(.)0 1646 y Fk(2.3)135 b(T)-11 b(est)45
-b(Programs)0 1882 y Fm($)e(make)f(check)0 2114 y Fn(will)32
-b(run)g(all)f(test)h(programs;)g(curren)n(tly)f(those)g(tests)h(tak)n
-(e)f(ab)r(out)h(eigh)n(t)n(y)e(min)n(utes)i(to)g(run)g(on)f(a)h
-(standard)e(w)n(ork-)0 2214 y(station.)39 b(F)-7 b(or)28
-b(eac)n(h)g(of)g(the)h(test)g(programs)d(one)i(line)h(is)f(prin)n(ted)g
-(to)h(denote)f(whether)g(the)h(test)g(succeeded,)f(i.e.,)h(the)0
-2314 y(output)35 b(consists)g(of)g(lines)f(with)i(the)f(mark)n(er)e
-Fm(PASS:)g Fn(or)h Fm(FAIL:)f Fn(and)i(the)g(name)g(of)g(the)g(test)h
-(program)d(program.)0 2413 y(Additional)28 b(output)g(migh)n(t)f(b)r(e)
-h(generated)f(b)n(y)g(the)h(test)g(programs)d(themselv)n(es,)i(e.g.,)0
-2567 y Fm(2)43 b(of)g(2)g(tests)f(completed)d(successfully)p
-Fn(,)0 2720 y(or)30 b(some)g(debug)g(output.)46 b(The)31
-b(debug)f(output)h(ma)n(y)f(ev)n(en)g(indicate)h(an)f(error,)f(but)j
-(only)e(a)g(\014nal)g Fm(FAIL:)f Fn(indicates)0 2819
-y(a)d(test)i(failure.)36 b(Some)27 b(tests)f(dep)r(end)i(on)f
-(compilation)f(options)g(and)h(are)f(only)g(conditionally)g(enabled;)h
-(others)f(ma)n(y)0 2919 y(dep)r(end)i(on)g(en)n(vironmen)n(t)e(v)-5
-b(ariables,)27 b(see)g(2.3.1.)35 b(F)-7 b(or)27 b(disabled)h(tests)f
-Fm(SKIP)f Fn(is)i(sho)n(wn.)0 3072 y(Since)c(some)f(of)g(the)h(tests)g
-(ma)n(y)f(fail)g(\(see)h(Section)f(2.3.2\))g(and)g Fm(make)f
-Fn(will)i(usually)f(stop)h(after)f(encoun)n(tering)f(an)i(error,)0
-3172 y(it)k(migh)n(t)g(b)r(e)g(required)e(to)i(use)0
-3405 y Fm($)43 b(make)f(-i)h(check)e(>check.out)f(2>&1)0
-3637 y Fn(to)27 b(p)r(erform)h(all)f(tests.)0 3923 y
-Fj(2.3.1)112 b(En)m(vironmen)m(t)38 b(V)-9 b(ariables)38
-b(used)h(b)m(y)e(T)-9 b(est)37 b(Programs)0 4130 y Fn(En)n(vironmen)n
-(t)29 b(v)-5 b(ariables)29 b(can)h(b)r(e)g(used)h(to)f(disable)g(some)f
-(test)i(programs)d(if)i(required)g(or)f(c)n(hange)g(the)i(b)r(eha)n
-(vior)e(of)0 4229 y(some)e(test)h(programs.)34 b(These)28
-b(en)n(vironmen)n(t)e(v)-5 b(ariables)27 b(and)g(their)h(e\013ects)g
-(are:)125 4462 y Fc(\017)41 b Fm(MTA_NO_DNS_TEST)o Fn(:)23
-b(disable)29 b(tests)f(that)h(p)r(erform)g(DNS)g(lo)r(okups.)40
-b(These)29 b(lo)r(okups)f(ma)n(y)g(use)g(domains)g(that)208
-4561 y(are)e(under)i(con)n(trol)e(of)h(the)h(MeT)-7 b(A1)28
-b(author.)125 4726 y Fc(\017)41 b Fm(MTA_DNS_TIMEOUT)o
-Fn(:)22 b(can)27 b(b)r(e)h(used)g(to)f(set)h(a)f(di\013eren)n(t)h
-(timeout)g(than)f(the)h(default,)g(ho)n(w)n(ev)n(er,)e(it)i(ma)n(y)f
-(not)g(b)r(e)208 4826 y(ob)r(ey)n(ed)g(b)n(y)g(all)g(DNS)i(test)f
-(programs.)125 4990 y Fc(\017)41 b Fm(MTA_TEST_DNS_TI)o(MIN)o(G)p
-Fn(:)23 b(run)29 b(DNS)g(tests)g(that)h(are)d(timing)j(dep)r(enden)n(t)
-f(and)g(ma)n(y)f(fail)h(under)g(certain)f(con-)208 5090
-y(ditions)f(\(e.g.,)h(net)n(w)n(ork)e(to)r(o)h(slo)n(w\).)125
-5255 y Fc(\017)41 b Fm(MTA_TIMING)p Fn(:)23 b(run)28
-b(MT)-7 b(A)28 b(tests)f(that)h(are)f(timing)h(dep)r(enden)n(t)g(and)f
-(ma)n(y)g(fail)h(under)f(certain)g(conditions.)125 5419
-y Fc(\017)41 b Fm(MTA_STOPONERROR)o Fn(:)24 b(causes)k(most)g(test)i
-(scripts)e(that)i(p)r(erform)e(m)n(ultiple)i(c)n(hec)n(ks)e(to)h(stop)g
-(on)f(the)i(\014rst)f(error)208 5519 y(that)e(o)r(ccurs)g(instead)h(of)
-f(p)r(erforming)g(all)g(c)n(hec)n(ks.)1848 5768 y(11)p
-eop end
-%%Page: 12 13
-TeXDict begin 12 12 bop 125 523 a Fc(\017)41 b Fm(MTA_NO_LOG_TEST)o
-Fn(:)22 b(disables)27 b(some)g(tests)h(that)g(use)f Fm(syslog\(3\))p
-Fn(.)125 689 y Fc(\017)41 b Fm(MTA_NO_SLOW_TES)o(T)p
-Fn(:)22 b(disables)27 b(some)g(tests)g(that)h(tak)n(e)f(a)g(v)n(ery)g
-(long)g(time.)0 925 y(In)h(this)g(example)f(the)h(DNS)g(timeout)g(is)g
-(set)f(to)h(60)f(seconds)f(and)i(tests)f(that)h(tak)n(e)f(a)g(v)n(ery)g
-(long)g(time)h(are)e(disabled:)0 1145 y Fm($)43 b(MTA_DNS_TIMEOUT=6)o
-(0)0 1245 y($)g(MTA_NO_SLOW_TEST=)o(1)0 1344 y($)g(export)e
-(MTA_DNS_TIMEOUT)d(MTA_NO_SLOW_TES)o(T)0 1444 y($)43
-b(make)f(-i)h(check)0 1730 y Fj(2.3.2)112 b(Kno)m(wn)38
-b(T)-9 b(est)37 b(Program)g(Problems)125 1937 y Fc(\017)k
-Fm(connctl.sh)23 b Fn(will)29 b(fail)f(on)f(systems)h(that)g(ha)n(v)n
-(e)f(neither)h Fm(inet)p 2229 1937 27 4 v 30 w(pton\(3\))d
-Fn(nor)i Fm(inet)p 2916 1937 V 30 w(aton\(3\))p Fn(.)35
-b(Fix:)j(upgrade)208 2036 y(y)n(our)26 b(OS)h(or)g(write)g(a)h
-(replacemen)n(t)e(function)i(and)g(put)g(it)g(in)n(to)g
-Fm(librepl/)p Fn(.)125 2202 y Fc(\017)41 b Fm(t-evthr-slp)20
-b Fn(can)k(fail)g(in)h(some)f(circumstances)g(if)h(the)f(OS)h(is)f
-(busy)h(with)g(other)f(tasks)f(as)h(it)h(dep)r(ends)g(on)f(the)208
-2302 y(OS)j(sc)n(heduler.)36 b(Fix:)h(just)28 b(rerun)f(the)h(test.)125
-2468 y Fc(\017)41 b Fm(t-evthr-sig.sh)20 b Fn(fails)26
-b(on)g(Lin)n(ux)g(systems)f(that)i(use)f(a)f(thread)h(implemen)n
-(tation)g(that)h(is)f(not)g(POSIX)f(com-)208 2568 y(plian)n(t.)56
-b(The)34 b(test)g(is)g(curren)n(tly)f(disabled)g(on)h(all)g(Lin)n(ux)g
-(v)n(ersions.)54 b(Note:)49 b(if)35 b(y)n(ou)e(kno)n(w)g(a)h(simple)g
-(w)n(a)n(y)f(to)208 2667 y(\014gure)26 b(out)i(whether)f(the)h(OS)g
-(actually)f(pro)n(vides)f(POSIX)h(complian)n(t)g(pthreads,)g(please)g
-(let)h(me)g(kno)n(w.)125 2833 y Fc(\017)41 b Fm(t-hostname)22
-b Fn(fails)27 b(on)f(systems)g(where)g Fm(gethostname\(\))c
-Fn(do)r(es)k(not)h(return)f(an)n(y)g(F)n(QHN)g(at)h(all)f(\(e.g.,)h
-(default)208 2933 y(SunOS)38 b(4/5)g(installations\).)70
-b(Add)39 b(the)g(F)n(QHN)g(as)g(alias)e(to)i Fm(/etc/hosts)c
-Fn(\(see)j Fm(hosts\(5\))e Fn(to)j(solv)n(e)e(this)208
-3033 y(problem,)27 b(e.g.,)208 3249 y Fm(10.1.2.3)171
-b(myname)41 b(myname.my.domai)o(n)208 3464 y Fn(or)208
-3664 y Fm(10.1.2.3)171 b(myname.my.domai)o(n)38 b(myname)125
-3863 y Fc(\017)j Fm(t-parsesockstr)28 b Fn(fails)34 b(on)g(systems)g
-(lik)n(e)g(AIX)g(whic)n(h)g(treat)g(an)g(empt)n(y)g(string)g(as)g(a)f
-(v)-5 b(alid)35 b(IP)e(address)g(in)208 3963 y Fm(inet)p
-389 3963 V 29 w(addr\(3\))p Fn(.)125 4129 y Fc(\017)41
-b Fm(t-mts-icr.sh)24 b Fn(and)29 b Fm(t-mts-ocr-?.sh)23
-b Fn(try)29 b(to)g(test)g(incoming/outgoing)e(rate)h(con)n(trol.)40
-b(They)29 b(rely)f(on)h(the)208 4228 y(time)i(it)g(tak)n(es)f(to)h
-(send/receiv)n(e)e(mails)h(whic)n(h)h(ma)n(y)f(not)h(w)n(ork)f(on)g
-(mac)n(hines)g(that)i(are)d(signi\014can)n(tly)h(slo)n(w)n(er)208
-4328 y(or)c(faster)h(than)h(the)g(mac)n(hines)f(a)n(v)-5
-b(ailable)26 b(to)i(the)g(author.)125 4494 y Fc(\017)41
-b Fm(t-smar-0.sh)p Fn(,)26 b Fm(t-smar-3.sh)p Fn(,)g(and)k
-Fm(t-dns-1.sh)c Fn(ma)n(y)j(fail)h(sometimes)g(due)g(to)g(DNS)h
-(timeouts.)45 b(Run)30 b(the)208 4593 y(tests)d(again)g(or)f(increase)h
-(the)h(DNS)g(timeout,)g(see)f(Section)h(2.3.1.)0 4830
-y(Note:)43 b(DNS)32 b(related)e(test)h(programs)e(ma)n(y)h(fail)h(if)g
-(the)g(\014rst)g(nameserv)n(er)e(en)n(try)h(in)h Fm(/etc/resolv.conf)24
-b Fn(do)r(es)31 b(not)0 4929 y(resp)r(ond)g(prop)r(erly)f(\(and)h
-(reasonably)e(fast\))i(to)g(DNS)h(queries.)47 b(See)31
-b(Section)g(12.3.1)e(ho)n(w)i(to)g(o)n(v)n(erride)e(the)i(default)0
-5029 y(nameserv)n(er)25 b(selection:)37 b Fm(MTA_NAMESERVER)p
-Fn(.)0 5182 y(F)-7 b(or)29 b(more)g(information)g(ab)r(out)h(p)r
-(ossible)f(test)h(program)e(problems)h(see)g(Section)h(12.3.2.)41
-b(F)-7 b(or)29 b(problems)g(with)i(pro-)0 5282 y(grams)26
-b(in)i(the)g Fm(contrib/)c Fn(directory)-7 b(,)27 b(see)g
-Fm(contrib/README)p Fn(.)1848 5768 y(12)p eop end
-%%Page: 13 14
-TeXDict begin 13 13 bop 0 523 a Fk(2.4)135 b(Installing)47
-b(MeT)-11 b(A1)0 758 y Fn(MeT)k(A1)30 b(needs)f(sev)n(eral)f(users)h
-(to)g(pro)n(vide)g(separation)f(of)i(privileges)e(and)i(to)f(enhance)h
-(securit)n(y)-7 b(.)42 b(Curren)n(tly)29 b(there)0 858
-y(are)k(four)g(required)g(accoun)n(ts)f(\(the)j(n)n(um)n(b)r(ers)e(for)
-g(uid)h(and)g(gid)f(are)g(examples)g(only\);)j(the)e(last)g(one)f
-(listed)h(b)r(elo)n(w)0 958 y(\()p Fm(meta1)p Fn(\))26
-b(is)i(not)f(really)g(required:)0 1187 y Fm(meta1s:*:260:260)o(:me)o
-(ta)o(1)37 b(SMTPS:/nonexisten)o(t:/)o(sb)o(in/)o(no)o(lo)o(gin)0
-1287 y(meta1q:*:261:261)o(:me)o(ta)o(1)g(QMGR:/nonexistent)o(:/s)o(bi)o
-(n/n)o(ol)o(og)o(in)0 1386 y(meta1c:*:262:262)o(:me)o(ta)o(1)g
-(SMTPC:/nonexisten)o(t:/)o(sb)o(in/)o(no)o(lo)o(gin)0
-1486 y(meta1m:*:263:263)o(:me)o(ta)o(1)g(misc:/nonexistent)o(:/s)o(bi)o
-(n/n)o(ol)o(og)o(in)0 1585 y(meta1:*:264:264:)o(met)o(a1)g
-(other:/nonexiste)o(nt)o(:/s)o(bi)o(n/n)o(ol)o(og)o(in)0
-1815 y Fn(with)28 b(the)g(corresp)r(onding)e(groups:)0
-2044 y Fm(meta1s:*:260:)0 2143 y(meta1q:*:261:)0 2243
-y(meta1c:*:262:met)o(a1s)0 2343 y(meta1m:*:263:met)o(a1s)o(,m)o(et)o
-(a1q)0 2442 y(meta1:*:264:)0 2671 y Fn(Note:)46 b(on)32
-b(some)g(op)r(erating)f(systems)h(the)h(star)e(c)n(haracter)f(is)j(not)
-f(a)g(v)-5 b(alid)32 b(v)-5 b(alue)32 b(for)g(the)h(passw)n(ord)d
-(\014eld.)51 b(Chec)n(k)0 2771 y Fm(passwd\(5\))396 2741
-y Fi(3)457 2771 y Fn(to)28 b(determine)f(whic)n(h)h(v)-5
-b(alue)27 b(to)h(use)f(to)h(disable)f(the)h(passw)n(ord.)0
-2924 y(T)-7 b(o)27 b(c)n(hec)n(k)g(whether)g(the)h(required)f(users)g
-(and)g(groups)f(exist,)i(run)0 3154 y Fm($)43 b(./misc/sm.check.s)o(h)
-37 b(-p)0 3383 y Fn(\(in)28 b(the)g(build)g(directory\);)f(see)g(b)r
-(elo)n(w)g(ho)n(w)g(to)h(o)n(v)n(erride)d(the)j(default)g(v)-5
-b(alues)27 b(for)h(the)g(user)f(and)g(group)f(names.)0
-3536 y(A)f(shell)f(script)g(to)h(setup)f(the)h(directories,)f(\014les,)
-h(etc.)f(as)g(describ)r(ed)g(b)r(elo)n(w)g(is)h(a)n(v)-5
-b(ailable)23 b(in)h Fm(misc/sm.setup.sh.)o(in)o Fn(.)0
-3636 y(This)39 b(script)h(is)f(mo)r(di\014ed)h(b)n(y)f
-Fm(configure)d Fn(to)j(create)g Fm(misc/sm.setup.sh)33
-b Fn(\(in)40 b(the)g(build)g(directory\))e(whic)n(h)i(is)0
-3735 y(in)n(v)n(ok)n(ed)26 b(when)0 3888 y Fm(#)43 b(make)f(install)0
-4042 y Fn(is)25 b(called.)35 b(Most)24 b(defaults)h(in)g(the)g
-(installation)f(script)g Fm(misc/sm.setup.sh)19 b Fn(can)24
-b(b)r(e)h(o)n(v)n(erridden)d(with)k(en)n(vironmen)n(t)0
-4141 y(v)-5 b(ariables)26 b(\(default)j(is)e(listed)h(in)g(square)e
-(brac)n(k)n(ets\):)125 4355 y Fc(\017)41 b Fm(MTACONFDIR)p
-Fn(:)23 b([)p Fm(/etc/meta1)p Fn(])h(con\014guration)i(directory)-7
-b(.)125 4518 y Fc(\017)41 b Fm(MTAQDIR)p Fn(:)20 b([)p
-Fm(/var/spool/meta1)o Fn(])d(queue)23 b(directory;)h(comm)n(unication)e
-(so)r(c)n(k)n(ets)g(are)g(created)g(in)i(this)f(directory)208
-4618 y(b)n(y)k(default)h(to)r(o.)125 4781 y Fc(\017)41
-b Fm(MTALOGDIR)p Fn(:)25 b([)p Fm(.)p Fn(])39 b(logging)27
-b(directory)g(\(relativ)n(e)h(to)g Fm(MTAQDIR)p Fn(\).)f(If)i(logging)d
-(is)j(done)f(via)g Fm(syslog\(3\))d Fn(then)k(this)208
-4881 y(directory)d(is)h(not)h(used.)125 5044 y Fc(\017)41
-b Fm(MTAS)26 b Fn([)p Fm(meta1s)p Fn(])f(SMTP)i(Serv)n(er)f(user)h(and)
-h(group.)125 5207 y Fc(\017)41 b Fm(MTAC)26 b Fn([)p
-Fm(meta1c)p Fn(])f(SMTP)i(Clien)n(t)h(user)f(and)g(group.)125
-5371 y Fc(\017)41 b Fm(MTAQ)26 b Fn([)p Fm(meta1q)p Fn(])f(QMGR)j(user)
-e(and)i(group.)p 0 5442 1512 4 v 92 5495 a Fh(3)127 5519
-y Fg(On)c(some)f(systems)h(the)h(man)f(page)g(is)f(in)h(another)g
-(section,)h(e.g.,)e(4.)1848 5768 y Fn(13)p eop end
-%%Page: 14 15
-TeXDict begin 14 14 bop 125 523 a Fc(\017)41 b Fm(MTAM)26
-b Fn([)p Fm(meta1m)p Fn(])f(address)h(resolv)n(er)g(\(misc\))i(user)f
-(and)g(group.)125 689 y Fc(\017)41 b Fm(MTA)26 b Fn([)p
-Fm(meta1)p Fn(])g(generic)g(\(con\014guration)h(etc\))h(user)f(and)g
-(group.)125 855 y Fc(\017)41 b Fm(MTALG)25 b Fn(group)i(for)g
-(log\014les;)f(the)i(install)g(program)d(tries)j Fm(operator)p
-Fn(,)c Fm(sysadmin)p Fn(,)g(and)k Fm(root)p Fn(.)0 1075
-y Fd(Imp)l(ortant)i(Notes)p Fn(:)101 1294 y(1.)42 b(The)27
-b(users)g(and)g(groups)g Fd(must)f Fn(b)r(e)i(created)f(b)r(efore)g
-Fm(make)42 b(install)25 b Fn(is)j(in)n(v)n(ok)n(ed.)101
-1460 y(2.)42 b Fm(misc/sm.setup.s)o(h)27 b Fn(will)34
-b(not)f(o)n(v)n(erwrite)e(existing)i(\014les)g(or)g(directories,)g
-(hence)g(it)h(do)r(es)f(not)g(w)n(ork)f(for)h(up-)208
-1560 y(grading)26 b(a)h(system)g(if)h(con\014guration)e(\014les)i(or)e
-(directory/\014le)g(o)n(wners)g(need)i(to)g(c)n(hanged.)0
-1846 y Fj(2.4.1)112 b(Directories,)38 b(Files,)g(and)h(P)m(ermissions)0
-2053 y Fm(make)j(install)24 b Fn(\(i.e.,)j Fm(misc/sm.setup.sh)o
-Fn(\))21 b(will)27 b(create)e(all)h(the)h(required)f(directories)f(and)
-h(\014les)g(with)h(the)g(correct)0 2153 y(p)r(ermissions)33
-b(pro)n(vided)g(the)h(users)f(and)g(groups)f(ha)n(v)n(e)h(b)r(een)h
-(set)g(up)g(prop)r(erly)-7 b(.)54 b(This)34 b(section)f(explains)h
-(what)f(the)0 2252 y(created)27 b(structure)g(lo)r(oks)g(lik)n(e.)0
-2406 y(The)i(CDB)g(directories)e(\()p Fm(0)p Fn(-)p Fm(9)p
-Fn(,)h Fm(A)p Fn(-)p Fm(F)p Fn(\))g(m)n(ust)g(b)r(e)h(o)n(wned)f(b)n(y)
-h Fm(meta1s)d Fn(and)i(ha)n(v)n(e)g(group)f Fm(meta1q)f
-Fn(with)k(the)e(p)r(ermissions)0 2505 y Fm(0771)p Fn(:)0
-2741 y Fm(drwxrwx--x)83 b(2)43 b(meta1s)85 b(meta1q)346
-b(0/)0 2978 y Fn(Note:)56 b(this)38 b(means)f(that)h(ev)n(ery)n(one)d
-(with)j(access)e(to)h(the)h(mac)n(hine)f(can)g(guess)f(the)i(name)f(of)
-g(con)n(ten)n(t)g(\014les)h(\(see)0 3077 y(Section)26
-b(10.2)e(for)h(the)h(format;)g(the)g(names)f(can)h(also)e(b)r(e)i(read)
-f(from)h(the)g(log\014les)e(if)j(those)e(are)g(w)n(orld-readable\))e
-(and)0 3177 y(list)h(\()p Fm(ls\(1\))p Fn(\))f(them,)i(ho)n(w)n(ev)n
-(er,)e(they)h(cannot)g(access)f(the)h(con)n(ten)n(t)g(\014les)g(as)f
-(those)h(are)f(o)n(wned)g(b)n(y)h Fm(meta1s)e Fn(with)j(mo)r(de)0
-3277 y Fm(0640)h Fn(and)h(group)g Fm(meta1c)p Fn(,)e(e.g.,)0
-3513 y Fm(-rw-r-----)83 b(1)43 b(meta1s)85 b(meta1c)g(1993)42
-b(Jul)85 b(9)44 b(21:19)d(2/S000000000006B1)o(D2)o(00)0
-3749 y Fn(The)26 b(main)f(\(DEFEDB\))h(and)g(incoming)f(queues)g
-(\(IBDB\))h(m)n(ust)g(b)r(elong)f(to)h Fm(meta1q)d Fn(and)i(should)h
-(not)f(accessible)g(b)n(y)0 3849 y(an)n(y)n(one)h(else:)0
-4085 y Fm(drwx------)83 b(2)43 b(meta1q)85 b(meta1q)346
-b(defedb/)0 4185 y(drwx------)83 b(2)43 b(meta1q)85 b(meta1q)346
-b(ibdb/)0 4284 y(drwx------)83 b(2)43 b(meta1q)85 b(meta1q)346
-b(ibdb/ibdb/)0 4520 y Fn(Mailertable,)25 b(aliases)e(map,)j(and)f
-(other)f(maps)h(for)f(SMAR)i(\(see)f(Section)g(3.9.3\))f(should)h(b)r
-(elong)g(to)f Fm(meta1m)f Fn(and)i(can)0 4620 y(b)r(e)j(readable)e(as)h
-(lo)r(cal)g(con)n(v)n(en)n(tions)f(require:)0 4856 y
-Fm(-rw-r--r--)83 b(1)43 b(meta1m)85 b(meta1m)390 b(mt)0
-4956 y(-rw-r--r--)83 b(1)43 b(meta1m)85 b(meta1m)390
-b(aliases.db)0 5192 y Fn(In)30 b(general,)e(maps)i(should)f(b)r(e)h(o)n
-(wned)f(b)n(y)g(the)h(user)f(id)h(of)f(the)h(program)e(that)i(uses)f
-(them,)i(e.g.,)e Fm(meta1q)f Fn(o)n(wns)g(the)0 5292
-y(QMGR)g(con\014guration)e(map)h Fm(qmgr)p 1163 5292
-27 4 v 30 w(conf.db)e Fn(\(see)i(Section)h(3.8.1\).)0
-5445 y(The)g(meta1)f(con\014guration)f(\014le)h(can)h(either)f(b)r
-(elong)g(to)h Fm(root)e Fn(or)h(the)h(generic)e(meta1)h(user:)1848
-5768 y(14)p eop end
-%%Page: 15 16
-TeXDict begin 15 15 bop 0 523 a Fm(-rw-r--r--)83 b(1)43
-b(meta1)129 b(meta1)434 b(meta1.conf)0 759 y Fn(The)25
-b(directories)f(in)i(whic)n(h)f(the)g(comm)n(unication)g(so)r(c)n(k)n
-(ets)f(b)r(et)n(w)n(een)h(QMGR)g(and)g(the)h(other)f(programs)e(are)h
-(lo)r(cated)0 859 y(m)n(ust)k(b)r(elong)f(to)g Fm(meta1q)f
-Fn(and)h(b)r(e)h(group)e(accessible)h(for)g(the)h(corresp)r(onding)e
-(program:)0 1095 y Fm(drwxrws---)83 b(2)43 b(meta1q)85
-b(meta1m)346 b(qmsmar/)0 1195 y(drwxrws---)83 b(2)43
-b(meta1q)85 b(meta1c)346 b(qmsmtpc/)0 1294 y(drwxrws---)83
-b(2)43 b(meta1q)85 b(meta1s)346 b(qmsmtps/)0 1531 y Fn(The)29
-b(directory)e(in)j(whic)n(h)e(the)i(comm)n(unication)e(so)r(c)n(k)n(et)
-f(b)r(et)n(w)n(een)i(MCP)g(and)f(SMTPS)h(is)g(lo)r(cated)f(m)n(ust)h(b)
-r(elong)g(to)0 1630 y Fm(meta1s)p Fn(:)0 1867 y Fm(drwxr-x---)83
-b(2)43 b(meta1s)85 b(meta1s)346 b(smtps/)0 2103 y Fn(The)27
-b(log\014les)g(m)n(ust)g(b)r(e)h(o)n(wned)f(b)n(y)g(the)h(corresp)r
-(onding)d(user)i(and)g(ma)n(y)g(ha)n(v)n(e)f(relaxed)g(group)g(\(or)h
-(ev)n(en)g(w)n(orld\))f(read)0 2203 y(p)r(ermissions:)0
-2439 y Fm(-rw-r-----)83 b(1)43 b(meta1q)85 b(operator)127
-b(qmgr.log)0 2538 y(-rw-r-----)83 b(1)43 b(meta1m)85
-b(operator)127 b(smar.log)0 2638 y(-rw-r-----)83 b(1)43
-b(meta1c)85 b(operator)127 b(smtpc.log)0 2738 y(-rw-r-----)83
-b(1)43 b(meta1s)85 b(operator)127 b(smtps.log)0 2974
-y Fn(T)-7 b(o)27 b(c)n(hec)n(k)g(whether)g(an)h(installation)f(w)n(as)f
-(successful,)i(run)0 3210 y Fm(#)43 b(./misc/sm.check.s)o(h)37
-b(-P)0 3446 y Fn(\(in)28 b(the)g(build)g(directory\).)35
-b(Note:)i(this)28 b(script)f(uses)g(the)g(same)g(en)n(vironmen)n(t)g(v)
--5 b(ariables)26 b(as)g(the)i(installation)f(script.)0
-3732 y Fj(2.4.2)112 b(Upgrading)39 b(from)f(earlier)g(MeT)-9
-b(A1)37 b(V)-9 b(ersions)0 3939 y Fn(Curren)n(tly)25
-b(there)h(is)g(no)g(supp)r(ort)g(for)f(automated)h(upgrades.)35
-b(If)26 b(y)n(ou)g(ha)n(v)n(e)f(an)g(earlier)g(v)n(ersion)g(of)h(MeT)-7
-b(A1)26 b(installed)0 4039 y(and)36 b(w)n(an)n(t)f(to)g(upgrade,)i
-(here)e(are)g(some)g(tips)h(\(note:)53 b(all)36 b(programs)d(should)j
-(b)r(e)g(run)f(from)h(the)g(build)g(directory)0 4139
-y(unless)27 b(men)n(tioned)h(otherwise\):)125 4375 y
-Fc(\017)41 b Fn(T)-7 b(o)27 b(c)n(hec)n(k)f(whether)i(an)f
-(installation)g(w)n(as)g(successful,)g(run)208 4591 y
-Fm(#)43 b(./misc/sm.check.)o(sh)37 b(-P)125 4807 y Fc(\017)k
-Fn(T)-7 b(o)27 b(c)n(hec)n(k)f(whether)i(the)g(con\014guration)e
-(\014le)i(needs)f(c)n(hanges,)f(run)208 5022 y Fm($)43
-b(./misc/smconf)38 b(/etc/meta1/meta1)o(.c)o(onf)208
-5238 y Fn(If)25 b(the)h(\014le)f(is)g(syn)n(tactically)f(in)n(v)-5
-b(alid)25 b(for)g(this)g(v)n(ersion)f(of)h(MeT)-7 b(A1)25
-b(the)g(program)e(will)j(sho)n(w)e(those)h(errors.)34
-b(Use)208 5338 y Fm(-h)26 b Fn(as)h(argumen)n(t)g(to)g(see)h(the)g(a)n
-(v)-5 b(ailable)26 b(option,)h(e.g.,)g Fm(-u)g Fn(migh)n(t)h(b)r(e)g
-(useful.)1848 5768 y(15)p eop end
-%%Page: 16 17
-TeXDict begin 16 16 bop 0 1199 a Fl(Chapter)65 b(3)0
-1668 y Fp(Run-Time)77 b(Con\014guration)h(of)g(MeT)-19
-b(A1)0 2203 y Fk(3.1)135 b(Ov)l(erview)0 2439 y Fn(Con\014guration)20
-b(of)h(MeT)-7 b(A1)22 b(can)f(b)r(e)h(done)f(via)g(command)g(line)h
-(parameters)d(or)i(via)g(a)g(con\014guration)f(\014le)h(\(the)i(latter)
-e(is)0 2538 y(preferred,)26 b(the)h(former)f(o\013ers)f(only)i(a)f
-(small)g(subset)h(of)f(the)h(a)n(v)-5 b(ailable)26 b(con\014guration)f
-(options\).)36 b(If)27 b(a)f(con\014guration)0 2638 y(\014le)i(and)h
-(command)e(line)i(options)f(are)f(sp)r(eci\014ed,)i(then)g(the)f
-(options)g(are)f(curren)n(tly)h(pro)r(cessed)f(in)h(order,)g(i.e.,)g
-(later)0 2738 y(settings)d(o)n(v)n(erride)f(earlier)g(ones)g(for)h(the)
-h(same)f(options.)36 b(Information)24 b(ab)r(out)i(the)g(former)e(is)i
-(a)n(v)-5 b(ailable)24 b(b)n(y)h(in)n(v)n(oking)0 2837
-y(a)g(program)d(with)k(the)f(option)g Fm(-h)f Fn(\(MCP)h(curren)n(tly)f
-(uses)g Fm(syslog\(3\))e Fn(instead)i(of)h Fm(stderr)p
-Fn(\),)f(it)h(will)g(sho)n(w)f(the)i(usage)0 2937 y(as)j(w)n(ell)h(as)g
-(the)g(default)h(v)-5 b(alues.)44 b(The)30 b(syn)n(tax)g(of)g(the)g
-(con\014guration)f(\014les)h(is)g(sp)r(eci\014ed)g(in)h(the)f(follo)n
-(wing)f(sections.)0 3036 y(T)-7 b(o)31 b(actually)f(use)h(a)f
-(con\014guration)f(\014le,)j(the)g(option)e Fm(-f)43
-b($CONFIGFILE)26 b Fn(m)n(ust)31 b(b)r(e)h(used,)g(otherwise)e(the)h
-(programs)0 3136 y(use)26 b(only)f(the)h(built-in)h(default)f(v)-5
-b(alues,)26 b(but)g(not)g(a)g(con\014guration)e(\014le.)36
-b(Option)26 b(')p Fm(-V)p Fn(')f(can)g(b)r(e)i(used)f(to)f(sho)n(w)g(v)
-n(ersion)0 3236 y(information,)k(sp)r(ecifying)g(')p
-Fm(-V)p Fn(')g(m)n(ultiple)g(times)h(sho)n(ws)e(more)g(detail,)i(e.g.,)
-f(')p Fm(-VVVVV)p Fn(')e(will)i(sho)n(w)g(the)g(con\014guration)0
-3335 y(data)22 b(including)h(the)g(default)g(v)-5 b(alue)23
-b(for)f(\(almost\))h(ev)n(ery)e(option,)j(and)e(')p Fm(-VVVVVV)p
-Fn(')e(will)j(also)f(sho)n(w)g(all)g(a)n(v)-5 b(ailable)22
-b(\015ags.)0 3489 y(Some)36 b(con\014guration)e(options)h(can)g(b)r(e)i
-(set)e(via)h(maps,)h(these)f(maps)g(are:)52 b Fm(qmgr)p
-2669 3489 27 4 v 30 w(conf)34 b Fn(for)h(QMGR)h(\(see)g(Section)0
-3588 y(3.8.1\))27 b(and)g Fm(access)e Fn(for)i(SMTPS)h(\(indirectly)g
-(via)f(the)h(address)e(resolv)n(er,)f(see)j(Section)f(3.9.3\).)0
-3916 y Fk(3.2)135 b(Con\014guration)46 b(File)f(Syn)l(tax)0
-4152 y Fn(The)28 b(grammar)d(for)i(a)h(MeT)-7 b(A1)27
-b(con\014guration)f(\014le)i(is)f(v)n(ery)g(simple:)50
-4300 y(conf)199 b(::=)99 b(en)n(tries)50 4399 y(en)n(tries)110
-b(::=)99 b(en)n(try)27 b(*)50 4499 y(en)n(try)159 b(::=)99
-b(option)28 b Fc(j)f Fn(section)50 4598 y(section)99
-b(::=)g(k)n(eyw)n(ord)26 b([name)h(])h(")p Fc(f)p Fn(")e(en)n(tries)h
-(")p Fc(g)p Fn(")g([";"])50 4698 y(option)118 b(::=)99
-b(option-name)27 b("=")f(rhs)50 4798 y(rhs)237 b(::=)99
-b(v)-5 b(alue)28 b(";")f Fc(j)g Fn(")p Fc(f)p Fn(")f(v)-5
-b(alue-list)28 b(")p Fc(g)p Fn(")e([";"])0 4947 y(A)g(con\014guration)d
-(\014le)i(consists)g(of)g Fd(entries)p Fn(,)h(eac)n(h)e
-Fd(entry)h Fn(is)g(either)h(an)e Fd(option)j Fn(or)d(a)h
-Fd(se)l(ction)p Fn(.)36 b(An)26 b(option)f(has)f(a)h
-Fd(name)p Fn(,)0 5047 y(an)e(equal)f(sign,)i(and)f(a)g
-Fd(value)g Fn(terminated)g(b)n(y)g(a)g(semicolon)f(or)g(a)h(\(brac)n(k)
-n(eted\))f(list)i(of)f(v)-5 b(alues)22 b(separated)g(b)n(y)h(comma)3720
-5017 y Fi(1)3756 5047 y Fn(.)0 5146 y(A)k Fd(se)l(ction)g
-Fn(consists)g(of)f(a)h Fd(keywor)l(d)p Fn(,)i(an)d(optional)g
-Fd(name)p Fn(,)i(and)e(a)h(\(brac)n(k)n(eted\))f(sequence)g(of)h
-Fd(entries)p Fn(.)37 b(Keyw)n(ords)25 b(and)0 5246 y(options)31
-b(are)g(not)h(case)f(sensitiv)n(e.)49 b(The)31 b(la)n(y)n(out)g(of)h(a)
-f(con\014guration)f(\014le)i(do)r(es)g(not)f(matter,)i(i.e.,)g(inden)n
-(tation)f(and)0 5346 y(line)c(breaks)e(are)h(irrelev)-5
-b(an)n(t)26 b(\(in)i(general,)f(but)h(see)f(b)r(elo)n(w)g(for)g
-(strings\).)p 0 5420 1512 4 v 92 5473 a Fh(1)127 5497
-y Fg(A)c(trailing)g(comma)i(is)d(allo)n(w)n(ed)i(to)h(mak)n(e)f
-(writing)f(of)g(lists)g(simpler.)1848 5768 y Fn(16)p
-eop end
-%%Page: 17 18
-TeXDict begin 17 17 bop 0 523 a Fj(3.2.1)112 b(Con\014guration)39
-b(File)f(V)-9 b(alues)0 730 y Fn(V)i(alues)25 b(in)g(a)f
-(con\014guration)f(\014le)i(are)f(usually)h(strings)f(or)g(n)n(um)n(b)r
-(ers.)35 b(If)25 b(a)g(string)f(is)h(used,)g(then)h(it)f(should)f(b)r
-(e)i(quoted,)0 830 y(unless)31 b(it)h(con)n(tains)e(no)i(sp)r(ecial)f
-(c)n(haracters)e(whic)n(h)i(are)g(treated)g(sp)r(ecially)g(b)n(y)g(the)
-h(grammar.)46 b(If)32 b(a)f(string)f(is)i(v)n(ery)0 929
-y(long)27 b(it)h(can)f(b)r(e)h(brok)n(en)e(in)n(to)i(substrings)e
-(spread)h(out)h(o)n(v)n(er)d(sev)n(eral)h(lines)i(\(just)g(lik)n(e)g
-(strings)e(in)i(ANSI)g(C\),)g(e.g.,)87 1158 y Fm(somemessage)39
-b(=)k("this)f(is)h(a)g(very)f(long)g(string)f(which)g(is)i(spread)e(")
-218 1257 y("out)h(over)g(several)e(lines)i(because)f(otherwise)f(it)i
-(is)h(too)f(")218 1357 y("hard)f(too)i(read.";)0 1586
-y Fn(Numeric)33 b(v)-5 b(alues)33 b(can)f(ha)n(v)n(e)g(the)i(usual)e
-(pre\014xes)h(\(kno)n(wn)f(from)h(the)h(programming)c(language)i(C\))h
-(of)g Fm(0x)f Fn(for)h(hex-)0 1685 y(adecimal)25 b(\(with)h(digits)f
-Fm(0)g Fn(to)g Fm(9)p Fn(,)h Fm(A)f Fn(to)g Fm(F)p Fn(,)g(and)g
-Fm(a)g Fn(to)g Fm(f)p Fn(\))g(and)g Fm(0)g Fn(for)g(o)r(ctal)g(\(with)h
-(digits)g Fm(0)e Fn(to)i Fm(7)p Fn(\).)36 b(V)-7 b(alid)25
-b(b)r(o)r(olean)g(v)-5 b(alues)0 1785 y(are)27 b Fm(0)p
-Fn(,)g Fm(false)p Fn(,)f Fm(off)g Fn(for)h(false,)g(and)h
-Fm(1)p Fn(,)f Fm(true)p Fn(,)f Fm(on)h Fn(for)g(true)h(\(case)f
-(insensitiv)n(e\).)0 1938 y(In)35 b(some)f(cases)g(it)h(is)g(p)r
-(ossible)g(to)f(ha)n(v)n(e)g Fd(units)g Fn(for)g(v)-5
-b(alues.)59 b(Curren)n(tly)34 b(time)h(and)g(size)f(v)-5
-b(alues)35 b(mak)n(e)f(use)g(of)h(this)0 2038 y(feature.)h(V)-7
-b(alid)27 b(time)h(units)f(are)e Fm(w)i Fn(for)f(w)n(eeks,)g
-Fm(d)h Fn(for)f(da)n(ys,)g Fm(h)g Fn(for)g(hours,)h Fm(m)f
-Fn(for)g(min)n(utes,)h(and)g Fm(s)f Fn(for)h(seconds.)35
-b(V)-7 b(alid)0 2137 y(units)28 b(for)f(size)g(are)g
-Fm(B)g Fn(for)g(b)n(ytes,)g Fm(KB)g Fn(for)g(kilo)g(b)n(ytes,)g
-Fm(MB)g Fn(for)g(mega)g(b)n(ytes,)g(and)h Fm(GB)e Fn(for)i(giga)e(b)n
-(ytes.)36 b(It)28 b(is)g(allo)n(w)n(ed)e(to)0 2237 y(sp)r(ecify)31
-b(a)f(sequence)g(of)h(n)n(um)n(b)r(ers)f(and)g(units,)i(e.g.,)f
-Fm(1h)43 b(5m)g(12s)p Fn(.)h(Unless)31 b(otherwise)e(sp)r(eci\014ed,)j
-(the)f(default)g(units)0 2337 y(for)g(times)i(and)e(sizes)h(in)g(a)g
-(con\014guration)e(\014le)i(are)f Fm(s)h Fn(and)g Fm(B)p
-Fn(,)f(resp)r(ectiv)n(ely;)j(for)d(those)h(v)-5 b(alues)31
-b(these)h(units)h(can)e(b)r(e)0 2436 y(used.)0 2763 y
-Fk(3.3)135 b(Example)46 b(Con\014guration)g(File)0 2999
-y Fn(The)21 b(installation)f(script)h(creates)e(the)j(\014le)f
-Fm(meta1.conf)c Fn(in)k(the)g(con\014guration)e(directory)h(\()p
-Fm(/etc/meta1)p Fn(,)e(see)j(Section)0 3098 y(2.4\).)34
-b(Chec)n(k)22 b(the)g(commen)n(ts)g(in)g(the)h(\014le)f(and)g(edit)g
-(it)h(if)f(required.)34 b(A)23 b(con\014guration)d(\014le)i(for)g
-(meta1)f(con)n(tains)g(sev)n(eral)0 3198 y(sections:)34
-b(a)23 b(global)f(section)h(whic)n(h)h(sp)r(eci\014es)f(the)h(lo)r
-(cations)e(of)h(so)r(c)n(k)n(ets)f(and)i(directories)e(that)h(are)g
-(used)g(b)n(y)g(m)n(ultiple)0 3298 y(comp)r(onen)n(ts,)31
-b(and)f(one)g(section)f(eac)n(h)h(for)g(QMGR,)g(SMAR,)h(SMTP)f(serv)n
-(er,)f(and)h(SMTP)g(clien)n(t.)45 b(Other)30 b(sections)0
-3397 y(ma)n(y)d(de\014ne)h(services)e(that)i(are)e(started)i(b)n(y)f
-(MCP)-7 b(,)27 b(e.g.,)g(a)h(lo)r(cal)f(mailer.)0 3626
-y Fm(CDB_base_directo)o(ry)37 b(=)43 b("/var/spool/meta1)o(/")o(;)0
-3825 y(qmgr)f({)87 3925 y(AQ_max_entries)c(=)43 b(8192;)87
-4024 y(smtpc)f({)h(initial_connecti)o(on)o(s)38 b(=)43
-b(19;)f(max_connections)37 b(=)44 b(101;)e(})87 4124
-y(smtps)g({)h(max_connections)37 b(=)43 b(5;)g(max_connection_ra)o(te)o
-(=1)o(60;)37 b(})87 4224 y(max_errors_per_DS)o(N=)o(16)o(;)87
-4323 y(wait_for_server)h(=)43 b(4;)f(wait_for_client)c(=)43
-b(4;)87 4423 y(start_action)c(=)k(wait;)e(user)h(=)i(meta1q;)87
-4522 y(restart_dependenc)o(ie)o(s)37 b(=)44 b({)f(smtps,)e(smtpc,)g
-(smar)h(};)87 4622 y(path)g(=)h("/usr/libexec/qmg)o(r")o(;)38
-b(arguments)h(=)44 b("qmgr)d(-f)i(/etc/meta1/meta1)o(.c)o(onf)o(";)0
-4722 y(})0 4921 y(smtps)f({)h(flags)e(=)i({8bitmime};)c(CDB_gid)i(=)i
-(261;)f(IO_timeout)e(=)j(5m3s;)87 5021 y(listen_socket)38
-b({)44 b(type)d(=)j(inet;)d(port)h(=)h(25;)g(})87 5120
-y(start_action)c(=)k(pass;)e(pass_fd_socket)d(=)43 b(smtps/smtpsfd;)87
-5220 y(user)f(=)h(meta1s;)e(path)h(=)h(/usr/libexec/smt)o(ps;)87
-5320 y(arguments)d(=)j("smtps)e(-f)i(/etc/meta1/meta1)o(.co)o(nf)o(";)
-37 b(})0 5519 y(smtpc)42 b({)1848 5768 y Fn(17)p eop
-end
-%%Page: 18 19
-TeXDict begin 18 18 bop 87 523 a Fm(Log_Level)40 b(=)j(12;)g
-(IO_timeout)c(=)k(6m;)g(wait_for_server)37 b(=)43 b(4;)87
-623 y(start_action)c(=)k(wait;)e(user)h(=)i(meta1c;)c(path)i(=)h
-("/usr/libexec/smt)o(pc")o(;)87 722 y(arguments)d(=)j("smtpc)e(-f)i
-(/etc/meta1/meta1)o(.co)o(nf)o(";)37 b(})0 922 y(smar)42
-b({)87 1021 y(Log_Level)e(=)j(12;)87 1121 y(nameserver)d(=)j
-({10.10.10.9,)38 b(127.0.0.1};)87 1220 y(DNS_timeout)h(=)k(6;)87
-1320 y(start_action)c(=)k(wait;)e(user)h(=)i(meta1m;)c
-(restart_dependenc)o(ie)o(s)e(=)43 b({)g(smtps,)e(qmgr)h(};)87
-1420 y(path)g(=)h("/usr/libexec/sma)o(r")o(;)38 b(arguments)h(=)44
-b("smar)d(-f)i(/etc/meta1/meta1)o(.c)o(onf)o(";)0 1519
-y(})0 1847 y Fk(3.4)135 b(Common)46 b(Global)f(Con\014guration)0
-2083 y Fn(All)28 b(of)g(the)g(follo)n(wing)e(options)h(ha)n(v)n(e)g
-(defaults)g(and)h(should)f(only)g(b)r(e)h(c)n(hanged)f(if)h(necessary)
--7 b(.)101 2319 y(1.)42 b Fm(hostname)p Fn(:)29 b(set)18
-b(the)h(hostname)f(to)g(use)g(for)g(the)h(v)-5 b(arious)17
-b(comp)r(onen)n(ts.)33 b(This)18 b(can)g(b)r(e)h(set)g(if)f
-Fm(gethostbyname\(3\))208 2419 y Fn(do)r(es)27 b(not)g(return)h(a)f(v)
--5 b(alid)27 b(\(fully)i(quali\014ed\))e(hostname)h(\(format:)36
-b(string\).)101 2585 y(2.)42 b Fm(CDB_base_direct)o(ory)o
-Fn(:)31 b(base)26 b(directory)f(of)h(CDB)h(\(format:)36
-b(string\);)27 b(this)g(should)f(either)h(b)r(e)g(empt)n(y)f(\(whic)n
-(h)208 2684 y(is)g(the)h(default\))g(or)f(a)g(path)h(to)f(a)g
-(directory)f(including)i(a)f(trailing)g(slash;)g(the)h(CDB)g(library)e
-(curren)n(tly)h(simply)208 2784 y(app)r(ends)20 b(the)g(directory)f
-(names)h(\(see)g(Section)h(2.4.1\))e(to)h(it.)35 b(It)20
-b(migh)n(t)h(b)r(e)f(useful)h(to)f(mo)n(v)n(e)f(some)h(sub)r
-(directories)208 2884 y(to)27 b(di\013eren)n(t)h(disks)f(\(b)n(y)h
-(creating)e(\(sym)n(b)r(olic\))i(links)f(\()p Fm(ln\(1\))p
-Fn(\)\))g(to)g(spread)g(the)h(I/O)e(load.)101 3050 y(3.)42
-b Fm(SMAR_socket)p Fn(:)30 b(so)r(c)n(k)n(et)23 b(created)g(b)n(y)g
-(the)h(address)f(resolv)n(er)e(o)n(v)n(er)h(whic)n(h)i(clien)n(ts)f
-(\(SMTPS,)h(QMGR\))g(can)g(send)208 3149 y(requests)i(\(format:)37
-b(string\).)101 3315 y(4.)42 b Fm(SMTPC_socket)p Fn(:)32
-b(comm)n(unication)26 b(so)r(c)n(k)n(et)h(b)r(et)n(w)n(een)g(SMTPC)h
-(and)f(QMGR)h(\(format:)36 b(string\).)101 3482 y(5.)42
-b Fm(SMTPS_socket)p Fn(:)32 b(comm)n(unication)26 b(so)r(c)n(k)n(et)h
-(b)r(et)n(w)n(een)g(SMTPS)h(and)f(QMGR)h(\(format:)37
-b(string\).)0 3718 y(The)22 b(so)r(c)n(k)n(ets)e(are)h(curren)n(tly)g
-(Unix)h(domain)g(so)r(c)n(k)n(ets)e(only)-7 b(,)23 b(hence)f(the)g(v)-5
-b(alue)22 b(is)g(simply)g(the)g(pathname)g(of)f(the)i(so)r(c)n(k)n(et.)
-0 4046 y Fk(3.5)135 b(Common)46 b(Con\014guration)f(Options)0
-4281 y Fn(There)29 b(is)h(curren)n(tly)f(one)h(con\014guration)e
-(option)i(whic)n(h)g(is)g(the)g(same)g(across)e(all)i(mo)r(dules)g(but)
-g(is)g(not)g(sp)r(eci\014ed)g(in)0 4381 y(the)e(global)e(section)i(b)r
-(ecause)f(it)h(is)f(sp)r(eci\014c)h(to)g(the)g(individual)f(mo)r
-(dules.)101 4617 y(1.)42 b Fm(log)p Fn(:)35 b(this)28
-b(is)g(a)f(section)g(with)h(the)g(follo)n(wing)f(options:)243
-4783 y(\(a\))41 b Fm(facility)p Fn(:)31 b(see)21 b Fm(syslog\(3\))c
-Fn(for)k(v)-5 b(alid)22 b(facilities,)g(here)f(are)f(some)h(v)-5
-b(alid)22 b(options)e(pro)n(vided)h(the)g(OS)g(o\013ers)390
-4883 y(them:)38 b Fm(daemon)p Fn(,)25 b Fm(mail)p Fn(,)h
-Fm(auth)p Fn(,)g Fm(local0)p Fn(,)f(etc.)238 5016 y(\(b\))42
-b Fm(ident)p Fn(:)50 b(iden)n(ti\014cation)34 b(string)h(for)f
-Fm(openlog\(3\))p Fn(,)f(defaults)i(to)g(name)f(of)h(the)g(mo)r(dules.)
-59 b(It)35 b(migh)n(t)g(b)r(e)390 5115 y(useful)28 b(to)g(c)n(hose)e
-(other)h(iden)n(ti\014ers,)h(e.g.,)f Fm(MeTA1)e Fn(or)i
-Fm(MeTA1QMGR)p Fn(.)247 5248 y(\(c\))42 b Fm(options)p
-Fn(:)34 b(options)25 b(for)h Fm(openlog\(3\))c Fn(\(without)27
-b(the)f(leading)g Fm(LOG)p 2535 5248 27 4 v 30 w Fn(\))h(as)e(pro)n
-(vided)g(b)n(y)h(the)h(OS,)f(e.g.,)g Fm(pid)390 5348
-y Fn(or)h Fm(ndelay)p Fn(.)208 5514 y(Example:)1848 5768
-y(18)p eop end
-%%Page: 19 20
-TeXDict begin 19 19 bop 208 523 a Fm(qmgr)41 b({)j(log)e({)h(facility)d
-(=)k(daemon;)c(ident=meta1-qmgr;)d(})43 b(})208 623 y(smtps)e({)i(log)g
-({)g(facility)d(=)j(mail;)f(ident=meta1-MTA;)37 b(})43
-b(})208 836 y Fn(Note:)36 b(debug)28 b(output)g(is)g(curren)n(tly)e
-(sen)n(t)i(to)f Fm(stdout)p Fn(;)e Fm(syslog\(3\))f Fn(is)k(not)f(used)
-h(for)f(debugging.)0 1070 y(All)j(mo)r(dules)h(ha)n(v)n(e)d(an)i
-(option)g(to)g(set)g(the)g(amoun)n(t)g(of)g(logging)e(\()p
-Fm(log_level)p Fn(\))f(that)j(should)g(b)r(e)h(done.)43
-b(The)31 b(larger)0 1170 y(the)i(v)-5 b(alue)33 b(the)g(more)f
-(information)g(is)h(logged.)51 b(F)-7 b(or)32 b(normal)g(op)r(eration)f
-(a)i(v)-5 b(alue)32 b(of)h(9)f(is)h(recommended.)52 b(During)0
-1270 y(testing)28 b(v)-5 b(alues)27 b(of)g(12)g(to)h(14)e(are)h
-(useful.)0 1597 y Fk(3.6)135 b(P)l(athnames)46 b(for)f(Files,)h
-(Directories,)h(and)e(Maps)0 1833 y Fn(Most)18 b(names)g(of)h(\014les)g
-(\(including)g(maps\))f(and)h(directories)e(in)i(the)g(con\014guration)
-e(\014le)h(ha)n(v)n(e)g(a)g(default)h(name)f(\(compiled)0
-1932 y(in)n(to)31 b(the)g(binary\))f(without)h(an)g(absolute)f(path,)i
-(e.g.,)f Fm(aliases.db)p Fn(.)43 b(If)31 b(a)f(pathname)h(is)g(not)f
-(explicitly)h(set)g(in)g(the)0 2032 y(con\014guration)d(\014le)j(or)e
-(do)r(es)h(not)g(use)g(a)g(absolute)f(path)h(\(i.e.,)h(b)r(egins)f
-(with)h(a)f(slash\),)g(then)h(the)f(default)h(is)f(relativ)n(e)0
-2132 y(to)d(either)101 2350 y(1.)42 b(the)28 b(con\014guration)e
-(directory:)35 b(maps)27 b(and)h(con\014guration)e(\014les,)h(e.g.,)h
-Fm(aliases.db)23 b Fn(and)28 b Fm(cert_file)p Fn(.)101
-2515 y(2.)42 b(the)f(main)f(queue)h(directory:)62 b(pathnames)40
-b(of)h(so)r(c)n(k)n(ets,)h(and)f(databases)e(to)i(store)e(en)n(v)n
-(elop)r(e)h(information)208 2615 y(\(IBDB,)28 b(DEFEDB\))f(or)g
-(message)f(con)n(ten)n(ts)h(\(CDB\).)0 2833 y(The)32
-b(paths)f(for)g(\014les)h(men)n(tioned)g(in)g(case)e(1)i(are)e(tak)n
-(en)i(relativ)n(e)e(to)i(the)g(path)f(of)h(the)g(con\014guration)e
-(\014le)i(whic)n(h)g(is)0 2932 y(passed)27 b(via)g(the)h
-Fm(-f)f Fn(option)g(to)g(the)h(v)-5 b(arious)27 b(mo)r(dules.)37
-b(F)-7 b(or)27 b(example:)36 b(if)28 b(SMAR)h(is)e(started)g(as)0
-3085 y Fm(/usr/libexec/sma)o(r)38 b(-f)k(/etc/meta1/meta1.)o(co)o(nf)0
-3239 y Fn(then)23 b(the)f(pathname)h(used)f(for)g(the)g(aliases)f(map)h
-(is)h Fm(/etc/meta1/alia)o(se)o(s.d)o(b)p Fn(.)29 b(This)22
-b(applies)g(to)g(the)h(SMAR)g(maps)0 3338 y(aliases,)28
-b(mailertable,)g(and)h(access)e(\(3.9.2\),)i(the)g(QMGR)g
-Fm(qmgr)p 2060 3338 27 4 v 30 w(conf)e Fn(map)h(\(3.8.1\),)h(and)g(the)
-g(ST)-7 b(AR)g(TTLS)29 b(related)0 3438 y(\014les)f(and)f(directories)f
-(used)i(b)n(y)f(the)h(SMTP)f(serv)n(er)f(\(3.10\))h(and)g(clien)n(t)h
-(\(3.11\).)0 3591 y(The)d(paths)g(for)f(\014les)h(men)n(tioned)g(in)h
-(case)e(2)g(are)g(tak)n(en)h(relativ)n(e)e(to)i(the)h(execution)e
-(directory)-7 b(.)35 b(All)26 b(MeT)-7 b(A1)25 b(mo)r(dules)0
-3691 y(should)h(b)r(e)h(started)f(\(via)g(MCP\))g(in)h(the)g(main)f
-(queue)g(directory)g(\(default:)37 b Fm(/var/spool/meta)o(1)p
-Fn(,)21 b(see)26 b(Section)g(2.4\).)0 3844 y(See)i(the)g(v)-5
-b(arious)27 b(con\014guration)f(options)h(explained)h(b)r(elo)n(w)f(ho)
-n(w)g(to)h(o)n(v)n(erride)e(the)i(defaults.)38 b(Note:)f(relativ)n(e)27
-b(path-)0 3944 y(names)g(sp)r(eci\014ed)h(in)g(the)g(con\014guration)e
-(\014le)i(are)e(\(curren)n(tly\))h(alw)n(a)n(ys)f(relativ)n(e)g(to)i
-(the)g(main)f(queue)h(directory)-7 b(.)0 4272 y Fk(3.7)135
-b(Con\014guration)46 b(for)f(MCP)0 4507 y Fn(Ev)n(ery)34
-b(section)i(in)g(a)g(MeT)-7 b(A1)36 b(con\014guration)e(\014le)i(that)h
-(refers)e(to)g(one)h(of)g(its)g(four)g(main)g(comp)r(onen)n(ts)f
-(\(QMGR,)0 4607 y(SMTPS,)h(SMTPC,)g(and)g(SMAR;)g(see)g(Section)g
-(1.1.1\))f(has)g(some)h(options)f(that)h(are)f(relev)-5
-b(an)n(t)36 b(for)f(MCP)-7 b(.)36 b(These)0 4706 y(MCP)27
-b(options)g(are:)101 4940 y(1.)42 b Fm(start_action)p
-Fn(:)32 b(one)27 b(of)g Fm(nostartaccept)p Fn(,)c Fm(accept)p
-Fn(,)i Fm(pass)p Fn(,)h Fm(wait)g Fn(\(required\).)101
-5106 y(2.)42 b Fm(listen_socket)p Fn(:)36 b(this)30 b(is)g(a)g
-(subsection)f(that)i(sp)r(eci\014es)f(the)g(so)r(c)n(k)n(et)f(on)h
-(whic)n(h)g(a)f(pro)r(cess)g(should)h(listen.)44 b(It)208
-5205 y(m)n(ust)21 b(b)r(e)h(sp)r(eci\014ed)g(for)f(an)n(y)g
-Fm(start_action)c Fn(except)k Fm(wait)p Fn(.)34 b(There)21
-b(are)f(t)n(w)n(o)h(di\013eren)n(t)h(so)r(c)n(k)n(et)e(t)n(yp)r(es)i(a)
-n(v)-5 b(ailable:)243 5387 y(\(a\))41 b Fm(type)h(=)h(inet)458
-5519 y Fn(i.)e Fm(port)p Fn(:)36 b(p)r(ort)27 b(n)n(um)n(b)r(er)h(on)f
-(whic)n(h)g(pro)r(cess)g(should)g(listen)h(\(format:)37
-b(n)n(umeric\).)1848 5768 y(19)p eop end
-%%Page: 20 21
-TeXDict begin 20 20 bop 435 523 a Fn(ii.)41 b Fm(address)p
-Fn(:)33 b(IP)24 b(address)f(on)h(whic)n(h)g(pro)r(cess)f(should)h
-(listen,)h(if)g(none)f(is)g(sp)r(eci\014ed)h(the)f(pro)r(cess)g
-(listens)545 623 y(on)k(all)f(lo)r(cal)g(\(IPv4\))g(addresses)f
-(\(format:)37 b(IPv4)26 b(address\).)238 756 y(\(b\))42
-b Fm(type)g(=)h(unix)458 888 y Fn(i.)e Fm(path)p Fn(:)36
-b(pathname)27 b(of)h(Unix)g(Domain)f(so)r(c)n(k)n(et)g(on)g(whic)n(h)h
-(pro)r(cess)e(should)h(listen)h(\(format:)37 b(string\).)435
-1005 y(ii.)k Fm(umask)p Fn(:)35 b Fm(umask)26 b Fn(for)h(so)r(c)n(k)n
-(et)g(\(format:)36 b(n)n(umeric\).)412 1121 y(iii.)41
-b Fm(user)p Fn(:)36 b(o)n(wner)26 b(of)i(so)r(c)n(k)n(et)e(\(format:)37
-b(string\).)414 1237 y(iv.)k Fm(group)p Fn(:)35 b(group)27
-b(of)g(so)r(c)n(k)n(et)g(\(format:)37 b(string\).)101
-1420 y(3.)42 b Fm(pass_fd_socket)p Fn(:)31 b(pathname)c(of)h(Unix)g
-(Domain)f(so)r(c)n(k)n(et)g(to)g(pass)g(a)g(\014le)h(descriptor)e(to)i
-(the)g(pro)r(cess.)101 1586 y(4.)42 b Fm(user)p Fn(:)35
-b(user)27 b(name)g(to)h(run)f(pro)r(cess.)101 1752 y(5.)42
-b Fm(group)p Fn(:)34 b(group)27 b(name)g(to)h(run)f(pro)r(cess.)101
-1918 y(6.)42 b Fm(restart_depende)o(nci)o(es)o Fn(:)31
-b(list)c(of)g(other)g(MeT)-7 b(A1)26 b(comp)r(onen)n(ts)h(that)g(need)g
-(to)g(b)r(e)h(restarted)e(when)h(this)g(one)208 2017
-y(is)g(restarted)f(\(or)h(crashes\).)101 2183 y(7.)42
-b Fm(path)p Fn(:)35 b(path)28 b(to)f(program)f(to)h(execute)h
-(\(required\).)101 2350 y(8.)42 b Fm(arguments)p Fn(:)33
-b(argumen)n(ts)26 b(\(argv\),)h(m)n(ust)g(start)g(with)i(name)e(of)h
-(program,)d(see)i Fm(execv\(2\))e Fn(\(required\).)101
-2516 y(9.)42 b Fm(pass_id)p Fn(:)30 b(option)21 b(to)f(use)h(to)g(pass)
-f(a)g(unique,)j(n)n(umeric)d(iden)n(ti\014er)h(to)g(the)g(spa)n(wned)f
-(pro)r(cess)f(via)i(the)g(command)208 2615 y(line.)37
-b(The)27 b(option)h(will)f(b)r(e)h(inserted)g(as)f(\014rst)g(argumen)n
-(t.)36 b(Example:)208 2814 y Fm(smtpc)41 b({)i(pass_id)e(=)i("-i";)f
-(min_processes)c(=)43 b(4;)g(max_processes)38 b(=)43
-b(4;)295 2914 y(path)f(=)h(/usr/libexec/smt)o(pc)o(;)38
-b(arguments)h(=)44 b("smtpc)d(-f)h(meta1.conf";)d(})208
-3113 y Fn(will)25 b(cause)f(MCP)h(to)g(start)f(four)h
-Fm(smtpc)e Fn(pro)r(cesses,)h(eac)n(h)g(with)h(the)h(options)e
-Fm(-i)43 b Fb(I)7 b(D)45 b Fm(-f)e(meta1.conf)21 b Fn(where)208
-3213 y Fb(I)7 b(D)29 b Fn(is)f(replaced)e(with)j(a)e(unique)h(iden)n
-(ti\014er.)0 3449 y(Notes)f(ab)r(out)h Fm(start_action)p
-Fn(:)125 3669 y Fc(\017)41 b Fn(F)-7 b(or)19 b Fm(start_action)38
-b(=)44 b(pass)18 b Fn(the)i(option)f Fm(pass_fd_socket)14
-b Fn(m)n(ust)20 b(b)r(e)h(sp)r(eci\014ed;)h(in)e(this)g(case)f(MCP)h
-(binds)g(to)208 3769 y(the)27 b(sp)r(eci\014ed)g(so)r(c)n(k)n(et)e(\()p
-Fm(listen_socket)p Fn(\))d(and)27 b(passes)e(it)i(via)g(the)g(Unix)g
-(domain)f(so)r(c)n(k)n(et)g(\()p Fm(pass_fd_socket)p
-Fn(\))208 3868 y(to)h(the)h(started)f(pro)r(cess.)125
-4034 y Fc(\017)41 b Fn(F)-7 b(or)25 b Fm(start_action)39
-b(=)k(nostartaccept)21 b Fn(MCP)26 b(w)n(aits)g(for)g(incoming)g
-(connections,)g(and)g(then)h(starts)f(a)g(pro-)208 4134
-y(cess)h(to)g(handle)h(a)f(single)g(connection.)125 4300
-y Fc(\017)41 b Fn(F)-7 b(or)35 b Fm(start_action)k(=)k(accept)33
-b Fn(MCP)j(binds)h(to)e(the)i(so)r(c)n(k)n(et)e(and)h(then)g(starts)g
-(a)f(pro)r(cess)g(to)h(handle)g(the)208 4399 y(connections)26
-b(without)i(w)n(aiting)f(for)g(an)h(actual)f(request.)125
-4566 y Fc(\017)41 b Fn(F)-7 b(or)27 b Fm(start_action)39
-b(=)k(wait)26 b Fn(MCP)i(simply)g(starts)g(the)g(requested)g(n)n(um)n
-(b)r(er)f(of)i(pro)r(cesses)d(without)j(passing)208 4665
-y(them)e(an)n(y)g(op)r(en)g(connections.)36 b(This)27
-b(is)g(in)n(tended)h(for)e(pro)r(cesses)g(that)h(do)g(not)g(comm)n
-(unicate)g(with)g(external)208 4765 y(clien)n(ts.)0 4984
-y(MCP)h(is)g(curren)n(tly)g(a)g(generic)f(con)n(trol)g(program)g(that)i
-(do)r(es)f Fd(not)g Fn(ha)n(v)n(e)f(an)n(y)h Fd(builtin)i(know)t(le)l
-(dge)h Fn(ab)r(out)d(the)h(v)-5 b(arious)0 5084 y(MeT)e(A1)28
-b(mo)r(dules.)37 b(Hence)27 b(the)h(MCP)g(options)f(for)g(eac)n(h)g
-(MeT)-7 b(A1)27 b(comp)r(onen)n(t)g(m)n(ust)h(b)r(e)g(sp)r(eci\014ed)g
-(prop)r(erly)-7 b(,)27 b(there)0 5184 y(are)32 b(no)g(builtin)i
-(defaults)f(that)g(could)g(b)r(e)g(asso)r(ciated)e(with)i(the)h
-(functionalit)n(y)e(of)h(the)g(v)-5 b(arious)32 b(MeT)-7
-b(A1)33 b(mo)r(dules.)0 5283 y(The)g(default)g(con\014guration)e
-(\014le)h(created)g(b)n(y)h(the)f(installation)h(program)d(con)n(tains)
-i(the)h(correct)e(defaults.)52 b(These)0 5383 y(should)27
-b(only)h(b)r(e)g(c)n(hanged)e(if)i(really)f(necessary)-7
-b(.)1848 5768 y(20)p eop end
-%%Page: 21 22
-TeXDict begin 21 21 bop 0 523 a Fk(3.8)135 b(Con\014guration)46
-b(for)f(QMGR)0 758 y Fn(The)28 b(follo)n(wing)e(con\014guration)g
-(options)h(are)g(v)-5 b(alid)27 b(for)h(QMGR:)101 980
-y(1.)42 b Fm(AQ_max_entries)p Fn(:)j(maxim)n(um)35 b(n)n(um)n(b)r(er)f
-(of)h(en)n(tries)f(in)i(A)n(Q)e(\(activ)n(e)g(queue\))h(\(unit:)53
-b(en)n(tries\).)58 b(Note:)51 b(this)208 1080 y(v)-5
-b(alue)27 b(m)n(ust)h(b)r(e)g(larger)d(than)j(the)g(largest)e(n)n(um)n
-(b)r(er)i(of)f(recipien)n(ts)g(accepted)h(b)n(y)f(a)g(single)g
-(transaction.)101 1240 y(2.)42 b Fm(conf)p Fn(:)58 b(name)39
-b(of)g(con\014guration)e(map)i(\(including)h(extension\),)i(see)d
-(Section)g(3.8.1)f(for)g(details.)72 b(See)39 b(also)208
-1339 y(Section)27 b(3.6)g(ab)r(out)g(relativ)n(e)g(pathnames.)101
-1500 y(3.)42 b Fm(control_socket)p Fn(:)35 b(sp)r(ecify)30
-b(pathname)g(of)f(\\con)n(trol")f(so)r(c)n(k)n(et)g(\(for)i(querying)e
-(and)i(making)f(requests\).)43 b(This)208 1599 y(so)r(c)n(k)n(et)26
-b(can)h(b)r(e)h(used)g(b)n(y)f(the)h(query/con)n(trol)d(program)h
-Fm(qmgrctl)p Fn(,)f(see)i(Section)g(4.6.3.)101 1759 y(4.)42
-b(subsection)27 b Fm(DEFEDB)p Fn(:)243 1919 y(\(a\))41
-b Fm(base_directory)p Fn(:)31 b(home)d(directory)e(for)h(DEFEDB.)238
-2046 y(\(b\))42 b Fm(log_directory)p Fn(:)30 b(log)24
-b(directory)g(for)g(DEFEDB.)h(F)-7 b(or)24 b(b)r(etter)h(p)r
-(erformance,)f(this)i(directory)d(can)h(b)r(e)i(set)390
-2146 y(to)i(p)r(oin)n(t)f(to)h(a)f(di\013eren)n(t)h(disk)f(than)h(the)g
-(base)f(directory)f(of)i(DEFEDB.)101 2306 y(5.)42 b(subsection)27
-b Fm(DSN_handling)p Fn(:)243 2466 y(\(a\))41 b Fm(merge_delay_max)p
-Fn(:)31 b(maxim)n(um)c(time)h(to)g(w)n(ait)f(for)g(merging)g(m)n
-(ultiple)h(DSNs)g(in)n(to)f(one)h(\(unit:)38 b(s\).)238
-2593 y(\(b\))k Fm(flags)p Fn(:)35 b(con\014guration)26
-b(\015ags:)458 2720 y(i.)41 b Fm(header_only)p Fn(:)32
-b(include)25 b(only)g(the)h(headers)e(in)h(a)g(DSN;)h(b)n(y)f(default)h
-(the)g(\014rst)f(b)r(ounce)g(includes)g(the)545 2820
-y(en)n(tire)j(message)e(and)h(subsequen)n(t)g(ones)g(include)h(only)g
-(the)g(headers.)435 2933 y(ii.)41 b Fm(MIME_Format)p
-Fn(:)31 b(use)25 b(MIME)f(to)h(structure)f(a)g(DSN.)i(Note:)35
-b(this)25 b(is)g(not)f(\(y)n(et\))h(a)g(DSN)g(in)g(the)g(format)545
-3033 y(sp)r(eci\014ed)j(b)n(y)g(RF)n(C)f(3464)f([MV03)o(].)247
-3160 y(\(c\))42 b Fm(max_errors_per_DS)o(N)p Fn(:)35
-b(maxim)n(um)40 b(n)n(um)n(b)r(er)h(of)g(error)d(messages)h(\(failed)j
-(recipien)n(ts\))e(in)h(a)g(b)r(ounce)390 3259 y(\(DSN\))29
-b(\(unit:)38 b(en)n(tries\).)101 3419 y(6.)k Fm(double_bounce_a)o(ddr)o
-(es)o(s)p Fn(:)26 b(RF)n(C)19 b(2821)d(address)h(for)h(double)g(b)r
-(ounces;)k(defaults)c(to)g Fm(<postmaster@)p Fn(hostname)p
-Fm(>)p Fn(.)101 3579 y(7.)42 b(subsection)27 b Fm(IBDB)p
-Fn(:)243 3740 y(\(a\))41 b Fm(max_commit_delay)p Fn(:)31
-b(maxim)n(um)c(time)h(b)r(et)n(w)n(een)g(commits)f(to)h(IBDB)f(\(unit:)
-38 b Fb(\026)p Fn(s\))238 3866 y(\(b\))k Fm(size)p Fn(:)36
-b(maxim)n(um)27 b(size)g(of)h(eac)n(h)f(IBDB)g(\014le)h(\(unit:)38
-b(B\).)247 3993 y(\(c\))k Fm(max_open_TAs)p Fn(:)30 b(maxim)n(um)23
-b(n)n(um)n(b)r(er)g(of)g(op)r(en)g(transactions)e(in)i(IBDB)h(b)r
-(efore)e(a)h(commit)g(is)g(p)r(erformed)390 4093 y(\(unit:)38
-b(en)n(tries\).)208 4253 y(Note:)32 b(the)20 b(con\014guration)e
-(\014le)h(o\013ers)g(no)g(w)n(a)n(y)f(to)h(sp)r(ecify)h(a)e(base)h
-(directory)f(for)h(IBDB,)g(ho)n(w)n(ev)n(er,)g(the)h(directory)208
-4353 y(can)27 b(b)r(e)h(easily)f(mo)n(v)n(ed)f(elsewhere)h(and)g(a)g
-(\(sym)n(b)r(olic\))h(link)g(\()p Fm(ln\(1\))p Fn(\))e(can)h(b)r(e)h
-(added.)101 4513 y(8.)42 b(subsection)27 b Fm(IQDB)p
-Fn(:)243 4673 y(\(a\))41 b Fm(max_cache_entries)o Fn(:)36
-b(maxim)n(um)30 b(n)n(um)n(b)r(er)f(of)h(en)n(tries)f(in)i(IQDB)e(cac)n
-(he)h(\(unit:)42 b(en)n(tries\).)i(This)29 b(m)n(ust)390
-4773 y(b)r(e)f(larger)e(than)i(the)g(sum)f(of)h(all)f(recipien)n(ts)g
-(in)h(op)r(en)g(transactions.)238 4900 y(\(b\))42 b Fm
-(hash_table_entrie)o(s)p Fn(:)35 b(size)30 b(of)g(hash)f(table)h(for)g
-(IQDB)f(\(unit:)43 b(en)n(tries\).)g(This)30 b(m)n(ust)g(b)r(e)g
-(larger)e(than)390 4999 y Fm(max_cache_entries)o Fn(.)101
-5159 y(9.)42 b Fm(log_level)p Fn(:)33 b(logging)26 b(lev)n(el.)60
-5320 y(10.)41 b Fm(min_disk_space)p Fn(:)27 b(minim)n(um)22
-b(amoun)n(t)e(of)h(free)f(disk)h(space)f(\(unit:)35 b(KB\).)20
-b(This)h(v)-5 b(alue)21 b(should)f(b)r(e)i(signi\014can)n(tly)208
-5419 y(larger)30 b(than)j(the)g(maxim)n(um)g(size)f(of)h(a)f(message)g
-(to)g(b)r(e)i(accepted)e(b)n(y)h(the)g(SMTP)f(serv)n(er,)g(it)i(should)
-e(b)r(e)h(as)208 5519 y(large)26 b(as)h(the)h(maxim)n(um)f(message)f
-(size)i(m)n(ultiplied)g(b)n(y)f(the)h(maxim)n(um)g(n)n(um)n(b)r(er)f
-(of)h(incoming)f(connections.)1848 5768 y(21)p eop end
-%%Page: 22 23
-TeXDict begin 22 22 bop 60 523 a Fn(11.)41 b Fm(OCC_max_entries)o
-Fn(:)48 b(size)36 b(of)g(outgoing)f(\(SMTPC\))h(connection)g(cac)n(he)f
-(\(unit:)55 b(en)n(tries\).)61 b(This)36 b(should)g(b)r(e)208
-623 y(large)26 b(enough)i(to)f(k)n(eep)h(trac)n(k)f(of)h(outgoing)e
-(connections)i(o)n(v)n(er)e(a)h(time)i(span)f(that)g(is)g(at)g(least)f
-(as)h(long)f(as)g(the)208 722 y(maxim)n(um)g(retry)g(time.)60
-873 y(12.)41 b Fm(ok_disk_space)p Fn(:)32 b(amoun)n(t)27
-b(of)h(free)f(disk)h(space)f(at)h(whic)n(h)g(normal)e(op)r(eration)h
-(con)n(tin)n(ues)g(\(unit:)39 b(KB\).)27 b(Must)208 973
-y(b)r(e)h(larger)d(than)j Fm(min_disk_space)p Fn(.)60
-1124 y(13.)41 b Fm(queue_return_ti)o(meo)o(ut)o Fn(:)31
-b(maxim)n(um)d(time)g(in)g(queue)f(\(unit:)38 b(s\).)60
-1275 y(14.)j Fm(queue_delay_tim)o(eou)o(t)p Fn(:)i(send)34
-b(dela)n(y)g(w)n(arning)e(\(\\dela)n(y)n(ed)h(DSN"\))h(if)h(the)f(mail)
-g(is)g(still)g(in)h(the)f(queue)g(af-)208 1374 y(ter)k(at)h(least)f
-(this)i(duration)e(\(unit:)60 b(s\).)71 b(T)-7 b(o)39
-b(turn)g(o\013)g(dela)n(y)n(ed)e(DSNs)j(set)f(this)g(to)g(a)f(v)-5
-b(alue)39 b(bigger)e(than)208 1474 y Fm(queue_return_ti)o(meo)o(ut)o
-Fn(.)k(Note:)i(based)31 b(on)f(the)h(retry)f(sc)n(hedule)h(the)g(dela)n
-(y)n(ed)f(DSN)i(migh)n(t)e(b)r(e)i(sen)n(t)e(later)208
-1573 y(than)d(the)h(option)g(sp)r(eci\014es.)60 1724
-y(15.)41 b Fm(retry_max_delay)o Fn(:)31 b(maxim)n(um)d(time)g(for)f
-(retrying)f(a)i(deliv)n(ery)e(\(unit:)38 b(s\).)60 1875
-y(16.)j Fm(retry_min_delay)o Fn(:)31 b(minim)n(um)e(time)f(for)f
-(retrying)f(a)h(deliv)n(ery)g(\(unit:)38 b(s\).)60 2026
-y(17.)j(subsection)27 b Fm(smtpc)p Fn(:)243 2177 y(\(a\))41
-b Fm(initial_connectio)o(ns)o Fn(:)56 b(maxim)n(um)39
-b(initial)h(n)n(um)n(b)r(er)g(of)f(outgoing)g(connections)g(to)g(a)h
-(single)f(host)390 2277 y(\(unit:)c(en)n(tries\).)g(The)22
-b(sliding)f(windo)n(w)h(for)f(the)h(slo)n(w)f(start)g(algorithm)g
-(\(see)h(Section)g(3.8.1\))f(is)g(initialized)390 2376
-y(with)28 b(this)g(v)-5 b(alue.)238 2494 y(\(b\))42 b
-Fm(max_connections)p Fn(:)30 b(maxim)n(um)c(n)n(um)n(b)r(er)g(of)h
-(outgoing)e(connections)g(to)h(a)g(single)g(host)g(\(unit:)37
-b(en)n(tries\).)247 2612 y(\(c\))42 b Fm(lmtp_max_rcpts_pe)o(r_)o(tra)o
-(ns)o(ac)o(tio)o(n)p Fn(:)31 b(maxim)n(um)d(n)n(um)n(b)r(er)f(of)h
-(recipien)n(ts)f(p)r(er)h(transaction)e(for)i(mail)390
-2711 y(sen)n(t)g(via)f(LMTP)g(\(unit:)38 b(en)n(tries\).)238
-2829 y(\(d\))k Fm(smtp_max_rcpts_pe)o(r_)o(tra)o(ns)o(ac)o(tio)o(n)p
-Fn(:)31 b(maxim)n(um)d(n)n(um)n(b)r(er)f(of)h(recipien)n(ts)f(p)r(er)h
-(transaction)e(for)i(mail)390 2928 y(sen)n(t)g(via)f(\(E\)SMTP)g
-(\(unit:)38 b(en)n(tries\).)247 3046 y(\(e\))k Fm(flags)p
-Fn(:)35 b(con\014guration)26 b(\015ags:)458 3164 y(i.)41
-b Fm(lookup_rcpt_conf)p Fn(:)27 b(Lo)r(ok)21 b(up)g(recipien)n(t)f
-(con\014guration)g(data)g(\(see)h(Section)g(3.11.1\))e(in)j(the)f
-(access)545 3263 y(map)28 b(\(see)f(Section)h(3.9.3\))435
-3372 y(ii.)41 b Fm(lookup_session_co)o(nf)p Fn(:)51 b(Lo)r(ok)36
-b(up)i(session)f(con\014guration)f(data)h(\(see)h(Section)f(3.11.1\))f
-(in)i(the)545 3472 y(con\014guration)26 b(map)i(\(see)f(item)i(2\).)252
-3589 y(\(f)6 b(\))43 b Fm(rcpt_conf_lookup_)o(fl)o(ags)o
-Fn(:)29 b(If)24 b(recipien)n(t)g(con\014guration)e(data)i(\(see)f(item)
-i(17\(e\)i\))e(is)h(lo)r(ok)n(ed)f(up)h(in)g(the)390
-3689 y(access)j(map,)g(then)h(these)g(\015ags)e(determine)i(whic)n(h)g
-(kind)f(of)h(lo)r(okups)f(should)g(b)r(e)h(p)r(erformed.)458
-3807 y(i.)41 b Fm(full_adress)p Fn(:)33 b(use)27 b(the)h(full)h
-(address)d(as)h(k)n(ey)-7 b(.)435 3916 y(ii.)41 b Fm(detail_plus)p
-Fn(:)33 b(lo)r(okup)27 b(also)f(\\)p Fm(user++@subdomain)o
-Fn(".)412 4025 y(iii.)41 b Fm(detail_star)p Fn(:)33 b(lo)r(okup)27
-b(also)f(\\)p Fm(user+*@subdomain)o Fn(".)414 4133 y(iv.)41
-b Fm(star)p Fn(:)36 b(lo)r(okup)27 b(also)f(\\)p Fm(user*@subdomain)p
-Fn(")o(.)437 4242 y(v.)41 b Fm(domain)p Fn(:)35 b(lo)r(okup)27
-b(domain)g(part.)414 4351 y(vi.)41 b Fm(dotsubdomain)p
-Fn(:)32 b(iterate)c(through)e(sub)r(domains.)391 4459
-y(vii.)41 b Fm(dot)p Fn(:)36 b(lo)r(okup)27 b(also)g(\\.".)390
-4578 y(The)h(default)g(is)f(to)h(p)r(erform)f(all)g(lo)r(okups.)60
-4728 y(18.)41 b(subsection)27 b Fm(smtps)p Fn(:)243 4879
-y(\(a\))41 b Fm(max_connection_ra)o(te)o Fn(:)30 b(maxim)n(um)c
-(incoming)f(connection)h(rate)f(from)g(a)h(single)f(host)g(\(unit:)37
-b(connec-)390 4979 y(tions/60s\).)238 5097 y(\(b\))42
-b Fm(max_connections)p Fn(:)c(maxim)n(um)31 b(n)n(um)n(b)r(er)f(of)h
-(op)r(en)g(incoming)g(connection)f(from)h(a)f(single)h(host)g(\(unit:)
-390 5196 y(en)n(tries\).)60 5347 y(19.)41 b Fm(wait_for_client)o
-Fn(:)31 b(maxim)n(um)d(amoun)n(t)f(of)g(time)i(to)e(w)n(ait)g(for)g(a)g
-(clien)n(t)h(to)g(b)r(ecome)f(a)n(v)-5 b(ailable)26 b(\(unit:)38
-b(s\))60 5498 y(20.)j Fm(wait_for_server)o Fn(:)31 b(maxim)n(um)d
-(amoun)n(t)f(of)g(time)i(to)e(w)n(ait)g(for)g(a)g(serv)n(er)f(to)i(b)r
-(ecome)f(a)n(v)-5 b(ailable)26 b(\(unit:)38 b(s\))1848
-5768 y(22)p eop end
-%%Page: 23 24
-TeXDict begin 23 23 bop 0 523 a Fj(3.8.1)112 b(Con\014guration)39
-b(Map)f(for)g(QMGR)0 730 y Fn(QMGR)28 b(implemen)n(ts)h(a)f(\\slo)n(w)e
-(start")i(algorithm)f(to)h(con)n(trol)f(the)h(n)n(um)n(b)r(er)g(of)h
-(concurren)n(t)e(connections)g(to)h(one)g(IP)0 830 y(address.)51
-b(Initially)-7 b(,)34 b(it)f(will)g(at)g(most)f(create)g(a)g(\(small\))
-h(n)n(um)n(b)r(er)f(of)h(op)r(en)g(connections)f(up)h(to)f(a)g(sp)r
-(eci\014ed)h(initial)0 929 y(limit.)38 b(F)-7 b(or)27
-b(eac)n(h)f(successful)i(deliv)n(ery)-7 b(,)26 b(the)i(allo)n(w)n(ed)f
-(n)n(um)n(b)r(er)g(is)g(increased)g(up)h(to)f(sp)r(eci\014ed)h(maxim)n
-(um)g(limit.)0 1082 y(F)-7 b(or)32 b(incoming)g(connections,)h(QMGR)f
-(establishes)g(t)n(w)n(o)g(limits:)47 b(the)33 b(connection)f(rate)g
-(and)g(the)h(n)n(um)n(b)r(er)f(of)h(op)r(en)0 1182 y(connections.)0
-1335 y(The)c(Berk)n(eley)e(DB)i(hash)f(map)g Fm(qmgr)p
-1223 1335 27 4 v 30 w(conf.db)e Fn(\(the)j(\014le)g(should)f(b)r(e)h(o)
-n(wned)f(b)n(y)h Fm(meta1q)p Fn(\))d(can)i(ha)n(v)n(e)g(the)h(follo)n
-(wing)0 1435 y(en)n(tries:)101 1655 y(1.)42 b Fm(oci:)35
-b Fn(this)28 b(k)n(ey)f(sp)r(eci\014es)g(the)h(initial)g(n)n(um)n(b)r
-(er)f(of)h(concurren)n(t)e(outgoing)g(connection)h(to)h(an)f(IP)g
-(address.)101 1821 y(2.)42 b Fm(ocm:)35 b Fn(this)28
-b(k)n(ey)f(sp)r(eci\014es)g(the)h(maxim)n(um)f(n)n(um)n(b)r(er)h(of)f
-(concurren)n(t)g(outgoing)f(connection)h(to)h(an)f(IP)g(address.)101
-1987 y(3.)42 b Fm(octo:)34 b Fn(sp)r(ecify)28 b(the)g(timeout)g(for)f
-(an)h(en)n(try)f(in)h(the)g(outgoing)e(connection)h(cac)n(he.)101
-2153 y(4.)42 b Fm(icr:)35 b Fn(this)28 b(k)n(ey)f(sp)r(eci\014es)g(the)
-h(maxim)n(um)f(rate)g(for)g(incoming)h(connections)e(\(p)r(er)i(60s\).)
-101 2319 y(5.)42 b Fm(icm:)35 b Fn(this)28 b(k)n(ey)f(sp)r(eci\014es)g
-(the)h(maxim)n(um)f(n)n(um)n(b)r(er)h(of)f(concurren)n(tly)g(op)r(en)g
-(incoming)g(sessions.)101 2485 y(6.)42 b Fm(smtpc)p 433
-2485 V 29 w(session)p 770 2485 V 28 w(conf:)35 b Fn(see)27
-b(Section)h(3.11.1)0 2704 y Fm(oci:)p Fn(,)h Fm(ocm:)p
-Fn(,)f Fm(icr:)p Fn(,)h Fm(icm:)p Fn(,)g(and)g Fm(smtpc)p
-1299 2704 V 29 w(session)p 1636 2704 V 29 w(conf:)39
-b Fn(tak)n(e)29 b(an)g(IP)h(address/net)e(as)h(parameter)f(suc)n(h)h
-(that)h(the)0 2804 y(limits)e(can)f(b)r(e)h(imp)r(osed)g(p)r(er)f(IP)h
-(address/net.)35 b(F)-7 b(or)27 b(example:)0 3040 y Fm(oci:127.0.0.1)
-256 b(5)0 3140 y(ocm:127.0.0.1)213 b(10)0 3240 y(oci:10)521
-b(10)0 3339 y(ocm:10)g(50)0 3439 y(oci:)652 b(1)0 3538
-y(ocm:)g(4)0 3638 y(icr:10)564 b(5)0 3738 y(icr:127.0.0.1)169
-b(100)0 3837 y(icm:127.0.0.1)g(120)0 4074 y Fn(Note,)28
-b(ho)n(w)n(ev)n(er,)e(that)i(the)h(limits)f(apply)g(only)f(to)h(single)
-f(IP)h(addresses,)e(they)i(are)f(not)h(aggregated)d(for)j(nets.)38
-b(That)0 4173 y(is,)25 b(for)e(the)i(example)f(ev)n(ery)f(single)g
-(host)h(in)h(the)f(IP)g(net)g(10.x.y)-7 b(.z)23 b(can)h(ha)n(v)n(e)f(a)
-h(maxim)n(um)g(incoming)g(connection)f(rate)0 4273 y(of)28
-b(5)f(messages)f(p)r(er)h(min)n(ute.)0 4426 y(The)d(default)h(v)-5
-b(alues)24 b(for)g(these)h(con\014guration)e(options)g(are)h(set)g(in)h
-(the)g(binary)f(and)g(can)g(b)r(e)h(c)n(hanged)e(via)h(command)0
-4526 y(line)k(options)f(or)g(the)h(con\014guration)e(\014le)h(\(see)h
-(Section)f(3.8\):)101 4762 y(1.)42 b Fm(-C)g(n)28 b Fn(maxim)n(um)f(n)n
-(um)n(b)r(er)g(of)h(concurren)n(t)e(connections)h(to)g(one)h(IP)f
-(address)f([default:)38 b(100])101 4928 y(2.)k Fm(-c)g(n)28
-b Fn(initial)f(n)n(um)n(b)r(er)h(of)f(concurren)n(t)g(connections)f(to)
-i(one)f(IP)g(address)g([default:)37 b(10])101 5094 y(3.)42
-b Fm(-O)g(R=n)27 b Fn(maxim)n(um)g(connection)g(rate)g(p)r(er)h(60s)e
-(\(SMTPS\))i([default:)38 b(100])101 5260 y(4.)k Fm(-O)g(O=n)27
-b Fn(maxim)n(um)g(n)n(um)n(b)r(er)h(of)f(op)r(en)h(connections)f
-(\(SMTPS\))h([default:)37 b(100])1848 5768 y(23)p eop
-end
-%%Page: 24 25
-TeXDict begin 24 24 bop 0 523 a Fk(3.9)135 b(Con\014guration)46
-b(for)f(SMAR)0 775 y Fj(3.9.1)112 b(Declaring)39 b(Maps)f(for)g(SMAR)0
-982 y Fn(In)25 b(general,)f(maps)h(m)n(ust)g(b)r(e)h(declared)e(b)r
-(efore)h(they)g(can)g(get)g(used.)36 b(Eac)n(h)23 b(map)i(declaration)f
-(in)h(a)g(con\014guration)e(\014le)0 1082 y(is)i(a)f(named)h
-(subsection)g({)f(the)h(name)g(is)g(used)g(for)f(later)h(references)e
-({)i Fm(map)f Fn(in)h(the)g Fm(smar)e Fn(section)i(with)g(the)h(follo)n
-(wing)0 1181 y(options:)101 1401 y(1.)42 b Fm(type)p
-Fn(:)31 b(t)n(yp)r(e)21 b(of)f(the)h(map;)i(curren)n(tly)c(one)h(of)g
-Fm(hash)f Fn(\(Berk)n(eley)g(DB)i(hash\),)g Fm(cdb)f
-Fn(\(tin)n(ycdb\),)i Fm(sequence)p Fn(,)d Fm(socket)p
-Fn(,)208 1501 y(and)27 b Fm(passwd)p Fn(.)101 1667 y(2.)42
-b Fm(file)p Fn(:)35 b(the)28 b(\014lename)f(of)h(the)g
-Fm(db)f Fn(\014le)g(\(including)i(the)e(extension\))h(\(for)f(t)n(yp)r
-(e)h Fm(hash)p Fn(,)e Fm(cdb)p Fn(\).)101 1833 y(3.)42
-b Fm(mapname)p Fn(:)34 b(name)27 b(of)h(the)g(map)f(used)h(in)f(the)h
-(proto)r(col)f(\(t)n(yp)r(e)h Fm(socket)d Fn(only\).)101
-1999 y(4.)42 b Fm(address)p Fn(:)34 b(IPv4)26 b(address)g(of)i(inet)g
-(so)r(c)n(k)n(et.)36 b(\(t)n(yp)r(e)28 b Fm(socket)d
-Fn(only\).)101 2165 y(5.)42 b Fm(path)p Fn(:)35 b(the)28
-b(pathname)f(of)h(the)g(Unix)g(domain)f(so)r(c)n(k)n(et)f(\(for)i(t)n
-(yp)r(e)g Fm(socket)p Fn(\).)101 2331 y(6.)42 b Fm(port)p
-Fn(:)35 b(p)r(ort)27 b(for)g(inet)h(so)r(c)n(k)n(et)f(\(t)n(yp)r(e)h
-Fm(socket)d Fn(only\).)101 2497 y(7.)42 b Fm(maps)p Fn(:)35
-b(list)28 b(of)f(map)h(names)f(to)g(use)h(in)g(the)g(map)f(\(t)n(yp)r
-(e)h Fm(sequence)d Fn(only\).)0 2716 y(Note:)39 b(for)29
-b Fm(socket)d Fn(maps)j(either)f(a)h(Unix)g(domain)g(so)r(c)n(k)n(et)e
-(\()p Fm(path)p Fn(\))h(or)g(an)h(inet)g(so)r(c)n(k)n(et)f(\()p
-Fm(address)e Fn(and)j Fm(port)p Fn(\))e(m)n(ust)0 2816
-y(b)r(e)h(sp)r(eci\014ed.)0 2969 y(Example:)0 3206 y
-Fm(map)42 b(localusers)e({)j(type)f(=)h(hash;)f(file)g(=)h
-("/etc/meta1/loc)o(alu)o(sr)o(.db)o(";)37 b(})0 3305
-y(map)42 b(otherusers)e({)j(type)f(=)h(cdb;)f(file)g(=)h
-("/etc/meta1/othe)o(rus)o(r.)o(cdb)o(";)37 b(})0 3405
-y(map)42 b(password)f({)i(type)f(=)h(passwd;)e(})0 3504
-y(map)h(seq1)g({)h(type)f(=)i(sequence;)39 b(maps)j(=)i({)f
-(localusers,)c(otherusers)g(};)k(})0 3604 y(map)f(seq2)g({)h(type)f(=)i
-(sequence;)39 b(maps)j(=)i({)f(password,)d(otherusers)f(};)k(})0
-3890 y Fj(3.9.2)112 b(Con\014guration)39 b(Options)f(for)f(SMAR)0
-4097 y Fn(The)28 b(follo)n(wing)e(con\014guration)g(options)h(are)g(v)
--5 b(alid)27 b(for)h(SMAR:)101 4333 y(1.)42 b Fm(access_map)p
-Fn(:)31 b(this)24 b(is)g(a)g(subsection)f(that)i(sp)r(eci\014es)f(the)g
-(access)f(con)n(trol)g(map.)35 b(See)24 b(Section)g(3.9.3)f(for)h
-(details.)208 4466 y(Note:)36 b(only)28 b(one)f(of)g
-Fm(file)f Fn(\(1a\))i(and)f Fm(name)f Fn(\(1b\))i(m)n(ust)g(b)r(e)g(sp)
-r(eci\014ed.)243 4649 y(\(a\))41 b Fm(file)p Fn(:)36
-b(\014lename)27 b(of)h(access)e(map)h(\(including)h(extension\))g
-([default:)37 b Fm(access.db)p Fn(].)238 4782 y(\(b\))42
-b Fm(name)p Fn(:)35 b(name)25 b(of)g(access)g(map)g(.)37
-b(This)25 b(can)g(b)r(e)h(used)g(if)g(a)f(di\013eren)n(t)h(map)g(t)n
-(yp)r(e)f(should)h(b)r(e)g(used,)g(in)g(whic)n(h)390
-4881 y(case)h(the)h(map)f(m)n(ust)h(b)r(e)g(declared)f(as)g(explained)g
-(in)h(Section)f(3.9.1.)101 5064 y(2.)42 b Fm(address_delimit)o(er)p
-Fn(:)50 b(list)37 b(of)g(delimiters)h(\(sp)r(eci\014ed)f(as)g(string\))
-g(for)f(address)g(extensions)h(in)g(lo)r(cal)g(part,)208
-5163 y([default:)54 b Fm("+")p Fn(].)62 b(Note:)54 b(if)36
-b Fm(address_delimiter)30 b Fn(has)35 b(more)h(than)g(one)g(c)n
-(haracter,)g(the)h(\014rst)e(one)h(that)h(is)208 5263
-y(found)32 b(in)g(the)g(lo)r(cal)g(part)f(of)h(an)g(address)e(is)i
-(used)g(as)f(delimiter)h(in)h(map)e(lo)r(okups)h(\(see)f(Section)h
-(3.12\).)49 b(F)-7 b(or)208 5363 y(example:)36 b(if)28
-b(the)g(follo)n(wing)f(option)g(is)g(used)h(in)g(the)g(con\014guration)
-e(\014le:)208 5496 y Fm(address_delimit)o(er)37 b(=)43
-b("/_-";)1848 5768 y Fn(24)p eop end
-%%Page: 25 26
-TeXDict begin 25 25 bop 208 523 a Fn(then)29 b(for)f(the)h(address)e
-(\\)p Fb(<)p Fm(user/ext-list@)o(dom)o(.a)o(in)p Fb(>)o
-Fn(",)c(the)29 b(delimiter)f(for)h(map)f(lo)r(okups)g(is)g(\\)p
-Fm(/)p Fn(")g(and)g(the)208 623 y(address)k(detail)i(is)f(\\)p
-Fm(ext-list)p Fn(",)e(while)j(for)f(the)h(address)f(\\)p
-Fb(<)p Fm(user-ext)p 2598 623 27 4 v 27 w(list@dom.ain)p
-Fb(>)p Fn(",)c(the)34 b(delimiter)208 722 y(for)27 b(map)g(lo)r(okups)g
-(is)g(\\)p Fm(-)p Fn(")g(and)g(the)h(address)f(detail)g(is)h(\\)p
-Fm(ext)p 2156 722 V 29 w(list)p Fn(".)101 883 y(3.)42
-b Fm(aliases)p Fn(:)34 b(this)28 b(is)f(a)g(subsection)g(that)h(sp)r
-(eci\014es)g(the)g(parameters)e(for)h(aliases.)208 1014
-y(Note:)36 b(only)28 b(one)f(of)g Fm(file)f Fn(\(3a\))i(and)f
-Fm(name)f Fn(\(3b\))i(m)n(ust)g(b)r(e)g(sp)r(eci\014ed.)243
-1189 y(\(a\))41 b Fm(file)p Fn(:)36 b(\014lename)27 b(of)h(aliases)e
-(map)h(\(including)h(extension\))g([default:)37 b Fm(aliases.db)p
-Fn(].)238 1317 y(\(b\))42 b Fm(name)p Fn(:)34 b(name)25
-b(of)g(aliases)e(map)i(.)36 b(This)24 b(can)h(b)r(e)g(used)g(if)g(a)g
-(di\013eren)n(t)g(map)f(t)n(yp)r(e)h(should)g(b)r(e)g(used,)h(in)f
-(whic)n(h)390 1417 y(case)i(the)h(map)f(m)n(ust)h(b)r(e)g(declared)f
-(as)g(explained)g(in)h(Section)f(3.9.1.)247 1545 y(\(c\))42
-b Fm(flags)p Fn(:)458 1673 y(i.)f Fm(localpart)p Fn(:)30
-b(the)21 b(aliases)f(map)g(con)n(tains)g(only)g(lo)r(calparts)f(of)i
-(addresses)e(and)h(those)h(are)e(only)i(lo)r(ok)n(ed)545
-1772 y(up)28 b(for)f(lo)r(cal)g(addresses.)435 1886 y(ii.)41
-b Fm(local_domains)p Fn(:)34 b(the)c(aliases)d(map)i(con)n(tains)f
-(fully)h(quali\014ed)f(addresses)g(whic)n(h)g(are)g(only)h(lo)r(ok)n
-(ed)545 1986 y(up)41 b(for)e(lo)r(cal)g(addresses.)73
-b(This)39 b(can)h(b)r(e)g(used)g(similar)f(to)h(virtual)f(users)g(in)i
-(sendmail)e(8,)k(e.g.,)595 2080 y Fm(vuser1@virt1.tld:)93
-b(user1)595 2179 y(vuser2@virt1.tld:)g(user2)595 2279
-y(vuser3@virt2.tld:)g(user3)412 2389 y Fn(iii.)41 b Fm(all_domains)p
-Fn(:)e(the)30 b(aliases)f(map)i(con)n(tains)e(fully)i(quali\014ed)f
-(addresses)f(whic)n(h)i(are)e(lo)r(ok)n(ed)g(up)i(for)545
-2489 y(all)d(domains.)414 2602 y(iv.)41 b Fm(implicitly_match_)o(det)o
-(ai)o(l)p Fn(:)30 b(the)c(items)g(are)f(lo)r(ok)n(ed)g(up)h(according)f
-(to)g(the)i(algorithm)d(sp)r(eci\014ed)545 2702 y(in)37
-b(Section)f(3.12.1.)61 b(and)36 b(additionally)g Fm(+detail)d
-Fn(is)k(implicitly)g(matc)n(hed)f(when)g(the)h(pattern)f(is)545
-2802 y(\\)p Fm(user@hostname)p Fn(".)68 b(That)40 b(is,)j(it)d(o)n(v)n
-(errides)d(the)k(default)f(matc)n(hing)f(explained)h(in)g(case)f(1e)g
-(in)545 2901 y(Section)28 b(3.12.1.)437 3015 y(v.)41
-b Fm(replace_macros)p Fn(:)30 b(replace)23 b(macros)g(in)i(the)f(RHS)h
-(of)g(the)f(map)h(en)n(tries)e(b)n(y)h(the)h(appropriate)e(v)-5
-b(alue,)545 3115 y(see)28 b(Section)f(3.12.3.)414 3228
-y(vi.)41 b Fm(preserve_domain)p Fn(:)e(if)32 b(the)g(RHS)h(of)e(an)g
-(en)n(try)g(is)h(an)f(unquali\014ed)h(address,)f(do)h(not)f(app)r(end)h
-(the)545 3328 y(lo)r(cal)37 b(hostname)f(to)h(it)h(but)f(the)h(domain)e
-(of)h(the)g(original)f(address,)i(i.e.,)i(preserv)n(e)35
-b(the)i(original)545 3428 y(domain.)101 3601 y(4.)42
-b Fm(DNS)p Fn(:)26 b(this)i(subsection)f(con)n(tains)g(DNS)h(related)f
-(options.)243 3762 y(\(a\))41 b Fm(nameservers)p Fn(:)31
-b(list)26 b(of)f(up)g(to)g(four)g(IPv4)e(addresses)2080
-3732 y Fi(2)2141 3762 y Fn(of)i(nameserv)n(ers.)34 b(Note:)h(it)26
-b(is)f(imp)r(ortan)n(t)g(that)g(all)390 3861 y(of)j(these)f(nameserv)n
-(es)f(w)n(ork)g(prop)r(erly)-7 b(.)36 b(Curren)n(tly)27
-b(they)h(are)e(used)i(\\round)e(robin")h(without)h(excluding)390
-3961 y(nameserv)n(ers)d(that)j(do)g(not)f(answ)n(er)1549
-3931 y Fi(3)1585 3961 y Fn(.)238 4089 y(\(b\))42 b Fm(retries)p
-Fn(:)34 b(maxim)n(um)28 b(n)n(um)n(b)r(er)f(of)h(retries.)35
-b(A)28 b(v)-5 b(alue)28 b(of)f(0)h(means)f(one)g(query)g(only)-7
-b(,)27 b(i.e.,)h(no)f(retry)-7 b(.)247 4217 y(\(c\))42
-b Fm(timeout)p Fn(:)34 b(the)28 b(default)g(timeout)g(for)f(a)h(single)
-f(DNS)h(query)f(\(unit:)38 b(s\).)f(Notes:)462 4345 y
-Fc(\017)k Fn(the)33 b(timeout)g(for)e(a)h(DNS)h(request)f(is)g(the)g
-(pro)r(duct)g(of)h(the)f(n)n(um)n(b)r(er)g(of)g(tries)g(and)g(the)g
-(individual)545 4444 y(timeout,)d(i.e.,)e Fm(\(retries)41
-b(+)i(1\))g(*)g(timeout)p Fn(.)462 4558 y Fc(\017)e Fn(this)c(v)-5
-b(alue)36 b(is)g(only)g(the)g(default)h(timeout)f(whic)n(h)g(can)g(b)r
-(e)h(o)n(v)n(erridden)d(b)n(y)i(an)f(application.)62
-b(F)-7 b(or)545 4658 y(example,)25 b(QMGR)g(dynamically)e(increases)g
-(the)i(timeout)g(for)f(addresses)f(whic)n(h)h(did)h(not)g(resolv)n(e)d
-(in)545 4757 y(earlier)27 b(tries.)238 4885 y(\(d\))42
-b Fm(flags)p Fn(:)58 b(The)39 b(\015ag)f Fm(use_resolvconf)33
-b Fn(causes)38 b(the)i(list)f(of)g(nameserv)n(ers)d(\(see)j(4a\))g(to)f
-(b)r(e)i(read)e(from)390 4985 y Fm(/etc/resolv.conf)p
-Fn(.)d(This)29 b(\015ag)f(is)h(set)f(b)n(y)h(default)h(unless)e(the)i
-Fm(nameservers)24 b Fn(option)29 b(is)g(used.)41 b(Note:)390
-5085 y(the)29 b(list)f(of)g(nameserv)n(ers)d(is)j(not)g(up)r(dated)h
-(when)f Fm(/etc/resolv.conf)21 b Fn(is)28 b(c)n(hanged,)f
-Fm(smar)g Fn(needs)g(to)h(b)r(e)390 5184 y(restarted)f(to)g(ac)n(hiev)n
-(e)f(that.)390 5298 y(More)h(\015ags)f(can)i(b)r(e)g(found)g(in)f
-(Section)h(8.4.)p 0 5362 1512 4 v 92 5416 a Fh(2)127
-5440 y Fg(4)c(is)f(the)h(default)h(v)l(alue)f(for)f(the)h(compile)g
-(time)g(option)g Fe(MTA)p 1775 5440 22 4 v 27 w(DNS)p
-1907 5440 V 26 w(MAX)p 2038 5440 V 26 w(TSKS)92 5495
-y Fh(3)127 5519 y Fg(This)f(needs)i(to)f(b)r(e)g(enhanced)i(in)d(a)h
-(later)g(v)n(ersion,)f(a)h(patc)n(h)h(is)e(w)n(elcome!)1848
-5768 y Fn(25)p eop end
-%%Page: 26 27
-TeXDict begin 26 26 bop 101 523 a Fn(5.)42 b Fm(dnsbl)p
-Fn(:)j(sp)r(ecify)34 b(a)e(DNS)i(based)f(blac)n(klist)1594
-493 y Fi(4)1630 523 y Fn(.)54 b(This)33 b(section)g(can)f(b)r(e)i(sp)r
-(eci\014ed)f(m)n(ultiple)h(times)3326 493 y Fi(5)3363
-523 y Fn(;)i(it)e(has)e(the)208 623 y(follo)n(wing)26
-b(required)h(options:)307 787 y Fc(\017)41 b Fm(domain)p
-Fn(:)35 b(sp)r(ecify)28 b(the)g(domain)f(to)g(use)h(for)f(DNS)h(lo)r
-(okups,)f(e.g.,)g Fm(dnsbl.tld)p Fn(.)307 918 y Fc(\017)41
-b Fm(tag)p Fn(:)35 b(sp)r(ecify)27 b(the)f(tag)g(to)g(use)g(for)g(lo)r
-(okups)g(in)g(the)h(access)e(map)h(\(whic)n(h)g(m)n(ust)h(b)r(e)f
-(enabled,)h(see)f(Section)390 1017 y(3.10,)h(3b\).)208
-1182 y(The)38 b(clien)n(t)g(IPv4)e(address)h Fd(A.B.C.D)j
-Fn(is)d(lo)r(ok)n(ed)g(up)h(via)g(DNS)h(as)e Fd(D.C.B.A.)p
-Fm(domain)g Fn(querying)g(for)h(an)f(A)208 1281 y(record.)i(If)29
-b(an)f(A)h(record)f Fd(W.X.Y.Z)h Fn(is)g(found,)g(then)h(it)f(is)g(lo)r
-(ok)n(ed)e(up)i(in)g(the)h(access)d(map)i(as)f Fm(tag)p
-Fn(:)p Fd(W.X.Y.Z)p Fn(.)208 1381 y(for)k(temp)r(orary)g(and)h(p)r
-(ermanen)n(t)f(DNS)i(lo)r(okup)f(failures)f(the)h(en)n(tries)g(that)g
-(will)g(b)r(e)g(c)n(hec)n(k)n(ed)f(in)h(the)h(access)208
-1480 y(map)27 b(are)g Fm(tag)p Fn(:)p Fm(temp)d Fn(and)k
-Fm(tag)p Fn(:)p Fm(perm)p Fn(,)d(resp)r(ectiv)n(ely)-7
-b(.)208 1612 y(Notes:)307 1777 y Fc(\017)41 b Fn(DNS)25
-b(lo)r(okups)e(in)g(blac)n(klists)g(can)g(b)r(e)h(disabled)g(via)f(en)n
-(tries)g(in)g(the)h(access)f(map)g(using)g(the)h(tag)f
-Fm(cltaddr)p Fn(,)390 1876 y(see)k(Section)h(3.9.3.)307
-2007 y Fc(\017)41 b Fn(Some)30 b(DNS)h(blac)n(klists)f(return)g(m)n
-(ultiple)h(A)f(records.)43 b(F)-7 b(or)30 b(those)g(the)h(A)f(records)f
-(are)g(c)n(hec)n(k)n(ed)g(\(in)i(the)390 2107 y(order)23
-b(returned)i(b)n(y)f(the)h(DNS)g(serv)n(er\))f(un)n(til)h(an)f(access)f
-(map)i(en)n(try)f(is)g(found.)37 b(This)24 b(is)h(an)f(in)n(termediate)
-390 2206 y(solution)36 b(as)f(it)i(ma)n(y)e(cause)g(random)g(results)h
-(if)g(m)n(ultiple)h(access)e(map)h(en)n(tries)f(for)h(a)f(DNS)i(blac)n
-(klist)390 2306 y(exist.)62 b(Ho)n(w)n(ev)n(er,)36 b(as)f(long)g(as)g
-(all)h(of)g(them)g(ha)n(v)n(e)f(the)h(same)f(return)h(co)r(de)f(t)n(yp)
-r(e)h(\(i.e.,)j(temp)r(orary)34 b(or)390 2406 y(p)r(ermanen)n(t\),)28
-b(this)g(b)r(eha)n(vior)e(is)i(su\016cien)n(t.)307 2537
-y Fc(\017)41 b Fn(curren)n(tly)35 b(a)f(colon)h(is)g(added)g(as)g
-(delimiter)g(after)g Fm(tag)p Fn(,)h(this)g(ma)n(y)f(b)r(e)g(remo)n(v)n
-(ed)f(in)i(later)e(v)n(ersions)g(to)390 2636 y(allo)n(w)27
-b(for)g(more)g(\015exibilit)n(y;)g(e.g.,)h(the)g(con\014guration)e
-(option)h(itself)h(can)f(include)h(a)f(delimiter.)208
-2800 y(The)f(access)f(map)i(en)n(try)f(should)g(ha)n(v)n(e)f(one)h(of)h
-(the)f(usual)h(rejection)f(RHSs)g(as)g(explained)g(in)h(3.9.3.)35
-b(Example:)208 2900 y(con\014guration)26 b(\014le:)208
-3095 y Fm(smar)41 b({)j(dnsbl)d({)i(domain)e(=)j(dnsbl.tld;)39
-b(tag)j(=)i(dnsbltld;)39 b(})44 b(})208 3289 y Fn(access)26
-b(map:)208 3484 y Fm(dnsbltld:127.0.)o(0.1)80 b(error:550)40
-b(5.7.1)i(listed)f(at)i(dnsbl.tld)c(as)k(open)f(relay)208
-3583 y(dnsbltld:127.0.)o(0.2)80 b(error:550)40 b(5.7.1)i(listed)f(at)i
-(dnsbl.tld)c(as)k(spam)f(source)208 3683 y(dnsbltld:127.0.)o(0.9)80
-b(error:451)40 b(4.7.1)i(listed)f(at)i(dnsbl.tld)c(as)k(suspicious)208
-3783 y(dnsbltld:temp)299 b(error:451)40 b(4.7.1)i(temporary)e(lookup)h
-(failure)f(at)j(dnsbl.tld)208 3977 y Fn(If)38 b(m)n(ultiple)g(DNS)h
-(based)e(blac)n(klists)g(are)g(sp)r(eci\014ed,)k(the)d(DNS)h(queries)e
-(are)g(made)g(concurren)n(tly)g(but)h(the)208 4077 y(lo)r(okups)32
-b(in)i(the)g(access)e(map)h(are)g(p)r(erformed)f(in)i(the)g(order)e(in)
-i(whic)n(h)f(the)h(blac)n(klists)e(are)h(giv)n(en;)i(the)f(\014rst)208
-4176 y(successful)27 b(lo)r(okup)g(is)g(used)h(as)f(result,)g(no)h
-(further)f(priorization)f(is)h(p)r(erformed.)101 4341
-y(6.)42 b Fm(greylisting)p Fn(:)32 b(sp)r(ecify)c(greylisting)e
-(options,)h(see)g(Section)h(3.9.4)e(for)h(details.)243
-4505 y(\(a\))41 b Fm(grey_wait)p Fn(:)33 b(ho)n(w)27
-b(long)g(b)r(efore)h(greylisted)e(can)h(b)r(e)h(con\014rmed.)238
-4636 y(\(b\))42 b Fm(grey_expire)p Fn(:)33 b(timeout)28
-b(for)f(greylisted)f(en)n(tries)h(\(did)h(not)g(con\014rm)f(within)h
-(that)g(time\).)247 4767 y(\(c\))42 b Fm(white_expire)p
-Fn(:)32 b(expire)27 b(whitelisted)h(en)n(tries)f(after)h(this)f(time)i
-(if)f(necessary)-7 b(.)238 4898 y(\(d\))42 b Fm(white_timeout)p
-Fn(:)32 b(force)27 b(whitelisted)h(en)n(tries)f(to)g(recon\014rm)g
-(after)g(this)h(time.)247 5029 y(\(e\))42 b Fm(main_DB_name)p
-Fn(:)32 b(name)c(of)f(main)h(database)e(\(including)i(.db)g
-(extension\).)252 5159 y(\(f)6 b(\))43 b Fm(secondary_DB_name)o
-Fn(:)31 b(name)d(of)f(secondary)f(database)g(\(including)i(.db)g
-(extension\).)243 5290 y(\(g\))41 b Fm(expire_limit)p
-Fn(:)32 b(try)27 b(to)h(expire)f(en)n(tries)g(when)h(this)g(limit)g(is)
-f(reac)n(hed.)p 0 5362 1512 4 v 92 5416 a Fh(4)127 5440
-y Fg(This)c(option)i(is)e(mo)r(delled)h(after)f Fe(dnsblaccess)k
-Fg(written)d(b)n(y)g(Neil)f(Ric)n(k)n(ert)h(for)f(sendmail)g(8.)92
-5495 y Fh(5)127 5519 y Fg(Compile)g(time)h(option)h Fe(MTA)p
-895 5519 22 4 v 26 w(MAX)p 1026 5519 V 26 w(DNSBL)p Fg(:)g(curren)n
-(tly)f(set)g(to)g(8.)1848 5768 y Fn(26)p eop end
-%%Page: 27 28
-TeXDict begin 27 27 bop 238 523 a Fn(\(h\))42 b Fm(netmask)p
-Fn(:)31 b(b)n(y)22 b(default)g(the)g(en)n(tire)f(IPv4)g(address)f(is)i
-(used)f(as)g(a)g(k)n(ey)-7 b(,)23 b(ho)n(w)n(ev)n(er,)e(b)n(y)g(sp)r
-(ecifying)h(a)f(netmask,)390 623 y(e.g.,)k Fm(0xFFFFFF00)p
-Fn(,)c(the)k(least)f(signi\014can)n(t)g(bits)h(can)f(b)r(e)h(cut)g
-(o\013.)36 b(This)25 b(can)f(b)r(e)h(used)g(to)f(deal)g(with)h(serv)n
-(er)390 722 y(farms,)i(see)g(Section)h(3.9.4,)e(e.g.,)i(if)g(those)f
-(are)g(in)h(the)g(same)f(class)f(C)i(subnet.)101 888
-y(7.)42 b Fm(local_user_map)p Fn(:)31 b(this)d(is)f(a)g(subsection)g
-(that)h(sp)r(eci\014es)g(a)f(map)h(of)f(v)-5 b(alid)28
-b(lo)r(cal)f(addresses.)243 1054 y(\(a\))41 b Fm(name)p
-Fn(:)33 b(Name)22 b(of)h(the)f(map)h(of)f(v)-5 b(alid)23
-b(lo)r(cal)e(addresses;)i(the)g(map)f(m)n(ust)h(ha)n(v)n(e)e(b)r(een)i
-(declared)e(as)h(explained)390 1154 y(in)28 b(Section)g(3.9.1.)238
-1287 y(\(b\))42 b Fm(flags)p Fn(:)458 1420 y(i.)f Fm(implicitly_match_)
-o(det)o(ai)o(l)p Fn(:)26 b Fm(+detail)16 b Fn(is)i(implicitly)h(matc)n
-(hed)f(when)h(the)g(pattern)f(is)g(\\)p Fm(user@hostname)p
-Fn(".)545 1519 y(That)28 b(is,)g(it)g(o)n(v)n(errides)d(the)j(default)g
-(matc)n(hing)f(explained)g(in)h(case)f(1e)g(in)h(Section)f(3.12.1.)101
-1685 y(8.)42 b Fm(log_level)p Fn(:)33 b(logging)26 b(lev)n(el.)101
-1851 y(9.)42 b Fm(mailertable)p Fn(:)j(this)34 b(is)g(a)f(subsection)h
-(that)g(sp)r(eci\014es)g(a)f(mailertable,)i(curren)n(tly)e(y)n(ou)g
-(can)h(sp)r(ecify)g(exactly)208 1951 y(one)27 b(of)g(the)h(follo)n
-(wing)f(t)n(w)n(o)g(options:)243 2117 y(\(a\))41 b Fm(file)p
-Fn(:)35 b(\014lename)25 b(of)h(mailertable)f([default:)37
-b Fm(mt)p Fn(].)e(In)26 b(this)g(case)f(a)h(plain)g(text)g(\014le)g(is)
-g(read)f(during)g(startup)390 2217 y(and)j(placed)f(in)h(an)f(in)n
-(ternal)g(hash)g(table.)238 2350 y(\(b\))42 b Fm(name)p
-Fn(:)36 b(name)27 b(of)g(a)h(mailertable)e(map)i(that)g(has)f(b)r(een)h
-(declared)f(b)r(efore)g(\(see)g(Section)h(3.9.1\).)247
-2482 y(\(c\))42 b Fm(flags)p Fn(:)35 b(these)28 b(\015ags)e(can)h(b)r
-(e)i(used)e(to)h(select)f(a)g(subset)h(of)f(the)h(matc)n(hing)f
-(describ)r(ed)h(in)g(Section)f(3.12.1.)458 2615 y(i.)41
-b Fm(full_adress)p Fn(:)33 b(use)27 b(the)h(full)h(address)d(as)h(k)n
-(ey)-7 b(.)435 2731 y(ii.)41 b Fm(detail_plus)p Fn(:)33
-b(lo)r(okup)27 b(also)f(\\)p Fm(user++@subdomain)o Fn(".)412
-2848 y(iii.)41 b Fm(detail_star)p Fn(:)33 b(lo)r(okup)27
-b(also)f(\\)p Fm(user+*@subdomain)o Fn(".)414 2964 y(iv.)41
-b Fm(star)p Fn(:)36 b(lo)r(okup)27 b(also)f(\\)p Fm(user*@subdomain)p
-Fn(")o(.)437 3080 y(v.)41 b Fm(domain)p Fn(:)35 b(lo)r(okup)27
-b(domain)g(part.)414 3196 y(vi.)41 b Fm(dotsubdomain)p
-Fn(:)32 b(iterate)c(through)e(sub)r(domains.)391 3313
-y(vii.)41 b Fm(dot)p Fn(:)36 b(lo)r(okup)27 b(also)g(\\.".)390
-3445 y(The)h(default)g(is)f Fm(domain)p Fn(,)f Fm(dotsubdomain)p
-Fn(,)c Fm(dot)p Fn(.)208 3611 y(The)i(format)f(of)h(en)n(tries)g(in)g
-(the)h(map)f(is)g(explained)f(in)i(Section)f(3.9.3.)34
-b(Note:)i(reloading)22 b(mailertable)h(\(Section)208
-3711 y(4.7\))31 b(while)i(SMAR)g(is)f(running)g(can)g(b)r(e)h(done)f
-(only)f(if)i(it)g(is)f(declared)g(as)f(Berk)n(eley)g(DB)i(\(case)e(9b)h
-(with)h(the)208 3811 y(prop)r(er)26 b(map\))0 4097 y
-Fj(3.9.3)112 b(Con\014guration)39 b(Maps)g(for)e(SMAR)0
-4304 y Fn(SMAR)27 b(requires)d(a)i(mailertable,)f(and)h(it)h(can)e(mak)
-n(e)h(use)f(of)h(an)g(alias)f(map)h(as)f(w)n(ell)h(as)f(an)h(access)f
-(map,)h(all)g(of)g(whic)n(h)0 4403 y(are)h(describ)r(ed)g(in)h(the)g
-(subsequen)n(t)f(sections.)0 4673 y Fo(Access)32 b(Map)0
-4880 y Fn(T)-7 b(o)27 b(activ)-5 b(ate)28 b(the)g(access)e(map)i(the)g
-(\015ag)f Fm(access)e Fn(\(see)j(Section)f(3.10,)g(item)h(3b\))g(\(or)f
-(the)h(option)f Fm(-a)p Fn(\))h(m)n(ust)f(b)r(e)h(giv)n(en)0
-4979 y(to)k(the)g(SMTP)f(serv)n(ers.)48 b(All)32 b(en)n(tries)f
-(consist)h(of)f(a)h(left)g(hand)g(side)g(\(LHS,)g(k)n(ey\))g(whic)n(h)f
-(in)i(turn)e(has)h(a)f(tag)g(and)h(a)0 5079 y(\(partial\))27
-b(address)g(and)g(a)g(righ)n(t)g(hand)h(side)f(\(RHS,)i(v)-5
-b(alue\).)37 b(V)-7 b(alid)28 b(tags)e(are:)1848 5768
-y(27)p eop end
-%%Page: 28 29
-TeXDict begin 28 28 bop 50 510 a Fn(T)-7 b(ag)766 b(refers)27
-b(to)50 609 y Fm(from:)683 b Fn(en)n(v)n(elop)r(e)27
-b(sender)g(address)f(\(MAIL\))50 709 y Fm(to:)771 b Fn(en)n(v)n(elop)r
-(e)27 b(recipien)n(t)g(address)f(\(R)n(CPT\))50 809 y
-Fm(cltaddr:)551 b Fn(clien)n(t)28 b(IPv4)e(address)50
-908 y Fm(cltname:)551 b Fn(clien)n(t)28 b(host)f(name)50
-1008 y Fm(cltresolve:)419 b Fn(result)27 b(of)h(forw)n(ard)e(and)h(rev)
-n(erse)f(clien)n(t)i(lo)r(okup)50 1108 y Fm(mxbadip:)551
-b Fn(IPv4)27 b(addresses)f(that)i(are)e(not)i(allo)n(w)n(ed)e(for)h(MX)
-h(-)f(A)h(records)50 1207 y Fm(certissuer:)419 b Fn(DN)29
-b(of)e(CA)h(cert)f(that)h(signed)f(that)h(presen)n(ted)f(cert)50
-1307 y Fm(certsubject:)375 b Fn(DN)29 b(of)e(presen)n(ted)g(cert)50
-1406 y Fm(protectedrcpt:)287 b Fn(restrictions)26 b(for)i(recipien)n(t)
-f(address)f(\(see)i(Section)f(3.10.3\))50 1506 y Fm(smtps)p
-275 1506 27 4 v 29 w(session)p 612 1506 V 29 w(conf:)97
-b Fn(con\014guration)26 b(options)h(for)g(a)g(session)g(in)h(the)g
-(SMTP)f(serv)n(er)f(\(see)h(Section)h(3.10.1\))50 1606
-y Fm(smtps)p 275 1606 V 29 w(rcpt)p 480 1606 V 30 w(conf:)228
-b Fn(en)n(v)n(elop)r(e)27 b(recipien)n(t)g(address)f(\(R)n(CPT\))i
-(\(see)f(Section)h(3.10,)e(3g\))50 1705 y Fm(smtpc)p
-275 1705 V 29 w(rcpt)p 480 1705 V 30 w(conf:)228 b Fn(con\014guration)
-26 b(options)h(for)g(recipien)n(t)g(in)h(the)g(SMTP)g(clien)n(t)f
-(\(see)h(Section)f(3.11.1\))50 1805 y Fm(ehlo:)683 b
-Fn(EHLO/HELO)26 b(parameter)g(\(see)h(Section)h(12.1.4\))0
-1954 y(V)-7 b(alid)21 b(addresses)f(for)g Fm(from:)p
-Fn(,)h Fm(to:)p Fn(,)g(and)g Fm(smtps)p 1510 1954 V 29
-w(rcpt)p 1715 1954 V 30 w(conf:)32 b Fn(are)20 b(RF)n(C)h(2821)e
-(addresses)h(without)h(the)h(angle)e(bac)n(k)n(ets)0
-2054 y(\()p Fm(localpart@domain)p Fn(\))e(as)23 b(w)n(ell)g(as)g
-(partial)g(addresses)g(in)h(the)g(form)f Fm(localpart)d
-Fn(and)k Fm(@domain)p Fn(,)e(i.e.,)i(domains)f(m)n(ust)0
-2154 y(b)r(e)31 b(preceeded)f(with)h(an)f(at)g(\()p Fm(@)p
-Fn(\))h(sign.)45 b(V)-7 b(alid)31 b(addresses)e(for)h
-Fm(cltaddr:)39 b Fn(and)31 b Fm(mxbadip:)39 b Fn(are)29
-b(IPv4)h(addresses)f(and)0 2253 y(\(sub\)nets,)34 b(and)d(for)h
-Fm(cltname:)42 b Fn(host)31 b(names.)50 b(The)31 b(clien)n(t)h(host)g
-(name)g(is)f(determined)h(b)n(y)g(p)r(erforming)f(a)h(rev)n(erse)0
-2353 y(lo)r(okup)27 b(\(PTR)h(record\))e(for)h(its)h(IP)f(address.)36
-b(The)28 b(resulting)f(names)g(are)f(lo)r(ok)n(ed)h(up)h(as)f(A)h
-(records.)35 b(Only)27 b(if)h(one)g(of)0 2452 y(the)d(A)g(records)e
-(matc)n(hes)h(the)g(clien)n(t)h(IP)f(address,)g(the)h(host)f(name)h(is)
-f(set.)36 b(Note:)f(the)25 b(host)f(name)h(has)f(a)g(trailing)g(dot)0
-2552 y(after)h(DNS)i(resolution,)e(this)h(dot)g(m)n(ust)g(b)r(e)g
-(included)g(in)g(the)g(en)n(try)-7 b(.)36 b(The)26 b(result)f(of)h
-(these)g(lo)r(okups)f(can)g(b)r(e)h(used)g(for)0 2652
-y Fm(cltresolve:)32 b Fn(where)27 b(the)h(follo)n(wing)f(k)n(eys)g(are)
-f(v)-5 b(alid:)50 2800 y Fm(ok)317 b Fn(rev)n(erse)25
-b(and)j(forw)n(ard)e(lo)r(okup)h(matc)n(h)50 2899 y Fm(no)317
-b Fn(rev)n(erse)25 b(and)j(forw)n(ard)e(lo)r(okup)h(do)g(not)h(matc)n
-(h)50 2999 y Fm(tempptr)97 b Fn(rev)n(erse)25 b(lo)r(okup)i(\(PTR\))h
-(caused)f(a)g(temp)r(orary)g(error)50 3098 y Fm(tempa)185
-b Fn(forw)n(ard)25 b(lo)r(okup)j(\(A\))g(caused)f(a)g(temp)r(orary)g
-(error)0 3248 y(V)-7 b(alid)28 b(v)-5 b(alues)27 b(for)g(RHS)h(are)50
-3380 y Fm(relay)821 b Fn(allo)n(w)27 b(rela)n(ying;)f(curren)n(tly)g
-(only)h(for)g Fm(to:)p Fn(,)g Fm(cltaddr:)p Fn(,)1091
-3479 y Fm(cltname:)p Fn(,)e Fm(certissuer:)p Fn(,)e(and)k
-Fm(certsubject:)50 3579 y(ok)953 b Fn(accept)27 b(command)50
-3678 y Fm(error:)p Fd(XYZ)d(A.B.C.D)30 b(text)98 b Fn(return)27
-b(an)h(error)d(consisting)i(of)h(SMTP)f(reply)g(co)r(de)g
-Fd(XYZ)p Fn(,)1091 3778 y(enhanced)h(status)f(co)r(de)g
-Fd(A.B.C.D)p Fn(,)j(and)d Fd(text)p Fn(,)1091 3878 y(i.e.,)h(the)g
-(part)f(after)g Fm(error:)35 b Fn(is)27 b(returned)g(to)h(the)g(clien)n
-(t.)50 3977 y Fm(reject)777 b Fn(same)27 b(as)g Fm(error:550)40
-b(5.7.0)h(Rejected.)50 4077 y(discard)733 b Fn(accept)27
-b(command)h(but)g(silen)n(tly)f(discard)g(its)h(e\013ects.)50
-4177 y Fm(cont)865 b Fn(stop)27 b(curren)n(t)g(c)n(hec)n(k)g(\(e.g.,)g
-(map)h(lo)r(okup\),)f(but)i(con)n(tin)n(ue)e(others.)0
-4326 y(Some)k(tags)g(ma)n(y)g(allo)n(w)f(for)h(other)g(RHS)h(v)-5
-b(alues,)32 b(these)g(are)e(explained)i(when)f(those)g(tags)g(are)g
-(discussed)g(in)g(more)0 4426 y(detail.)0 4579 y(Optionally)23
-b(a)g(RHS)h(can)f(b)r(e)h(preceeded)f(b)n(y)g(the)h(mo)r(di\014er)g
-Fm(quick:)p Fn(.)33 b(F)-7 b(or)23 b(an)g Fm(error:)33
-b Fn(en)n(try)22 b(it)i(causes)f(an)g(immediate)0 4679
-y(rejection)28 b(when)g(the)h(en)n(try)e(matc)n(hes.)38
-b(Otherwise)27 b(rejections)h(can)g(b)r(e)g(dela)n(y)n(ed)f(to)h(the)h
-Fm(RCPT)d Fn(stage)h({)h(if)h(SMTPS)f(is)0 4778 y(con\014gured)j
-(appropriately)-7 b(,)33 b(see)f(Section)g(3.10,)h(item)g(3c)f({)g(and)
-h(can)f(b)r(e)h(o)n(v)n(erridden)d(using)j(the)g(mo)r(di\014er)f
-Fm(quick:)0 4878 y Fn(together)k(with)i Fm(ok)e Fn(or)h
-Fm(relay)e Fn(in)i(the)h(access)e(map)h(for)g(the)g(recipien)n(t)g
-(address)f(with)i(the)f Fm(to:)55 b Fn(tag.)65 b(Using)37
-b(the)0 4977 y(mo)r(di\014er)28 b Fm(quick:)36 b Fn(together)27
-b(with)i Fm(relay)d Fn(for)i(an)g(en)n(try)g(with)h(the)f
-Fm(cltaddr:)35 b Fn(tag)28 b(causes)f(it)i(to)f(o)n(v)n(erride)e(all)i
-(other)0 5077 y(access)e(map)h(c)n(hec)n(ks.)35 b Fm(quick:ok)24
-b Fn(for)i(an)h(en)n(try)f(with)i(the)f Fm(cltaddr:)33
-b Fn(tag)27 b(causes)f(it)h(to)g(o)n(v)n(erride)e(other)h(access)g(map)
-0 5177 y(c)n(hec)n(ks)g(unless)i(they)g(are)e(necessary)g(to)i(allo)n
-(w)e(rela)n(ying.)0 5330 y(Domain)21 b(names)g(\()p Fm(@domain)p
-Fn(\))e(m)n(ust)j(ha)n(v)n(e)e(an)h(exact)g(matc)n(h,)i(sub)r(domain)e
-(matc)n(hing)g(can)g(b)r(e)h(sp)r(eci\014ed)f(with)h(a)f(leading)0
-5430 y(dot,)28 b(i.e.,)f Fm(@.domain)p Fn(,)e(see)i(Section)h(3.12.1.)
-1848 5768 y(28)p eop end
-%%Page: 29 30
-TeXDict begin 29 29 bop 0 523 a Fn(Examples:)50 671 y
-Fm(cltresolve:tempp)o(tr)311 b(error:451)40 b(4.7.1)h(reverse)g(lookup)
-g(failed)50 770 y(mxbadip:127.0.0.)o(1)355 b(error:551)40
-b(5.7.1)h(Bad)i(IP)f(address)f(127.0.0.1)f(in)j(MX/A)f(list)50
-870 y(mxbadip:192.168.)o(25)o(5.2)o(55)93 b(error:551)40
-b(5.7.1)h(Bad)i(IP)f(address)f(192.168.255.255)c(in)43
-b(MX/A)f(list)50 970 y(from:@spammer.do)o(ma)o(in)224
-b(error:551)40 b(5.7.1)h(No)i(spammers)50 1069 y(from:@.spammer.d)o(om)
-o(ain)180 b(error:551)40 b(5.7.1)h(No)i(spammers)d(in)j(subdomains)d
-(either)50 1169 y(to:root)794 b(error:551)40 b(5.7.1)h(No)i(mail)f(to)h
-(root)50 1269 y(to:abuse)750 b(quick:ok)50 1368 y(cltaddr:10)662
-b(error:551)40 b(5.7.1)h(No)i(direct)e(mail)h(from)g(10.x.y.z)50
-1468 y(cltname:spammer.)o(do)o(mai)o(n.)93 b(quick:error:551)37
-b(5.7.1)42 b(No)h(mail)f(from)f(spammers)50 1567 y(to:@primary.doma)o
-(in)311 b(relay)50 1667 y(cltaddr:10)662 b(relay)50 1767
-y(cltaddr:127.0.0.)o(1)355 b(quick:relay)0 2032 y Fo(Discard)84
-b Fn(The)28 b(e\013ect)h(of)f Fm(discard)e Fn(dep)r(ends)i(on)g(the)h
-(proto)r(col)e(stage)h(in)g(whic)n(h)h(it)f(is)h(returned.)38
-b(If)29 b(it)g(is)f(returned)0 2132 y(for)h(a)h(session,)f(e.g.,)h
-(when)g(a)g(clien)n(t)f(connects,)i(all)e(transactions)f(in)i(the)h
-(session)d(are)h(discarded.)43 b(If)30 b(it)g(is)g(returned)0
-2232 y(for)i Fm(MAIL)g Fn(only)h(that)g(transaction)f(is)g(discarded.)
-53 b(If)33 b(it)h(is)e(returned)h(for)g Fm(RCPT)e Fn(only)i(that)g
-(recipien)n(t)g(is)f(discarded;)0 2331 y(ho)n(w)n(ev)n(er,)d(if)h(no)g
-(v)-5 b(alid)30 b(recipien)n(ts)f(are)g(left,)j(the)e(en)n(tire)g
-(transaction)e(is)i(discarded.)43 b(Moreo)n(v)n(er,)28
-b(if)j Fm(quick:discard)0 2431 y Fn(is)c(returned)h(for)f(one)g
-(recipien)n(t)g(the)h(en)n(tire)f(transaction)g(is)g(discarded)g(to)r
-(o.)0 2700 y Fo(Mailertable)0 2907 y Fn(The)41 b(address)g(resolv)n(er)
-e(implemen)n(ts)j(an)f(async)n(hronous)e(DNS)j(resolv)n(er)d(and)i(b)n
-(y)h(default)f(it)h(uses)f(a)g(\014le)h(called)0 3007
-y Fm(mt)e Fn(\(mailertable\))h(\(see)h(Section)f(3.9.2,)i(item)f(9\))f
-(whic)n(h)g(consists)g(of)g(domain)g(parts)f(of)h(e-mail)g(addresses)f
-(and)0 3106 y(corresp)r(onding)25 b(IP)i(addresses)e(\(in)i(square)f
-(brac)n(k)n(ets\))g(or)g(domain/host)f(names.)37 b(An)27
-b(en)n(try)f(consists)h(\(as)f(usual)h(in)g(a)0 3206
-y(map\))f(of)f(a)g(LHS)h(and)f(a)g(RHS;)h(in)g(the)g(case)e(of)i(a)f
-(\015at)g(text)h(\014le,)g(i.e.,)g(case)e(9a)h(of)g(Section)h(3.9.2,)e
-(those)h(are)g(separated)0 3306 y(b)n(y)i(one)h(or)e(more)h(whitespace)
-g(c)n(haracters.)50 3453 y(LHS)203 b(::=)99 b([)28 b(lo)r(cal)f("@")f
-(])i([)f(".")g(])h(hostname)f Fc(j)h Fn(".")50 3553 y(RHS)194
-b(::=)99 b([[)28 b(p)r(ort)f(")p Fm(^)p Fn(")f(])i([")p
-Fm(esmtp:)p Fn("]])d(hosts)i Fc(j)g Fn(")p Fm(lmtp:)p
-Fn(")e Fc(j)j Fn(p)r(ort)f(")p Fm(^)p Fn(")p Fm(lmtp:)p
-Fn(")d(hosts)623 3653 y Fc(j)k Fn(")p Fc(f)p Fn(")e(["proto)r(col")f
-("=")i("esm)n(tp")f(";"])h([p)r(ortdef)6 b(])28 b(hostdef)g(")p
-Fc(g)p Fn(")623 3752 y Fc(j)g Fn(")p Fc(f)p Fn(")e("proto)r(col")f("=")
-i("lm)n(tp")g(";")f([p)r(ortdef)i(hostdef)6 b(])28 b(")p
-Fc(g)p Fn(")50 3852 y(p)r(ort)208 b(::=)99 b(in)n(teger)50
-3952 y(hosts)177 b(::=)99 b(hostname)27 b Fc(j)h Fn(iplist)50
-4051 y(iplist)183 b(::=)99 b("[")27 b(IPv4-address)d("]")j([)h(")f(")g
-(iplist)h(])50 4151 y(p)r(ortdef)100 b(::=)f("p)r(ort")26
-b("=")h(in)n(t)g(";")50 4250 y(hostdef)102 b(::=)d("host")26
-b("=")h(hostname)g Fc(j)g Fn("ip)n(v4")f("=")h(")p Fc(f)p
-Fn(")f(ip)n(v4-list)g(")p Fc(g)p Fn(")50 4350 y(ip)n(v4)210
-b(::=)99 b(IPv4-address)0 4504 y(The)24 b(k)n(ey)g(\(LHS\))h(is)g(an)f
-(address)f(\(without)i(angle)f(brac)n(k)n(ets\),)f(a)h(hostname,)h(or)e
-(a)h(dot)h(\(denoting)f(the)h(default)g(en)n(try\).)0
-4604 y(The)j(v)-5 b(alue)27 b(\(RHS\))i(is)125 4823 y
-Fc(\017)41 b Fn(either)20 b(a)g(sp)r(eci\014cation)f(follo)n(wing)h
-(the)g(same)g(syn)n(tax)f(as)h(the)h(con\014guration)d(\014le)j(\(in)f
-(this)h(case)e(the)i(sp)r(eci\014cation)208 4923 y(m)n(ust)27
-b(b)r(e)h(enclosed)f(b)n(y)h(curly)f(braces\),)125 5089
-y Fc(\017)41 b Fn(or)20 b(it)j(uses)e(a)g(syn)n(tax)g(sp)r(eci\014c)h
-(to)f(mailertable)g(consisting)g(of)h(an)f(optional)g(p)r(ort)h(n)n(um)
-n(b)r(er,)h(an)e(optional)g(\()p Fm(esmtp)p Fn(\))208
-5189 y(proto)r(col)33 b(and)i(a)g(hostname)f(or)g(a)h(list)g(of)g(IPv4)
-f(addreses)g(\(in)h(square)f(brac)n(k)n(ets\))f(whic)n(h)i(are)f
-(separated)g(b)n(y)208 5288 y(spaces.)0 5508 y(If)44
-b(LMTP)g(should)g(b)r(e)g(used,)49 b(then)44 b(the)h
-Fm(lmtp)d Fn(proto)r(col)h(m)n(ust)h(b)r(e)h(selected.)86
-b(There)43 b(are)g(t)n(w)n(o)h(cases:)68 b(just)45 b
-Fc(f)1848 5768 y Fn(29)p eop end
-%%Page: 30 31
-TeXDict begin 30 30 bop 0 523 a Fm(protocol=lmtp;)38
-b Fc(g)26 b Fn(\(or)h Fm(lmtp:)p Fn(\))34 b(b)n(y)27
-b(itself)g(means)g(the)g(deliv)n(ery)f(agen)n(t)g(will)h(use)g(the)g
-(Unix)g(domain)g(so)r(c)n(k)n(et)f(sp)r(eci-)0 623 y(\014ed)j(in)h(the)
-f(con\014guration)e(\014le)j(\(see)f(Section)g(3.11,)f(item)h(2\),)h
-(if)f(an)g(inet)g(so)r(c)n(k)n(et)f(should)h(b)r(e)h(used)f(then)g(a)g
-(p)r(ort)g(and)0 722 y(a)e(host)h(m)n(ust)f(b)r(e)h(sp)r(eci\014ed.)37
-b(A)28 b(hostname)f(is)h(sub)5 b(ject)28 b(to)f(MX)h(lo)r(okups.)0
-876 y(Example:)50 1023 y Fm(localhost)488 b(lmtp:)50
-1123 y(SPAM.FILTER.DOMA)o(IN)93 b Fc(f)43 b Fm(port=2525;)d
-(protocol=esmtp;)d(ipv4=)p Fc(f)p Fm(127.0.0.1)p Fc(g)g(g)50
-1223 y Fm(LMTPHOST.MY.DOMA)o(IN)93 b Fc(f)43 b Fm(protocol=lmtp;)38
-b(port)k(=)h(525;)f(ipv4=)f Fc(f)j Fm(10.11.12.13)39
-b Fc(g)k(g)50 1322 y Fm(MY.DOMAIN)488 b(esmtp:[10.1.2.3])50
-1422 y(ANOTHER.DOMAIN)268 b(esmtp:MTA.SERVER)50 1521
-y(.TLD)708 b Fc(f)43 b Fm(host)f(=)h(GATE.WAY)d Fc(g)50
-1621 y Fm(.)840 b(esmtp:SMART.HOST)0 1775 y Fn(Note:)37
-b(curren)n(tly)27 b(this)g(\014le)h(m)n(ust)g(exist,)f(ev)n(en)h(if)g
-(there)f(are)g(no)g(en)n(tries)g(\(it)h(is)g(created)e(during)i
-(installation\).)0 2045 y Fo(Aliases)0 2251 y Fn(T)-7
-b(o)31 b(sp)r(ecify)h(aliases)e(for)g(lo)r(cal)h(addresses)f(the)h(map)
-h Fm(aliases.db)27 b Fn(\(Section)32 b(3.9.2,)f(item)g(3a\))g(is)g
-(used.)48 b(The)32 b(k)n(ey)e(in)0 2351 y(the)e(map)f(m)n(ust)h(b)r(e)
-125 2571 y Fc(\017)41 b Fn(the)28 b(lo)r(cal)f(part)g(of)g(a)g(v)-5
-b(alid)28 b(\(lo)r(cal\))g(e-mail)f(address,)125 2737
-y Fc(\017)41 b Fn(or)26 b(a)h(complete)h(lo)r(cal)f(e-mail)g(address,)
-125 2903 y Fc(\017)41 b Fn(or)26 b(an)n(y)h(e-mail)g(address,)0
-3122 y(based)d(on)h(the)g Fm(flags)e Fn(of)h(the)i Fm(aliases)c
-Fn(option)i(\(see)h(Section)f(3.9.2,)h(3c\).)35 b(The)25
-b(v)-5 b(alue)25 b(\(RHS\))h(for)e(an)g(alias)g(en)n(try)g(is)h(a)0
-3222 y(list)g(of)f(one)g(or)f(more)g(RF)n(C)i(2821)d(addresses)h
-(\(including)i(the)f(angle)g(brac)n(k)n(ets\))f(separated)g(b)n(y)h
-(spaces)f(\()p Fd(not)h Fn(commas\).)0 3322 y(If)h(the)h(RHS)f(has)g
-(only)f(a)h(single)f(address)g(whic)n(h)h(do)r(es)g(not)g(start)f(with)
-i(an)e(angle)g(brac)n(k)n(et,)h(then)g(it)g(is)g(con)n(v)n(erted)f(in)n
-(to)0 3421 y(an)33 b(RF)n(C)g(2821)f(address)g(b)n(y)h(SMAR,)h(i.e.,)h
-(SMAR)f(will)g(app)r(end)g(the)f(hostname)g(of)h(the)f(mac)n(hine)g
-(and)g(put)h(angle)0 3521 y(brac)n(k)n(ets)26 b(around)g(the)i(string.)
-37 b(Example:)50 3669 y Fm(myalias:)84 b(localuser)50
-3768 y(mylist:)g(<user1@my.dom>)38 b(<user2@my.dom>)g(<localuser@loca)o
-(l.h)o(os)o(t>)50 3868 y(owner-mylist:)82 b(someuser)0
-4018 y Fn(F)-7 b(or)27 b(mailing)g(lists,)g(the)h Fm(owner-)d
-Fn(notation)i(is)g(supp)r(orted,)g(i.e.,)h(if)g(there)f(are)f(aliases)g
-Fd(list)i Fn(and)f Fm(owner-)p Fd(list)e Fn(then)j(mail)0
-4117 y(sen)n(t)f(to)h Fd(list)g Fn(will)g(use)f Fm(owner-)p
-Fd(list)e Fn(as)i(en)n(v)n(elop)r(e)g(sender)g(address;)f(the)i
-(original)e(domain)i(will)f(b)r(e)h(preserv)n(ed.)0 4270
-y(Example)f(for)g(the)h(\015ag)f Fm(local_domains)22
-b Fn(\(see)27 b(3.9.2,)g(3\(c\)ii\).)37 b(Let)28 b(t)n(w)n(o)f(domains)
-g(b)r(e)h(lo)r(cal,)f(i.e.,)h(in)f(mailertable:)50 4423
-y Fm(first.dom)139 b(lmtp:)50 4522 y(second.dom)95 b(lmtp:)0
-4672 y Fn(and)27 b(these)h(en)n(tries)f(b)r(e)h(in)g(aliases:)50
-4804 y Fm(myalias@first.do)o(m:)81 b(user1)50 4903 y(another@second.d)o
-(om)o(:)g(user2)0 5053 y Fn(Then)19 b(mail)f(to)g Fm(<myalias@second.)o
-(dom)o(>)12 b Fn(and)18 b Fm(<another@first.do)o(m>)12
-b Fn(w)n(ould)18 b(b)r(e)h(rejected)f(while)h(mail)f(to)g
-Fm(<myalias@first.do)o(m>)0 5152 y Fn(or)27 b Fm(<another@second)o(.do)
-o(m>)21 b Fn(w)n(ould)27 b(b)r(e)h(accepted.)0 5306 y(Aliases)f(can)g
-(b)r(e)h(nested)g(\(curren)n(tly)f(up)h(to)f(5)g(lev)n(els,)g(see)h
-Fm(smar/rcpts.c)p Fn(\).)1848 5768 y(30)p eop end
-%%Page: 31 32
-TeXDict begin 31 31 bop 0 523 a Fj(3.9.4)112 b(Greylisting)0
-730 y Fn(MeT)-7 b(A1)27 b(supp)r(orts)h(t)n(w)n(o)e(forms)h(of)h
-(greylisting)e([Hara)o(])101 939 y(1.)42 b(simple)27
-b(greylisting:)36 b(only)27 b(uses)g(the)h(clien)n(t)g(IP)f(address)f
-(as)h(k)n(ey)-7 b(.)37 b([P)n(osa)n(].)101 1100 y(2.)42
-b(full)25 b(greylisting:)35 b(uses)25 b(a)f(tuple)i(consisting)f(of)g
-(clien)n(t)g(IP)g(address,)f(en)n(v)n(elop)r(e)h(sender,)g(and)g(en)n
-(v)n(elop)r(e)f(recipien)n(t)208 1200 y(as)i(k)n(ey)-7
-b(.)0 1409 y(The)22 b(idea)g(b)r(ehind)i(greylisting)d(is)h(simple:)34
-b(do)22 b(not)h(accept)f(mail)g(from)g(an)g(unkno)n(wn)g(source)f(on)h
-(the)h(\014rst)f(connection,)0 1509 y(but)36 b(reject)f(it)g(with)h(a)f
-(temp)r(orary)f(error.)57 b(An)n(y)36 b(MT)-7 b(A)35
-b(that)h(conforms)e(to)h(RF)n(C)g(2821)e([Kle01)o(])i(will)h(try)f(to)g
-(send)0 1609 y(the)i(mail)f(later)g(on,)i(ho)n(w)n(ev)n(er,)e(spamming)
-g(systems)g(often)h(do)f(not)g(do)g(that.)64 b(An)36
-b(IP)g(address)f(can)h(b)r(e)h(in)g(three)0 1708 y(di\013eren)n(t)27
-b(states:)36 b Fd(unknown)p Fn(:)f(the)27 b(clien)n(t)g(has)f(not)h
-(connected)f(b)r(efore)g(or)g(the)h(en)n(try)f(is)g(expired)h(from)f
-(the)h(database,)0 1808 y Fd(gr)l(eyliste)l(d)p Fn(:)48
-b(the)32 b(clien)n(t)h(has)f(connected)g(b)r(efore)g(but)h(it)g(did)g
-(not)f(y)n(et)g(connect)h(again)e(within)i(the)g(con\014gured)e(time)0
-1907 y(in)n(terv)-5 b(al,)32 b Fd(whiteliste)l(d)p Fn(:)45
-b(the)32 b(clien)n(t)f(has)f(connected)h(b)r(efore)g(and)g(it)h
-(connected)f(again)f(within)i(the)f(con\014gured)f(time)0
-2007 y(in)n(terv)-5 b(al.)52 b(The)32 b(time)i(in)n(terv)-5
-b(al)32 b(is)g(sp)r(eci\014ed)h(b)n(y)g(its)g(lo)n(w)n(er)e(limit)i
-Fm(grey_wait)c Fn(and)k(its)g(upp)r(er)g(limit)g Fm(grey_expire)p
-Fn(.)0 2107 y(A)e(lo)n(w)n(er)e(limit)i(is)g(used)g(to)f(prev)n(en)n(t)
-g(system)g(from)h(getting)f(accepted)g(that)h(just)g(send)g(a)f(single)
-g(message)g(within)h(a)0 2206 y(few)h(seconds)e(again)g(and)h(again.)47
-b(The)31 b(upp)r(er)g(limit)h(is)g(used)f(to)g(a)n(v)n(oid)f(\014lling)
-h(up)h(the)f(database.)47 b(If)32 b(an)e(en)n(try)h(has)0
-2306 y(made)24 b(it)h(to)g(the)g Fd(whiteliste)l(d)h
-Fn(state,)f(it)g(will)f(sta)n(y)g(there)g(\(at)h(least\))f(up)h(to)g
-(the)f(timeout)h(sp)r(eci\014ed)g(b)n(y)f Fm(white_expire)p
-Fn(.)0 2406 y(The)34 b(greylisting)f(algorithm)h(implemen)n(ted)h(in)f
-(MeT)-7 b(A1)35 b(uses)e(another)h(timeout)h Fm(white_timeout)29
-b Fn(after)34 b(whic)n(h)g(a)0 2505 y Fd(whiteliste)l(d)26
-b Fn(en)n(try)d(is)h(considered)f(stale)h(and)g(m)n(ust)g(go)g(through)
-f(the)i(greylisting)d(stages)h(again,)h(i.e.,)h(it)g(is)f(considered)0
-2605 y(to)k(b)r(e)g(in)g(state)g Fd(unknown)p Fn(.)37
-b(Eac)n(h)26 b(time)i(a)g(mail)g(is)f(sen)n(t)h(from)f(a)h(whitelisted)
-g(host,)g(the)g(en)n(try)f(is)h(up)r(dated,)g(to)g(a)n(v)n(oid)0
-2704 y(that)g(systems)f(whic)n(h)h(regularly)d(sen)n(t)j(mail)f(b)r
-(ecome)h(greylisted)e(again.)0 2858 y(Greylisting)h(is)g(p)r(erformed)g
-(at)g(the)h Fm(RCPT)e Fn(stage)g(of)h(the)h(SMTP)f(dialogue.)36
-b(It)28 b(is)f(only)g(done)g(when)h(a)f(v)-5 b(alid)27
-b(recipien)n(t)0 2957 y(is)j(sp)r(eci\014ed,)i(i.e.,)f(all)g(other)f(c)
-n(hec)n(ks)f(m)n(ust)i(ha)n(v)n(e)e(b)r(een)i(successful.)45
-b(Hence)31 b(clien)n(ts)f(that)h(do)f(not)h(try)f(to)g(send)h(mail)0
-3057 y(or)g(just)h(try)f(in)n(v)-5 b(alid)31 b(recipien)n(t)g
-(addresses)f(will)i(not)f(b)r(e)h(added)f(to)h(the)f(greylisting)g
-(database.)47 b(If)32 b(a)f(transaction)f(is)0 3157 y(sub)5
-b(ject)31 b(to)g(greylisting)f(then)i(the)f(session)g(is)g(ab)r(orted)f
-(with)i(an)f(421)f(error.)45 b(If)32 b(a)f(serv)n(er)e(uses)i(callbac)n
-(ks)e(to)i(v)n(erify)0 3256 y(the)c(sender)g(address,)f(then)h(the)h
-(option)e Fm(delay_greylisting)o(_e)o(rro)o(r_)o(unt)o(il)o(_D)o(ATA)20
-b Fn(\(see)27 b(Section)g(3.10,)f(item)i(3d\))0 3356
-y(is)34 b(useful)h(to)f(a)n(v)n(oid)e(unnecessary)h(dela)n(ys.)55
-b(Here)34 b(is)g(an)g(example:)49 b(host)34 b(A)h(is)f(the)g(main)h(MX)
-f(serv)n(er)e(for)i(domain)0 3455 y Fm(example.com)g
-Fn(and)k(it)g(uses)g(greylisting,)h(host)f(B)g(is)g(the)h(main)f(MX)g
-(serv)n(er)e(for)i(domain)g Fm(example.net)33 b Fn(and)38
-b(it)0 3555 y(uses)g(sender)g(callbac)n(ks.)69 b(If)39
-b(a)f(mail)h(is)g(sen)n(t)f(to)h(host)f(B)h(for)f Fm(<rcpt@example.ne)o
-(t>)32 b Fn(with)40 b(the)f(sender)f(address)0 3655 y
-Fm(<user@example.co)o(m>)18 b Fn(then)26 b(host)e(B)h(will)g(connect)g
-(to)g(host)f(A)h(to)g(test)g(whether)g Fm(<user@example.co)o(m>)18
-b Fn(is)25 b(a)g(v)-5 b(alid)0 3754 y(recipien)n(t.)35
-b(Ho)n(w)n(ev)n(er,)22 b(if)h(host)g(A)g(do)r(es)f(not)h(ha)n(v)n(e)f
-(host)h(B)f(in)h(its)g(whitelist,)i(it)e(will)g(return)g(a)f(421)g
-(error)e(after)j(the)g Fm(RCPT)0 3854 y(To:<user@example)o(.co)o(m>)30
-b Fn(command,)39 b(whic)n(h)e(\(dep)r(ending)h(on)f(the)g(implemen)n
-(tation)g(of)g(the)g(sender)g(callbac)n(k\))0 3954 y(will)h(cause)f
-(host)h(B)f(to)h(temp)r(orarily)f(reject)g(the)h(mail)g(for)f
-Fm(<rcpt@example.net)o(>)p Fn(.)61 b(By)38 b(sp)r(ecifying)g(the)g
-(option)0 4053 y Fm(delay_greylistin)o(g_e)o(rr)o(or)o(_un)o(ti)o(l_D)o
-(AT)o(A)33 b Fn(on)39 b(host)g(A)g(the)h Fm(RCPT)e Fn(command)g(will)i
-(succeed)f(and)g(the)g(original)0 4153 y(mail)27 b(to)h
-Fm(<rcpt@example.ne)o(t>)21 b Fn(will)28 b(go)f(through)g(without)h
-(dela)n(y)-7 b(.)0 4306 y(The)18 b(greylisting)f(implemen)n(tation)i
-(uses)f(t)n(w)n(o)g(p)r(ersisten)n(t)g(databases)f(\(sp)r(eci\014ed)h
-(b)n(y)h Fm(main_DB_name)13 b Fn(and)18 b Fm(secondary_DB_name)o
-Fn(\),)0 4406 y(where)30 b(the)h(second)e(DB)i(is)f(just)h(a)f
-(secondary)e(index)j(\(b)n(y)f(expiration)f(time\))j(for)d(the)i(main)f
-(DB.)h(These)f(databases)0 4505 y(should)20 b(b)r(e)h(on)g(a)f
-(\014lesystem)g(with)h(su\016cien)n(t)g(free)f(disk)h(space)e(dep)r
-(ending)i(on)g(ho)n(w)e(man)n(y)h(connections)g(from)g(di\013eren)n(t)0
-4605 y(clien)n(ts)30 b(the)h(MT)-7 b(A)30 b(receiv)n(es.)43
-b(En)n(tries)30 b(are)f(only)g(remo)n(v)n(ed)g(from)h(the)g(DB)h(if)g
-(there)f(are)f(more)g(than)h Fm(expire_limit)0 4705 y
-Fn(elemen)n(ts.)43 b(Ho)n(w)n(ev)n(er,)28 b(if)j(none)e(of)h(the)g(en)n
-(tries)f(are)f(expired)i(y)n(et,)g(then)g(the)g(n)n(um)n(b)r(er)f(of)h
-(elemen)n(ts)g(can)f(exceed)g(that)0 4804 y(limit.)0
-5071 y Fo(Greylisting:)41 b(Whitelisting)0 5278 y Fn(Greylisting)26
-b(can)g(b)r(e)h(disabled)f(for)g(selected)g(hosts)g(b)n(y)g(adding)g
-(them)h(to)g(the)g(access)e(map)h(\(see)h(Section)f(3.9.3\),)g(e.g.,)50
-5431 y Fm(cltaddr:10)400 b(relay)50 5530 y(cltaddr:127.0.0.)o(1)93
-b(quick:relay)1848 5768 y Fn(31)p eop end
-%%Page: 32 33
-TeXDict begin 32 32 bop 0 523 a Fo(P)m(ossible)30 b(Problems)h(with)g
-(Greylisting)0 730 y Fn(Some)h Fd(le)l(gitimate)i Fn(mailers)d(do)h
-(not)h(b)r(eha)n(v)n(e)e(prop)r(erly)h(and)g(will)h(not)f(retry)g(a)g
-(mail)g(that)h(had)f(a)g(temp)r(orary)g(error.)0 830
-y(This)26 b(can)g(cause)g(mail)g(loss)g(in)g(v)-5 b(arious)25
-b(situations,)i(e.g.,)f(b)r(ecause)g(the)h(receiving)e(system)h(is)g
-(curren)n(tly)g(out)g(of)g(some)0 929 y(resources.)33
-b(Ho)n(w)n(ev)n(er,)21 b(to)h(minimize)h(the)f(impact)g(of)g
-(greylisting)f(on)h(these)g(misb)r(eha)n(ving)f(mailers)g(it)i(migh)n
-(t)f(b)r(e)g(useful)0 1029 y(to)27 b(explicitly)h(whitelist)g(them)h
-(as:)50 1177 y Fm(cltaddr:12.107.2)o(09)o(.24)o(4)93
-b(ok)50 1276 y(cltaddr:64.12.13)o(7)311 b(ok)0 1426 y
-Fn(A)19 b(list)f(of)h(suc)n(h)f(brok)n(en)f(mailers)g(can)h(b)r(e)h
-(found)g(at)f Fm(http://cvs.purem)o(agi)o(c.)o(co)o(m/v)o(ie)o(wcv)o
-(s/)o(gr)o(eyl)o(is)o(tin)o(g/)o(sch)o(em)o(a/)o(whi)o(te)o(lis)o(t)p
-4247 1426 27 4 v 25 w(ip.txt)0 1525 y Fn([Harb)o(].)54
-b(A)34 b(related)e(problem)h(are)f(serv)n(er)g(farms)g(where)h(a)g
-(mail)g(migh)n(t)g(b)r(e)h(resen)n(t)e(from)h(a)g(di\013eren)n(t)g(IP)g
-(address.)0 1625 y(These)23 b(should)h(probably)e(b)r(e)i(whitelisted)h
-(to)r(o;)f(some)f(of)h(these)g(can)f(b)r(e)h(found)g(at)f(the)h(URL)g
-(giv)n(en)f(b)r(efore.)36 b(Ho)n(w)n(ev)n(er,)0 1725
-y(en)n(tries)29 b(in)h(that)g(\014le)g(whic)n(h)f(ha)n(v)n(e)g(the)h
-(commen)n(t)f(\\unique)g(sender)g(p)r(er)h(attempt")g(do)f(not)h(need)f
-(to)h(b)r(e)g(whitelisted)0 1824 y(as)d(this)h(implemen)n(tation)g(do)r
-(es)f(not)g(use)h(the)g(sender)f(address.)0 1977 y(Note:)37
-b(if)27 b(a)f(clien)n(t)h(authen)n(ticates)f(via)h(ST)-7
-b(AR)g(TTLS)27 b(or)f(A)n(UTH)h(suc)n(h)g(that)g(rela)n(ying)e(is)i
-(allo)n(w)n(ed)e(then)i(greylisting)f(is)0 2077 y(disabled)h(for)g
-(that)h(clien)n(t.)0 2403 y Fk(3.10)136 b(Con\014guration)45
-b(for)g(SMTP)f(Serv)l(er)0 2639 y Fn(The)28 b(follo)n(wing)e
-(con\014guration)g(options)h(are)g(v)-5 b(alid)27 b(for)h(SMTPS:)101
-2863 y(1.)42 b Fm(auth)p Fn(:)35 b(this)27 b(is)g(a)f(subsection)h
-(that)g(sp)r(eci\014es)g(the)g(parameters)e(for)i Fm(AUTH)e
-Fn(supp)r(ort.)36 b(It)28 b(is)f(only)f(a)n(v)-5 b(ailable)26
-b(if)h(the)208 2962 y(system)g(has)g(b)r(een)h(con\014gured)e(with)j
-(the)f(option)f Fm(--enable-SASL)p Fn(,)22 b(see)27 b(Section)h(2.2.1.)
-243 3124 y(\(a\))41 b Fm(flags)p Fn(:)35 b(\015ags)27
-b(for)g(SMTP)g(A)n(UTH)390 3237 y(See)i(the)h(Cyrus)e(SASL)i(do)r
-(cumen)n(tation)f(for)g(the)g(meaning)g(of)g(these)g(\015ags:)40
-b Fm(noplaintext)p Fn(,)25 b Fm(noactive)p Fn(,)390 3337
-y Fm(nodictionary)p Fn(,)e Fm(forward)p 1277 3337 V 28
-w(secrecy)p Fn(,)i Fm(noanonymous)p Fn(,)e Fm(pass)p
-2367 3337 V 30 w(credentials)p Fn(,)g Fm(mutual)p 3191
-3337 V 29 w(auth)p Fn(.)238 3465 y(\(b\))42 b Fm(trusted_mechanism)o(s)
-p Fn(:)c(list)31 b(of)g(SASL)g(mec)n(hanisms)g(for)f(whic)n(h)h(rela)n
-(ying)e(is)i(allo)n(w)n(ed)f(if)h(a)g(clien)n(t)g(suc-)390
-3565 y(cessfully)d(authen)n(ticated)f(using)g(one)h(of)f(those)208
-3726 y(Note:)46 b(the)32 b(name)g(for)g(the)g(Cyrus-SASL)g
-(con\014guration)e(\014le)i(is)g(curren)n(tly)g Fm(meta1.conf)p
-Fn(.)46 b(That)32 b(\014le)g(can)g(b)r(e)208 3826 y(used)27
-b(to)g(adjust)g(the)h(list)f(of)g(mec)n(hanisms)f(\(option)h
-Fm(mech)p 2054 3826 V 30 w(list)p Fn(\))f(that)h(should)g(b)r(e)h(adv)n
-(ertised)e(\(b)r(esides)h(man)n(y)208 3925 y(other)g(things\),)g(hence)
-h(this)g(option)f(is)h(not)f(in)h(the)g(SMTP)g(serv)n(er)d(itself.)101
-4086 y(2.)42 b Fm(CDB_gid)p Fn(:)34 b(\(n)n(umeric\))27
-b(group)g(id)h(for)f(CDB)h(\014les,)f(i.e.,)h(the)g(group)e(id)i(of)g
-Fm(meta1c)p Fn(,)d(see)i(Section)h(2.4.1.)101 4248 y(3.)42
-b Fm(flags)p Fn(:)243 4409 y(\(a\))f Fm(8bitmime)p Fn(:)30
-b(o\013er)20 b Fm(8BITMIME)p Fn(:)d(MeT)-7 b(A1)21 b(is)f(8)g(bit)h
-(transparen)n(t,)g(but)g(it)g(do)r(es)f(not)g(p)r(erform)g(an)n(y)g
-(con)n(v)n(ersion,)390 4509 y(so)27 b(this)h(option)f(should)h(only)f
-(b)r(e)h(used)f(if)i(all)e(comm)n(unication)g(partners)f(can)h(deal)h
-(with)g(8)f(bit)h(data.)238 4637 y(\(b\))42 b Fm(access)p
-Fn(:)34 b(use)27 b(access)e(map)h(\(in)i(SMAR\).)f(Note:)37
-b(curren)n(tly)25 b(this)i(\015ag)f(is)g(required)g(to)g(p)r(erform)g
-(a)h(rev)n(erse)390 4736 y(lo)r(okup)32 b(for)g(a)g(clien)n(t)h(IP)f
-(address)f(to)h(get)h(the)g(hostname)e(of)i(the)g(clien)n(t)f(whic)n(h)
-h(then)g(can)f(b)r(e)h(used)f(for)390 4836 y(logging)26
-b(and)i(the)g Fm(Received:)33 b Fn(header.)247 4964 y(\(c\))42
-b Fm(delay_checks)p Fn(:)31 b(dela)n(y)26 b(acceptance)f(c)n(hec)n(k)g
-(un)n(til)i Fm(RCPT)d Fn(stage)h(\(unless)h(explicitly)h(o)n(v)n
-(erridden,)d(see)i(Sec-)390 5063 y(tion)i(3.9.3\).)238
-5191 y(\(d\))42 b Fm(delay_greylisting)o(_e)o(rro)o(r_)o(un)o(til)o(_D)
-o(ATA)o Fn(:)15 b(if)22 b(greylisting)d(\(3e\))i(is)g(enabled)g(then)g
-(w)n(ait)g(un)n(til)g(the)g Fm(DATA)390 5291 y Fn(command)27
-b(to)h(return)f(an)g(error;)f(see)h(Section)h(3.9.4)e(for)h(details.)
-247 5419 y(\(e\))42 b Fm(greylisting)p Fn(:)j(enable)33
-b(simple)h(greylisting)e(\(whic)n(h)i(m)n(ust)g(also)e(b)r(e)j(enabled)
-e(in)h(SMAR,)g(see)g(Section)390 5519 y(3.9.2)27 b(item)h(6\),)f(see)g
-(Section)h(3.9.4)e(for)h(details.)1848 5768 y(32)p eop
-end
-%%Page: 33 34
-TeXDict begin 33 33 bop 252 523 a Fn(\(f)6 b(\))43 b
-Fm(fullgreylisting)p Fn(:)34 b(enable)28 b(full)i(greylisting)e(\(whic)
-n(h)h(m)n(ust)g(also)f(b)r(e)h(enabled)g(in)g(SMAR,)h(see)f(Section)390
-623 y(3.9.2)e(item)h(6\),)f(see)g(Section)h(3.9.4)e(for)h(details.)243
-751 y(\(g\))41 b Fm(rcpt_conf)p Fn(:)29 b(request)18
-b(SMAR)h(lo)r(okup)f(of)g Fm(RCPT)f Fn(address)g(in)h(the)h(access)e
-(map)i(using)f(the)g(tag)g Fm(smtps)p 3543 751 27 4 v
-29 w(rcpt)p 3748 751 V 30 w(conf)p Fn(.)390 865 y(Curren)n(tly)36
-b(the)h(RHS)h(for)e(this)h(kind)g(of)g(en)n(try)f(is)h(a)g
-Fm(flags)e Fn(option)h(and)h(the)g(only)f(p)r(ossible)h(v)-5
-b(alue)37 b(is)390 965 y Fm(greylisting)p Fn(,)23 b(whic)n(h)28
-b(allo)n(ws)e(to)i(turn)f(on)h(greylisting)e(p)r(er)h
-Fm(RCPT)p Fn(,)g(e.g.,)440 1078 y Fm(smtps)p 665 1078
-V 29 w(rcpt)p 870 1078 V 30 w(conf:some@local.)o(dom)o(ai)o(n)94
-b(flags)41 b(=)i(greylisting;)390 1193 y Fn(Note:)50
-b(this)34 b(will)g(c)n(hange)f(in)h(a)g(subsequen)n(t)g(v)n(ersion)e
-(\(syn)n(tax)h(and)h(features\))g(as)f(so)r(on)g(as)h(some)f(basic)390
-1292 y(concept)28 b(has)f(b)r(een)h(determined.)238 1421
-y(\(h\))42 b Fm(lmtp_does_not_imp)o(ly)o(_re)o(la)o(yi)o(ng)p
-Fn(:)51 b(ev)n(en)37 b(if)h(a)g(domain)f(in)h(the)g(mailertable)f(has)g
-Fm(lmtp:)55 b Fn(as)37 b(RHS)390 1520 y(do)h(not)g(implicitly)g(allo)n
-(w)f(rela)n(ying)f(to)i(it,)j(i.e.,)g(do)d(not)g(consider)e(the)j
-(domain)e(as)h(\\lo)r(cal")e(with)i(re-)390 1620 y(sp)r(ect)30
-b(to)f(rela)n(ying.)40 b(This)29 b(is)g(useful)g(for)g(an)g(MSA)h(to)f
-(a)n(v)n(oid)f(external)g(mail)h(to)g(lo)r(cal)g(domains)f(without)390
-1719 y(authen)n(tication.)261 1848 y(\(i\))42 b Fm(soft_bounce)p
-Fn(:)32 b(c)n(hange)24 b(p)r(ermanen)n(t)i(\(5xy\))g(SMTP)f(error)f
-(replies)i(in)n(to)f(temp)r(orary)g(\(4xy\))h(errors.)34
-b(This)390 1947 y(is)28 b(a)f(useful)h(feature)f(for)g(testing)h(to)f
-(a)n(v)n(oid)f(b)r(ounces)i(due)g(to)f(miscon\014gurations.)259
-2076 y(\(j\))42 b Fm(require_EHLO_befo)o(re)o(_MA)o(IL)o
-Fn(:)22 b(require)27 b Fm(EHLO)f Fn(\(or)h Fm(HELO)p
-Fn(\))f(b)r(efore)h(a)g Fm(MAIL)f Fn(command.)240 2204
-y(\(k\))42 b Fm(strict_EHLO_check)o(s)p Fn(:)31 b(p)r(erform)c(a)g
-(strict)g(syn)n(tax)g(c)n(hec)n(k)g(on)g(the)h(argumen)n(t)f(for)g
-Fm(EHLO)f Fn(\(or)h Fm(HELO)p Fn(\).)261 2332 y(\(l\))42
-b Fm(xverp)p Fn(:)50 b(o\013er)35 b Fm(XVERP)e Fn(extension)i(to)g
-(turn)h(on)f Fm(VERP)f Fn([Ber97)n(])h(supp)r(ort)g(for)g(a)g
-(transaction.)59 b(This)35 b(is)g(a)390 2432 y(parameter)26
-b(for)h(the)h Fm(MAIL)e Fn(command,)i(e.g.)390 2546 y
-Fm(MAIL)42 b(From:<sender@some)o(.d)o(om)o(ain)o(>)37
-b(XVERP)215 2674 y Fn(\(m\))42 b Fm(allow_data_before)o(_g)o(ree)o(ti)o
-(ng)o Fn(:)31 b(allo)n(w)c(a)g(clien)n(t)h(to)f(send)h(data)f(b)r
-(efore)g(the)h(initial)g(220)e(greeting.)238 2803 y(\(n\))42
-b Fm(prdr)p Fn(:)k Fm(PRDR)31 b Fn(is)h(an)h(SMTP)f(extension)g([Hal07)
-o(])h(to)g(return)f(individual)h Fm(RCPT)e Fn(status)h(after)h(the)g
-(end)g(of)390 2902 y(data)g(\(similar)f(to)h(LMTP\).)f(This)h(feature)f
-(is)h(turned)g(on)g(if)g(a)f(p)r(olicy)h(milter)g(is)g(con\014gured)e
-(\(see)i(item)390 3002 y(17\).)243 3130 y(\(o\))41 b
-Fm(lookup_session_co)o(nf)o Fn(:)35 b(Lo)r(ok)28 b(up)i(session)e
-(con\014guration)g(data)g(\(see)i(Section)f(3.10.1\))f(in)h(the)h
-(access)390 3230 y(map)e(\(whic)n(h)g(m)n(ust)f(b)r(e)h(activ)-5
-b(ated,)28 b(see)f(3b\).)101 3392 y(4.)42 b Fm(id)p Fn(:)36
-b(unique)28 b(iden)n(ti\014er)f(for)g(SMTP)g(serv)n(er)f(\(0\);)i(see)f
-(Section)h(3.10.2.)101 3553 y(5.)42 b Fm(io_timeout)p
-Fn(:)32 b(timeout)c(for)f(SMTP)h(op)r(erations.)101 3715
-y(6.)42 b Fm(max_threads)p Fn(:)32 b(maxim)n(um)27 b(n)n(um)n(b)r(er)h
-(of)f(threads.)101 3876 y(7.)42 b Fm(max_bad_command)o(s_p)o(er)o(_s)o
-(ess)o(io)o(n)p Fn(:)30 b(maxim)n(um)d(n)n(um)n(b)r(er)f(of)h(bad,)g
-(i.e.,)g(unkno)n(wn,)f(SMTP)h(commands)f(p)r(er)208 3976
-y(session)33 b(accepted)g(b)n(y)h(serv)n(er.)55 b(After)34
-b(this)h(limit)g(is)f(reac)n(hed)e(the)j(connection)e(is)h(terminated)h
-(with)f(an)g(421)208 4076 y(error.)101 4237 y(8.)42 b
-Fm(max_invalid_add)o(res)o(se)o(s_)o(per)o(_s)o(ess)o(io)o(n)33
-b Fn(maxim)n(um)39 b(n)n(um)n(b)r(er)f(of)h(in)n(v)-5
-b(alid,)42 b(e.g.,)g(unkno)n(wn,)f(R)n(CPT)d(ad-)208
-4337 y(dresses)23 b(p)r(er)h(session)f(accepted)h(b)n(y)h(serv)n(er.)34
-b(After)24 b(this)h(limit)g(is)g(reac)n(hed)e(the)i(connection)e(is)i
-(terminated)f(with)208 4436 y(an)j(421)f(error.)101 4598
-y(9.)42 b Fm(max_nop_command)o(s_b)o(et)o(we)o(en_)o(tr)o(ans)o(ac)o
-(ti)o(ons)o Fn(:)66 b(maxim)n(um)44 b(n)n(um)n(b)r(er)h(of)g(NOOP)-7
-b(,)44 b(RSET,)h(and)f(related)208 4698 y(SMTP)19 b(commands)h(b)r(et)n
-(w)n(een)g(t)n(w)n(o)f(successful)h(transactions)f(accepted)h(b)n(y)f
-(serv)n(er.)33 b(After)21 b(this)f(limit)h(is)f(reac)n(hed)208
-4797 y(the)28 b(connection)f(is)g(terminated)h(with)g(an)f(421)f
-(error.)60 4959 y(10.)41 b Fm(max_bad_command)o(s_p)o(er)o(_t)o(ran)o
-(sa)o(cti)o(on)o Fn(:)29 b(maxim)n(um)22 b(n)n(um)n(b)r(er)g(of)g(bad,)
-i(i.e.,)f(unkno)n(wn,)g(SMTP)f(commands)208 5058 y(p)r(er)i
-(transaction)f(accepted)i(b)n(y)f(serv)n(er.)34 b(After)25
-b(this)g(limit)g(is)f(reac)n(hed)g(the)h(connection)f(is)g(terminated)h
-(with)g(an)208 5158 y(421)h(error.)60 5320 y(11.)41 b
-Fm(max_nop_command)o(s_i)o(n_)o(tr)o(ans)o(ac)o(tio)o(n)p
-Fn(:)34 b(maxim)n(um)28 b(n)n(um)n(b)r(er)h(of)g(NOOP)f(and)h(related)f
-(SMTP)h(commands)208 5419 y(in)f(a)g(single)f(transaction)g(accepted)h
-(b)n(y)g(serv)n(er.)37 b(After)28 b(this)h(limit)f(is)h(reac)n(hed)d
-(the)j(connection)f(is)g(terminated)208 5519 y(with)g(an)f(421)f
-(error.)1848 5768 y(33)p eop end
-%%Page: 34 35
-TeXDict begin 34 34 bop 60 523 a Fn(12.)41 b Fm(max_invalid_add)o(res)o
-(se)o(s_)o(per)o(_t)o(ran)o(sa)o(ct)o(ion)30 b Fn(maxim)n(um)36
-b(n)n(um)n(b)r(er)g(of)g(in)n(v)-5 b(alid,)39 b(e.g.,)f(unkno)n(wn,)g
-(R)n(CPT)208 623 y(addresses)18 b(p)r(er)h(transaction)g(accepted)g(b)n
-(y)h(serv)n(er.)32 b(After)20 b(this)g(limit)h(is)e(reac)n(hed)g(the)h
-(connection)f(is)h(terminated)208 722 y(with)28 b(an)f(421)f(error.)60
-888 y(13.)41 b Fm(max_recipients_)o(per)o(_s)o(es)o(sio)o(n)p
-Fn(:)31 b(maxim)n(um)c(n)n(um)n(b)r(er)h(of)f(recipien)n(ts)g(p)r(er)h
-(session.)60 1054 y(14.)41 b Fm(max_recipients_)o(per)o(_t)o(ra)o(nsa)o
-(ct)o(ion)o Fn(:)31 b(maxim)n(um)d(n)n(um)n(b)r(er)f(of)g(recipien)n
-(ts)g(p)r(er)h(transaction.)60 1220 y(15.)41 b Fm(max_hops)p
-Fn(:)e(maxim)n(um)30 b(n)n(um)n(b)r(er)g(of)g(hops)g(\(Receiv)n(ed:)42
-b(headers\).)j(If)30 b(this)h(v)-5 b(alue)30 b(is)g(exceeded)g(the)h
-(incoming)208 1320 y(mail)c(is)h(rejected)f(b)r(ecause)g(it)h(is)g
-(considered)e(a)i(p)r(ossible)f(mail)g(lo)r(op.)60 1486
-y(16.)41 b Fm(max_message_siz)o(e)p Fn(:)31 b(maxim)n(um)c(message)g
-(size)g(\(unit:)38 b(KB\).)60 1652 y(17.)j Fm(policy_milter)p
-Fn(:)31 b(this)d(is)f(a)h(subsection)f(that)h(sp)r(eci\014es)f(the)h
-(parameters)e(for)h(pmilter)h(supp)r(ort)f(\(see)h(Section)208
-1751 y(5\).)50 b(It)32 b(is)g(only)g(a)n(v)-5 b(ailable)31
-b(if)h(it)h(has)e(b)r(een)i(enabled)f(during)f Fm(configure)e
-Fn(\()p Fm(--enable-pmilter)p Fn(,)e(see)32 b(Section)208
-1851 y(2.2.1\).)243 2017 y(\(a\))41 b Fm(socket)p Fn(:)35
-b(this)27 b(is)h(a)e(subsection)h(that)h(sp)r(eci\014es)f(the)h(so)r(c)
-n(k)n(et)e(to)i(comm)n(unicate)f(with)g(p)r(olicy)h(milter.)37
-b(The)390 2116 y(t)n(yp)r(e)28 b(\(option)g Fm(type)p
-Fn(\))e(of)h(the)h(so)r(c)n(k)n(et)f(m)n(ust)h(b)r(e)g(either)f
-Fm(inet)f Fn(or)h Fm(unix)p Fn(.)458 2249 y(i.)41 b Fm(type)h(=)i(inet)
-560 2365 y Fn(A.)e Fm(port)p Fn(:)35 b(p)r(ort)27 b(n)n(um)n(b)r(er)h
-(for)f(connection.)563 2482 y(B.)42 b Fm(address)p Fn(:)34
-b(IP)27 b(address)f(for)h(connection.)435 2598 y(ii.)41
-b Fm(type)h(=)i(unix)560 2714 y Fn(A.)e Fm(path)p Fn(:)35
-b(pathname)27 b(of)h(Unix)g(Domain)f(so)r(c)n(k)n(et.)238
-2847 y(\(b\))42 b Fm(timeout)p Fn(:)34 b(maxim)n(um)28
-b(amoun)n(t)f(of)g(time)h(to)g(w)n(ait)f(for)g(a)g(reply)g(from)h(a)f
-(p)r(olicy)g(milter.)247 2979 y(\(c\))42 b Fm(flags)p
-Fn(:)c(p)r(olicy)29 b(milter)g(\015ags.)39 b(If)30 b(the)f(connection)g
-(to)f(pmilter)i(fails)e(then)i(SMTPS)f(will)g(ignore)e(pmilter)390
-3079 y(b)n(y)h(default.)37 b(This)27 b(b)r(eha)n(vior)g(can)g(b)r(e)h
-(c)n(hanged)e(b)n(y)i(setting)f(one)h(of)f(follo)n(wing)g(t)n(w)n(o)f
-(\015ags:)458 3212 y(i.)41 b Fm(abort)p Fn(:)35 b(if)28
-b(the)g(connection)g(to)f(pmilter)h(fails)f(then)h(ab)r(ort)f(the)h
-(curren)n(t)f(session)g(with)h(a)f(421)f(error.)435 3328
-y(ii.)41 b Fm(accept_but_reconn)o(ect)o Fn(:)27 b(if)18
-b(the)h(connection)f(to)h(pmilter)f(fails)g(then)h(con)n(tin)n(ue)f
-(the)h(curren)n(t)f(session)545 3428 y(but)29 b(try)e(to)g(reconnect)g
-(for)g(the)h(next)g(session.)60 3593 y(18.)41 b Fm(processes)p
-Fn(:)33 b(n)n(um)n(b)r(er)27 b(of)h(pro)r(cesses)e(to)h(start.)60
-3759 y(19.)41 b Fm(protected_recip)o(ien)o(ts)o Fn(:)31
-b(this)c(is)g(a)f(subsection)h(whic)n(h)f(pro)n(vides)g(a)g(few)h
-(simple)g(options)g(to)f Fd(pr)l(ote)l(ct)h Fn(recipi-)208
-3859 y(en)n(ts)g(b)n(y)g(restricting)g(who)g(can)g(send)h(mail)f(to)h
-(them.)243 4025 y(\(a\))41 b Fm(allow_by)p Fn(:)49 b(this)36
-b(is)f(a)g(required)f(subsection)h(whic)n(h)g(has)g(t)n(w)n(o)f(p)r
-(ossible)h(\015ags)g(\(at)g(least)g(one)g(m)n(ust)g(b)r(e)390
-4125 y(sp)r(eci\014ed\).)458 4257 y(i.)41 b Fm(sender)p
-Fn(:)j(allo)n(w)32 b(sending)g(mail)g(based)g(on)g(the)g(en)n(v)n(elop)
-r(e)g(sender)f(\()p Fm(MAIL)p Fn(\))h(address.)49 b(Ev)n(en)32
-b(though)545 4357 y(this)c(address)f(can)g(b)r(e)h(forged)f(it)h(pro)n
-(vides)e(some)h(basic)g(protection.)435 4473 y(ii.)41
-b Fm(client_ip)p Fn(:)34 b(allo)n(w)26 b(sending)h(mail)h(based)f(on)g
-(the)h(clien)n(t)g(IP)f(address.)238 4606 y(\(b\))42
-b Fm(match_type)p Fn(:)34 b(this)28 b(sp)r(eci\014es)g(what)g(t)n(yp)r
-(e)g(of)g(matc)n(hing)g(should)g(b)r(e)g(done.)38 b(By)28
-b(default,)h(exact)e(matc)n(hes)390 4705 y(are)g(required.)36
-b(Alternativ)n(ely)-7 b(,)27 b(one)g(of)h(the)g(follo)n(wing)e(t)n(w)n
-(o)h(options)g(can)g(b)r(e)h(selected:)458 4838 y(i.)41
-b Fm(generic_lookup)p Fn(:)31 b(the)c(items)g(are)f(lo)r(ok)n(ed)f(up)i
-(according)e(to)h(the)h(algorithm)f(sp)r(eci\014ed)h(in)g(Section)545
-4938 y(3.12.1.)435 5054 y(ii.)41 b Fm(implicitly_match_)o(det)o(ai)o(l)
-p Fn(:)30 b(the)c(items)g(are)f(lo)r(ok)n(ed)g(up)h(according)f(to)g
-(the)i(algorithm)d(sp)r(eci\014ed)545 5154 y(in)37 b(Section)f(3.12.1.)
-61 b(and)36 b(additionally)g Fm(+detail)d Fn(is)k(implicitly)g(matc)n
-(hed)f(when)g(the)h(pattern)f(is)545 5253 y(\\)p Fm(user@hostname)p
-Fn(".)68 b(That)40 b(is,)j(it)d(o)n(v)n(errides)d(the)k(default)f(matc)
-n(hing)f(explained)h(in)g(case)f(1e)g(in)545 5353 y(Section)28
-b(3.12.1.)208 5519 y(See)f(Section)h(3.10.3)e(for)h(details.)1848
-5768 y(34)p eop end
-%%Page: 35 36
-TeXDict begin 35 35 bop 60 523 a Fn(20.)41 b Fm(max_transaction)o(s)p
-Fn(:)31 b(maxim)n(um)c(n)n(um)n(b)r(er)h(of)f(transactions)f(p)r(er)i
-(session.)60 683 y(21.)41 b Fm(tls)p Fn(:)35 b(this)28
-b(is)g(a)f(subsection)h(that)g(sp)r(eci\014es)f(the)h(parameters)e(for)
-h Fm(STARTTLS)e Fn(supp)r(ort.)37 b(It)28 b(is)f(only)h(a)n(v)-5
-b(ailable)26 b(if)208 782 y(the)j(system)g(b)r(een)g(con\014gured)f
-(with)i(the)f(option)g Fm(--enable-TLS)p Fn(,)24 b(see)29
-b(Section)g(2.2.1.)40 b(See)29 b(Section)g(11.1)f(for)208
-882 y(some)f(bac)n(kground)e(information)i(ab)r(out)h(these)f(options.)
-243 1055 y(\(a\))41 b Fm(cache_size)p Fn(:)33 b(size)27
-b(of)h(TLS)g(session)e(session)h(cac)n(he)f(\(0:)37 b(disable)27
-b(cac)n(he\).)238 1182 y(\(b\))42 b Fm(cache_timeout)p
-Fn(:)32 b(timeout)c(for)f(en)n(tries)g(in)h(TLS)f(session)g(session)f
-(cac)n(he.)247 1308 y(\(c\))42 b Fm(cert_file)p Fn(:)33
-b(\014le)28 b(with)g(certi\014cate)f(in)h(PEM)f(format.)238
-1435 y(\(d\))42 b Fm(key_file)p Fn(:)34 b(\014le)28 b(with)g(priv)-5
-b(ate)27 b(k)n(ey)g(for)g(certi\014cate)g(in)h(PEM)f(format.)247
-1561 y(\(e\))42 b Fm(CAcert_file)p Fn(:)33 b(\014le)27
-b(with)h(CA)g(certi\014cate)f(in)h(PEM)f(format.)252
-1688 y(\(f)6 b(\))43 b Fm(CAcert_directory)p Fn(:)31
-b(directory)26 b(with)i(\(sym)n(b)r(olic)f(links)h(for\))f(CA)h
-(certi\014cates)f(in)h(PEM)f(format.)243 1814 y(\(g\))41
-b Fm(flags)p Fn(:)c(some)27 b(\015ags)h(are)f(a)n(v)-5
-b(ailable)27 b(to)h(in\015uence)h(the)g(b)r(eha)n(vior)e(of)h(the)h
-(SMTP)f(serv)n(er)f(with)i(resp)r(ect)f(to)390 1914 y(ST)-7
-b(AR)g(TTLS.)458 2040 y(i.)41 b Fm(allow_relaying_if)o(_ve)o(ri)o(fie)o
-(d)p Fn(:)i(if)34 b(the)g(clien)n(t)f(presen)n(ted)g(a)g(certi\014cate)
-g(that)h(can)f(b)r(e)h(v)n(eri\014ed)545 2140 y(b)n(y)41
-b(the)h(CA)f(certi\014cates)g(that)g(are)f(a)n(v)-5 b(ailable)40
-b(to)h(the)h(serv)n(er)d(\(see)i(ab)r(o)n(v)n(e:)63 b
-Fm(CAcert_file)37 b Fn(and)545 2240 y Fm(CAcert_directory)p
-Fn(\),)22 b(then)28 b(rela)n(ying)e(is)h(allo)n(w)n(ed)g(for)g(the)h
-(SMTP)f(session.)435 2353 y(ii.)41 b Fm(check_access_map_)o(for)o(_r)o
-(ela)o(yi)o(ng)o Fn(:)31 b(if)26 b(this)g(\015ag)f(is)h(set)f(then)i
-(the)f(access)f(map)g(\(whic)n(h)h(m)n(ust)g(b)r(e)545
-2452 y(activ)-5 b(ated,)29 b(see)f(3b\))h(is)f(c)n(hec)n(k)n(ed)g(to)g
-(see)g(whether)h(rela)n(ying)d(should)j(b)r(e)g(allo)n(w)n(ed)e(for)h
-(a)g(clien)n(t)h(whic)n(h)545 2552 y(presen)n(ted)d(a)f(certi\014cate)h
-(that)g(has)f(b)r(een)i(v)n(eri\014ed)e(\(see)h(ab)r(o)n(v)n(e\).)35
-b(F)-7 b(or)25 b(this)i(purp)r(ose,)e(the)i(DN)f(of)g(the)545
-2652 y(cert)35 b(issuer)f(is)g(lo)r(ok)n(ed)g(up)h(in)f(the)h(access)f
-(map)g(using)h(the)g(tag)f Fm(certissuer:)p Fn(.)53 b(If)35
-b(the)g(resulting)545 2751 y(v)-5 b(alue)30 b(is)g Fm(relay)p
-Fn(,)e(rela)n(ying)g(is)h(allo)n(w)n(ed.)42 b(If)30 b(it)g(is)g
-Fm(cont)p Fn(,)f(the)h(DN)g(of)g(the)g(cert)f(sub)5 b(ject)30
-b(is)g(lo)r(ok)n(ed)e(up)545 2851 y(next)36 b(in)f(the)h(access)d(map)i
-(using)g(the)h(tag)e Fm(certsubject:)p Fn(.)54 b(If)36
-b(the)f(v)-5 b(alue)35 b(is)g Fm(relay)p Fn(,)g(rela)n(ying)f(is)545
-2951 y(allo)n(w)n(ed;)27 b(ev)n(ery)f(other)h(v)-5 b(alue)28
-b(is)f(curren)n(tly)g(ignored.)545 3050 y(T)-7 b(o)25
-b(a)n(v)n(oid)e(problems)h(with)h(the)g(DN)g(names)f(in)h(map)g(lo)r
-(okups,)f(they)h(are)f(mo)r(di\014ed)h(as)f(follo)n(ws:)34
-b(eac)n(h)545 3150 y(non-prin)n(table)23 b(c)n(haracter)e(and)j(the)g
-(c)n(haracters)d(')p Fm(<)p Fn(',)j(')p Fm(>)p Fn(',)h(')p
-Fm(\()p Fn(',)f(')p Fm(\))p Fn(',)g(')p Fm(")p Fn(',)g(')p
-Fm(+)p Fn(',)h(')43 b(')24 b(are)f(replaced)f(b)n(y)i(their)545
-3249 y(hexadecimal)j(ASCI)r(I)i(v)-5 b(alue)27 b(with)h(a)f(leading)g
-(')p Fm(+)p Fn('.)37 b(F)-7 b(or)27 b(example:)545 3349
-y Fm(/C=US/ST=Californ)o(ia/)o(O=)o(end)o(ma)o(il)o(.or)o(g/)o(OU=)o
-(pr)o(iv)o(ate)o(/C)o(N=)545 3449 y(Darth)42 b(Mail)g
-(\(Cert\)/emailAddr)o(es)o(s=d)o(ar)o(th+)o(ce)o(rt)o(@en)o(dm)o(ail)o
-(.o)o(rg)545 3548 y Fn(is)28 b(enco)r(ded)f(as:)545 3648
-y Fm(/C=US/ST=Californ)o(ia/)o(O=)o(end)o(ma)o(il)o(.or)o(g/)o(OU=)o
-(pr)o(iv)o(ate)o(/C)o(N=)545 3748 y(Darth+20Mail+20+2)o(8Ce)o(rt)o(+29)
-o(/e)o(ma)o(ilA)o(dd)o(res)o(s=)o(da)o(rth)o(+2)o(Bce)o(rt)o(@en)o(dm)o
-(ai)o(l.o)o(rg)545 3847 y Fn(Examples:)545 3947 y(T)-7
-b(o)28 b(allo)n(w)e(rela)n(ying)g(for)h(ev)n(ery)n(one)f(who)h(can)g
-(presen)n(t)g(a)g(cert)h(signed)f(b)n(y)545 4046 y Fm
-(/C=US/ST=Californ)o(ia/)o(O=)o(end)o(ma)o(il)o(.or)o(g/)o(OU=)o(pr)o
-(iv)o(ate)o(/C)o(N=)545 4146 y(Darth+20Mail+20+2)o(8Ce)o(rt)o(+29)o(/e)
-o(ma)o(ilA)o(dd)o(res)o(s=)o(da)o(rth)o(+2)o(Bce)o(rt)o(@en)o(dm)o(ai)o
-(l.o)o(rg)545 4246 y Fn(simply)h(use:)595 4340 y Fm(certissuer:/C=US/)o
-(ST)o(=Ca)o(li)o(for)o(ni)o(a/)o(O=e)o(nd)o(mai)o(l.)o(or)o(g/O)o(U=)o
-(pri)o(va)o(te/)o(CN)o(=)595 4439 y(Darth+20Mail+20+2)o(8C)o(ert)o(+2)o
-(9/e)o(ma)o(il)o(Add)o(re)o(ss=)o(da)o(rt)o(h+2)o(Bc)o(ert)o(@e)o(ndm)o
-(ai)o(l.)o(org)93 b(relay)545 4535 y Fn(T)-7 b(o)28 b(allo)n(w)e(rela)n
-(ying)g(only)h(for)g(a)g(subset)h(of)g(mac)n(hines)f(that)g(ha)n(v)n(e)
-g(a)g(cert)g(signed)g(b)n(y)545 4635 y Fm(/C=US/ST=Californ)o(ia/)o(O=)
-o(end)o(ma)o(il)o(.or)o(g/)o(OU=)o(pr)o(iv)o(ate)o(/C)o(N=)545
-4735 y(Darth+20Mail+20+2)o(8Ce)o(rt)o(+29)o(/e)o(ma)o(ilA)o(dd)o(res)o
-(s=)o(da)o(rth)o(+2)o(Bce)o(rt)o(@en)o(dm)o(ai)o(l.o)o(rg)545
-4834 y Fn(use:)595 4912 y Fm(certissuer:/C=US/)o(ST)o(=Ca)o(li)o(for)o
-(ni)o(a/)o(O=e)o(nd)o(mai)o(l.)o(or)o(g/O)o(U=)o(pri)o(va)o(te/)o(CN)o
-(=)595 5012 y(Darth+20Mail+20+2)o(8C)o(ert)o(+2)o(9/e)o(ma)o(il)o(Add)o
-(re)o(ss=)o(da)o(rt)o(h+2)o(Bc)o(ert)o(@e)o(ndm)o(ai)o(l.)o(org)93
-b(cont)595 5112 y(CertSubject:/C=US)o(/S)o(T=C)o(al)o(ifo)o(rn)o(ia)o
-(/O=)o(en)o(dma)o(il)o(.o)o(rg/)o(OU)o(=pr)o(iv)o(ate)o(/C)o(N=)595
-5211 y(DeathStar/emailAd)o(dr)o(ess)o(=d)o(eat)o(hs)o(ta)o(r@e)o(nd)o
-(mai)o(l.)o(or)o(g)922 b(relay)545 5306 y Fn(Notes:)604
-5419 y Fc(\017)41 b Fn(line)23 b(breaks)g(ha)n(v)n(e)f(b)r(een)i
-(inserted)g(after)f Fm(CN=)f Fn(for)h(readabilit)n(y)-7
-b(,)24 b(eac)n(h)f(tagged)f(en)n(try)h(m)n(ust)h(b)r(e)g(one)687
-5519 y(\(long\))j(line)h(in)g(the)g(access)e(map.)1848
-5768 y(35)p eop end
-%%Page: 36 37
-TeXDict begin 36 36 bop 604 523 a Fc(\017)41 b Fn(if)24
-b(Op)r(enSSL)g(0.9.6)e(is)i(used)g(then)g(the)g Fm(emailAddress=)19
-b Fn(part)k(of)h(a)f(DN)i(is)f(replaced)e(b)n(y)i Fm(Email=)p
-Fn(.)238 655 y(\(h\))42 b Fm(requirements_viol)o(at)o(ion)o
-Fn(:)51 b(This)37 b(option)g(decides)h(ho)n(w)f(to)g(\(globally\))g
-(handle)g(TLS)h(requiremen)n(t)390 755 y(violations)c(\(see)h(Section)h
-(3.10.1\).)58 b(P)n(ossible)34 b(v)-5 b(alues)35 b(are:)51
-b Fm(permfail)p Fn(:)e(generate)34 b(p)r(ermanen)n(t)h(failure,)390
-854 y Fm(tempfail)p Fn(:)f(generate)26 b(temp)r(orary)g(failure,)i
-Fm(abort)p Fn(:)34 b(ab)r(ort)27 b(session.)36 b(These)27
-b(option)g(tak)n(e)g(e\013ect)h(when)g(a)390 954 y Fm(MAIL)e
-Fn(command)h(is)h(issued)f(b)n(y)h(the)g(clien)n(t.)60
-1135 y(22.)41 b Fm(session_feature)o(s)p Fn(:)27 b(This)20
-b(section)f(can)g(b)r(e)h(used)g(to)g(de\014ne)g(classes)e(of)i
-(features)f(for)g(an)g(SMTP)h(serv)n(er)e(session)208
-1235 y(whic)n(h)23 b(then)i(can)e(b)r(e)i(referenced)e(via)g(the)h
-(access)f(map.)36 b(Av)-5 b(ailable)23 b(\015ags)g(are)g(a)g(subset)h
-(of)g(those)g(listed)g(in)g(item)208 1335 y(3:)41 b Fm(starttls)p
-Fn(,)28 b Fm(auth)p Fn(,)i Fm(delay_checks)p Fn(,)c Fm
-(allow_data_befor)o(e_g)o(re)o(et)o(ing)o Fn(,)f Fm(require_EHLO_befo)o
-(re_)o(MA)o(IL)o Fn(,)208 1434 y Fm(strict_EHLO_che)o(cks)o
-Fn(,)d Fm(check_EHLO)p Fn(.)208 1567 y(Example:)36 b(to)27
-b(turn)h(o\013)f Fm(STARTTLS)e Fn(for)i(some)g(clien)n(ts,)g(declare)g
-(a)g Fm(notls)f Fn(class)g(in)i(the)g(con\014guration)e(\014le:)208
-1780 y Fm(session_feature)o(s)81 b(notls)42 b({)h(flags)e(=)i({)h
-(-starttls)c(}})208 1994 y Fn(and)27 b(reference)g(it)h(in)g(the)g
-(access)e(map)h(for)g(those)h(clien)n(ts:)208 2207 y
-Fm(smtps_session_c)o(onf)o(:2)o(17)o(.12)o(6.)o(135)o(.1)o(48)37
-b(session_feature=)o(not)o(ls)o(;)0 2493 y Fj(3.10.1)113
-b(SMTP)37 b(Serv)m(er)g(Session)i(Con\014guration)0 2700
-y Fn(Some)31 b(options)g(can)g(b)r(e)g(set)g(via)g(the)h(access)e(map)h
-(\(see)g(Section)g(3.9.3,)g(tag)g Fm(smtps)p 2711 2700
-27 4 v 29 w(session)p 3048 2700 V 29 w(conf)p Fn(\))f(b)r(ecause)g
-(they)0 2799 y(apply)c(to)h(a)f(session,)g(not)h(globally)-7
-b(.)35 b(Curren)n(tly)26 b(a)n(v)-5 b(ailable)25 b(are:)36
-b(ST)-7 b(AR)g(TTLS)27 b(requiremen)n(ts)f(\()p Fm(tls_requirements)o
-Fn(\))0 2899 y(\(see)i(Section)f(3.13\))g(and)g Fm(session_features)21
-b Fn(\(see)28 b(Section)f(3.10,)g(item)h(22\).)0 3185
-y Fj(3.10.2)113 b(Multiple)38 b(SMTP)f(Serv)m(ers)h(with)f(di\013eren)m
-(t)h(Con\014gurations)0 3392 y Fn(The)44 b(normal)f(w)n(a)n(y)f(to)i
-(run)g(m)n(ultiple)g(SMTP)g(serv)n(ers)d(is)j(to)g(let)g(MCP)f(start)h
-(sev)n(eral)e(SMTP)h(serv)n(ers.)84 b(Eac)n(h)0 3491
-y(SMTP)28 b(serv)n(er)f(m)n(ust)h(giv)n(en)g(a)g(unique)h(iden)n
-(ti\014er)f(\(see)g(Section)h(3.10,)e(item)i(4\))g(and)f(eac)n(h)f
-(SMTP)i(serv)n(er)d(section)i(in)0 3591 y Fm(meta1.conf)f
-Fn(m)n(ust)k(ha)n(v)n(e)f(a)g(unique)i(name)e(\(e.g.,)i(MT)-7
-b(A)31 b(and)g(MSA\),)h(whic)n(h)f(is)g(passed)f(via)h(the)g(option)g
-Fm(-N)42 b Fd(name)0 3690 y Fn(to)27 b Fm(smtps)p Fn(.)35
-b(Example:)h Fm(meta1.conf)p Fn(:)0 3925 y Fm(smtps)42
-b(MTA)g({)87 4024 y(id)h(=)g(0;)87 4124 y(listen_socket)38
-b({)44 b(type=inet;)39 b(port)j(=)h(25;)f(})87 4224 y(start_action)d(=)
-k(pass;)e(pass_fd_socket)d(=)43 b(smtps/mtafd;)87 4323
-y(user)f(=)h(meta1s;)87 4423 y(path)f(=)h(/usr/libexec/smtp)o(s;)87
-4522 y(arguments)d(=)j("smtps)e(-N)i(MTA)f(-f)h(/etc/meta1/meta1.)o(co)
-o(nf)o(";)87 4622 y(log)g({)g(facility)d(=)j(mail;)f(ident=meta1-MTA)o
-(;)c(})0 4722 y(})0 4921 y(smtps)k(MSA)g({)87 5021 y(id)h(=)g(1;)87
-5120 y(listen_socket)38 b({)44 b(type=inet;)39 b(port)j(=)h(587;)f(})87
-5220 y(start_action)d(=)k(pass;)e(pass_fd_socket)d(=)43
-b(smtps/msafd;)87 5320 y(user)f(=)h(meta1s;)87 5419 y(path)f(=)h
-(/usr/libexec/smtp)o(s;)87 5519 y(arguments)d(=)j("smtps)e(-N)i(MSA)f
-(-f)h(/etc/meta1/meta1.)o(co)o(nf)o(";)1848 5768 y Fn(36)p
-eop end
-%%Page: 37 38
-TeXDict begin 37 37 bop 87 523 a Fm(log)43 b({)g(facility)d(=)j(mail;)f
-(ident=meta1-MSA)o(;)c(})87 623 y(auth)k({)h(trusted_mechanism)o(s)37
-b(=)44 b("CRAM-MD5)39 b(DIGEST-MD5";)392 722 y(flags)j(=)h({)g
-(noplaintext)c(};)k(})g(})0 959 y Fn(F)-7 b(or)24 b(tests)g(it)g(is)g
-(also)g(p)r(ossible)f(to)h(let)h(MCP)f(start)f(only)h(one)g(SMTP)g
-(serv)n(er)e(whic)n(h)i(creates)f(sev)n(eral)g(copies)g(of)h(itself)h
-(if)0 1058 y(m)n(ultiple)f(daemon)f(addresses)e(are)i(sp)r(eci\014ed)g
-(\(see)h(Section)f(3.10,)g(item)h(1\).)35 b(Note:)g(this)24
-b(only)f(w)n(orks)e(for)i(unprivileged)0 1158 y(p)r(orts)k(b)r(ecause)g
-(the)h(SMTP)g(serv)n(er)d(do)r(es)j(not)f(run)h(as)f(ro)r(ot.)0
-1444 y Fj(3.10.3)113 b(Protecting)36 b(Recipien)m(ts)0
-1651 y Fn(A)d(few)f(simple)h(features)f(are)f(a)n(v)-5
-b(ailable)31 b(to)h Fd(pr)l(ote)l(ct)h Fn(recipien)n(ts)e(b)n(y)h
-(restricting)g(who)g(can)g(send)g(mail)g(to)g(them.)52
-b(T)-7 b(o)0 1750 y(do)27 b(this)h(the)h(con\014guration)d(section)h
-Fm(protected_recipi)o(ent)o(s)22 b Fn(m)n(ust)27 b(b)r(e)h(turned)g(on)
-g(and)f(at)h(least)f(one)h(of)f(the)h(t)n(w)n(o)0 1850
-y(\015ags)k Fm(sender)e Fn(and)i Fm(client_ip)e Fn(m)n(ust)i(b)r(e)h
-(selected)g(\(see)g(Section)f(3.10,)h(item)g(19a\).)51
-b(If)33 b(this)g(is)g(done,)h(then)f(ev)n(ery)0 1950
-y(recipien)n(t)28 b(is)h(lo)r(ok)n(ed)f(up)h(in)g(the)g(access)f(map)g
-(\(whic)n(h)h(m)n(ust)g(b)r(e)g(activ)-5 b(ated,)29 b(see)g(Section)g
-(3.10,)e(item)j(3b\),)f(using)f(the)0 2049 y(tag)d Fm(protectedrcpt:)p
-Fn(.)31 b(If)c(a)e(matc)n(hing)h(en)n(try)f(is)h(found,)h(it)f(m)n(ust)
-h(ha)n(v)n(e)e(a)g(list)i(of)f(\(one)g(or)f(more\))g(restrictions,)g
-(eac)n(h)0 2149 y(of)j(whic)n(h)f(m)n(ust)h(b)r(e)g(one)f(of)h(the)g
-(follo)n(wing:)50 2297 y(restriction)545 b(required)27
-b Fm(allow_by)d Fn(\015ag)p 0 2330 1848 4 v 50 2400 a
-Fm(from:)p Fn(sender)464 b Fm(sender)50 2499 y(cltaddr:)p
-Fn(IPv4-address)93 b Fm(client_ip)50 2599 y(list:)p Fn(alias)533
-b Fm(sender)0 2748 y Fn(The)27 b(meaning)f(of)h(the)g(\014rst)f(t)n(w)n
-(o)g(restriction)g(t)n(yp)r(es)h(should)f(b)r(e)h(ob)n(vious,)f(the)h
-(third)g(one)f(is)h(in)n(teresting:)36 b(it)27 b(refers)f(to)0
-2848 y(an)k(alias)f(\(in)h(the)h(aliases)e(map,)h(see)g(Section)g
-(3.9.3\))f(and)h(requires)f(that)h(the)h(sender)e(address)g(matc)n(hes)
-g(one)h(of)g(the)0 2948 y(en)n(tries)e(to)g(whic)n(h)g(the)h(alias)e
-(expands.)39 b(This)28 b(can)g(b)r(e)h(used)f(to)h(allo)n(w)e(only)h
-(subscrib)r(ed)g(mem)n(b)r(ers)g(of)g(a)g(mailing)g(list)0
-3047 y(to)f(send)h(mail)g(to)f(it.)0 3200 y(The)f(restrictions)f(are)h
-(ev)-5 b(aluated)26 b(sequen)n(tially)-7 b(,)26 b(if)g(there)h(is)f(a)g
-(matc)n(h,)g(the)h(recipien)n(t)f(is)g(accepted)g(\()p
-Fd(se)l(quential)j(OR)p Fn(\).)0 3300 y(If)f(none)f(of)h(them)g(matc)n
-(hes,)f(the)h(recipien)n(t)f(is)h(rejected.)0 3453 y(By)23
-b(default)g(exact)g(matc)n(hes)f(are)g(required.)35 b(Ho)n(w)n(ev)n
-(er,)22 b(if)h(the)h(\015ag)e Fm(generic_lookup)17 b
-Fn(is)23 b(set)g(\(see)g(Section)g(3.10,)g(item)0 3553
-y(19b\),)h(the)f(items)g(are)f(lo)r(ok)n(ed)g(up)i(as)e(sp)r(eci\014ed)
-h(in)h(Section)f(3.12.1.)33 b(The)23 b(\015ag)g Fm(implicitly_matc)o
-(h_d)o(et)o(ail)16 b Fn(is)23 b(useful)0 3653 y(for)k(the)h
-Fm(list:)35 b Fn(restriction)26 b(if)j(a)e(sender)g(uses)g
-Fm(+detail)e Fn(without)j(ha)n(ving)e(that)i(sp)r(eci\014ed)g(during)f
-(subscription.)0 3806 y(Examples:)36 b(consider)26 b(the)i(follo)n
-(wing)f(aliases)f(map:)50 3954 y Fm(list1:)97 b(<user1-1@l1-1.do)o(m>)
-37 b(<user2-1@l1-1.do)o(m>)g(<list2@local.dom>)50 4053
-y(list2:)97 b(<user1-2@l2-1.do)o(m>)37 b(<user2-2@l2-2.do)o(m>)50
-4153 y(list3:)97 b(<user1-3@l3-1.do)o(m>)37 b(<user2-3@l3-2.do)o(m>)0
-4302 y Fn(together)27 b(with)h(this)g(access)e(map:)50
-4450 y Fm(protectedrcpt:li)o(st)o(1@l)o(oc)o(al)o(.do)o(m)93
-b(list:<list1@local)o(.do)o(m>)50 4550 y(protectedrcpt:li)o(st)o(3)529
-b(from:<moderator3@)o(loc)o(al)o(.do)o(m>)37 b(cltaddr:1.2.3.4)g
-(cltaddr:10)0 4699 y Fn(The)18 b(mails)g(to)h Fm(<list1@local.do)o(m>)
-12 b Fn(are)17 b(only)h(accepted)h(from)f Fm(<user1-1@l1-1.d)o(om>)12
-b Fn(and)18 b Fm(<user2-1@l1-1.do)o(m>)o Fn(.)0 4799
-y(Note:)34 b(the)22 b(list)g(is)f(not)h(recursiv)n(ely)d(expanded,)k
-(i.e.,)g(mem)n(b)r(ers)e(of)h Fm(list2)d Fn(are)i(not)h(allo)n(w)n(ed,)
-f(that)h(restriction)e(m)n(ust)i(b)r(e)0 4898 y(listed)f(in)g(the)g
-(access)e(map.)35 b(Mails)20 b(to)g Fm(<list3@local.dom>)14
-b Fn(are)20 b(only)g(accepted)g(from)h Fm(<moderator3@loc)o(al.)o(do)o
-(m>)o Fn(,)0 4998 y(the)31 b(clien)n(t)f(with)g(the)h(IPv4)e(address)g
-(1.2.3.4,)g(or)g(clien)n(ts)h(in)h(the)f(IPv4)f(net)i(10.)44
-b(The)30 b(latter)g(requires)e(that)j(the)f(\015ag)0
-5098 y Fm(generic_lookup)22 b Fn(is)27 b(turned)h(on)f(to)r(o.)1848
-5768 y(37)p eop end
-%%Page: 38 39
-TeXDict begin 38 38 bop 0 523 a Fk(3.11)136 b(Con\014guration)45
-b(for)g(SMTP)f(Clien)l(t)0 758 y Fn(The)28 b(follo)n(wing)e
-(con\014guration)g(options)h(are)g(v)-5 b(alid)27 b(for)h(SMTPC:)101
-995 y(1.)42 b Fm(io_timeout)p Fn(:)32 b(timeout)c(for)f(SMTP)h(op)r
-(erations)e(\(unit:)38 b(s\).)101 1161 y(2.)k Fm(LMTP_socket)p
-Fn(:)32 b(Unix)c(domain)f(so)r(c)n(k)n(et)g(to)g(use)h(for)f(LMTP)g
-([default:)37 b Fm(lmtpsock)p Fn(].)101 1327 y(3.)42
-b Fm(log_level)p Fn(:)33 b(logging)26 b(lev)n(el.)101
-1493 y(4.)42 b Fm(tls)p Fn(:)35 b(this)28 b(is)g(a)f(subsection)h(that)
-g(sp)r(eci\014es)f(the)h(parameters)e(for)h Fm(STARTTLS)e
-Fn(supp)r(ort.)37 b(It)28 b(is)f(only)h(a)n(v)-5 b(ailable)26
-b(if)208 1593 y(the)j(system)g(b)r(een)g(con\014gured)f(with)i(the)f
-(option)g Fm(--enable-TLS)p Fn(,)24 b(see)29 b(Section)g(2.2.1.)40
-b(See)29 b(Section)g(11.1)f(for)208 1692 y(some)f(bac)n(kground)e
-(information)i(ab)r(out)h(these)f(options.)243 1858 y(\(a\))41
-b Fm(cert_file)p Fn(:)33 b(\014le)28 b(with)g(certi\014cate)f(in)h(PEM)
-f(format.)238 1991 y(\(b\))42 b Fm(key_file)p Fn(:)34
-b(\014le)28 b(with)g(priv)-5 b(ate)27 b(k)n(ey)g(for)g(certi\014cate)g
-(in)h(PEM)f(format.)247 2124 y(\(c\))42 b Fm(CAcert_file)p
-Fn(:)33 b(\014le)27 b(with)h(CA)g(certi\014cate)f(in)h(PEM)f(format.)
-238 2257 y(\(d\))42 b Fm(CAcert_directory)p Fn(:)31 b(directory)26
-b(with)i(\(sym)n(b)r(olic)f(links)h(for\))f(CA)h(certi\014cates)f(in)h
-(PEM)f(format.)101 2423 y(5.)42 b Fm(wait_for_server)o
-Fn(:)j(maxim)n(um)34 b(amoun)n(t)f(of)h(time)h(to)f(w)n(ait)g(for)g(a)g
-(serv)n(er)e(\(QMGR\))j(to)f(b)r(ecome)g(a)n(v)-5 b(ailable)208
-2522 y(\(unit:)37 b(s\).)0 2808 y Fj(3.11.1)113 b(SMTP)37
-b(Clien)m(t)g(Session/Recipien)m(t)i(Con\014guration)0
-3015 y Fn(The)25 b(follo)n(wing)f(options)g(can)g(only)h(b)r(e)g(set)g
-(via)f(the)h(access)f(map)h(\(see)f(Section)h(3.9.3,)f(tag)h
-Fm(smtpc)p 3104 3015 27 4 v 29 w(rcpt)p 3309 3015 V 30
-w(conf)p Fn(\))e(or)h(the)0 3115 y(con\014guration)f(map)i(for)g(QMGR)g
-(\(see)g(3.8.1,)f(tag)g Fm(smtpc)p 1847 3115 V 30 w(session)p
-2185 3115 V 28 w(conf)p Fn(\))g(not)h(in)g(the)g(SMTP)g(clien)n(t)g
-(con\014guration)0 3215 y(section)19 b(itself,)i(as)d(they)h(apply)g
-(to)g(a)f(session)g(or)g(recipien)n(t,)j(not)e(globally)-7
-b(.)33 b(Curren)n(tly)18 b(only)g(ST)-7 b(AR)g(TTLS)20
-b(requiremen)n(ts)0 3314 y(are)k(a)n(v)-5 b(ailable)23
-b(whic)n(h)i(are)e(do)r(cumen)n(ted)i(in)g(Section)g(3.13,)f(more)g
-(option)g(migh)n(t)h(b)r(e)g(added)f(later)g(on.)36 b(Note:)f(as)24
-b(more)0 3414 y(options)j(migh)n(t)h(b)r(e)g(added,)f(the)h(structure)f
-(of)h(this)g(ma)n(y)e(c)n(hange)h(a)g(bit.)0 3742 y Fk(3.12)136
-b(Lo)t(okup)44 b(Orders)0 3994 y Fj(3.12.1)113 b(Lo)s(okup)38
-b(Orders)g(in)g(Maps)0 4201 y Fn(In)33 b(man)n(y)f(cases)g(an)h(item)g
-(is)g(not)g(just)g(lo)r(ok)n(ed)f(up)h(v)n(erbatim)f(in)h(a)g(map,)h
-(but)f(it)h(ma)n(y)e(b)r(e)h(split)g(in)n(to)g(logical)e(parts)0
-4300 y(and)g(then)h(less)e(signi\014can)n(t)g(parts)h(are)f(iterativ)n
-(ely)g(remo)n(v)n(ed)g(and)g(the)i(remaining)e(data)h(is)g(lo)r(ok)n
-(ed)f(up)h(un)n(til)h(either)0 4400 y(a)d(matc)n(h)h(is)g(found)g(or)f
-(the)h(data)g(is)f(empt)n(y;)i(in)g(the)f(latter)f(case)g(a)h(default)g
-(k)n(ey)f(ma)n(y)g(b)r(e)i(lo)r(ok)n(ed)d(up)j(dep)r(ending)f(on)0
-4500 y(the)g(map.)42 b(These)29 b(steps)g(can)g(b)r(e)h(con)n(trolled)e
-(b)n(y)h(\015ags)g(that)g(are)g(sp)r(eci\014ed)g(in)h(the)g
-(con\014guration)d(\014le)j(for)f(the)h(map.)0 4599 y(These)d(\015ags)g
-(are)f(listed)i(b)r(elo)n(w)g(for)f(the)h(v)-5 b(arious)26
-b(lo)r(okup)h(steps.)0 4753 y(F)-7 b(or)32 b(domain)f(names)h(of)g(the)
-h(form)e(\\)p Fm(sub2.sub1.tld)p Fn(")26 b(the)33 b(lo)r(okup)e(order)g
-(is)h(\\)p Fm(sub2.sub1.tld)p Fn(",)27 b(\\)p Fm(.sub1.tld)p
-Fn(",)0 4852 y(\\)p Fm(.tld)p Fn(",)h(and)i(\\)p Fm(.)p
-Fn(")44 b(\(without)31 b(the)f(quotes\).)45 b(The)30
-b(sub)r(domains)g(are)f(tried)i(if)f(the)h(\015ag)e Fm(dotsubdomain)d
-Fn(is)k(set.)45 b(The)0 4952 y(last)31 b(lo)r(okup)f(\(\\)p
-Fm(.)p Fn("\))46 b(is)31 b(only)f(done)h(if)g(the)g(\015ag)f
-Fm(dot)g Fn(is)h(set,)h(as)e(it)h(is)g(the)g(default)h(for)e
-(mailertable.)46 b(Ob)n(viously)29 b(this)0 5051 y(sc)n(hema)c(is)h
-(extended)h(if)g(more)e(comp)r(onen)n(ts)h(are)f(sp)r(eci\014ed.)37
-b(As)26 b(the)g(sequence)g(sho)n(ws)f(there)h(is)g(no)g(implicit)h
-(\\matc)n(h)0 5151 y(all)i(sub)r(domains")g(lo)r(okup,)h(instead)g(en)n
-(tries)f(in)h(a)f(map)h(m)n(ust)g(ha)n(v)n(e)e(a)i(leading)f(dot)h(for)
-f(sub)r(domains)g(matc)n(hes.)43 b(T)-7 b(o)0 5251 y(reiterate:)36
-b(\\)p Fm(sub2.sub1.tld)p Fn(")21 b(do)r(es)27 b(neither)h(matc)n(h)f
-(the)h(en)n(try)f(\\)p Fm(sub1.tld)p Fn(")d(nor)j(\\)p
-Fm(tld)p Fn(".)0 5404 y(F)-7 b(or)36 b(IPv4)f(addresses)g(of)i(the)f
-(form)h(\\)p Fm(A.B.C.D)p Fn(",)32 b(the)37 b(lo)r(okup)f(order)f(is)i
-(\\)p Fm(A.B.C.D)p Fn(",)c(\\)p Fm(A.B.C)p Fn(",)g(\\)p
-Fm(A.B)p Fn(",)i(and)h(\\)p Fm(A)p Fn(")0 5504 y(\(without)j(the)f
-(quotes\).)68 b(In)38 b(con)n(trast)e(to)i(domain)g(lo)r(okups,)i(no)d
-(trailing)h(dots)f(are)g(required)g(\(nor)h(c)n(hec)n(k)n(ed\))f(to)
-1848 5768 y(38)p eop end
-%%Page: 39 40
-TeXDict begin 39 39 bop 0 523 a Fn(denote)30 b(subnet)h(matc)n(hes,)g
-(b)r(ecause)f(the)h(n)n(um)n(b)r(er)g(of)f(comp)r(onen)n(ts)g(of)h(an)f
-(IPv4)f(address)h(is)g(\014xed)h(\(and)f(kno)n(wn\))g(in)0
-623 y(con)n(trast)c(to)i(the)g(n)n(um)n(b)r(er)f(of)h(comp)r(onen)n(ts)
-f(in)h(a)f(host)g(name)g(or)g(domain)g(name.)0 776 y(F)-7
-b(or)24 b(RF)n(C)g(2821)f(addresses)f(of)j(the)f(form)g(\\)p
-Fb(<)p Fm(user+detail@dom)o(ai)o(n)p Fb(>)p Fn(")o(,)19
-b(where)24 b(\\)p Fm(+detail)p Fn(")d(is)j(optional)f(and)i(\\)p
-Fm(+)p Fn(")e(is)0 876 y(the)30 b(\014rst)f(delimiter)g(in)h(the)g(lo)r
-(calpart)e(that)i(w)n(as)e(found)i(in)f(the)h Fm(address_delimite)o(r)
-23 b Fn(string)29 b(\(see)g(Section)h(3.9.2\),)0 975
-y(the)e(lo)r(okups)f(are)f(done)i(according)e(to)h(the)h(follo)n(wing)f
-(sequence:)101 1211 y(1.)42 b(Rep)r(eat)27 b(the)h(follo)n(wing)f(lo)r
-(okups)g(for)g(eac)n(h)g(sub)r(domain)g(of)h(domain)f(\(as)g(explained)
-g(ab)r(o)n(v)n(e\):)243 1377 y(\(a\))41 b(\\)p Fm(user+detail@subd)o
-(om)o(ai)o(n)p Fn(")15 b(if)22 b(\\)p Fm(+detail)p Fn(")c(exists;)23
-b(this)e(is)h(a)f(v)n(erbatim)f(matc)n(h.)35 b(Flag:)e
-Fm(full_adress)p Fn(.)238 1510 y(\(b\))42 b(\\)p Fm(user++@subdomain)o
-Fn(")23 b(if)29 b(\\)p Fm(+detail)p Fn(")c(exists)k(and)g(\\)p
-Fm(detail)p Fn(")c(is)k(not)g(empt)n(y;)h(this)f(matc)n(hes)g(an)n(y)f
-(non-)390 1610 y(empt)n(y)22 b(\\)p Fm(+detail)p Fn(".)32
-b(Note:)i(the)22 b(second)f(\\)p Fm(+)p Fn(")g(c)n(haracter)f(is)i(a)g
-(\014xed)g(metac)n(haracter,)f(it)h(do)r(es)g(not)g(dep)r(end)390
-1710 y(on)31 b Fm(address_delimit)o(er)p Fn(;)26 b(it)31
-b(is)g(a)f(mo)r(delled)i(after)e(the)h(\\)p Fm(+)p Fn(")f(op)r(erator)f
-(in)i(regular)e(expressions)g(etc)i(to)390 1809 y(denote)d(a)f
-(non-empt)n(y)g(sequence)g(of)h(items.)37 b(Flag:)f Fm(detail_plus)247
-1942 y Fn(\(c\))42 b(\\)p Fm(user+*@subdomain)o Fn(")25
-b(if)33 b(\\)p Fm(+detail)p Fn(")28 b(exists;)33 b(this)f(matc)n(hes)f
-(an)n(y)g(\\)p Fm(+detail)p Fn(")d(\(including)k(just)h(\\)p
-Fm(+)p Fn("\).)390 2042 y(Flag:)j Fm(detail_star)238
-2174 y Fn(\(d\))42 b(\\)p Fm(user*@subdomain)p Fn(")o(;)27
-b(this)32 b(matc)n(hes)e(\\)p Fm(user@subdomain)p Fn(")25
-b(as)31 b(w)n(ell)g(as)f(\\)p Fm(user+detail@sub)o(dom)o(ai)o(n)p
-Fn(")390 2274 y(\(\\)p Fm(detail)p Fn(")e(can)j(b)r(e)g(empt)n(y\).)48
-b Fd(Note)p Fn(:)43 b(\\)p Fm(*)p Fn(")30 b(is)h(not)g(a)f(generic)g
-(metac)n(haracter)f(here,)j(it)f(matc)n(hes)f(only)h(a)390
-2374 y(tok)n(en)25 b(b)r(eginning)h(with)g Fm(address_delimite)o(r)20
-b Fn(or)k(an)i(empt)n(y)g(sequence,)f(it)h(do)r(es)f
-Fd(not)h Fn(matc)n(h)f(an)n(y)g(other)390 2473 y(c)n(haracter)35
-b(sequence.)63 b(F)-7 b(or)36 b(example:)54 b(the)37
-b(input)h(\\)p Fm(user1@subdomai)o(n)p Fn(")30 b(do)r(es)36
-b(not)h(matc)n(h)f(the)h(LHS)390 2573 y(\\)p Fm(user*@subdomain)p
-Fn(")o(.)31 b(Flag:)36 b Fm(star)247 2706 y Fn(\(e\))42
-b(\\)p Fm(user@subdomain)p Fn(")o(;)16 b(this)j(do)r(es)f
-Fd(not)g Fn(matc)n(h)g(if)h(\\)p Fm(+detail)p Fn(")14
-b(exists,)20 b(unless)f(the)f(\015ag)g Fm(implicitly_match)o(_d)o(eta)o
-(il)390 2805 y Fn(is)26 b(selected)g(for)g(the)g(map)g(to)g(implicitly)
-h(matc)n(h)f(a)g(detail)g(ev)n(en)g(if)g(there)g(is)g(no)g(wildcard)g
-(in)g(the)h(pattern.)252 2938 y(\(f)6 b(\))43 b(\\)p
-Fm(@subdomain)p Fn(".)101 3104 y(2.)f(If)34 b(nothing)f(has)g(b)r(een)h
-(found)g(and)f(the)h(map)g(t)n(yp)r(e)g(requests)e(it,)k(then)e(try)f
-(lo)r(calpart)g(only)g(\(with)h(the)g(same)208 3204 y(meaning)27
-b(as)g(ab)r(o)n(v)n(e\):)243 3370 y(\(a\))41 b(\\)p Fm(user+detail)p
-Fn(")22 b(if)28 b Fm(detail)e Fn(exists)238 3503 y(\(b\))42
-b(\\)p Fm(user++)p Fn(")24 b(if)29 b Fm(detail)c Fn(exists)i(and)g(is)h
-(not)f(empt)n(y)-7 b(,)247 3636 y(\(c\))42 b(\\)p Fm(user+*)p
-Fn(")24 b(if)29 b Fm(detail)c Fn(exists,)238 3769 y(\(d\))42
-b(\\)p Fm(user*)p Fn(",)247 3901 y(\(e\))g(\\)p Fm(user)p
-Fn(")0 4187 y Fj(3.12.2)113 b(Lo)s(okup)38 b(Orders)g(for)f(An)m
-(ti-Spam)i(Measures)0 4394 y Fn(Map)c(lo)r(okups)f(for)g(an)n(ti-spam)g
-(measures)g(are)g(p)r(erformed)g(according)g(to)g(the)i(SMTP)e
-(dialogue,)i(i.e.,)h(connection)0 4494 y(information)28
-b(\()p Fm(cltaddr:)37 b Fn(and)29 b Fm(cltname:)p Fn(\),)e
-Fm(MAIL)g Fn(command)i(\()p Fm(from:)p Fn(\),)f(and)h
-Fm(RCPT)e Fn(command)i(\()p Fm(to:)p Fn(\).)41 b(Whether)29
-b(a)0 4593 y(rejection)k(has)h(an)f(immediate)h(e\013ect)g(dep)r(ends)h
-(on)e(the)h(result)g(of)g(the)g(lo)r(okup,)h(e.g.,)g(the)f
-Fm(quick:)47 b Fn(mo)r(di\014er,)35 b(and)0 4693 y(whether)d(the)g
-(option)g Fm(delay_checks)27 b Fn(is)k(set.)50 b(If)33
-b(m)n(ultiple)f(c)n(hec)n(ks)f(are)g(p)r(erformed)g(during)h(a)f
-(single)g(stage)g(of)h(the)0 4793 y(SMTP)27 b(dialogue)g(then)h(they)g
-(are)e(done)i(sequen)n(tially)e(un)n(til)i(one)g(of)f(them)h(returns)f
-(something)g(else)h(than)f Fm(cont)p Fn(.)0 4946 y(Note:)35
-b(in)24 b(the)f(description)g(of)h(the)f(algorithms)f(b)r(elo)n(w)i
-(some)e(items)i(are)f(mark)n(ed)f(as)h Fd(che)l(ck:)p
-Fn(.)37 b(Only)23 b(those)g(can)g(c)n(hange)0 5046 y(the)j(result)f(v)
--5 b(alue,)26 b(other)f(steps)g(p)r(erform)g(just)h(op)r(erations)e
-(that)i(ma)n(y)e(b)r(e)i(needed)g(later)f(on)g(but)h(ha)n(v)n(e)e(no)h
-(immediate)0 5145 y(e\013ect)j(on)f(the)h(outcome)f(of)h(the)g(c)n(hec)
-n(ks.)1848 5768 y(39)p eop end
-%%Page: 40 41
-TeXDict begin 40 40 bop 0 523 a Fo(Connect)0 730 y Fn(During)30
-b(connect)h(the)g(follo)n(wing)e(op)r(erations)g(are)h(p)r(erformed)g
-(if)h(the)g Fm(access)d Fn(\015ag)i(\(see)h(Section)f(3.10,)g(item)h
-(3b\))g(is)0 830 y(enabled:)101 1066 y(1.)42 b Fd(che)l(ck:)c
-Fn(lo)r(ok)27 b(up)h(clien)n(t)f(IP)h(address)e(using)h(tag)g
-Fm(cltaddr:)34 b Fn(\(as)27 b(explained)g(in)h(3.12.1\))101
-1232 y(2.)42 b(start)27 b(DNS)h(blac)n(klist)f(queries,)101
-1398 y(3.)42 b(map)27 b(clien)n(t)h(IP)f(address)f(to)i(clien)n(t)f
-(hostname)g(returning)g(the)h(tuple)g(\()p Fm(clientresolve)p
-Fn(,)23 b Fm(clientname)p Fn(\).)101 1564 y(4.)42 b Fd(che)l(ck:)c
-Fn(lo)r(ok)27 b(up)h Fm(cltresolve:clie)o(ntr)o(es)o(olv)o(e)101
-1730 y Fn(5.)42 b Fd(che)l(ck:)c Fn(lo)r(ok)27 b(up)h
-Fm(cltname:clientn)o(ame)21 b Fn(\(as)27 b(explained)g(in)h(3.12.1\))
-101 1896 y(6.)42 b Fd(che)l(ck:)c Fn(lo)r(ok)27 b(up)h(results)f(of)g
-(DNS)i(blac)n(klists)d(in)i(access)f(map.)0 2165 y Fo(MAIL)0
-2372 y Fn(After)h(a)g Fm(MAIL)f Fn(command)g(has)h(b)r(een)g(receiv)n
-(ed)f(the)i(follo)n(wing)e(c)n(hec)n(ks)g(are)g(p)r(erformed)g(unless)h
-(the)g(address)f(is)h Fm(<>)f Fn(or)0 2472 y(a)g(session)g(c)n(hec)n(k)
-f(resulted)i(in)g Fm(quick:relay)23 b Fn(or)j Fm(quick:ok)p
-Fn(:)101 2708 y(1.)42 b Fd(che)l(ck:)37 b Fn(is)26 b(the)g(address)e
-(routeable?)35 b(That)26 b(is,)g(if)g(the)h(sender)e(address)f(w)n
-(ould)h(b)r(e)h(used)g(as)f(a)h(recipien)n(t)f(address)208
-2808 y(\(as)g(it)g(w)n(ould)g(b)r(e)h(necessary)d(if)j(a)f(DSN)i(m)n
-(ust)e(b)r(e)h(sen)n(t\))f(is)g(it)h(p)r(ossible)f(to)g(\014nd)h(a)f
-(host)g(that)h(will)f(deal)g(with)h(the)208 2907 y(address?)47
-b(This)32 b(means)f(that)g(the)h(domain)f(part)g(m)n(ust)h(ha)n(v)n(e)e
-(a)i(v)-5 b(alid)31 b(MX)h(or)f(A)h(record)e(or)g(that)i(routing)f(is)
-208 3007 y(sp)r(eci\014ed)c(via)g(mailertable.)101 3173
-y(2.)42 b Fd(che)l(ck:)c Fn(if)28 b(the)g(domain)f(of)h(sender)f
-(address)f(is)i(lo)r(cal:)36 b(is)27 b(the)h(lo)r(cal)f(part)g(v)-5
-b(alid?)101 3339 y(3.)42 b Fd(che)l(ck:)c Fn(lo)r(ok)27
-b(up)h(the)g(address)e(in)i(the)g(access)e(map)i(\(pro)n(vided)f(it)h
-(is)f(enabled\))h(with)g(the)g(tag)f Fm(from:)p Fn(.)101
-3505 y(4.)42 b Fd(che)l(ck:)f Fn(lo)r(ok)28 b(up)h(the)h(IP)f
-(addresses)e(that)i(w)n(ere)f(found)i(when)f(trying)f(to)h(determine)h
-(whether)e(the)i(address)e(is)208 3605 y(routeable)e(with)i(the)g(tag)f
-Fm(mxbadip:)34 b Fn(in)28 b(the)g(access)e(map.)0 3874
-y Fo(R)m(CPT)0 4081 y Fn(A)g Fm(RCPT)d Fn(command)i(causes)f
-(di\013eren)n(t)h(c)n(hec)n(ks)f(\(note:)36 b(these)25
-b(are)g(sequen)n(tial)f(c)n(hec)n(ks,)h(not)g(exclusiv)n(e,)g(i.e.,)h
-(if)f(the)h(\014rst)0 4181 y(one)h(applies)g(and)h(it)g(do)r(es)f(not)h
-(return)f(a)g(decision,)g(the)h(second)f(one)g(is)h(p)r(erformed\):)101
-4400 y(1.)42 b(is)25 b(this)h(a)e(rela)n(ying)g(attempt)i(and)f(if)h
-(so,)g(is)f(it)h(authorized?)35 b(Rela)n(ying)24 b(can)h(b)r(e)h(allo)n
-(w)n(ed)e(for)h(the)h(en)n(tire)f(session,)208 4500 y(e.g.,)e(due)g(to)
-g(the)g(clien)n(t)g(IP)g(address)f(or)g(other)g(authorization)g(based)g
-(on)h(some)f(authen)n(tication)h(\(ST)-7 b(AR)g(TTLS,)208
-4600 y(A)n(UTH\).)101 4766 y(2.)42 b(are)26 b(there)i(an)n(y)e(other)h
-(restrictions)g(for)g(the)h(recipien)n(t)f(address?)0
-4985 y(F)-7 b(or)27 b(case)g(1)g(the)h(follo)n(wing)e(tests)i(are)f(p)r
-(erformed:)101 5222 y(1.)42 b Fd(che)l(ck:)50 b Fn(is)34
-b(the)g(recipien)n(t)f(lo)r(cal)g(and)h(do)r(es)f(the)h(address)f
-(exist?)55 b(If)34 b(y)n(es,)h(it)f(is)f(not)h(a)f(rela)n(ying)f
-(attempt)j(and)208 5321 y(hence)27 b(allo)n(w)n(ed.)1848
-5768 y(40)p eop end
-%%Page: 41 42
-TeXDict begin 41 41 bop 101 523 a Fn(2.)42 b Fd(che)l(ck:)34
-b Fn(lo)r(ok)19 b(up)h(the)h(recipien)n(t)e(address)g(with)h(the)h(tag)
-e Fm(to:)32 b Fn(\(pro)n(vided)19 b(the)h(access)f(map)h(is)f
-(enabled\))h(\(pro)n(vided)208 623 y(the)h(access)e(map)h(is)h
-(enabled\))g(and)f(c)n(hec)n(k)g(whether)g(the)h(RHS)g(is)g
-Fm(relay)p Fn(,)f(otherwise)f(reject)i(the)g Fm(RCPT)e
-Fn(command)208 722 y(as)26 b(unauthorized)h(rela)n(ying)f(attempt)j
-(unless)e(the)h(RHS)g(is)g(an)f Fm(error)f Fn(en)n(try)h(whic)n(h)g(is)
-h(then)g(used)f(as)g(reply)-7 b(.)0 956 y(F)g(or)27 b(case)g(2)g(the)h
-(follo)n(wing)e(steps)i(are)e(tak)n(en:)101 1190 y(1.)42
-b(lo)r(ok)29 b(up)h(address)e(with)j(tag)e Fm(protectedrcpt:)p
-Fn(,)c(if)30 b(found)g(p)r(erform)f(all)h(the)g(necessary)e(c)n(hec)n
-(ks)h(as)g(explained)208 1289 y(in)e(Section)h(3.10.3.)101
-1455 y(2.)42 b Fd(che)l(ck:)c Fn(lo)r(ok)27 b(up)h(the)g(address)e
-(using)h(the)h(tag)f Fm(to:)36 b Fn(if)28 b(all)f(of)h(the)g(follo)n
-(wing)e(three)i(conditions)f(are)f(met:)243 1620 y(\(a\))41
-b(the)28 b(access)f(map)g(is)h(enabled.)238 1751 y(\(b\))42
-b(a)27 b(session)g(c)n(hec)n(k)g(did)h(not)f(result)g(in)h
-Fm(quick:relay)p Fn(.)247 1883 y(\(c\))42 b(a)27 b(session)g(c)n(hec)n
-(k)g(did)h(not)f(result)g(in)h Fm(quick:ok)d Fn(and)i(rela)n(ying)f(is)
-h(allo)n(w)n(ed)g(b)n(y)g(other)g(means.)101 2048 y(3.)42
-b Fd(che)l(ck:)37 b Fn(p)r(erform)25 b(greylisting)f(unless)h(the)h
-(session)e(is)i(mark)n(ed)e(as)h Fm(ok)g Fn(or)f Fm(relay)g
-Fn(or)g(the)i Fm(RCPT)e Fn(lo)r(okup)h(returned)208 2148
-y Fm(quick:ok)f Fn(or)j Fm(quick:relay)p Fn(.)0 2434
-y Fj(3.12.3)113 b(Macro)37 b(Replacemen)m(ts)i(in)e(RHS)0
-2640 y Fn(The)f(alias)f(map)g(allo)n(ws)g(the)h(use)g(of)g(macro)e(in)i
-(the)h(righ)n(t)e(hand)h(side)f(of)h(map)g(en)n(tries.)61
-b(Macros)34 b(ha)n(v)n(e)h(the)h(form)0 2740 y(\\)p Fm($)p
-Fc(f)p Fm(name)p Fc(g)p Fn(")14 b(\(without)20 b(the)e(quotes\).)34
-b(Av)-5 b(ailable)18 b(macros)f(are:)31 b Fm(user)p Fn(,)19
-b Fm(detail)p Fn(,)f Fm(domain)p Fn(,)g Fm(tag)p Fn(,)h
-Fm(delimiter)p Fn(,)d Fm(subdomain)p Fn(,)0 2840 y Fm(extension)p
-Fn(.)33 b(They)26 b(ha)n(v)n(e)g(the)h(ob)n(vious)e(meaning;)i
-Fm(subdomain)c Fn(refers)j(to)g(the)h(part)f(of)h(the)g(domain)f(b)r
-(efore)h(the)g(dot,)0 2939 y(i.e.,)43 b(if)d(the)g(pattern)f(is)g
-Fm(@.domain)e Fn(and)i(the)h(input)g(is)f Fm(user@host.domain)33
-b Fn(then)40 b Fm(subdomain)c Fn(refers)j(to)g Fm(host)p
-Fn(,)0 3039 y Fm(extension)24 b Fn(is)j(the)h(delimiter)g(and)g(the)g
-(detail)f(together)g(\(pro)n(vided)g(the)h(address)e(con)n(tains)h
-(them\).)0 3192 y(Example:)0 3426 y Fm(alias*@.domain)212
-b(user${extension}@)o(${)o(su)o(bdo)o(ma)o(in})o(.d)o(om)o(ain)0
-3660 y Fn(pro)n(vides)26 b(the)i(follo)n(wing)f(mappings:)0
-3894 y Fm(alias@host.domai)o(n)561 b(user@host.domai)o(n)0
-3993 y(alias+detail@hos)o(t2.)o(do)o(ma)o(in)212 b(user+detail@hos)o
-(t2.)o(do)o(ma)o(in)0 4321 y Fk(3.13)136 b(ST)-11 b(AR)g(TTLS)42
-b(Restrictions)0 4556 y Fn(ST)-7 b(AR)g(TTLS)25 b(requiremen)n(ts)f
-(can)g(b)r(e)h(set)f(for)g(the)h(SMTP)g(serv)n(er)e(and)h(SMTP)g(clien)
-n(t)h(via)f(map)h(en)n(tries)e(\(see)i(Sections)0 4656
-y(3.10.1)h(and)h(3.11.1\).)36 b(These)27 b(restrictions)f(are)h(listed)
-h(in)g(a)f(section)g(called)g Fm(tls_requirements)p Fn(.)101
-4890 y(1.)42 b Fm(common_name)p Fn(:)33 b(require)27
-b(that)i(the)f(CN)h(\(Common)f(Name\))g(of)h(the)f(presen)n(ted)g(TLS)g
-(certi\014cate)g(matc)n(hes)f(the)208 4989 y(sp)r(eci\014ed)g(v)-5
-b(alue.)101 5154 y(2.)42 b Fm(cert_subject)27 b Fn(require)k(that)h
-(the)h(CS)f(\(CER)-7 b(T)32 b(sub)5 b(ject\))33 b(of)f(the)g(presen)n
-(ted)g(TLS)g(certi\014cate)g(matc)n(hes)f(the)208 5254
-y(sp)r(eci\014ed)c(v)-5 b(alue.)101 5419 y(3.)42 b Fm(cert_issuer)16
-b Fn(require)21 b(that)g(the)h(DN)g(\(Distinguised)g(Name\))g(of)f(the)
-h(issuer)e(of)h(the)h(presen)n(ted)f(TLS)g(certi\014cate)208
-5519 y(matc)n(hes)27 b(the)h(sp)r(eci\014ed)f(v)-5 b(alue.)1848
-5768 y(41)p eop end
-%%Page: 42 43
-TeXDict begin 42 42 bop 101 523 a Fn(4.)42 b Fm(min_cipher_bits)24
-b Fn(require)30 b(that)h(the)g(e\013ectiv)n(e)g(k)n(eylength)f(\(in)h
-(bits\))h(of)e(the)i(symmetric)e(encryption)g(algo-)208
-623 y(rithm)d(used)h(for)f(a)g(TLS)h(connection)f(is)g(at)h(least)f(as)
-g(big)g(as)g(the)h(sp)r(eci\014ed)g(v)-5 b(alue.)101
-789 y(5.)42 b Fm(flags)p Fn(:)34 b(a)n(v)-5 b(ailable)27
-b(\015ags)f(are)h(curren)n(tly:)243 955 y(\(a\))41 b
-Fm(verified)p Fn(:)29 b(the)19 b(TLS)f(connection)g(m)n(ust)h(b)r(e)g
-(v)n(eri\014ed,)g(i.e.,)h(the)f(cert)f(issuer)g(m)n(ust)g(b)r(e)h
-(listed)g(in)f Fm(CAcert_file)390 1054 y Fn(or)27 b Fm
-(CAcert_directory)21 b Fn(\(see)27 b(Section)h(3.10,)e(item)i(21\).)238
-1187 y(\(b\))42 b Fm(encrypted)21 b Fn(the)k(TLS)g(connection)f(m)n
-(ust)h(b)r(e)g(encrypted)g(\(i.e.,)g(the)g(e\013ectiv)n(e)g(k)n
-(eylength)f(\(in)h(bits\))h(of)e(the)390 1287 y(symmetric)j(encryption)
-h(algorithm)e(used)i(for)f(a)g(TLS)g(connection)h(is)f(greater)f(than)i
-(zero.)101 1453 y(6.)42 b Fm(requirements_vi)o(ola)o(ti)o(on)21
-b Fn(See)28 b(Section)f(3.10,)g(item)h(21h,)f(for)g(p)r(ossible)g(v)-5
-b(alues.)0 1689 y(Example)18 b(\(note:)32 b(the)19 b(en)n(try)f(m)n
-(ust)g(b)r(e)h(curren)n(tly)e(written)i(in)f(a)g(single)g(line)h(to)f
-(b)r(e)h(prop)r(erly)e(pro)r(cessed)g(b)n(y)h Fm(createmap\(8\))p
-Fn(\):)0 1925 y Fm(smtpc_rcpt_conf:)o(@me)o(ta)o(.o)o(rg)37
-b(tls_requirements)g({)43 b(cert_issuer="/C=U)o(S/S)o(T=)o(Be)o(rke)o
-(le)o(y/L)o(=E)o(nd)o(mai)o(l+)o(20O)o(rg)o(/O=)o(MT)o(A/)o(CN=)o(Cl)o
-(aus)o(+2)o(0A)o(ssm)o(an)o(n+2)o(0C)o(A+2)o(0R)o(SA)o(+20)o(20)o(07/)o
-(em)o(ai)o(lAd)o(dr)o(ess)o(=c)o(a+c)o(a-)o(rs)o(a20)o(07)o(@es)o(mt)o
-(p.)o(org)o(";)37 b(})0 2254 y Fk(3.14)136 b(VERP)0 2489
-y Fn(There)27 b(are)g(t)n(w)n(o)f(w)n(a)n(ys)h(to)g(enable)g(VERP)g
-([Ber97)o(]:)101 2709 y(1.)42 b(Via)27 b(the)h(XVERP)f(extension)h(in)f
-(the)h(SMTP)g(serv)n(er)d(\(see)j(Section)g(3.10,)e(item)i(3l\).)101
-2875 y(2.)42 b(Via)27 b(an)g(en)n(try)g(in)h(aliases)e(marking)h(a)g
-(list)h(with)g Fm(verp-)p Fn(:)257 3004 y Fm(otherlist:)83
-b(<user5@my.dom>)38 b(<user6@other.dom>)f(<user7@local.hos)o(t>)257
-3104 y(verp-otherlist:)81 b(something)1848 5768 y Fn(42)p
-eop end
-%%Page: 43 44
-TeXDict begin 43 43 bop 0 1199 a Fl(Chapter)65 b(4)0
-1668 y Fp(Running)78 b(MeT)-19 b(A1)0 2203 y Fk(4.1)135
-b(Starting)46 b(MeT)-11 b(A1)0 2439 y Fn(All)27 b(comp)r(onen)n(ts)e
-(of)i(MeT)-7 b(A1)26 b(are)f(under)h(con)n(trol)f(of)h(the)h(MCP)f
-(whic)n(h)g(m)n(ust)g(b)r(e)h(started)f(as)f Fm(root)g
-Fn(in)h(the)h(directory)0 2538 y Fm(/var/spool/meta1)21
-b Fn(\(i.e.,)28 b(the)g(main)g(queue)f(directory)-7 b(,)27
-b(see)g(Section)g(2.4:)37 b Fm(MTAQDIR)p Fn(\))25 b(using)0
-2767 y Fm(#)43 b(./mcp.sh)d(start)0 2997 y Fn(The)22
-b(script)f(con)n(tains)g(the)i(run)n(time)e(path)h(for)g(MCP)f(based)g
-(on)h(the)g(data)g(used)f(b)n(y)h Fm(configure)c Fn(as)j(w)n(ell)h(as)f
-(a)h(reference)0 3096 y(to)27 b(the)h(MeT)-7 b(A1)28
-b(con\014guration)e(\014le.)0 3249 y(T)-7 b(o)27 b(stop)h(all)f(MeT)-7
-b(A1)27 b(comp)r(onen)n(ts)g(use)0 3463 y Fm(#)43 b(./mcp.sh)d(stop)0
-3677 y Fn(or)27 b(simply)g(terminate)h(the)g(MCP)-7 b(,)27
-b(it)h(will)g(forw)n(ard)e(the)i(signal)f(to)g(all)g(pro)r(cesses)f(it)
-i(started.)0 3831 y(The)34 b(MCP)g(pro)n(vides)e(some)i(restart)f
-(functionalit)n(y:)49 b(if)35 b(a)e(pro)r(cess)g(terminates)h(\(e.g.,)h
-(crashes\),)g(it)f(will)g(restart)f(it)0 3930 y(unless)e(the)g(exit)g
-(co)r(de)f(indicates)h(that)g(a)f(restart)g(is)g(useless,)h(e.g.,)h
-Fm(EX)p 2288 3930 27 4 v 30 w(USAGE)p Fn(.)d(Moreo)n(v)n(er,)g(the)i
-(pro)r(cesses)e(listed)i(in)0 4030 y(the)d(restart)e(dep)r(endencies)i
-(will)g(b)r(e)g(stopp)r(ed)g(and)f(started)g(to)r(o.)0
-4357 y Fk(4.2)135 b(Using)46 b(MeT)-11 b(A1)44 b(only)h(for)g(Outgoing)
-h(Mail)0 4592 y Fn(MeT)-7 b(A1)28 b(can)h(b)r(e)g(used)f(in)h(com)n
-(bination)e(with)j(a)e(MUA)h(that)g(sp)r(eaks)e(\(E\)SMTP)i(directly)f
-(or)g(with)h(the)g(sendmail)f(8)0 4692 y(MSP)22 b(\(Mail)g(Submission)g
-(Program\))d(for)j(outgoing)f(mail.)35 b(F)-7 b(or)21
-b(the)h(latter)g(add)g(this)g(to)g(y)n(our)f(sendmail)h(8)f
-Fm(submit.mc)0 4791 y Fn(\014le)28 b(\(see)f(also)g Fm
-(misc/sm8.submit.)o(mc)o Fn(\):)0 5021 y Fm(LOCAL_RULE_0)0
-5120 y(R$*)42 b(+)i(X<@$*>)171 b($#meta1)41 b($@)i(localhost)d($:)i($1)
-h(<@$2>)0 5320 y(LOCAL_RULESETS)0 5419 y(SHdrToSMTP)0
-5519 y(R$+)914 b($:)43 b($>PseudoToReal)38 b($1)522 b(sender/recipient)
-37 b(common)1848 5768 y Fn(43)p eop end
-%%Page: 44 45
-TeXDict begin 44 44 bop 0 523 a Fm(R$+)914 b($:)43 b($>MasqSMTP)c($1)
-697 b(qualify)41 b(unqual'ed)e(names)0 623 y(R$*)j(+)i(X<@$*>)520
-b($:)43 b($1)g(<)g(@)g($2)g(>)0 722 y(R$*)f(<)i(@)f(*LOCAL*)d(>)k($*)
-173 b($:)43 b($1)g(<)g(@)g($j)g(.)g(>)g($2)0 922 y(MAILER_DEFINITIO)o
-(NS)0 1021 y(Mmeta1,)128 b(P=[IPC],)40 b(F=kmDFMuXa,)f
-(S=EnvFromSMTP/Hdr)o(Fr)o(om)o(SMT)o(P,)e(R=EnvToSMTP/HdrT)o(oSM)o(TP)o
-(,)349 1121 y(E=\\r\\n,)j(L=990,)h(T=DNS/RFC822/SMTP)o(,)349
-1220 y(A=TCP)g($h)i(2009)0 1457 y Fn(and)30 b(run)h(the)f(SMTP)h(serv)n
-(er)d(of)j(MeT)-7 b(A1)30 b(as)g(listener)g(on)g Fm(localhost:2009)p
-Fn(.)40 b(Then)30 b(mail)h(to)f Fb(<)p Fn(user)p Fm(+X)p
-Fn(@domain)p Fb(>)0 1556 y Fn(will)d(b)r(e)g(sen)n(t)g(via)f(MeT)-7
-b(A1,)27 b(i.e.,)g(b)n(y)g(adding)f(the)h(sequence)f
-Fm(+X)h Fn(to)f(the)h(address)f Fb(<)p Fn(user@domain)p
-Fb(>)e Fn(the)j(mail)g(will)g(b)r(e)0 1656 y(redirected)f(to)h(MeT)-7
-b(A1)27 b(\(and)g Fm(+X)f Fn(will)h(b)r(e)g(remo)n(v)n(ed\).)36
-b(After)27 b(initial)g(testing)g(the)g Fm(relay)e Fn(mailer)h(can)h(b)r
-(e)g(c)n(hanged)f(to)0 1756 y(use)h(p)r(ort)h(2009)e(b)n(y)h(default)h
-(hence)g(the)g(lo)r(cal)f(additions)g(sho)n(wn)g(ab)r(o)n(v)n(e)f(can)h
-(b)r(e)h(remo)n(v)n(ed.)0 1909 y(There)k(are)f(also)g(other)h(programs)
-d(a)n(v)-5 b(ailable)31 b(as)h(substitute)h(for)f(the)g(command)g(line)
-g(in)n(v)n(o)r(cation)f(of)h Fm(sendmail)d Fn(as)0 2008
-y(mail)e(submission)h(program,)d(e.g.,)i Fm(mini)p 1317
-2008 27 4 v 30 w(sendmail)e Fn([P)n(osb)n(].)0 2337 y
-Fk(4.3)135 b(Using)46 b(MeT)-11 b(A1)44 b(for)h(Incoming)g(Mail)0
-2589 y Fj(4.3.1)112 b(Lo)s(cal)39 b(Deliv)m(ery)f(and)g(Sp)s(ecifying)h
-(Lo)s(cal)f(Domains)0 2796 y Fn(If)33 b(the)g(domain)f(of)g(a)g
-(recipien)n(t)g(address)f(matc)n(hes)h(an)g(en)n(try)g(in)h
-(mailertable)e(\(see)i(Section)f(3.9.3\))g(with)h(the)f(righ)n(t)0
-2895 y(hand)38 b(side)f Fm(lmtp:)614 2865 y Fi(1)687
-2895 y Fn(then)h(SMTPC)g(talks)f(LMTP)g(o)n(v)n(er)f(the)i(lo)r(cal)f
-(so)r(c)n(k)n(et)g Fm(lmtpsock)d Fn(\(see)k(3.11\).)66
-b(If)38 b(y)n(ou)f(ha)n(v)n(e)0 2995 y(an)31 b(LD)n(A)h(that)g(runs)f
-(as)g(daemon)g(and)h(can)f(talk)g(LMTP)g(o)n(v)n(er)f(a)h(lo)r(cal)g
-(so)r(c)n(k)n(et)g(y)n(ou)g(can)g(use)g(it)h(for)f(lo)r(cal)g(deliv)n
-(ery)-7 b(.)0 3094 y(It)31 b(is)f(also)f(p)r(ossible)h(to)g(use)g
-Fm(procmail)d Fn([vdBG])k(in)f(LMTP)g(mo)r(de)g(and)h(start)e(it)i
-(from)f Fm(mcp)p Fn(,)g(see)g Fm(meta1.conf)p Fn(.)41
-b(See)0 3194 y Fm(contrib/procmail)o(.lm)o(tp)o(.p)o(0)15
-b Fn(for)21 b(a)g(patc)n(h)1452 3164 y Fi(2)1511 3194
-y Fn(for)f(pro)r(cmail)h(3.22)f(to)h(allo)n(w)f(handling)h(of)h
-(addresses)d(with)j(extensions)0 3294 y(\()p Fm(+detail)p
-Fn(\))j(in)j(LMTP)f(mo)r(de.)37 b(A)28 b(mailertable)f(for)g(lo)r(cal)g
-(deliv)n(ery)g(via)g(LMTP)g(should)g(lo)r(ok)g(lik)n(e)g(this:)50
-3446 y Fm(localhost)183 b(lmtp:)50 3546 y(MY.DOM)315
-b(lmtp:)50 3645 y(HOST.MY.DOM)95 b(lmtp:)0 3795 y Fn(By)27
-b(default)g(mail)g(to)g(addresses)e(whose)i(domain)f(part)h(is)f
-(listed)i(in)f(mailertable)f(with)i(RHS)f Fm(lmtp:)35
-b Fn(is)27 b(allo)n(w)n(ed,)e(i.e.,)0 3894 y(those)i(domains)g(are)g
-(considered)g(lo)r(cal)g(and)h(hence)f(rela)n(ying)f(\(ev)n(en)i
-(though)f(tec)n(hnically)g(this)h(migh)n(t)g(not)g(b)r(e)g(called)0
-3994 y(rela)n(ying\))h(to)h(them)h(is)f(allo)n(w)n(ed.)44
-b(This)30 b(b)r(eha)n(vior)f(can)h(b)r(e)h(turned)f(o\013)g(\(see)h
-(Section)f(3.10,)g(item)g(3h\))h(in)f(whic)n(h)g(case)0
-4094 y(it)f(is)g(necessary)e(to)i(also)e(allo)n(w)h(rela)n(ying)f(to)i
-(these)f(domains)h(whic)n(h)f(can)h(b)r(e)g(done)f(either)h(via)f(the)h
-(access)f(map)h(\(see)0 4193 y(Section)i(3.10,)h(3b\),)g(or)f(the)h
-(command)f(line)h(option)f Fm(-T)f Fn(for)h(SMTPS.)h(This)f(allo)n(ws)f
-(for)h(treating)g(\(some)g(of)6 b(\))33 b(these)0 4293
-y(domains)22 b(as)h Fd(private)h Fn(b)n(y)f(not)g(allo)n(wing)f(rela)n
-(ying)f(to)i(them,)i(hence)e(they)h(will)f(b)r(e)g(only)g(reac)n(hable)
-f(from)g(systems)h(from)0 4393 y(whic)n(h)28 b(rela)n(ying)d(is)j(allo)
-n(w)n(ed.)0 4679 y Fj(4.3.2)112 b(Sp)s(ecifying)39 b(V)-9
-b(alid)38 b(Lo)s(cal)g(Addresses)0 4885 y Fn(T)-7 b(o)24
-b(v)-5 b(alidate)24 b(addresses)f(for)h(lo)r(cal)g(domains,)h(SMAR)g
-(uses)f(the)h(map)g Fm(aliases.db)20 b Fn(\(Section)25
-b(3.9.2,)f(item)h(3a\),)g(whic)n(h)0 4985 y(can)32 b(b)r(e)g(created)f
-(using)h Fm(createmap)p Fn(,)e(or)h(a)g(map)h(sp)r(eci\014ed)h(b)n(y)e
-(the)i(option)f Fm(local_user_map)26 b Fn(\(see)32 b(Section)g(3.9.2,)0
-5085 y(item)g(7\).)48 b(The)32 b(k)n(ey)f(in)g(the)h(map)g(m)n(ust)f(b)
-r(e)h(the)g(lo)r(cal)f(part)g(of)g(a)g(v)-5 b(alid)32
-b(\(lo)r(cal\))f(e-mail)g(address.)47 b(If)32 b(the)g(lo)r(cal)f(part)0
-5184 y(cannot)c(b)r(e)h(found)g(in)g(either)f(map,)h(the)g(address)e
-(is)i(rejected.)p 0 5254 1512 4 v 92 5307 a Fh(1)127
-5331 y Fg(curren)n(tly)c(in)n(ternally)g(enco)r(ded)h(as)f
-Fe(127.0.0.255)92 5386 y Fh(2)127 5410 y Fg(if)g(the)h(patc)n(h)h
-(fails)e(to)h(apply)-6 b(,)25 b(mak)n(e)h(sure)e(y)n(ou)i(use)f(a)f(w)n
-(orking)h Fe(patch\(1\))i Fg(program,)d(e.g.,)h(most)g(SunOS)g(5.x)g(v)
-n(ersions)f(ship)g(with)h(a)0 5489 y(brok)n(en)f(program)1848
-5768 y Fn(44)p eop end
-%%Page: 45 46
-TeXDict begin 45 45 bop 0 523 a Fn(T)-7 b(o)27 b(list)h(v)-5
-b(alid)28 b(lo)r(cal)f(addresses)f(in)i(the)g(alias)e(map)i(the)g(righ)
-n(t)e(hand)i(side)g(m)n(ust)f(b)r(e)h(the)g(string)f(\\)p
-Fm(local:)p Fn(",)d(e.g.,)50 671 y Fm(postmaster:)95
-b Fb(<)p Fm(user@host.domai)o(n)p Fb(>)50 770 y Fm(abuse:)315
-b(user+abuse)50 870 y(user++:)271 b(local:)50 970 y(user:)359
-b(local:)0 1119 y Fn(Note:)37 b(lo)r(cal)27 b(addresses)f(are)h(c)n
-(hec)n(k)n(ed)f(for)h(the)h(en)n(v)n(elop)r(e)f(recipien)n(t)g(and)g
-(sender.)0 1447 y Fk(4.4)135 b(Using)46 b(MeT)-11 b(A1)44
-b(as)h(Gatew)l(a)l(y)0 1683 y Fn(MeT)-7 b(A1)30 b(can)g(easily)f(b)r(e)
-h(used)g(as)g(an)f(in)n(ternet)h(gatew)n(a)n(y)-7 b(.)43
-b(T)-7 b(o)29 b(o)n(v)n(erride)f(routing,)i(mailertable)f(en)n(tries)h
-(\(see)g(Section)0 1782 y(3.9.3\))g(can)i(b)r(e)f(sp)r(eci\014ed.)49
-b(A)32 b(list)g(of)f(v)-5 b(alid)31 b(addresses)f(can)h(b)r(e)h(made)f
-(a)n(v)-5 b(ailable)31 b(via)f(the)i(access)f(map)g(b)n(y)g(allo)n
-(wing)0 1882 y(rela)n(ying)26 b(to)h(those)h(addresses)e(instead)h(of)h
-(en)n(tire)f(domains,)g(e.g.,)50 2030 y Fm(to:user1@my.doma)o(in)311
-b(relay)50 2129 y(to:user2@my.doma)o(in)g(relay)50 2229
-y(to:postmaster@my)o(.d)o(oma)o(in)93 b(relay)50 2329
-y(cltaddr:10.12)530 b(relay)0 2629 y Fk(4.5)135 b(Using)46
-b(MeT)-11 b(A1)44 b(as)h(Bac)l(kup)f(MX)g(Serv)l(er)0
-2864 y Fn(The)31 b(previous)f(section)g(sho)n(w)n(ed)g(ho)n(w)g(to)h
-(sp)r(ecify)g(v)-5 b(alid)31 b(remote)g(addresses)e(if)i(all)g(of)g
-(them)g(are)f(kno)n(wn.)47 b(Ho)n(w)n(ev)n(er,)0 2964
-y(for)27 b(systems)h(that)g(act)g(as)f(bac)n(kup)g(MX)h(serv)n(ers)e
-(it)i(migh)n(t)g(not)g(b)r(e)g(simple)g(to)g(alw)n(a)n(ys)e(k)n(eep)i
-(suc)n(h)f(a)h(list)g(up)g(to)g(date.)0 3063 y(In)g(that)g(case,)e(a)i
-(default)g(en)n(try)f(for)g(a)g(domain)g(should)h(b)r(e)g(made,)f
-(e.g.,)50 3211 y Fm(to:user1@other.d)o(om)o(ain)311 b(relay)50
-3311 y(to:user2@other.d)o(om)o(ain)g(relay)50 3410 y(to:postmaster@ot)o
-(he)o(r.d)o(om)o(ai)o(n)94 b(relay)50 3510 y(to:@other.domain)529
-b(error:451)40 b(4.3.3)h(Try)h(main)g(MX)h(server)50
-3610 y(cltaddr:10.12)661 b(quick:relay)50 3709 y(cltaddr:127.0.0.)o(1)
-486 b(quick:relay)0 3859 y Fn(The)25 b(last)g(t)n(w)n(o)g(en)n(tries)f
-(allo)n(w)g(lo)r(cal)h(systems)g(to)g(send)g(mail)g(to)g(an)n(y)g(user)
-f(at)i Fm(other.domain)p Fn(;)21 b(without)k(those)g(en)n(tries)0
-3958 y(mail)i(to)h(unlisted)g(users)f(will)h(b)r(e)g(\(temp)r
-(orarily\))f(rejected)g(and)h(hence)f(cannot)g(b)r(e)h(deliv)n(ered)f
-(via)g(this)h(system.)0 4244 y Fj(4.5.1)112 b(Note)37
-b(ab)s(out)h(Bac)m(kup)g(MX)g(Serv)m(ers)0 4451 y Fn(It)32
-b(is)g(not)f(a)h(go)r(o)r(d)f(idea)g(to)h(run)g(a)f(bac)n(kup)g(MX)h
-(serv)n(er)e Fm(B)h Fn(for)h(a)f(host)h Fm(A)f Fn(that)h(has)f
-(stronger)f(an)n(ti-spam)h(measures;)0 4551 y(if)j(mails)f(are)f(sen)n
-(t)h(to)g Fm(A)g Fn(via)g Fm(B)p Fn(,)g(then)h Fm(B)e
-Fn(ma)n(y)h(accept)g(them)h(for)e(deliv)n(ery)-7 b(,)34
-b(but)g Fm(A)f Fn(ma)n(y)g(reject)g(them)h(and)f(hence)g
-Fm(B)0 4651 y Fn(has)g(to)h(sen)n(t)f(b)r(ounces,)i(whic)n(h,)g(in)f
-(case)f(of)h(spam,)h(are)d(most)i(lik)n(ely)f(to)g(forged)g(addresses,)
-h(hence)f(those)h(b)r(ounces)0 4750 y(will)29 b(only)g(cause)f
-(additional)g(problems.)40 b(The)29 b(opp)r(osite)g(case)f(\()p
-Fm(B)h Fn(has)f(stronger)f(an)n(ti-spam)h(measures)g(than)h
-Fm(A)p Fn(\))g(can)0 4850 y(cause)e(the)i(rejection)f(of)g(mail)g(that)
-h Fm(A)e Fn(actually)h(w)n(an)n(ted)f(to)i(receiv)n(e.)37
-b(Hence)28 b Fm(B)g Fn(and)g Fm(A)g Fn(should)g(ha)n(v)n(e)f(the)i
-(same)e(an)n(ti-)0 4949 y(spam)j(measures;)h(i.e.,)g(a)f(system)h(that)
-f(acts)g(as)g(bac)n(kup)g(MX)h(serv)n(er)e(for)g(another)h(one)g
-(should)g(p)r(erform)g(the)h(same)0 5049 y(an)n(ti-spam)c(c)n(hec)n(ks)
-f(as)h(the)h(main)g(MX)g(serv)n(er\(s\).)1848 5768 y(45)p
-eop end
-%%Page: 46 47
-TeXDict begin 46 46 bop 0 523 a Fk(4.6)135 b(Miscellaneous)47
-b(Programs)0 775 y Fj(4.6.1)112 b(Do)38 b(not)f(run)h(programs)g(as)g
-Fa(root)h Fj(User)0 982 y Fn(Almost)28 b(all)g(MeT)-7
-b(A1)28 b(programs)d(\(except)j(for)g(MCP\))g(refuse)f(to)h(run)g(with)
-g Fm(root)f Fn(privileges.)36 b(T)-7 b(o)28 b(run)g(a)f(program)f(as)0
-1082 y(a)h(di\013eren)n(t)h(user)f(the)h(utilit)n(y)g
-Fm(misc/runas)23 b Fn(can)28 b(b)r(e)g(used,)f(e.g.,)h(after)f
-(installation)g(in)h Fm(/usr/local/bin/)0 1295 y(#)43
-b(/usr/local/bin/ru)o(na)o(s)37 b(meta1q)42 b(mailq)f(-V)0
-1507 y Fn(\(sp)r(ecify)28 b Fm(-h)f Fn(to)g(see)h(the)g(usage\).)0
-1792 y Fj(4.6.2)112 b(Displa)m(ying)39 b(Con)m(ten)m(t)e(of)h(Mail)g
-(Queues)0 1999 y Fn(The)23 b(program)d Fm(mailq)h Fn(displa)n(ys)g(the)
-i(con)n(ten)n(t)f(of)g(the)h(mail)g(queues)f(\()p Fm(defedb)e
-Fn(and)j Fm(ibdb)p Fn(\).)34 b(Curren)n(tly)21 b(its)i(output)g(is)f
-(in)0 2099 y(a)g(similar)g(format)h(as)f(the)h(sendmail)g(8)f(v)n
-(ersion.)34 b(The)23 b(option)f Fm(-h)g Fn(sho)n(ws)g(ho)n(w)g(to)h
-(use)f(the)i(program;)e(see)h(the)g(previous)0 2198 y(section)31
-b(ab)r(out)g(using)g Fm(runas)e Fn(for)h Fm(mailq)p Fn(.)46
-b(A)31 b(simple)g(shell)g(script)g(wrapp)r(er)f Fm(mailq.sh)e
-Fn(is)j(a)n(v)-5 b(ailable)30 b(that)h(in)n(v)n(ok)n(es)0
-2298 y Fm(mailq)j Fn(via)i Fm(runas)p Fn(.)61 b(Note:)55
-b(the)37 b(output)f(of)h(this)f(program)f(migh)n(t)h(not)g(b)r(e)h
-(accurate)e(due)i(to)f(in)n(ternal)g(bu\013ering)0 2397
-y(b)n(y)i(QMGR.)h(Moreo)n(v)n(er,)f(this)h(program)d(reads)i(DEFEDB)g
-(in)h(suc)n(h)f(a)g(w)n(a)n(y)f(that)i(only)f(en)n(tries)g(that)h(ha)n
-(v)n(e)e(b)r(een)0 2497 y Fd(che)l(ckp)l(ointe)l(d)26
-b Fn(\(see)d(Section)h(8.2)f(ab)r(out)h(options)f(for)g(c)n(hec)n(kp)r
-(oin)n(ts\))g(are)g(sho)n(wn.)35 b(This)23 b(is)h(done)f(to)h(a)n(v)n
-(oid)e(in)n(terference)0 2597 y(with)28 b(the)g(op)r(eration)f(of)g
-(QMGR.)0 2881 y Fj(4.6.3)112 b(In)m(teracting)38 b(with)f(QMGR)0
-3088 y Fn(The)32 b(program)f Fm(qmgrctl)e Fn(allo)n(ws)i(to)i(in)n
-(teract)e(with)i(the)g(QMGR)g(via)e(the)i(con)n(trol)e(so)r(c)n(k)n(et)
-h(\(see)g(Section)g(3.8,)h(item)0 3188 y(3\).)j(In)n(v)n(ok)n(e)25
-b Fm(qmgrctl)40 b(-h)26 b Fn(to)g(see)g(the)g(a)n(v)-5
-b(ailable)25 b(options.)36 b(By)26 b(default)h(the)f(program)e(will)j
-(sho)n(w)e(the)i(curren)n(t)e(status)0 3287 y(of)30 b(QMGR.)g(If)g
-(QMGR)g(has)g(b)r(een)g(compiled)g(with)g(the)h(option)e
-Fm(QMGR)p 2279 3287 27 4 v 30 w(STATS)f Fn(\(see)i(Section)g(12.1\))f
-(then)h(additional)0 3387 y(statistics)d(is)h(a)n(v)-5
-b(ailable,)26 b(e.g.,)h(the)h(n)n(um)n(b)r(er)g(of)f(transactions)f
-(and)i(recipien)n(ts)f(that)h(has)f(b)r(een)h(handled.)0
-3540 y(Enhancemen)n(t)f(to)h(this)f(program)f(are)h(w)n(elcome)f(to)i
-(pro)n(vide)e(more)h(functionalit)n(y)-7 b(.)0 3867 y
-Fk(4.7)135 b(Reloading)47 b(Maps)0 4102 y Fn(Maps)27
-b(\(for)g(SMAR)h(and)f(QMGR\))h(can)f(b)r(e)h(reloaded)e(b)n(y)h(mo)n
-(ving)f(the)i(old)f(db)h(\014le)g(out)f(of)g(the)h(w)n(a)n(y)-7
-b(,)26 b(creating)h(a)g(new)0 4202 y(\014le)h(and)f(then)h(sending)g(a)
-f Fm(USR1)f Fn(signal)g(to)i(the)g(appropriate)e(pro)r(cess)g(to)i
-(reop)r(en)f(the)h(map.)0 4430 y Fm(#)43 b(mv)g($MAP.db)e($MAP.old.db)0
-4529 y(#)i(/usr/local/bin/ru)o(na)o(s)37 b(meta1q)42
-b(createmap)d(-F)k($MAP.db)e(<)i($MAP)0 4629 y(#)g(kill)f(-USR1)g($PID)
-0 4857 y Fn(Note:)37 b(for)27 b(QMGR)h(it)g(is)f(also)g(p)r(ossible)g
-(to)g(use)h Fm(qmgrctl)40 b(-r)27 b Fn(instead,)h(see)f(Section)h
-(4.6.3.)0 5184 y Fk(4.8)135 b(Logging)0 5419 y Fn(Logging)18
-b(is)i(done)g(via)f Fm(syslog\(3\))d Fn(\(see)k(Section)g(3.5,)h(1\))e
-(or)g(to)h Fm(stdout/stderr)p Fn(,)c(whic)n(h)k(is)g(redirected)f(b)n
-(y)h(the)g(default)0 5519 y(MCP)30 b(con\014guration)f(to)h
-Fm(PROG.log)p Fn(.)41 b(The)31 b(logging)d(format)i(is)g(not)h(y)n(et)f
-(completely)g(consisten)n(t)g(across)e(programs.)1848
-5768 y(46)p eop end
-%%Page: 47 48
-TeXDict begin 47 47 bop 0 523 a Fn(Moreo)n(v)n(er,)26
-b(the)j(logging)d(en)n(tries)i(migh)n(t)g(not)h(b)r(e)g(easy)e(to)h
-(understand)g(b)r(ecause)g(they)h(con)n(tain)f(some)g(details)g(whic)n
-(h)0 623 y(are)e(not)h(in)n(teresting)f(to)g(a)h(p)r(oten)n(tial)g(p)r
-(ostmaster,)f(but)h(to)g(dev)n(elop)r(ers.)35 b(Nev)n(ertheless,)26
-b(the)i(logging)d(en)n(tries)h(should)0 722 y(sho)n(w)31
-b(the)i(\015o)n(w)f(of)g(mail)g(through)g(the)h(system.)50
-b(See)33 b(Section)f(10.3)f(for)h(an)g(explanation)f(of)i(the)f(format)
-g(of)g(log\014le)0 822 y(en)n(tries.)0 975 y(Note:)59
-b(log\014les)38 b Fd(must)f Fn(exist)i(with)g(the)g(prop)r(er)f(o)n
-(wner)f(and)i(p)r(ermissions)f(to)g(b)r(e)h(used.)70
-b(Neither)39 b(MCP)f(nor)g(the)0 1075 y(mo)r(dules)e(will)f(curren)n
-(tly)g(create)f(log\014les.)60 b(This)35 b(is)h(done)f(b)n(y)g
-Fm(make)42 b(install)p Fn(,)35 b(i.e.,)j Fm(misc/sm.setup.s)o(h)p
-Fn(,)32 b(whic)n(h)0 1174 y(parses)g Fm(meta1.conf)e
-Fn(to)j(extract)g(the)h(section)f(titles/names)g(and)g
-Fm(user)f Fn(en)n(tries)h(to)g(create)g(the)h(log\014les)e(with)i(the)0
-1274 y(correct)20 b(name)g(and)h(o)n(wner.)33 b(This)21
-b(do)r(es)g(not)g(\(y)n(et\))g(prop)r(erly)f(w)n(ork)f(if)j(unique)f
-(log\014le)f(names)h(are)f(created,)h(see)g(Section)0
-1374 y(8.2,)27 b(3.)0 1660 y Fj(4.8.1)112 b(Log\014le)39
-b(Rotation)0 1867 y Fn(Unless)33 b Fm(syslog\(3\))c Fn(is)k(used)f
-(\(see)h(Section)g(3.5,)g(1\),)h(log\014le)f(rotation)e(can)i(b)r(e)g
-(ac)n(hiev)n(ed)f(b)n(y)g(cop)n(ying)g(the)h(existing)0
-1966 y(log\014le)27 b(to)g(a)g(bac)n(kup)g(\014le,)h(e.g.,)0
-2202 y Fm(#)43 b(cp)g(qmgr.log)d(qmgr.log.0)0 2439 y
-Fn(and)26 b(sending)f(a)g Fm(USR2)f Fn(signal)h(whic)n(h)h(will)g
-(cause)f(the)h(pro)r(cesses)e(to)i(rewind)f(the)i(log\014le.)35
-b(Note:)h(the)26 b(author)f(is)h(a)n(w)n(are)0 2538 y(that)i(this)g(is)
-f(not)h(an)f(optimal)h(solution,)f(ho)n(w)n(ev)n(er,)e(using)j
-Fm(syslog\(3\))23 b Fn(will)28 b(usually)f(pro)n(vide)g(a)g(b)r(etter)h
-(w)n(a)n(y)-7 b(.)0 2867 y Fk(4.9)135 b(Regular)47 b(Chec)l(ks)0
-3102 y Fn(There)27 b(are)g(at)g(least)g(t)n(w)n(o)g(things)h(that)g
-(should)f(b)r(e)h(done)f(regularly:)101 3338 y(1.)42
-b(Chec)n(k)27 b(the)h(log\014le)e(for)i(errors)1178 3308
-y Fi(3)1212 3338 y Fn(:)208 3554 y Fm($)43 b(egrep)e
-('sev=\(ALERT|CRIT|)o(ER)o(R|F)o(AI)o(L\))o(|\\<)o(as)o(ser)o(ti)o
-(on\\)o(>')c($LOGFILE)101 3770 y Fn(2.)42 b(Keep)27 b(trac)n(k)f(of)i
-(the)g(size)f(of)g(the)h(pro)r(cesses,)f(e.g,)208 3986
-y Fm($)43 b(date)f(>>)g($MTAPROCS)208 4085 y($)h(ps)f(axuww)g(|)h(grep)
-f('^meta1')e(|)k(sort)d(>>)i($MTAPROCS)208 4301 y Fn(If)27
-b(one)g(of)g(the)g(pro)r(cesses)e(con)n(tin)n(uously)h(gro)n(ws)f(then)
-j(MeT)-7 b(A1)27 b(should)f(b)r(e)i(compiled)f(with)g
-Fm(-DSM)p 3331 4301 27 4 v 30 w(HEAP)p 3537 4301 V 30
-w(CHECK)208 4401 y Fn(\(see)h(Section)g(12.1.5\))f(and)i(a)f(heap)g
-(dump)h(should)f(b)r(e)h(tak)n(en)f(regularly)e(b)n(y)j(sending)f(the)g
-Fm(USR1)f Fn(signal)h(to)g(the)208 4501 y(pro)r(cess.)41
-b(By)30 b(comparing)e(subsequen)n(t)h(heap)g(dumps)h(it)h(should)e(b)r
-(e)h(p)r(ossible)f(to)h(lo)r(cate)f(a)g(p)r(ossible)g(memory)208
-4600 y(leak.)0 4836 y(Please)d(rep)r(ort)h(problems)g(that)h(cannot)f
-(b)r(e)h(resolv)n(ed)e(lo)r(cally)-7 b(,)27 b(see)g(Section)h(1.4.1.)p
-0 4906 1512 4 v 92 4959 a Fh(3)127 4983 y Fg(See)c Fe(egrep\(1\))i
-Fg(for)d(the)i(correct)f(syn)n(tax)h(for)e(w)n(ord)g(delimiters)g(on)h
-(y)n(our)g(OS.)1848 5768 y Fn(47)p eop end
-%%Page: 48 49
-TeXDict begin 48 48 bop 0 523 a Fk(4.10)136 b(Dealing)46
-b(with)f(Errors)0 775 y Fj(4.10.1)113 b(Resource)37 b(Problems)0
-982 y Fn(Resource)23 b(problems)h(in)h(certain)f(parts)g(of)g(the)h(co)
-r(de)g(can)f(lead)g(to)g(a)h(stop)f(of)g(the)h(in)n(v)n(olv)n(ed)f
-(program.)33 b(In)25 b(suc)n(h)f(a)g(case)0 1082 y(it)30
-b(will)f(b)r(e)h(restarted)e(automatically)h(but)h(if)f(the)h(resource)
-e(problem)h(has)f(not)i(b)r(een)f(tak)n(en)g(care)f(of)i(the)f(MT)-7
-b(A)30 b(ma)n(y)0 1181 y(stop)e(again.)39 b(In)29 b(that)g(case)f(man)n
-(ual)g(in)n(teraction)g(is)g(required.)39 b(The)29 b(simple)g(solution)
-f(to)h(a)f(resource)f(problem)h(is)h(of)0 1281 y(course)e(to)g(add)h
-(more)f(resources)f(\(RAM/disk\))i(or)f(to)h(free)f(up)h(some)f
-(resources,)f(e.g.,)i(stopping)f(programs)f(that)i(do)0
-1380 y(not)g(need)f(to)h(run)f(or)g(deleting)h(un)n(used)f(\014les.)37
-b(There)27 b(are)g(also)f(w)n(a)n(ys)g(to)i(con)n(trol)e(resource)g
-(usage)g(within)i(MeT)-7 b(A1:)125 1617 y Fc(\017)41
-b Fn(memory)26 b(shortage:)34 b(the)27 b(memory)f(usage)g(of)h(MeT)-7
-b(A1)27 b(can)f(b)r(e)h(con)n(trolled)f(b)n(y)h(restricting)e(the)j
-(size)e(of)h(v)-5 b(arious)208 1716 y(data)36 b(structures,)j(see)d
-(Section)i(3.8,)g(e.g.,)h Fm(AQ_max_entries)p Fn(,)34
-b Fm(IQDB)p Fn(,)i(and)g Fm(OCC_max_entries)p Fn(.)60
-b(Ho)n(w)n(ev)n(er,)208 1816 y(setting)30 b(these)g(v)-5
-b(alues)31 b(to)r(o)f(lo)n(w)f(will)i(result)f(in)h(a)f(v)n(ery)f(slo)n
-(w)h(MT)-7 b(A)31 b(that)f(ma)n(y)g(op)r(erate)g(in)h(a)f(degraded)f
-(state)208 1916 y(whic)n(h)e(is)h(not)f(acceptable.)125
-2082 y Fc(\017)41 b Fn(disk)18 b(shortage:)31 b(MeT)-7
-b(A1)19 b(has)f(options)h(that)g(let)g(it)h(decide)f(ho)n(w)f(m)n(uc)n
-(h)h(free)f(disk)h(space)f(is)h(needed)g(for)g(op)r(eration,)208
-2181 y(see)33 b(Section)g(3.8:)48 b Fm(ok_disk_space)28
-b Fn(and)34 b Fm(min_disk_space)p Fn(.)49 b(Ho)n(w)n(ev)n(er,)33
-b(if)h(there)f(is)h(not)f(enough)g(space)g(to)208 2281
-y(store)22 b(the)h(en)n(v)n(elop)r(e)f(databases)f(\(DEFEDB)i(and)g
-(IBDB\))g(then)h(the)f(system)g(cannot)f(w)n(ork,)h(hence)g(su\016cien)
-n(tly)208 2381 y(free)k(disk)g(space)g(is)h(essen)n(tial)e(for)h(prop)r
-(er)g(op)r(eration.)0 2667 y Fj(4.10.2)113 b(Database)38
-b(Problems)0 2873 y Fn(See)27 b(Section)h(7.1)f(for)g(some)f(bac)n
-(kground)g(information)h(ab)r(out)g(the)h(usage)e(of)i(the)g(v)-5
-b(arious)26 b(databases)g(b)r(efore)h(trying)0 2973 y(to)g(\014x)h(an)n
-(y)f(p)r(ossible)g(problems.)0 3126 y(If)j(the)g(deferred)g(database)e
-(is)i(corrupted)f(then)h(the)h(Berk)n(eley)d(DB)i(utilities)g(to)g
-(deal)g(with)g(suc)n(h)f(situations)h(should)0 3226 y(b)r(e)e(tried)g
-([Sleb],)g(e.g.,)f Fm(db_recover)p Fn(.)0 3379 y(Curren)n(tly)h
-(messages)f(stored)h(in)h(CDB)g(ha)n(v)n(e)f(the)h(transaction)e(iden)n
-(ti\014er)i(\()p Fm(ss_ta)p Fn(,)f(see)g(Section)h(10.3\))f(as)g
-(\014lename.)0 3479 y(In)i(the)g(w)n(orst)e(case,)i(i.e.,)g(if)g(IBDB)g
-(or)e(DEFEDB)i(are)f(destro)n(y)n(ed,)f(this)i(allo)n(ws)e(to)i
-(reconstruct)e(the)i(en)n(v)n(elop)r(e)f(data)0 3578
-y(together)38 b(with)h(the)g(log\014le)e(en)n(tries.)69
-b(See)39 b(the)g(script)f Fm(misc/rcvrenvfrom)o(log)o(.s)o(h)32
-b Fn(for)38 b(an)h(example,)i(here)d(is)g(a)0 3678 y(description)33
-b(of)g(its)h(op)r(eration.)53 b(First,)35 b(c)n(hec)n(k)e(whic)n(h)g
-(messages)f(are)g(still)i(in)g(CDB:)g(in)f(the)h(CDB)g(directory)e
-(\(3.4:)0 3778 y Fm(CDB_base_directo)o(ry)p Fn(\))22
-b(issue:)0 4014 y Fm(#)43 b(ls)g(-1)g([0-9A-F]/S*)0 4250
-y Fn(Then)28 b(searc)n(h)e(for)h(eac)n(h)g(of)g(those)h(transaction)e
-(ids)h(\()p Fm($TAID)p Fn(\))g(in)g(the)h(log\014le)f(\()p
-Fm($LOG)p Fn(\):)0 4486 y Fm($)43 b(egrep)f("ss_ta=$TAID,)c
-(\(mail|rcpt\)=")g($LOG)k(|)h(\\)87 4586 y(sed)g(-e)f
-('s;^.*\\\(mail=<.*>)o(\\\))o(,)c(.*;\\1;')i(-e)j('s;^.*\\\(rcpt=<.*)o
-(>\\\))o(,)37 b(.*;\\1;')0 4822 y Fn(will)29 b(sho)n(w)f(the)h(sender)f
-(\()p Fm(mail=)p Fn(\))f(and)i(the)g(recipien)n(ts)f(\()p
-Fm(rcpt=)p Fn(\).)38 b(Based)28 b(on)h(this)f(data)h(it)g(is)f(p)r
-(ossible)h(to)f(resend)g(the)0 4922 y(messages.)0 5075
-y(Note:)45 b(con)n(tributions)31 b(in)h(this)g(area)e(are)h(w)n
-(elcome,)h(e.g.,)g(b)r(etter)g(scripts)f(that)h(p)r(erform)f(more)g(c)n
-(hec)n(ks)f(and)i(ma)n(yb)r(e)0 5175 y(allo)n(w)26 b(for)i(completely)f
-(automatic)g(reco)n(v)n(ery)-7 b(.)1848 5768 y(48)p eop
-end
-%%Page: 49 50
-TeXDict begin 49 49 bop 0 523 a Fj(4.10.3)113 b(W)-9
-b(riting)36 b(Core)h(Dumps)0 730 y Fn(By)21 b(default,)j(all)d(MeT)-7
-b(A1)22 b(pro)r(cesses)e(are)g(executed)i(in)g(the)g(main)g(queue)f
-(directory)-7 b(.)34 b(As)22 b(those)f(pro)r(cesses)f(are)h(running)0
-830 y(with)k(di\013eren)n(t)f(user)g(and)g(group)f(ids)i(not)f(all)g
-(of)h(them)f(can)g(write)h(a)f(core)f(dump)i(in)n(to)f(that)h
-(directory)e(if)h(a)g(fatal)h(error)0 929 y(o)r(ccurs.)35
-b(Some)25 b(op)r(erating)f(systems)g(ha)n(v)n(e)g(commands)h(\(e.g.,)g
-Fm(coreadm\(1M\))c Fn(on)k(SunOS)g(5.x\))g(to)g(sp)r(ecify)g(a)f
-(di\013eren)n(t)0 1029 y(directory)f(in)h(whic)n(h)h(a)e(core)g(dump)i
-(is)f(written.)36 b(On)24 b(op)r(erating)g(systems)f(where)h(suc)n(h)g
-(a)g(command)g(is)g(not)g(a)n(v)-5 b(ailable,)0 1128
-y(the)28 b(option)f Fm(working_directory)21 b Fn(can)27
-b(b)r(e)h(used)g(\(see)f(Section)h(8.2,)f(item)h(4\).)0
-1457 y Fk(4.11)136 b(Replacemen)l(ts)47 b(for)e(F)-11
-b(eatures)45 b(a)l(v)-7 b(ailable)47 b(in)e(other)g(MT)-11
-b(As)0 1692 y Fn(MeT)k(A1)36 b(do)r(es)f(curren)n(tly)g(not)h(o\013er)g
-(some)f(of)h(the)g(features)g(that)g(are)f(a)n(v)-5 b(ailable)34
-b(in)j(other)e(MT)-7 b(As.)62 b(This)36 b(section)0 1792
-y(describ)r(es)27 b(replacemen)n(ts)g(or)f(w)n(ork)-5
-b(arounds)25 b(for)j(some)f(of)g(those)g(features.)101
-2028 y(1.)42 b(Address)30 b(Masquerading:)41 b(The)30
-b(b)r(est)h(w)n(a)n(y)e(to)i(use)f(the)h(correct)e(e-mail)h(addresses)f
-(is)i(to)f(prop)r(erly)g(con\014gure)208 2128 y(y)n(our)h(MUA.)j(Some)f
-(MUAs)g(o\013er)f(more)h(\015exibilit)n(y)g(for)f(this)h(than)g(the)h
-(default)f(masquerading)e(features)i(of)208 2227 y(sendmail)27
-b(8,)g(e.g.,)g(m)n(utt)i([m)n(ut])f(allo)n(ws)e(to)h(select)h(sender)f
-(addresses)f(based)h(on)g(recipien)n(t)h(addresses.)208
-2360 y(Alternativ)n(ely)h(a)h(mail)g(submission)f(program)g(\(MSP\))h
-(can)g(b)r(e)g(used)g(whic)n(h)g(o\013ers)g(address)f(rewriting)g
-(capa-)208 2460 y(bilities,)f(e.g.,)f(the)h(MSP)f(from)h(sendmail)f(8.)
-101 2626 y(2.)42 b Fm(.forward)p Fn(:)31 b Fm(procmail)21
-b Fn(can)i(b)r(e)h(used)f(as)g(LD)n(A)h(\(see)g(Section)f(4.3.1\))g
-(and)h(its)f(con\014guration)f(\014le)i Fm(.procmailrc)208
-2725 y Fn(allo)n(ws)h(to)h(implemen)n(t)h(the)g(same)f(functionalit)n
-(y)h(as)f(a)g Fm(.forward)d Fn(from)j(sendmail)h(8)f(and)g(some)g
-(other)g(MT)-7 b(As.)101 2891 y(3.)42 b(Sending)27 b(mail)h(to)f
-(programs:)35 b(see)27 b(previous)f(item)j(2:)36 b(this)28
-b(can)f(b)r(e)h(done)f(with)i(the)f(help)f(of)h Fm(procmail)p
-Fn(.)101 3057 y(4.)42 b(App)r(ending)28 b(mails)f(to)h(\014les:)36
-b(see)28 b(item)g(2:)36 b(this)28 b(can)f(b)r(e)h(done)g(with)g(the)g
-(help)g(of)f Fm(procmail)p Fn(.)1848 5768 y(49)p eop
-end
-%%Page: 50 51
-TeXDict begin 50 50 bop 0 1199 a Fl(Chapter)65 b(5)0
-1668 y Fp(P)-6 b(olicy)76 b(Milter)0 2203 y Fk(5.1)135
-b(P)l(olicy)46 b(Milter)g(Ov)l(erview)0 2439 y Fn(MeT)-7
-b(A1)32 b(has)f(supp)r(ort)h(for)g(a)f(p)r(olicy)h(milter)g(whic)n(h)g
-(is)g(similar)g(to)g(a)f(milter)h(in)h(sendmail)e(8.)50
-b(The)32 b(API)g(is)g(sligh)n(tly)0 2538 y(di\013eren)n(t,)e(ho)n(w)n
-(ev)n(er,)f(it)h(should)f(b)r(e)h(p)r(ossible)g(to)f(write)h(an)f
-(compatibilit)n(y)h(la)n(y)n(er)e(to)h(em)n(ulate)h(the)g(sendmail)f(8)
-h(API.)0 2638 y(Another)20 b(di\013erence)f(is)h(that)g(MeT)-7
-b(A1)20 b(itself)g(only)f(talks)h(to)f(a)h(single)f(pmilter.)34
-b(Supp)r(ort)20 b(for)g(m)n(ultiple)g(pmilters)g(should)0
-2738 y(b)r(e)28 b(implemen)n(ted)g(in)g(a)f Fd(multiplexor)h
-Fn(that)g(connects)f(to)h(m)n(ultiple)g(pmilters)g(and)f(co)r
-(ordinates)f(their)i(resp)r(onses.)0 3066 y Fk(5.2)135
-b(Nativ)l(e)47 b(P)l(olicy)f(Milter)f(API)0 3301 y Fn(Note:)37
-b(this)28 b(API)f(ma)n(y)g(ev)n(olv)n(e)f(o)n(v)n(er)g(time.)0
-3454 y(Naming)32 b(con)n(v)n(en)n(tions:)44 b(A)33 b
-Fd(p)l(olicy)j(milter)c Fn(\(also)g(called)f Fd(pmilter)p
-Fn(\))j(is)e(a)g(program)e(that)i(uses)g(the)h(API)f(pro)n(vided)f(b)n
-(y)0 3554 y Fd(libpmilter)p Fn(.)38 b(The)26 b(latter)g(in)n(teracts)g
-(with)g(the)h(SMTP)f(serv)n(ers)e(via)i(an)g(in)n(ternal)g(proto)r
-(col,)f(i.e.,)i(this)f(proto)r(col)f(can)h(b)r(e)0 3654
-y(c)n(hanged)h(without)h(c)n(hanging)e(the)i(visible)f(API)h(and)f
-(should)g(not)h(directly)f(b)r(e)h(accessed)f(b)n(y)g(a)g(user)g
-(application.)0 3940 y Fj(5.2.1)112 b(Data)38 b(Structures)0
-4147 y Fn(libpmilter)28 b(itself)g(uses)f(three)h(con)n(text)f
-(structures)g(all)g(of)h(whic)n(h)f(m)n(ust)h(b)r(e)g(treated)f(b)n(y)g
-(a)h(milter)f(as)g(opaque.)101 4383 y(1.)42 b Fm(pmg)p
-345 4383 27 4 v 30 w(ctx)p Fn(:)35 b(\\global")26 b(libpmilter)i(con)n
-(text)f(\(only)h(one)f(p)r(er)g(pro)r(cess\).)101 4549
-y(2.)42 b Fm(pmss)p 389 4549 V 29 w(ctx)p Fn(:)32 b(libpmilter)21
-b(con)n(text)f(p)r(er)g(SMTP)g(serv)n(er)f(that)h(connects)g(to)g(this)
-h(instance.)34 b(There)19 b(can)h(b)r(e)h(m)n(ultiple)208
-4648 y(SMTP)27 b(serv)n(ers)e(connecting)j(to)f(one)g(libpmilter)h
-(instance.)101 4815 y(3.)42 b Fm(pmse)p 389 4815 V 29
-w(ctx)p Fn(:)36 b(libpmilter)28 b(con)n(text)f(p)r(er)h(SMTP)f
-(session.)0 5051 y(An)n(y)f(of)g(the)h(libpmilter)f(functions)h(tak)n
-(es)e(one)h(of)g(these)g(con)n(texts)g(as)f(parameter;)g(e.g.,)i(all)e
-(SMTP)h(session)f(orien)n(ted)0 5150 y(functions)j(ha)n(v)n(e)e(a)i
-(parameter)e(of)h(t)n(yp)r(e)h Fm(pmse)p 1478 5150 V
-30 w(ctx)p 1640 5150 V 30 w(P)p Fn(.)0 5304 y(A)g(milter)g(can)f(ha)n
-(v)n(e)f(its)i(o)n(wn)f(con)n(texts)g(for)g(eac)n(h)g(of)g(these)h
-(three)f(en)n(vironmen)n(ts,)g(see)g(Section)h(5.2.5.)1848
-5768 y(50)p eop end
-%%Page: 51 52
-TeXDict begin 51 51 bop 0 523 a Fj(5.2.2)112 b(Start)38
-b(and)g(Stop)0 730 y Fn(The)28 b(functions)g(in)f(this)h(section)g
-(return)f Fm(SM)p 1412 730 27 4 v 30 w(SUCCESS)e Fn(\(0\))j(on)f
-(success)g(and)g(a)g(negativ)n(e)g(v)-5 b(alue)27 b(in)h(case)f(of)h
-(an)f(error.)0 883 y(First)21 b(libpmilter)h(m)n(ust)f(b)r(e)h
-(initialized;)h(a)e(pmilter)h(m)n(ust)f(sp)r(ecify)h(a)e(v)-5
-b(ariable)21 b Fm(pmg)p 2601 883 V 30 w(ctx)p 2763 883
-V 30 w(P)43 b(pmg)p 3012 883 V 30 w(ctx;)22 b Fn(whic)n(h)f(is)g
-(passed)0 983 y(p)r(er)28 b(reference)e(to)i(the)g(initialization)f
-(function:)0 1136 y Fm(sm)p 93 1136 V 31 w(ret)p 256
-1136 V 30 w(T)43 b(sm)p 461 1136 V 30 w(pmfi)p 667 1136
-V 30 w(init\(pmg)p 1049 1136 V 28 w(ctx)p 1209 1136 V
-30 w(P)h(*pmg)p 1503 1136 V 29 w(ctx\))0 1289 y Fn(The)22
-b(pmilter)g(global)e(con)n(text)i(m)n(ust)f(b)r(e)i(treated)e(as)g
-(opaque)g(data)g(structure,)h(it)h(is)e(passed)g(to)h(subsequen)n(t)f
-(libpmilter)0 1389 y(function)28 b(calls.)0 1542 y(Next)g(pmilter)f
-(starts)g(libpmilter)h(b)n(y)f(handing)g(con)n(trol)f(o)n(v)n(er)g(to)h
-(the)h(library;)e(the)i(pmilter)g(passes)e(a)h(description)g(of)0
-1642 y(its)h(requiremen)n(ts)e(and)i(functionalit)n(y:)0
-1795 y Fm(sm)p 93 1795 V 31 w(ret)p 256 1795 V 30 w(T)43
-b(sm)p 461 1795 V 30 w(pmfi)p 667 1795 V 30 w(start\(pmg)p
-1093 1795 V 28 w(ctx)p 1253 1795 V 30 w(P)g(pmg)p 1502
-1795 V 30 w(ctx,)f(pmilter)p 2058 1795 V 29 w(P)h(pmilter\))0
-1948 y Fn(A)28 b(milter)g(can)f(stop)g(b)n(y)g(calling:)0
-2101 y Fm(sm)p 93 2101 V 31 w(ret)p 256 2101 V 30 w(T)43
-b(sm)p 461 2101 V 30 w(pmfi)p 667 2101 V 30 w(stop\(pmg)p
-1049 2101 V 28 w(ctx)p 1209 2101 V 30 w(P)h(pmg)p 1459
-2101 V 30 w(ctx\))0 2255 y Fn(There)35 b(are)f(v)-5 b(arious)34
-b(functions)h(to)g(set)g(some)g(options)f(whic)n(h)h(can)g(b)r(e)h
-(called)e(after)h(libpmilter)h(is)f(initialized)g(but)0
-2354 y(b)r(efore)24 b(it)i(is)e(started.)36 b(T)-7 b(o)24
-b(set)h(the)g(path)g(of)g(the)g(Unix)g(domain)f(so)r(c)n(k)n(et)g(o)n
-(v)n(er)f(whic)n(h)i(the)g(SMTP)f(serv)n(ers)f(\(see)i(Section)0
-2454 y(3.10,)h(item)i(17\))f(and)h(libpmilter)g(comm)n(unicate:)0
-2607 y Fm(sm)p 93 2607 V 31 w(ret)p 256 2607 V 30 w(T)43
-b(sm)p 461 2607 V 30 w(pmfi)p 667 2607 V 30 w(setconn\(pmg)p
-1181 2607 V 27 w(ctx)p 1340 2607 V 30 w(P)g(pmg)p 1589
-2607 V 30 w(ctx,)f(const)g(char)g(*path\))0 2760 y Fn(The)28
-b(bac)n(klog)d(parameter)i(of)g(the)h Fm(listen\(2\))c
-Fn(function)k(can)f(b)r(e)h(set:)0 2914 y Fm(sm)p 93
-2914 V 31 w(ret)p 256 2914 V 30 w(T)43 b(sm)p 461 2914
-V 30 w(pmfi)p 667 2914 V 30 w(setbacklog\(pmg)p 1313
-2914 V 26 w(ctx)p 1471 2914 V 30 w(P)g(pmg)p 1720 2914
-V 30 w(ctx,)f(int)g(backlog\))0 3067 y Fn(The)35 b(debug)f(lev)n(el)g
-(of)g(libpmilter)h(migh)n(t)f(b)r(e)h(set)g(via)f(\(this)h(requires)e
-(kno)n(wledge)g(of)h(the)h(in)n(ternals)f(of)g(the)h(library)0
-3167 y(whic)n(h)28 b(can)f(b)r(e)h(acquired)e(b)n(y)i(lo)r(oking)e(at)i
-(the)g(source)e(co)r(de\):)0 3320 y Fm(sm)p 93 3320 V
-31 w(ret)p 256 3320 V 30 w(T)43 b(sm)p 461 3320 V 30
-w(pmfi)p 667 3320 V 30 w(setdbg\(pmg)p 1137 3320 V 27
-w(ctx)p 1296 3320 V 31 w(P)g(pmg)p 1546 3320 V 30 w(ctx,)f(int)g
-(debuglevel\))0 3473 y Fn(T)-7 b(o)27 b(set)h(the)g(comm)n(unication)f
-(timeout:)0 3626 y Fm(sm)p 93 3626 V 31 w(ret)p 256 3626
-V 30 w(T)43 b(sm)p 461 3626 V 30 w(pmfi)p 667 3626 V
-30 w(settimeout\(pmg)p 1313 3626 V 26 w(ctx)p 1471 3626
-V 30 w(P)g(pmg)p 1720 3626 V 30 w(ctx,)f(int)g(timeout\))0
-3912 y Fj(5.2.3)112 b(New)38 b(SMTP)f(Serv)m(er)0 4119
-y Fn(Whenev)n(er)29 b(an)g(SMTP)g(serv)n(er)e(connects)i(to)g(a)g
-(milter)g(an)g(option)g(negotiation)f(is)i(p)r(erformed)e(\(similar)h
-(to)g(ESMTP)0 4219 y(itself)6 b(\).)61 b(A)35 b(pmilter)h(can)e(c)n
-(hec)n(k)h(whether)g(serv)n(er)e(capabilities)h(are)h(acceptable)f(and)
-h(return)g(the)g(options)g(that)g(it)0 4318 y(w)n(an)n(ts:)0
-4472 y Fm(sm)p 93 4472 V 31 w(ret)p 256 4472 V 30 w(T)43
-b(pmfi)p 549 4472 V 30 w(negotiate\(pmss)p 1195 4472
-V 25 w(ctx)p 1352 4472 V 30 w(P)g(pmss)p 1645 4472 V
-30 w(ctx,)f(uint32)p 2157 4472 V 29 w(t)h(srv)p 2405
-4472 V 30 w(cap,)f(uint32)p 2917 4472 V 29 w(t)h(srv)p
-3165 4472 V 31 w(fct,)e(uint32)p 3677 4472 V 29 w(t)j(srv)p
-3926 4472 V 30 w(feat,)0 4571 y(uint32)p 269 4571 V 29
-w(t)f(srv)p 517 4571 V 30 w(misc,)f(uint32)p 1073 4571
-V 29 w(t)h(*pm)p 1321 4571 V 30 w(cap,)f(uint32)p 1833
-4571 V 29 w(t)h(*pm)p 2081 4571 V 30 w(fct,)f(uint32)p
-2593 4571 V 29 w(t)h(*pm)p 2841 4571 V 30 w(feat,)f(uint32)p
-3397 4571 V 29 w(t)h(*pm)p 3645 4571 V 30 w(misc\))0
-4725 y Fn(Curren)n(tly)30 b(only)g(the)h(capabilities)e(\014eld)i(is)g
-(used:)42 b Fm(srv)p 1783 4725 V 30 w(cap)30 b Fn(is)g(set)h(b)n(y)f
-(the)h(SMTP)f(serv)n(er)f(to)h(a)g(list)h(\(implemen)n(ted)0
-4824 y(as)26 b(bit)i(\014eld\))f(of)g(phases)f(of)h(the)g(ESMTP)g
-(dialogue)e(that)j(can)e(b)r(e)i(passed)e(to)g(a)h(pmilter.)37
-b(In)27 b(turn)g(the)g(pmilter)g(m)n(ust)0 4924 y(set)32
-b Fm(*pm)p 271 4924 V 31 w(cap)f Fn(to)h(includes)h(those)f(phases)g
-(of)g(the)h(ESMTP)f(dialogue)f(that)i(it)g(w)n(an)n(ts)e(to)h(receiv)n
-(e.)51 b(F)-7 b(or)31 b(details,)j(see)0 5023 y Fm(include/sm/pmilt)o
-(er.)o(h)p Fn(.)42 b(F)-7 b(or)31 b(eac)n(h)f(of)i(those)f(phases)f(a)h
-(callbac)n(k)f(is)h(in)n(v)n(ok)n(ed)f(\(see)h(Section)h(5.2.4\))e
-(whic)n(h)h(m)n(ust)0 5123 y(b)r(e)d(set)g(b)n(y)f(the)h(pmilter)g(in)g
-(its)f(description)g(structure)g Fm(struct)42 b(pmilter)p
-2404 5123 V 28 w(S)27 b Fn(\(see)h Fm(include/sm/pmfap)o(i.)o(h)p
-Fn(\).)1848 5768 y(51)p eop end
-%%Page: 52 53
-TeXDict begin 52 52 bop 0 523 a Fj(5.2.4)112 b(SMTP)38
-b(Session)h(and)f(T)-9 b(ransaction)0 730 y Fn(The)27
-b(proto)r(col)f(steps)h(from)f(ESMTP)h(are)f(forw)n(arded)f(to)i(the)g
-(p)r(olicy)g(milter)g(whic)n(h)g(can)g(decide)g(to)g(accept)g(or)f
-(reject)0 830 y(them.)125 1066 y Fc(\017)41 b Fn(New)27
-b(SMTP)h(session:)208 1199 y Fm(sfsistat)p 565 1199 27
-4 v 28 w(T)43 b(pmfi)p 856 1199 V 30 w(connect\(pmse)p
-1414 1199 V 26 w(ctx)p 1572 1199 V 30 w(P)g(pmse)p 1865
-1199 V 30 w(ctx,)f(const)f(char)h(*hostname,)e(sm)p 3160
-1199 V 30 w(sock)p 3366 1199 V 30 w(addr)p 3572 1199
-V 30 w(T)j(*hostaddr\))208 1331 y(hostname)p Fn(:)37
-b(host)29 b(name,)h(as)f(determined)h(b)n(y)f(a)g(rev)n(erse)f(lo)r
-(okup)h(on)h(the)f(host)h(IP)f(address;)g Fm(hostaddr)p
-Fn(:)38 b(host)208 1431 y(address,)26 b(as)h(determined)h(b)n(y)f(a)g
-Fm(getpeername\(2\))22 b Fn(call)27 b(on)h(the)g(SMTP)f(so)r(c)n(k)n
-(et.)125 1597 y Fc(\017)41 b Fn(SMTP)27 b Fm(HELO)p Fn(/)p
-Fm(EHLO)d Fn(command:)208 1730 y Fm(sfsistat)p 565 1730
-V 28 w(T)43 b(pmfi)p 856 1730 V 30 w(helo\(pmse)p 1282
-1730 V 27 w(ctx)p 1441 1730 V 30 w(P)g(pmse)p 1734 1730
-V 30 w(ctx,)f(const)g(char)g(*helohost,)d(bool)j(ehlo\))208
-1863 y(helohost)p Fn(:)32 b(V)-7 b(alue)25 b(passed)f(to)h
-Fm(HELO)p Fn(/)p Fm(EHLO)c Fn(command,)k(whic)n(h)g(should)g(b)r(e)g
-(the)g(domain)g(name)g(of)g(the)g(sending)208 1962 y(host.)36
-b Fm(ehlo)p Fn(:)f Fm(true)27 b Fn(i\013)h Fm(EHLO)e
-Fn(w)n(as)g(used.)125 2128 y Fc(\017)41 b Fm(MAIL)26
-b Fn(\(en)n(v)n(elop)r(e)h(sender\):)208 2261 y Fm(sfsistat)p
-565 2261 V 28 w(T)43 b(pmfi)p 856 2261 V 30 w(mail\(pmse)p
-1282 2261 V 27 w(ctx)p 1441 2261 V 30 w(P)g(pmse)p 1734
-2261 V 30 w(ctx,)f(const)g(char)g(*mail,)f(char)h(**argv\))208
-2394 y(mail)p Fn(:)35 b(en)n(v)n(elop)r(e)27 b(mail)g(address;)f
-Fm(argv)p Fn(:)36 b(n)n(ull-terminated)27 b Fm(MAIL)f
-Fn(command)h(argumen)n(ts.)125 2560 y Fc(\017)41 b Fm(RCPT)26
-b Fn(\(en)n(v)n(elop)r(e)h(recipien)n(t\):)208 2693 y
-Fm(sfsistat)p 565 2693 V 28 w(T)43 b(pmfi)p 856 2693
-V 30 w(rcpt\(pmse)p 1282 2693 V 27 w(ctx)p 1441 2693
-V 30 w(P)g(pmse)p 1734 2693 V 30 w(ctx,)f(const)g(char)g(*rcpt,)f(char)
-h(**argv\))208 2826 y(rcpt)p Fn(:)35 b(en)n(v)n(elop)r(e)27
-b(recipien)n(t)g(address;)f Fm(argv)p Fn(:)36 b(n)n(ull-terminated)27
-b Fm(RCPT)f Fn(command)h(argumen)n(ts.)125 2992 y Fc(\017)41
-b Fm(DATA)p Fn(:)208 3125 y Fm(sfsistat)p 565 3125 V
-28 w(T)i(pmfi)p 856 3125 V 30 w(data\(pmse)p 1282 3125
-V 27 w(ctx)p 1441 3125 V 30 w(P)g(pmse)p 1734 3125 V
-30 w(ctx\))125 3291 y Fc(\017)e Fn(unkno)n(wn/not)26
-b(implemen)n(ted)i(SMTP)g(command:)208 3424 y Fm(sfsistat)p
-565 3424 V 28 w(T)43 b(pmfi)p 856 3424 V 30 w(unknown\(pmse)p
-1414 3424 V 26 w(ctx)p 1572 3424 V 30 w(P)g(pmse)p 1865
-3424 V 30 w(ctx,)f(const)f(char)h(*cmd\))208 3556 y(cmd)p
-Fn(:)35 b(SMTP)28 b(command.)36 b(Note:)h(this)28 b(is)f(not)h(y)n(et)f
-(implemen)n(ted.)125 3722 y Fc(\017)41 b Fn(F)-7 b(or)27
-b(eac)n(h)f(c)n(h)n(unk)h(of)h(a)f(message:)208 3855
-y Fm(sfsistat)p 565 3855 V 28 w(T)43 b(pmfi)p 856 3855
-V 30 w(msg\(pmse)p 1238 3855 V 28 w(ctx)p 1398 3855 V
-30 w(P)g(pmse)p 1691 3855 V 30 w(ctx,)f(unsigned)e(char)i(*msgp,)f
-(size)p 3030 3855 V 30 w(t)i(msglen\))208 3988 y(msgp)p
-Fn(:)e(p)r(oin)n(ter)31 b(to)f(message)g(data;)i Fm(msglen)p
-Fn(:)40 b(length)31 b(of)g(message)e(data.)46 b(There)30
-b(ma)n(y)h(b)r(e)g(m)n(ultiple)g(message)208 4088 y(c)n(h)n(unks)20
-b(passed)g(to)g(the)i(\014lter.)34 b(End-of-lines)20
-b(are)g(represen)n(ted)f(as)i(receiv)n(ed)e(from)i(SMTP)f(\(normally)g
-(Carriage-)208 4187 y(Return/Line-F)-7 b(eed;)27 b(CRLF\).)h(Notes:)301
-4353 y Fo({)41 b Fn(the)28 b(last)f(message)g(c)n(h)n(unk)g(con)n
-(tains)f(the)i(\014nal)g(dot)f(of)h(the)g(SMTP)f(transmission,)g(i.e.,)
-h(\\CRLF.CRLF")301 4486 y Fo({)41 b Fn(the)26 b(message)d(is)i(not)g
-(mo)r(di\014ed)g(in)g(an)n(y)g(form,)g(i.e.,)h(dots)e(at)h(the)g(b)r
-(egin)g(of)g(a)g(line)g(are)f(duplicated)h(\(b)n(y)g(the)390
-4586 y(SMTP)j(clien)n(t\))h(as)e(sp)r(eci\014ed)i(in)f(section)g(4.5.2)
-f(of)h(RF)n(C)h(2821)d([Kle01)o(])i(whic)n(h)g(m)n(ust)g(b)r(e)h
-(undone)f(b)n(y)g(the)390 4686 y(application)f(if)h(so)f(desired.)301
-4818 y Fo({)41 b Fn(the)28 b(message)e(is)h Fd(str)l(e)l(ame)l(d)g
-Fn(while)h(b)r(eing)f(receiv)n(ed.)36 b(That)27 b(is,)h(the)f(mail)h
-(is)f(not)g(\014rst)g(stored)g(on)g(disk)g(and)390 4918
-y(then)k(sen)n(t)f(to)h(the)g(\014lter,)g(but)g(eac)n(h)e(part)h
-(receiv)n(ed)g(from)g(the)h(clien)n(t)f(is)g(sen)n(t)h(directly)f(to)g
-(the)h(\014lter)f(\(at)390 5018 y(the)f(same)f(sp)r(eed)g(as)g(receiv)n
-(ed)f(from)h(the)g(net)n(w)n(ork)f(whic)n(h)i(migh)n(t)f(b)r(e)g(slo)n
-(w\).)39 b(This)28 b(ma)n(y)g(mean)g(that)g(the)390 5117
-y(\014lter)23 b(do)r(es)f(not)g(receiv)n(e)g(the)h(en)n(tire)f(message)
-f(as)h(the)h(transmission)e(ma)n(y)h(get)g(in)n(terrupted)g(or)g(the)h
-(SMTP)390 5217 y(serv)n(er)j(ma)n(y)h(decide)h(to)f(skip)g(the)h(rest)g
-(of)f(the)h(message)e(b)r(ecause)h(it)h(exceeds)f(the)h(maxim)n(um)g
-(size.)301 5350 y Fo({)41 b Fn(the)28 b(return)f(co)r(de)h(is)f
-(ignored)g(unless)g Fm(SM)p 1696 5350 V 31 w(SCAP)p 1903
-5350 V 29 w(PM)p 2020 5350 V 31 w(MSG)p 2183 5350 V 30
-w(RC)g Fn(is)g(set,)h(see)f(Section)h(5.2.11,)e(item)i(2.)1848
-5768 y(52)p eop end
-%%Page: 53 54
-TeXDict begin 53 53 bop 125 523 a Fc(\017)41 b Fn(End)27
-b(of)h(message)e(\(\014nal)h(dot)h(of)g(message)e(has)h(b)r(een)h
-(receiv)n(ed\):)208 656 y Fm(sfsistat)p 565 656 27 4
-v 28 w(T)43 b(pmfi)p 856 656 V 30 w(eom\(pmse)p 1238
-656 V 28 w(ctx)p 1398 656 V 30 w(P)g(pmse)p 1691 656
-V 30 w(ctx\))125 822 y Fc(\017)e Fn(Message)31 b(is)h(ab)r(orted)g
-(outside)h(of)f(the)i(con)n(trol)d(of)i(the)g(\014lter,)h(for)e
-(example,)h(if)h(the)f(SMTP)f(clien)n(t)h(issues)f(an)208
-922 y(RSET)27 b(command.)208 1054 y Fm(sm)p 301 1054
-V 30 w(ret)p 463 1054 V 30 w(T)43 b(pmfi)p 756 1054 V
-30 w(abort\(pmse)p 1226 1054 V 27 w(ctx)p 1385 1054 V
-31 w(P)g(pmse)p 1679 1054 V 29 w(ctx\))125 1220 y Fc(\017)e
-Fm(QUIT)26 b Fn(\(end)i(of)f(an)h(SMTP)f(session\):)208
-1353 y Fm(sm)p 301 1353 V 30 w(ret)p 463 1353 V 30 w(T)43
-b(pmfi)p 756 1353 V 30 w(close\(pmse)p 1226 1353 V 27
-w(ctx)p 1385 1353 V 31 w(P)g(pmse)p 1679 1353 V 29 w(ctx\))208
-1486 y Fn(This)27 b(is)h(called)f(when)h(an)f(SMTP)g(session)g(ends.)0
-1772 y Fj(5.2.5)112 b(Set)38 b(and)g(Get)f(pmilter)h(Con)m(texts)0
-1979 y Fn(As)28 b(explained)g(in)g(Section)h(5.2.1)d(a)i(milter)g(can)g
-(ha)n(v)n(e)f(a)h(\\global")e(con)n(text)i Fm(pmilter)p
-2749 1979 V 28 w(g)p 2821 1979 V 31 w(ctx)p Fn(,)f(a)h(con)n(text)g(p)r
-(er)g(SMTP)0 2079 y(serv)n(er)i Fm(pmilter)p 558 2079
-V 28 w(ss)p 674 2079 V 31 w(ctx)p Fn(,)h(and)g(a)g(con)n(text)g(p)r(er)
-h(SMTP)f(session)f Fm(pmilter)p 2433 2079 V 29 w(se)p
-2550 2079 V 31 w(ctx)p Fn(.)47 b(The)31 b(follo)n(wing)g(functions)h
-(are)0 2178 y(pro)n(vided)27 b(to)g(set)h(and)f(get)g(these)h(con)n
-(texts.)0 2331 y(Set)g(the)g(\\global")d(con)n(text)j
-Fm(pmilter)p 1222 2331 V 28 w(g)p 1294 2331 V 31 w(ctx)p
-Fn(:)0 2485 y Fm(sm)p 93 2485 V 31 w(ret)p 256 2485 V
-30 w(T)43 b(sm)p 461 2485 V 30 w(pmfi)p 667 2485 V 30
-w(set)p 829 2485 V 30 w(ctx)p 991 2485 V 30 w(g\(pmg)p
-1241 2485 V 30 w(ctx)p 1403 2485 V 30 w(P)g(pmg)p 1652
-2485 V 30 w(ctx,)f(void)g(*pmilter)p 2470 2485 V 28 w(g)p
-2542 2485 V 31 w(ctx\))p Fn(.)0 2638 y(This)28 b(m)n(ust)f(b)r(e)h
-(done)g(after)f(libpmilter)h(has)f(b)r(een)h(initialized)g(but)g(b)r
-(efore)f(con)n(trol)g(is)g(transferred)f(to)i(it.)0 2791
-y(T)-7 b(o)27 b(retriev)n(e)f(the)i(\\global")e(con)n(text)h(in)n(v)n
-(ok)n(e:)0 2944 y Fm(void)42 b(*sm)p 355 2944 V 30 w(pmfi)p
-561 2944 V 30 w(get)p 723 2944 V 30 w(ctx)p 885 2944
-V 30 w(g\(pmg)p 1135 2944 V 29 w(ctx)p 1296 2944 V 31
-w(P)h(pmg)p 1546 2944 V 30 w(ctx\))0 3098 y Fn(Note:)48
-b(this)33 b(requires)f(the)h(\\global")e(libpmilter)j(con)n(text)f
-(whic)n(h)g(is)g(not)g(usually)f(passed)h(to)g(pmilter)g(functions)g
-(in)0 3197 y(callbac)n(ks.)i(See)28 b(b)r(elo)n(w)f(ho)n(w)g(to)h
-(access)e(the)i(\\global")d(con)n(text)j Fm(pmilter)p
-2365 3197 V 28 w(g)p 2437 3197 V 31 w(ctx)e Fn(from)i(other)f(places.)0
-3351 y(T)-7 b(o)27 b(set)h(the)g(pmilter)g(con)n(text)f(p)r(er)g(SMTP)h
-(serv)n(er)d Fm(pmilter)p 1946 3351 V 29 w(ss)p 2063
-3351 V 30 w(ctx)i Fn(use:)0 3504 y Fm(sm)p 93 3504 V
-31 w(ret)p 256 3504 V 30 w(T)43 b(sm)p 461 3504 V 30
-w(pmfi)p 667 3504 V 30 w(set)p 829 3504 V 30 w(ctx)p
-991 3504 V 30 w(ss\(pmss)p 1329 3504 V 29 w(ctx)p 1490
-3504 V 30 w(P)g(pmss)p 1783 3504 V 30 w(ctx,)f(void)g(*pmilter)p
-2601 3504 V 28 w(ss)p 2717 3504 V 30 w(ctx\))p Fn(;)0
-3657 y(to)27 b(retriev)n(e)g(it)h(call:)0 3810 y Fm(void)42
-b(*sm)p 355 3810 V 30 w(pmfi)p 561 3810 V 30 w(get)p
-723 3810 V 30 w(ctx)p 885 3810 V 30 w(ss\(pmss)p 1223
-3810 V 29 w(ctx)p 1384 3810 V 30 w(P)h(pmss)p 1677 3810
-V 30 w(ctx\))0 3964 y Fn(The)36 b(\\global")e(pmilter)j(con)n(text)f
-Fm(pmilter)p 1432 3964 V 28 w(g)p 1504 3964 V 31 w(ctx)f
-Fn(can)h(b)r(e)h(retriev)n(ed)e(from)h(the)g(libpmilter)h(con)n(text)f
-(p)r(er)g(SMTP)0 4063 y(serv)n(er:)0 4216 y Fm(void)42
-b(*sm)p 355 4216 V 30 w(pmfi)p 561 4216 V 30 w(get)p
-723 4216 V 30 w(ctx)p 885 4216 V 30 w(g)p 959 4216 V
-31 w(ss\(pmss)p 1298 4216 V 29 w(ctx)p 1459 4216 V 30
-w(P)h(pmss)p 1752 4216 V 30 w(ctx\))0 4370 y Fn(A)n(t)28
-b(the)g(lo)n(w)n(est)e(lev)n(el)i(a)f(con)n(text)g(p)r(er)g(SMTP)h
-(session)e Fm(pmilter)p 2064 4370 V 29 w(se)p 2181 4370
-V 30 w(ctx)h Fn(can)g(b)r(e)h(set)g(via:)0 4523 y Fm(sm)p
-93 4523 V 31 w(ret)p 256 4523 V 30 w(T)43 b(sm)p 461
-4523 V 30 w(pmfi)p 667 4523 V 30 w(set)p 829 4523 V 30
-w(ctx)p 991 4523 V 30 w(se\(pmse)p 1329 4523 V 29 w(ctx)p
-1490 4523 V 30 w(P)g(pmse)p 1783 4523 V 30 w(ctx,)f(void)g(*pmilter)p
-2601 4523 V 28 w(se)p 2717 4523 V 30 w(ctx\))0 4676 y
-Fn(and)27 b(retriev)n(ed)g(b)n(y:)0 4829 y Fm(void)42
-b(*sm)p 355 4829 V 30 w(pmfi)p 561 4829 V 30 w(get)p
-723 4829 V 30 w(ctx)p 885 4829 V 30 w(se\(pmse)p 1223
-4829 V 29 w(ctx)p 1384 4829 V 30 w(P)h(pmse)p 1677 4829
-V 30 w(ctx\))p Fn(.)0 4983 y(Just)27 b(as)f(b)r(efore)h(there)g(is)g(a)
-f(function)i(to)f(retriev)n(e)f(the)h(pmilter)g(con)n(text)g(p)r(er)g
-(SMTP)g(serv)n(er)e Fm(pmilter)p 3311 4983 V 29 w(ss)p
-3428 4983 V 30 w(ctx)h Fn(from)0 5082 y(the)i(libpmilter)g(con)n(text)f
-(p)r(er)h(SMTP)f(session:)0 5236 y Fm(void)42 b(*sm)p
-355 5236 V 30 w(pmfi)p 561 5236 V 30 w(get)p 723 5236
-V 30 w(ctx)p 885 5236 V 30 w(ss)p 1003 5236 V 31 w(se\(pmse)p
-1342 5236 V 28 w(ctx)p 1502 5236 V 30 w(P)h(pmse)p 1795
-5236 V 30 w(ctx\))0 5389 y Fn(Note:)37 b(if)28 b(a)e(pmilter)i(uses)f
-(these)g(con)n(texts,)g(then)g(it)h(is)f(useful)h(that)f(eac)n(h)g
-(\\lo)n(w)n(er)e(lev)n(el")h(con)n(text)h(con)n(tains)f(a)h(link)h(to)0
-5488 y(its)g(\\higher)e(lev)n(el")g(con)n(text.)37 b(That)27
-b(is,)g(eac)n(h)g(pmilter)h(con)n(text)f(p)r(er)g(SMTP)g(session)f
-Fm(pmilter)p 3052 5488 V 29 w(se)p 3169 5488 V 30 w(ctx)h
-Fn(should)g(ha)n(v)n(e)1848 5768 y(53)p eop end
-%%Page: 54 55
-TeXDict begin 54 54 bop 0 523 a Fn(a)31 b(p)r(oin)n(ter)f(to)h(its)g
-(pmilter)g(con)n(text)g(p)r(er)f(SMTP)h(serv)n(er)e Fm(pmilter)p
-2154 523 27 4 v 29 w(ss)p 2271 523 V 30 w(ctx)h Fn(whic)n(h)h(in)g
-(turn)g(should)g(ha)n(v)n(e)e(a)i(p)r(oin)n(ter)0 623
-y(to)f(the)h(\\global")e(pmilter)h(con)n(text)g Fm(pmilter)p
-1485 623 V 29 w(g)p 1558 623 V 31 w(ctx)p Fn(.)44 b(This)30
-b(allo)n(ws)g(access)f(from)h(a)g(function)h(that)g(is)f(sp)r(eci\014c)
-h(to)f(a)0 722 y(SMTP)d(session)g(to)g(eac)n(h)g(relev)-5
-b(an)n(t)27 b(con)n(text.)0 1008 y Fj(5.2.6)112 b(Accessing)38
-b(MT)-9 b(A)37 b(Sym)m(b)s(ols)0 1215 y Fn(A)24 b(pmilter)g(can)f(set)g
-(a)g(list)h(of)f(sym)n(b)r(ols)g(it)h(w)n(an)n(ts)f(to)g(receiv)n(e)f
-(from)h(the)h(MT)-7 b(A)24 b(b)n(y)f(calling)g(one)g(of)h(follo)n(wing)
-e(functions:)0 1368 y Fm(sm)p 93 1368 V 31 w(pmfi)p 300
-1368 V 29 w(setmaclist\(pmss)p 989 1368 V 25 w(ctx)p
-1146 1368 V 31 w(P)43 b(pmss)p 1440 1368 V 29 w(ctx,)f(uint)g(where,)f
-(...\))0 1522 y(sm)p 93 1522 V 31 w(pmfi)p 300 1522 V
-29 w(setmacs\(pmss)p 857 1522 V 27 w(ctx)p 1016 1522
-V 30 w(P)i(pmss)p 1309 1522 V 30 w(ctx,)f(uint)g(where,)f(uint32)p
-2344 1522 V 29 w(t)i(macros)0 1887 y(\))0 2040 y Fn(during)26
-b(the)g(option)g(negotiation,)f(i.e.,)i(in)f Fm(pmfi)p
-1547 2040 V 30 w(negotiate\(\))p Fn(.)32 b(The)26 b(parameter)f
-Fm(where)f Fn(denotes)i(the)g(stage)f(of)h(the)0 2140
-y(ESMTP)h(dialogue)f(when)i(the)g(v)-5 b(alue)28 b(of)f(the)h(sym)n(b)r
-(ol)f(should)h(b)r(e)g(sen)n(t.)36 b(It)28 b(m)n(ust)g(b)r(e)g(one)f
-(of)50 2288 y Fm(PM)p 143 2288 V 30 w(SMST)p 349 2288
-V 30 w(CONNECT)97 b Fn(Session)27 b(start)50 2387 y Fm(PM)p
-143 2387 V 30 w(SMST)p 349 2387 V 30 w(EHLO)229 b Fn(EHLO)27
-b(or)f(HELO)h(command)50 2487 y Fm(PM)p 143 2487 V 30
-w(SMST)p 349 2487 V 30 w(MAIL)229 b Fn(MAIL)28 b(command)50
-2587 y Fm(PM)p 143 2587 V 30 w(SMST)p 349 2587 V 30 w(RCPT)229
-b Fn(R)n(CPT)27 b(command)50 2686 y Fm(PM)p 143 2686
-V 30 w(SMST)p 349 2686 V 30 w(DATA)229 b Fn(D)n(A)-7
-b(T)g(A)28 b(command)50 2786 y Fm(PM)p 143 2786 V 30
-w(SMST)p 349 2786 V 30 w(DOT)273 b Fn(Final)27 b(dot)h(of)g(mail)f(b)r
-(o)r(dy)0 2935 y(A)f(sequence)f(of)h(up)g(to)g Fm(PM)p
-834 2935 V 31 w(MAX)p 997 2935 V 30 w(MACROS)d Fn(macros)h(can)i(b)r(e)
-g(requested)f(whic)n(h)h(m)n(ust)g(end)g(with)g Fm(PMM)p
-3140 2935 V 30 w(END)p Fn(.)f(V)-7 b(alid)26 b(v)-5 b(alues)0
-3035 y(are:)101 3271 y(1.)42 b Fm(PMM)p 345 3271 V 30
-w(SRVHOSTNAME)23 b Fn(hostname)k(of)g(SMTP)h(serv)n(er.)101
-3437 y(2.)42 b Fm(PMM)p 345 3437 V 30 w(SEID)26 b Fn(session)g(id.)101
-3603 y(3.)42 b Fm(PMM)p 345 3603 V 30 w(CLIENT)p 639
-3603 V 29 w(RESOLVE)24 b Fn(result)k(of)f(clien)n(t)h(lo)r(okups.)101
-3769 y(4.)42 b Fm(PMM)p 345 3769 V 30 w(MAIL)p 551 3769
-V 29 w(TAID)26 b Fn(transaction)h(id.)101 3935 y(5.)42
-b Fm(PMM)p 345 3935 V 30 w(DOT)p 507 3935 V 30 w(MSGID)25
-b Fn(Message-Id.)101 4101 y(6.)42 b Fm(PMM)p 345 4101
-V 30 w(TLS)p 507 4101 V 30 w(VERSION)25 b Fn(TLS/SSL)i(v)n(ersion)f
-(used.)101 4267 y(7.)42 b Fm(PMM)p 345 4267 V 30 w(TLS)p
-507 4267 V 30 w(CIPHER)p 801 4267 V 29 w(SUITE)25 b Fn(cipher)j(suite)f
-(used.)101 4433 y(8.)42 b Fm(PMM)p 345 4433 V 30 w(TLS)p
-507 4433 V 30 w(CIPHER)p 801 4433 V 29 w(BITS)26 b Fn(e\013ectiv)n(e)h
-(k)n(ey)g(length)h(of)f(the)h(symmetric)g(encryption)f(algorithm.)101
-4599 y(9.)42 b Fm(PMM)p 345 4599 V 30 w(TLS)p 507 4599
-V 30 w(ALG)p 669 4599 V 30 w(BITS)27 b Fn(maxim)n(um)i(k)n(ey)f(length)
-h(of)g(the)h(symmetric)e(encryption)h(algorithm.)40 b(This)28
-b(ma)n(y)h(b)r(e)g(less)208 4699 y(than)e(the)h(e\013ectiv)n(e)g(k)n
-(ey)f(length)g(for)g Fd(exp)l(ort)j(c)l(ontr)l(ol)t(le)l(d)f
-Fn(algorithms.)60 4865 y(10.)41 b Fm(PMM)p 345 4865 V
-30 w(TLS)p 507 4865 V 30 w(VRFY)26 b Fn(the)i(result)f(of)h(the)g(v)n
-(eri\014cation)e(of)h(the)h(presen)n(ted)f(cert.)60 5031
-y(11.)41 b Fm(PMM)p 345 5031 V 30 w(TLS)p 507 5031 V
-30 w(CERT)p 713 5031 V 30 w(SUBJECT)24 b Fn(the)k(DN)h(\(distinguished)
-f(name\))f(of)h(the)g(presen)n(ted)f(certi\014cate.)60
-5197 y(12.)41 b Fm(PMM)p 345 5197 V 30 w(TLS)p 507 5197
-V 30 w(CERT)p 713 5197 V 30 w(ISSUER)32 b Fn(the)k(DN)f
-(\(distinguished)h(name\))f(of)g(the)g(CA)g(\(certifcate)g(authorit)n
-(y\))g(that)g(signed)208 5297 y(the)28 b(presen)n(ted)f(certi\014cate)g
-(\(the)h(cert)f(issuer\).)60 5463 y(13.)41 b Fm(PMM)p
-345 5463 V 30 w(TLS)p 507 5463 V 30 w(CN)p 625 5463 V
-30 w(SUBJECT)25 b Fn(the)j(CN)g(\(common)f(name\))h(of)g(the)g(presen)n
-(ted)f(certi\014cate.)1848 5768 y(54)p eop end
-%%Page: 55 56
-TeXDict begin 55 55 bop 60 523 a Fn(14.)41 b Fm(PMM)p
-345 523 27 4 v 30 w(TLS)p 507 523 V 30 w(CN)p 625 523
-V 30 w(ISSUER)26 b Fn(the)i(CN)f(\(common)h(name\))g(of)f(the)h(CA)g
-(that)g(signed)f(the)h(presen)n(ted)f(certi\014cate.)60
-684 y(15.)41 b Fm(PMM)p 345 684 V 30 w(AUTH)p 551 684
-V 29 w(TYPE)26 b Fn(the)i(A)n(UTH)h(mec)n(hanism)e(used.)60
-845 y(16.)41 b Fm(PMM)p 345 845 V 30 w(AUTH)p 551 845
-V 29 w(AUTHEN)26 b Fn(the)i(clien)n(t's)f(authen)n(tication)g(creden)n
-(tials)g(as)g(determined)g(b)n(y)h(authen)n(tication.)60
-1006 y(17.)41 b Fm(PMM)p 345 1006 V 30 w(AUTH)p 551 1006
-V 29 w(AUTHOR)34 b Fn(The)h(authorization)g(iden)n(tit)n(y)-7
-b(,)37 b(i.e.)61 b(the)36 b Fm(AUTH=)e Fn(parameter)g(of)i(the)g
-Fm(MAIL)e Fn(command)h(if)208 1106 y(supplied.)0 1329
-y(Notes:)125 1539 y Fc(\017)41 b Fm(PMM)p 345 1539 V
-30 w(MAIL)p 551 1539 V 29 w(TAID)22 b Fn(cannot)g(b)r(e)h(requested)f
-(b)r(efore)g Fm(PM)p 1852 1539 V 31 w(SMST)p 2059 1539
-V 30 w(MAIL)f Fn(and)h Fm(PMM)p 2574 1539 V 31 w(DOT)p
-2737 1539 V 30 w(MSGID)e Fn(can)j(only)f(b)r(e)h(requested)208
-1638 y(at)k(stage)g Fm(PM)p 615 1638 V 30 w(SMST)p 821
-1638 V 30 w(DOT)p Fn(.)125 1799 y Fc(\017)41 b Fn(All)28
-b(macros)e(b)r(eginning)h(with)h Fm(PMM)p 1332 1799 V
-30 w(TLS)f Fn(are)f(only)i(v)-5 b(alid)27 b(after)h(a)f
-Fm(STARTTLS)d Fn(command.)0 2009 y(T)-7 b(o)27 b(retriev)n(e)f(the)i(v)
--5 b(alue)28 b(of)f(a)h(sym)n(b)r(ol)f(the)h(function)0
-2162 y Fm(sm)p 93 2162 V 31 w(pmfi)p 300 2162 V 29 w(getmac\(pmse)p
-813 2162 V 27 w(ctx)p 972 2162 V 30 w(P)43 b(pmse)p 1265
-2162 V 30 w(ctx,)f(uint32)p 1777 2162 V 29 w(t)h(macro,)e(char)h
-(**pvalue\))0 2315 y Fn(can)23 b(b)r(e)h(used)f(in)g(the)h(v)-5
-b(arious)22 b(callbac)n(k)g(functions)h(of)h(the)f(ESMTP)g(dialogue.)34
-b(If)24 b(the)g(macro)e(w)n(as)g(not)h(in)h(the)f(request)0
-2415 y(list,)29 b(an)f(error)f(will)i(b)r(e)g(returned.)39
-b(If)29 b(the)g(macro)e(has)h(not)h(y)n(et)f(b)r(een)h(receiv)n(ed,)f
-Fm(*pvalue)e Fn(will)i(b)r(e)h Fm(NULL)p Fn(.)e(Otherwise)0
-2514 y Fm(*pvalue)k Fn(will)j(p)r(oin)n(t)f(to)h(the)g(v)-5
-b(alue)33 b(of)h(the)g(macro.)54 b(Note:)49 b(the)34
-b(string)f(to)g(whic)n(h)h Fm(*pvalue)d Fn(p)r(oin)n(ts)i(m)n(ust)h
-Fd(not)f Fn(b)r(e)0 2614 y(c)n(hanged.)0 2898 y Fj(5.2.7)112
-b(Sender)39 b(Mo)s(di\014cation)0 3105 y Fn(The)28 b(sender)f(address)f
-(\()p Fm(MAIL)p Fn(\))h(can)g(b)r(e)h(replaced:)0 3258
-y Fm(sm)p 93 3258 V 31 w(ret)p 256 3258 V 30 w(T)43 b(sm)p
-461 3258 V 30 w(pmfi)p 667 3258 V 30 w(mail)p 873 3258
-V 30 w(rplc\(pmse)p 1299 3258 V 28 w(ctx)p 1459 3258
-V 30 w(P)g(pmse)p 1752 3258 V 30 w(ctx,)f(const)f(char)h(*mail)p
-2699 3258 V 29 w(pa,)h(char)f(**argv\))0 3411 y Fn(This)22
-b(function)h(m)n(ust)g(only)e(b)r(e)i(called)f(during)g
-Fm(pmfi)p 1658 3411 V 30 w(eom\(\))p Fn(.)33 b(The)22
-b(address)f Fm(mail)p 2596 3411 V 30 w(pa)h Fn(m)n(ust)g(b)r(e)h(in)f
-(RF)n(C)h(2821)d(format.)0 3511 y(The)34 b(argumen)n(t)e
-Fm(argv)g Fn(can)i(b)r(e)g(used)f(to)h(sp)r(ecify)g(SMTP)f(parameters)f
-(for)h(the)i(sender)e(address,)h(ho)n(w)n(ev)n(er,)f(this)h(is)0
-3610 y(curren)n(tly)27 b(not)g(implemen)n(ted,)h(hence)g(it)g(m)n(ust)g
-(b)r(e)g(set)f(to)h Fm(NULL)e Fn(for)h(no)n(w.)0 3894
-y Fj(5.2.8)112 b(Recipien)m(t)38 b(Mo)s(di\014cations)0
-4101 y Fn(Recipien)n(ts)28 b(can)f(b)r(e)h(added:)0 4254
-y Fm(sm)p 93 4254 V 31 w(ret)p 256 4254 V 30 w(T)43 b(sm)p
-461 4254 V 30 w(pmfi)p 667 4254 V 30 w(rcpt)p 873 4254
-V 30 w(add\(pmse)p 1255 4254 V 28 w(ctx)p 1415 4254 V
-30 w(P)g(pmse)p 1708 4254 V 30 w(ctx,)f(const)f(char)h(*rcpt)p
-2655 4254 V 30 w(pa,)g(char)g(**argv\))0 4408 y Fn(or)27
-b(deleted:)0 4561 y Fm(sm)p 93 4561 V 31 w(ret)p 256
-4561 V 30 w(T)43 b(sm)p 461 4561 V 30 w(pmfi)p 667 4561
-V 30 w(rcpt)p 873 4561 V 30 w(del\(pmse)p 1255 4561 V
-28 w(ctx)p 1415 4561 V 30 w(P)g(pmse)p 1708 4561 V 30
-w(ctx,)f(const)f(char)h(*rcpt)p 2655 4561 V 30 w(pa,)g(rcpt)p
-3035 4561 V 30 w(idx)p 3197 4561 V 30 w(T)h(rcpt)p 3490
-4561 V 30 w(idx\))0 4714 y Fn(These)31 b(functions)g(m)n(ust)g(only)g
-(b)r(e)g(called)g(during)g Fm(pmfi)p 1803 4714 V 29 w(eom\(\))p
-Fn(.)46 b(The)31 b(addresses)e Fm(rcpt)p 2840 4714 V
-30 w(pa)h Fn(m)n(ust)i(b)r(e)f(in)g(RF)n(C)g(2821)0 4814
-y(format.)k(The)26 b(argumen)n(t)d Fm(argv)h Fn(can)g(b)r(e)i(used)f
-(to)g(sp)r(ecify)g(SMTP)g(parameters)e(for)h(the)i(recipien)n(t)e
-(address,)h(ho)n(w)n(ev)n(er,)0 4913 y(this)30 b(is)f(curren)n(tly)g
-(not)h(implemen)n(ted,)h(hence)e(it)h(m)n(ust)g(b)r(e)g(set)g(to)f
-Fm(NULL)f Fn(for)h(no)n(w.)43 b(As)29 b(the)h(MT)-7 b(A)30
-b(do)r(es)g(not)f(remo)n(v)n(e)0 5013 y(iden)n(tical)h(recipien)n(t)g
-(addresses,)g(the)h(address)e(itself)i(is)f(not)h(su\016cien)n(t)f(to)g
-(iden)n(tify)h(one)f Fm(RCPT)p Fn(,)f(but)i(its)g(index)f(m)n(ust)0
-5113 y(b)r(e)e(sp)r(eci\014ed)g(to)r(o.)36 b(This)28
-b(index)g(can)f(b)r(e)h(retriev)n(ed)e(during)h(a)h Fm(RCPT)e
-Fn(command)h(\()p Fm(pmfi)p 2776 5113 V 30 w(rcpt\(\))p
-Fn(\))e(using)0 5266 y Fm(sm)p 93 5266 V 31 w(ret)p 256
-5266 V 30 w(T)43 b(sm)p 461 5266 V 30 w(pmfi)p 667 5266
-V 30 w(getrcpt)p 1005 5266 V 29 w(idx\(pmse)p 1386 5266
-V 28 w(ctx)p 1546 5266 V 30 w(P)g(pmse)p 1839 5266 V
-30 w(ctx,)f(rcpt)p 2263 5266 V 29 w(idx)p 2424 5266 V
-31 w(T)h(*prcpt)p 2806 5266 V 29 w(idx\))0 5419 y Fn(Note:)32
-b(it)19 b(is)f(in)n(v)-5 b(alid)19 b(to)f(remo)n(v)n(e)f(all)h
-(recipien)n(ts)f(of)i(a)f(transaction.)32 b(T)-7 b(o)18
-b(discard)g(a)g(transaction,)g(return)g Fm(SMTP)p 3405
-5419 V 30 w(R)p 3479 5419 V 31 w(DISCARD)0 5519 y Fn(as)27
-b(a)g(result)g(of)h(one)f(of)h(the)g(transaction)e(orien)n(ted)h
-(callbac)n(ks,)f(e.g.,)h Fm(pmfi)p 2372 5519 V 30 w(eom\(\))p
-Fn(.)1848 5768 y(55)p eop end
-%%Page: 56 57
-TeXDict begin 56 56 bop 0 523 a Fj(5.2.9)112 b(Header)38
-b(Mo)s(di\014cations)0 730 y Fn(T)-7 b(o)27 b(request)g(mo)r
-(di\014cations)g(of)h(the)g(header)f(of)g(a)g(mail)h(b)r(eing)g(sen)n
-(t,)f(the)h(function)0 883 y Fm(sm)p 93 883 27 4 v 31
-w(pmfi)p 300 883 V 29 w(hdr)p 461 883 V 30 w(mod\(pmse)p
-843 883 V 28 w(ctx)p 1003 883 V 31 w(P)43 b(pmse)p 1297
-883 V 30 w(ctx,)e(uint)h(type,)g(uint)g(pos,)g(const)f(unsigned)g(char)
-g(*header\))0 1036 y Fn(can)g(b)r(e)i(used.)79 b(This)42
-b(function)h(m)n(ust)f(only)f(b)r(e)h(called)g(during)f
-Fm(pmfi)p 2353 1036 V 30 w(eom\(\))p Fn(.)78 b(The)42
-b(argumen)n(t)e Fm(type)h Fn(sp)r(eci\014es)0 1136 y(whic)n(h)h(kind)h
-(of)f(mo)r(di\014cation)h(is)f(requested,)j(legitimate)e(v)-5
-b(alues)42 b(are)f(de\014ned)i(in)g Fm(include/sm/hdrm)o(odd)o(ef)o(.h)
-o Fn(;)0 1236 y(these)24 b(are:)34 b Fm(SM)p 471 1236
-V 31 w(HDRMOD)p 766 1236 V 29 w(T)p 839 1236 V 31 w(PREPEND)p
-Fn(,)21 b Fm(SM)p 1310 1236 V 30 w(HDRMOD)p 1604 1236
-V 29 w(T)p 1677 1236 V 31 w(INSERT)p Fn(,)h Fm(SM)p 2105
-1236 V 31 w(HDRMOD)p 2400 1236 V 28 w(T)p 2472 1236 V
-31 w(REPLACE)p Fn(,)g Fm(SM)p 2944 1236 V 30 w(HDRMOD)p
-3238 1236 V 29 w(T)p 3311 1236 V 31 w(REMOVE)p Fn(,)g(and)0
-1335 y Fm(SM)p 93 1335 V 31 w(HDRMOD)p 388 1335 V 28
-w(T)p 460 1335 V 31 w(APPEND)p Fn(.)0 1489 y(The)f(argumen)n(t)e
-Fm(header)g Fn(m)n(ust)i(b)r(e)g(a)f(complete)h(header)f(line)g
-(including)h(the)g(prop)r(er)f(line)h(ending)g(\(CRLF\).)g(The)g(argu-)
-0 1588 y(men)n(t)e Fm(pos)e Fn(sp)r(eci\014es)h(the)h(p)r(osition)f
-(for)g(the)h(t)n(yp)r(es)f Fm(SM)p 1658 1588 V 31 w(HDRMOD)p
-1953 1588 V 28 w(T)p 2025 1588 V 31 w(INSERT)p Fn(,)e
-Fm(SM)p 2447 1588 V 31 w(HDRMOD)p 2742 1588 V 29 w(T)p
-2815 1588 V 31 w(REPLACE)p Fn(,)f(and)k Fm(SM)p 3433
-1588 V 30 w(HDRMOD)p 3727 1588 V 29 w(T)p 3800 1588 V
-31 w(REMOVE)p Fn(.)0 1688 y(The)26 b(\014rst)f(header)g(of)h(the)g
-(original)e(mail)i(has)f(p)r(osition)g(one;)h(zero)f(is)h(the)g
-Fm(Received:)32 b Fn(header)25 b(added)g(b)n(y)h(the)g(SMTP)0
-1787 y(serv)n(er.)0 2073 y Fj(5.2.10)113 b(Message)38
-b(Replacemen)m(t)0 2280 y Fn(If)19 b(a)f(pmilter)g(w)n(an)n(ts)g(to)g
-(replace)f(the)i(en)n(tire)f(message,)h(the)g(function)g
-Fm(pmfi)p 2330 2280 V 29 w(eom\(\))e Fn(m)n(ust)h(return)g(the)h(v)-5
-b(alue)18 b Fm(SMTP)p 3552 2280 V 30 w(R)p 3626 2280
-V 31 w(RPLCMSG)p Fn(.)0 2380 y(This)28 b(will)f(cause)g(the)h(in)n(v)n
-(o)r(cation)e(of)i(the)g(callbac)n(k)0 2533 y Fm(sfsistat)p
-357 2533 V 28 w(T)43 b(pmfi)p 648 2533 V 30 w(msg)p 810
-2533 V 30 w(rplc\(pmse)p 1236 2533 V 28 w(ctx)p 1396
-2533 V 30 w(P)g(pmse)p 1689 2533 V 30 w(ctx,)f(const)f(unsigned)g(char)
-g(**pmsgchunk,)e(size)p 3551 2533 V 30 w(t)k(*pmsglen\))0
-2686 y Fn(whic)n(h)20 b(then)h(m)n(ust)g(set)f(a)g(p)r(oin)n(ter)g(to)g
-(a)g(message)f(c)n(h)n(unk)h(and)g(its)g(length.)35 b(Multiple)21
-b(c)n(h)n(unks)f(can)f(b)r(e)i(sen)n(t)f(b)n(y)g(returning)0
-2786 y Fm(SMTP)p 181 2786 V 30 w(R)p 255 2786 V 31 w(CONT)i
-Fn(as)h(result)g(of)g(the)h(callbac)n(k.)35 b(F)-7 b(or)23
-b(the)h(last)f(c)n(h)n(unk,)h Fm(SMTP)p 2263 2786 V 30
-w(R)p 2337 2786 V 31 w(OK)e Fn(should)i(b)r(e)g(returned.)35
-b(The)24 b(size)f(of)g(eac)n(h)0 2886 y(c)n(h)n(unk)k(\()p
-Fm(pmsglen)p Fn(\))e(m)n(ust)j(b)r(e)g(less)f(than)h
-Fm(PMILTER)p 1618 2886 V 29 w(CHUNK)p 1867 2886 V 29
-w(SIZE)e Fn(as)h(de\014ned)h(in)g Fm(include/sm/pmfa)o(pi.)o(h)p
-Fn(.)0 3039 y(libpmilter)g(will)g(thereafter)f(in)n(v)n(ok)n(e)f(the)i
-(callbac)n(k)0 3192 y Fm(sfsistat)p 357 3192 V 28 w(T)43
-b(pmfi)p 648 3192 V 30 w(msg)p 810 3192 V 30 w(rplc)p
-1016 3192 V 30 w(stat\(pmse)p 1442 3192 V 27 w(ctx)p
-1601 3192 V 31 w(P)g(pmse)p 1895 3192 V 30 w(ctx,)e(sm)p
-2230 3192 V 31 w(ret)p 2393 3192 V 30 w(T)i(status\))0
-3345 y Fn(to)31 b(giv)n(e)f(the)i(pmilter)f(a)g(c)n(hance)f(to)h(clean)
-g(up)h(after)f(the)g(transaction,)g(and)g(to)g(let)g(it)h(kno)n(w)e
-(whether)h(the)h(message)0 3445 y(replacemen)n(t)27 b(w)n(as)f
-(successful.)0 3598 y(Notes:)125 3818 y Fc(\017)41 b
-Fn(as)34 b(the)i(en)n(tire)f(message)f(is)i(replaced)e(and)h(b)n(y)h
-(default)g(only)f(the)g(data)g(that)h(is)g(receiv)n(ed)e(from)h(the)h
-(SMTP)208 3918 y(clien)n(t)25 b(is)g(sen)n(t)g(to)h(a)f(pmilter,)h(the)
-f Fm(Received:)32 b Fn(header)25 b(\014eld)g(that)h(sm)n(tps)f
-(generates)f(is)h(lost.)36 b(T)-7 b(o)25 b(a)n(v)n(oid)f(this,)i(a)208
-4017 y(pmilter)j(can)g(request)g(to)g(receiv)n(e)f(that)i(header)e
-(\014eld)i(b)n(y)f(setting)g Fm(SM)p 2439 4017 V 31 w(SCAP)p
-2646 4017 V 30 w(PM)p 2764 4017 V 30 w(SND)p 2926 4017
-V 30 w(RCVD)f Fn(and)h(sending)g(it)h(as)208 4117 y(\014rst)d(c)n(h)n
-(unk)g(of)h(the)g(message)e(replacemen)n(t.)125 4283
-y Fc(\017)41 b Fn(the)34 b(message)e(m)n(ust)i(b)r(e)g(in)g(SMTP)f
-(format,)i(i.e.,)h(lines)d(m)n(ust)h(end)g(in)g(CRLF)g(and)g(the)g
-(\014nal)g(c)n(h)n(unk)f(should)208 4382 y(ha)n(v)n(e)d(the)h(usual)g
-(SMTP)h(end)f(of)g(message)f(indication:)45 b(CRLF)31
-b(dot)g(CRLF)h(\()p Fc(n)p Fm(r)p Fc(n)p Fm(n.)p Fc(n)p
-Fm(r)p Fc(n)p Fm(n)p Fn(\),)d(ho)n(w)n(ev)n(er,)h(it)i(can)208
-4482 y(also)26 b(just)i(end)g(in)g(CRLF.)125 4648 y Fc(\017)41
-b Fn(if)30 b Fm(pmfi)p 467 4648 V 30 w(msg)p 629 4648
-V 30 w(rplc\(\))d Fn(encoun)n(ters)i(an)g(error,)g(e.g.,)h(due)g(to)f
-(an)h(API)g(violation)e(or)h(due)h(to)g(a)f(comm)n(unication)208
-4748 y(error)24 b(with)k(sm)n(tps,)f(then)g(it)g(will)g(in)n(v)n(ok)n
-(e)f Fm(pmfi)p 1723 4748 V 29 w(msg)p 1884 4748 V 30
-w(rplc)p 2090 4748 V 30 w(stat\(\))f Fn(directly)h(without)h(w)n
-(aiting)g(for)f(the)h(en)n(tire)208 4847 y(message)f(ev)n(en)h(if)h(it)
-g(consists)f(of)g(more)g(c)n(h)n(unks.)0 5133 y Fj(5.2.11)113
-b(F)-9 b(urther)37 b(Capabilities)0 5340 y Fn(In)32 b(addition)g(to)g
-(selecting)f(whic)n(h)h(SMTP)f(commands)h(to)f(send)h(to)g(pmilter)g
-(\(see)g(Section)g(5.2.3\),)g(there)f(are)g(some)0 5440
-y(more)c(capabilities)g(a)n(v)-5 b(ailable:)1848 5768
-y(56)p eop end
-%%Page: 57 58
-TeXDict begin 57 57 bop 101 523 a Fn(1.)42 b Fm(SM)p
-301 523 27 4 v 30 w(SCAP)p 507 523 V 30 w(PM)p 625 523
-V 30 w(RCPT)p 831 523 V 30 w(ST)c Fn(causes)g(the)h(MT)-7
-b(A)40 b(to)e(send)h Fm(RCPT)e Fn(information)i(ev)n(en)f(if)h(the)g
-(command)g(has)f(b)r(een)208 623 y(rejected,)28 b(e.g.,)g(b)r(ecause)g
-(the)h(recipien)n(t)f(is)h(unkno)n(wn,)f(the)h(recipien)n(t)f(has)f(b)r
-(een)i(rejected)g(due)f(to)h(access)e(map)208 722 y(c)n(hec)n(ks,)36
-b(or)e(rela)n(ying)f(has)i(b)r(een)g(denied.)60 b(Note:)52
-b Fm(RCPT)34 b Fn(commands)g(that)i(are)e(rejected)h(for)g(other)f
-(reasons,)208 822 y(e.g.,)28 b(b)r(ecause)f(the)i(address)e(is)h(syn)n
-(tactically)f(in)n(v)-5 b(alid,)28 b(or)g(some)f(limit)i(\(maxim)n(um)g
-(n)n(um)n(b)r(er)f(of)g(recipien)n(ts\))g(is)208 922
-y(exceeded,)f(will)h(not)f(b)r(e)h(sen)n(t)g(to)f(pmilter.)208
-1051 y(The)g(function)208 1180 y Fm(sm)p 301 1180 V 30
-w(ret)p 463 1180 V 30 w(T)43 b(sm)p 668 1180 V 31 w(pmfi)p
-875 1180 V 30 w(getstatus\(pmse)p 1521 1180 V 25 w(ctx)p
-1678 1180 V 30 w(P)h(pmse)p 1972 1180 V 29 w(ctx,)e(sfsistat)p
-2571 1180 V 28 w(T)i(*pstatus\))208 1309 y Fn(should)30
-b(b)r(e)h(used)f(in)h(that)g(case)e(to)i(access)e(the)i(curren)n(t)e
-(SMTP)i(reply)f(co)r(de)g(for)g(the)h(command.)45 b(This)30
-b(func-)208 1408 y(tionalit)n(y)e(is)h(useful)h(for)f(a)g(pmilter)g
-(that)h(w)n(an)n(ts)e(to)h(k)n(eep)g(trac)n(k)f(of)h(all)g(recipien)n
-(ts,)g(not)h(just)f(those)g(whic)n(h)h(are)208 1508 y(accepted,)d
-(e.g.,)g(to)h(deal)f(with)h(dictionary)f(attac)n(ks.)101
-1667 y(2.)42 b Fm(SM)p 301 1667 V 30 w(SCAP)p 507 1667
-V 30 w(PM)p 625 1667 V 30 w(MSG)p 787 1667 V 31 w(RC)27
-b Fn(allo)n(ws)f(a)h(pmilter)h(to)g(return)f(a)g(reply)h(co)r(de)f(as)g
-(sp)r(eci\014ed)h(in)g(5.2.13)e(from)i Fm(pmfi)p 3514
-1667 V 30 w(msg\(\))p Fn(.)208 1766 y(This)k(is)h(useful)h(if)f(a)g
-(pmilter)g(can)f(mak)n(e)h(a)f(decision)g(ab)r(out)h(the)h(mail)f
-(without)g(ha)n(ving)f(to)h(read)f(the)h(en)n(tire)208
-1866 y(message.)55 b(If)35 b(this)g(capabilit)n(y)f(is)g(turned)g(on,)i
-Fm(pmfi)p 1920 1866 V 30 w(msg\(\))d Fn(m)n(ust)h(return)g
-Fm(SMTP)p 2852 1866 V 30 w(R)p 2926 1866 V 31 w(CONT)f
-Fn(for)g(eac)n(h)h(message)208 1966 y(c)n(h)n(unk)h(b)n(y)g(default)h
-(to)f(receiv)n(e)g(subsequen)n(t)g(parts.)60 b(Otherwise)34
-b Fm(pmfi)p 2541 1966 V 30 w(eom\(\))g Fn(will)h(not)h(b)r(e)g(called)f
-(but)h(the)208 2065 y(return)26 b(co)r(de)h(from)g Fm(pmfi)p
-1029 2065 V 30 w(msg\(\))e Fn(will)i(b)r(e)h(used)f(at)g(the)h(end)f
-(of)g(the)h(message)e(\(in)h(resp)r(onse)g(to)g(the)g(\014nal)g(dot\).)
-0 2348 y Fj(5.2.12)113 b(Miscellaneous)39 b(F)-9 b(unctions)0
-2555 y Fn(T)i(o)24 b(set)g(a)g(reply)g(text)h(in)g(an)f(SMTP)g(session)
-f(or)h(transaction)f(orien)n(ted)h(callbac)n(k)f(in)h(addition)h(to)f
-(the)h(reply)e(co)r(de)i(use:)0 2708 y Fm(sm)p 93 2708
-V 31 w(ret)p 256 2708 V 30 w(T)43 b(sm)p 461 2708 V 30
-w(pmfi)p 667 2708 V 30 w(setreply\(pmse)p 1269 2708 V
-26 w(ctx)p 1427 2708 V 30 w(P)g(pmse)p 1720 2708 V 30
-w(ctx,)f(const)g(char)g(*reply\))0 2861 y Fn(Note:)37
-b(the)28 b(reply)f(string)g Fd(must)g Fn(con)n(tain)f(the)i(full)h
-(SMTP)e(reply)-7 b(,)27 b(i.e.,)h(it)g(m)n(ust)g(b)r(e)g(of)f(the)h
-(form)0 3015 y Fm(XYZ)42 b(D.S.N)g(text)p Fc(n)p Fm(r)p
-Fc(n)p Fm(n)0 3168 y Fn(where)27 b Fm(XYZ)f Fn(is)h(a)g(v)-5
-b(alid)28 b(SMTP)f(reply)g(co)r(de)g(\(see)g(RF)n(C)h(2821)d([Kle01)o
-(]\))j(whic)n(h)f Fd(must)g Fn(matc)n(h)g(the)h(return)f(co)r(de)g(of)g
-(the)0 3267 y(function)g(from)g(whic)n(h)f Fm(sm)p 849
-3267 V 31 w(pmfi)p 1056 3267 V 30 w(setreply\(\))c Fn(is)27
-b(called,)g Fm(D.S.N)e Fn(is)h(an)h(enhanced)f(status)h(co)r(de)f(as)g
-(de\014ned)i(in)f(RF)n(C)0 3367 y(3463)32 b([V)-7 b(au03)o(])34
-b(and)g(the)h(rest)e(is)h(an)g(explanation)f(of)h(the)g(status)g
-(including)g(CRLF)h(\()p Fc(n)p Fm(r)p Fc(n)p Fm(n)p
-Fn(\).)55 b(The)34 b(text)g(can)g(b)r(e)g(a)0 3467 y(m)n(ulti-line)28
-b(reply)f(in)h(the)g(form:)0 3684 y Fm(XYZ-D.S.N)40 b(text1)0
-3784 y(XYZ-D.S.N)g(text2)0 3884 y(XYZ)i(D.S.N)g(text3)0
-4101 y Fn(whic)n(h)28 b(m)n(ust)f(b)r(e)h(sp)r(eci\014ed)g(in)g(the)g
-(format)f(required)g(b)n(y)g(SMTP:)0 4254 y Fm(XYZ-D.S.N)40
-b(text1)p Fc(n)p Fm(r)p Fc(n)p Fm(nXYZ-D.S)o(.N)d(text2)p
-Fc(n)p Fm(r)p Fc(n)p Fm(nXYZ)h(D.S.N)k(text3)p Fc(n)p
-Fm(r)p Fc(n)p Fm(n)0 4408 y Fn(T)-7 b(o)27 b(set)h(reply)f(co)r(des)g
-(for)g(commands)g(that)h(need)g(m)n(ultiple)g(reply)f(v)-5
-b(alues)27 b(the)h(function:)0 4561 y Fm(sm)p 93 4561
-V 31 w(ret)p 256 4561 V 30 w(T)43 b(sm)p 461 4561 V 30
-w(pmfi)p 667 4561 V 30 w(setreplies\(pmse)p 1357 4561
-V 25 w(ctx)p 1514 4561 V 30 w(P)h(pmse)p 1808 4561 V
-29 w(ctx,)e(uint)g(nreplies,)e(int)i(*rcodes,)f(const)g(char)h
-(**rtexts\))0 4714 y Fn(m)n(ust)35 b(b)r(e)h(used.)60
-b(Curren)n(tly)34 b(this)h(function)h(mak)n(es)e(only)h(sense)g(if)h
-Fm(PRDR)d Fn(is)i(a)n(v)-5 b(ailable)34 b(in)i(the)f(SMTP)g(serv)n(er)f
-(and)0 4814 y(actually)e(used)h(b)n(y)g(the)h(clien)n(t.)53
-b(A)34 b(pmilter)f(can)g(determine)g(the)g(latter)g(b)n(y)g(parsing)e
-(the)j(argumen)n(ts)e(of)h(the)g Fm(MAIL)0 4913 y Fn(command)e(\(see)g
-Fm(pmfi)p 733 4913 V 30 w(mail\(\))p Fn(\).)45 b(Note:)f(curren)n(tly)
-30 b(the)i(argumen)n(t)e Fm(rtexts)f Fn(is)i(ignored,)g(only)g(the)g
-(arra)n(y)e(of)i(reply)0 5013 y(co)r(des)c(\()p Fm(rcodes)p
-Fn(\))e(is)i(used.)37 b(The)27 b(size)g(of)g(this)g(arra)n(y)e(m)n(ust)
-i(b)r(e)h Fm(nreplies)c Fn(whic)n(h)j(m)n(ust)g(matc)n(h)g(the)h(n)n
-(um)n(b)r(er)e(of)i(v)-5 b(alid)0 5113 y Fm(RCPT)p Fn(s)27
-b(for)h(this)h(transaction.)39 b(The)28 b(reply)g(co)r(des)h(in)g(that)
-f(arra)n(y)f(m)n(ust)i(b)r(e)g(in)g(the)g(same)f(order)f(in)i(whic)n(h)
-f(the)h Fm(RCPT)p Fn(s)0 5212 y(ha)n(v)n(e)d(b)r(een)i(receiv)n(ed.)0
-5366 y(Return)g(v)n(ersion)e(n)n(um)n(b)r(er)h(of)h(libpmilter:)0
-5519 y Fm(sm)p 93 5519 V 31 w(ret)p 256 5519 V 30 w(T)43
-b(sm)p 461 5519 V 30 w(pmfi)p 667 5519 V 30 w(version\(pmg)p
-1181 5519 V 27 w(ctx)p 1340 5519 V 30 w(P)g(pmg)p 1589
-5519 V 30 w(ctx,)f(uint32)p 2101 5519 V 29 w(t)h(*major,)e(uint32)p
-2830 5519 V 29 w(t)i(*minor,)e(uint32)p 3559 5519 V 29
-w(t)i(*patchlevel\))1848 5768 y Fn(57)p eop end
-%%Page: 58 59
-TeXDict begin 58 58 bop 0 523 a Fn(This)29 b(can)f(b)r(e)h(used)g(to)f
-(compare)f(the)j(v)n(ersion)d(n)n(um)n(b)r(er)h(of)h(the)g(library)e
-(against)h(whic)n(h)g(pmilter)h(is)g(link)n(ed)f(with)h(the)0
-623 y(v)n(ersion)j(n)n(um)n(b)r(er)h(against)f(whic)n(h)h(pmilter)g(is)
-h(compiled.)53 b(The)34 b(ma)5 b(jor)32 b(v)n(ersion)f(n)n(um)n(b)r
-(ers)i(m)n(ust)g(matc)n(h)h(otherwise)0 722 y(the)28
-b(program)e(will)h(not)h(run.)0 876 y(Signal)f(handler)g(callbac)n(k:)0
-1029 y Fm(sm)p 93 1029 27 4 v 31 w(ret)p 256 1029 V 30
-w(T)43 b(pmfi)p 549 1029 V 30 w(signal\(pmg)p 1019 1029
-V 27 w(ctx)p 1178 1029 V 30 w(P)g(pmg)p 1427 1029 V 30
-w(ctx,)f(int)h(sig\))0 1182 y Fn(This)35 b(function)h(will)g(b)r(e)f
-(called)g(when)g(a)g(USR1)h(or)e(USR2)h(signal)g(is)g(receiv)n(ed;)j
-(it)d(is)h(not)f(called)g(within)h(a)f(signal)0 1282
-y(handler,)27 b(i.e.,)h(the)g(co)r(de)f(do)r(es)h(not)f(ha)n(v)n(e)g
-(to)g(b)r(e)h(signal-safe.)35 b(Note:)i(this)28 b(is)g(not)f(y)n(et)g
-(implemen)n(ted.)0 1563 y Fj(5.2.13)113 b(Return)37 b(V)-9
-b(alues)0 1770 y Fn(SMTP)24 b(Session)g(and)g(transaction)f(orien)n
-(ted)h(functions)h(use)f Fm(sfsistat)p 2306 1770 V 28
-w(T)g Fn(as)g(return)g(t)n(yp)r(e.)36 b(Allo)n(w)n(ed)23
-b(v)-5 b(alues)24 b(for)g(this)0 1870 y(t)n(yp)r(e)k(are)e(\(as)i
-(de\014ned)g(in)f Fm(include/sm/smrepl)o(yco)o(de)o(s.h)o
-Fn(\):)125 2070 y Fc(\017)41 b Fm(SMTP)p 389 2070 V 29
-w(R)p 462 2070 V 31 w(OK)p Fn(:)27 b(accept)g(command.)125
-2226 y Fc(\017)41 b Fm(SMTP)p 389 2226 V 29 w(R)p 462
-2226 V 31 w(ACCEPT)p Fn(:)36 b(accept)j(en)n(tire)f(transaction)f(or)h
-(session)f(dep)r(ending)i(on)f(where)g(this)h(v)-5 b(alue)39
-b(is)f(returned.)208 2326 y(Note:)e(this)28 b(is)g(just)g(a)f(shortcut)
-g(for)g Fm(SMTP)p 1555 2326 V 30 w(R)p 1629 2326 V 31
-w(SET)p 1792 2326 V 30 w(QUICK\(SMTP)p 2262 2326 V 28
-w(R)p 2334 2326 V 31 w(OK\))p Fn(.)125 2482 y Fc(\017)41
-b Fm(SMTP)p 389 2482 V 29 w(R)p 462 2482 V 31 w(DISCARD)p
-Fn(:)25 b(discard)i(e\013ect)h(of)f(command.)125 2639
-y Fc(\017)41 b Fm(SMTP)p 389 2639 V 29 w(R)p 462 2639
-V 31 w(CONT)p Fn(:)26 b(con)n(tin)n(ue)h(other)g(c)n(hec)n(ks.)125
-2795 y Fc(\017)41 b Fm(SMTP)p 389 2795 V 29 w(R)p 462
-2795 V 31 w(SSD)p Fn(:)27 b(sh)n(ut)g(do)n(wn)g(SMTP)h(session.)125
-2951 y Fc(\017)41 b Fm(SMTP)p 389 2951 V 29 w(R)p 462
-2951 V 31 w(TEMP)p Fn(:)26 b(reject)i(command)f(with)h(a)f(temp)r
-(orary)g(error.)125 3107 y Fc(\017)41 b Fm(SMTP)p 389
-3107 V 29 w(R)p 462 3107 V 31 w(SYNTAX)p Fn(:)26 b(syn)n(tax)g(error.)
-125 3264 y Fc(\017)41 b Fm(SMTP)p 389 3264 V 29 w(R)p
-462 3264 V 31 w(PERM)p Fn(:)26 b(reject)i(command)f(with)h(a)f(p)r
-(ermanen)n(t)h(error.)125 3420 y Fc(\017)41 b Fn(other)27
-b(v)-5 b(alid)27 b(SMTP)h(reply)f(co)r(des)g([Kle01)n(].)0
-3620 y(Additionally)d(return)g(v)-5 b(alues)24 b(can)g(b)r(e)h(mo)r
-(di\014ed)f(b)n(y)g(using)g Fm(SMTP)p 2072 3620 V 30
-w(R)p 2146 3620 V 31 w(SET)p 2309 3620 V 30 w(QUICK\(returnvalu)o(e\))p
-Fn(.)29 b(See)c(Section)f(3.9.3)0 3720 y(for)j(the)h(e\013ects)g(of)f
-(this.)0 3873 y(F)-7 b(or)30 b(functions)i(that)f(use)g
-Fm(sm)p 937 3873 V 30 w(ret)p 1099 3873 V 30 w(T)g Fn(as)f(return)h(t)n
-(yp)r(e)g(a)f(successful)h(call)f(returns)h Fm(SM)p 2744
-3873 V 30 w(SUCCESS)d Fn(\(0\))j(and)g(a)g(negativ)n(e)0
-3973 y(v)-5 b(alue)27 b(in)h(case)f(of)h(an)f(error.)0
-4254 y Fj(5.2.14)113 b(Implemen)m(tation)38 b(Notes)0
-4461 y Fn(As)f Fm(libpmilter)c Fn(curren)n(tly)i(do)r(es)i(not)g(k)n
-(eep)f(trac)n(k)f(of)i(the)g(status)g(of)f(a)h(transaction)e(or)h
-(session,)i(the)f(functions)0 4561 y Fm(pmfi)p 181 4561
-V 30 w(abort\(\))21 b Fn(and)j Fm(pmfi)p 874 4561 V 30
-w(close\(\))d Fn(ma)n(y)i(b)r(e)i(called)f(ev)n(en)f(if)i(no)f
-(transaction)e(or)i(session)f(is)h(curren)n(tly)f(activ)n(e.)35
-b(This)0 4660 y(can)d(happ)r(en)h(if)g(an)g(SMTP)f(serv)n(er)f(unexp)r
-(ectedly)i(ab)r(orts)f(the)h(connection)f(to)h(a)f(p)r(olicy)h(milter.)
-52 b(An)33 b(application)0 4760 y(m)n(ust)28 b(b)r(e)g(a)n(w)n(are)d
-(of)j(this)g(and)f(k)n(eep)g(trac)n(k)g(of)g(its)h(state)f(prop)r(erly)
--7 b(.)0 5084 y Fk(5.3)135 b(P)l(olicy)46 b(Milter)g(Examples)0
-5320 y Fn(The)32 b(program)e Fm(libpmilter/examp)o(le)o(-pm)o(il)o(te)o
-(r-0)o(.c)25 b Fn(is)32 b(a)g(simple)g(example)f(ho)n(w)h(to)f(write)h
-(a)g(p)r(olicy)f(milter.)50 b(It)0 5419 y(migh)n(t)33
-b(b)r(e)h(useful)g(as)e(a)h(template)h(for)f(other)f(milters.)54
-b(F)-7 b(or)33 b(some)f(op)r(erating)h(systems)g(it)g(migh)n(t)g(b)r(e)
-h(necessary)e(to)0 5519 y(c)n(hange)26 b(the)i(list)g(of)g(system)f
-(include)h(\014les)g(\(see)f(also)g(Section)g(5.3.1\).)1848
-5768 y(58)p eop end
-%%Page: 59 60
-TeXDict begin 59 59 bop 0 523 a Fn(Also)34 b(a)n(v)-5
-b(ailable)32 b(is)i(a)g(p)r(olicy)g(milter)g Fm(contrib/milter-)o(spa)o
-(md)o(.c)28 b Fn(that)34 b(o\013ers)f(an)h(in)n(terface)f(to)h
-Fm(spamd\(1\))d Fn(whic)n(h)0 623 y(is)i(a)g(daemonized)g(v)n(ersion)f
-(of)h Fm(spamassassin\(1\))p Fn(.)48 b Fm(milter-spamd.c)28
-b Fn(is)33 b(written)h(b)n(y)f(Daniel)h(Hartmeier)e([Harc)o(])0
-722 y(\(see)d(the)h(\014le)f(itself)h(for)e(the)i(Cop)n(yrigh)n(t\))e
-(for)h(sendmail)g(8)f(and)h(mo)r(di\014ed)h(to)f(w)n(ork)f(with)i(the)f
-(p)r(olicy)g(milter)h(API)f(of)0 822 y(MeT)-7 b(A1.)0
-1108 y Fj(5.3.1)112 b(Compiling)39 b(P)m(olicy)e(Milters)0
-1315 y Fn(The)i(program)d Fm(libpmilter/exampl)o(e-)o(pm)o(ilt)o(er)o
-(-1.)o(c)c Fn(sho)n(ws)38 b(whic)n(h)g Fm(.h)g Fn(\014les)h(need)f(to)h
-(b)r(e)g(included)g(from)f(the)0 1414 y(MeT)-7 b(A1)34
-b(distribution:)49 b(those)34 b(are)f(referenced)g(as)g
-Fm("sm/)p Fd(name)p Fm(.h")p Fn(.)53 b(As)34 b(a)g(minim)n(um,)i(a)e
-(pmilter)g(also)f(needs)g(def-)0 1514 y(initions)41 b(for)g
-Fm(bool)f Fn(\(usually)h(a)n(v)-5 b(ailable)40 b(via)h
-Fm(stdbool.h)p Fn(\))d(and)j Fm(int16)p 2367 1514 27
-4 v 29 w(t)p Fn(,)k Fm(int32)p 2728 1514 V 29 w(t)p Fn(,)g
-Fm(uint16)p 3133 1514 V 28 w(t)p Fn(,)g(and)c Fm(uint32)p
-3712 1514 V 29 w(t)0 1614 y Fn(\(usually)e(a)n(v)-5 b(ailable)38
-b(via)h Fm(stdint.h)d Fn(or)j Fm(inttypes.h)p Fn(\).)68
-b(If)40 b(those)f(t)n(yp)r(e)g(de\014nitions)h(are)e(not)i(a)n(v)-5
-b(ailable,)41 b(the)e(\014le)0 1713 y Fm("sm/generic.h")e
-Fn(con)n(tains)k(default)i(de\014nitions)f(that)h(are)e(suitable)h(for)
-g(most)g(systems.)80 b(Those)42 b(can)g(b)r(e)g(ac-)0
-1813 y(tiv)-5 b(ated)38 b(via)g(the)g(compile)g(time)g(options)g
-Fm(META1_NEED_INTN)32 b Fn(and)37 b Fm(META1_NEED_BOOL)p
-Fn(,)32 b(resp)r(ectiv)n(ely)-7 b(.)67 b(The)38 b(\014le)0
-1913 y Fm(libpmilter/makef)o(ile)o(.p)o(mi)o(lte)o(r)14
-b Fn(is)20 b(an)g(example)f Fm(makefile)e Fn(\(for)j
-Fm(make\(1\))p Fn(\))e(that)i(w)n(orks)e(on)i(systems)g(lik)n(e)f
-(SunOS)0 2012 y(5.10.)45 b(It)31 b(can)f(b)r(e)h(easily)f(adapted)h(to)
-f(other)g(op)r(erating)g(systems;)i(it)f(sho)n(ws)f(the)h(list)g(of)f
-(libraries)g(that)h(are)e(needed)0 2112 y(from)e(the)h(MeT)-7
-b(A1)28 b(distribution.)1848 5768 y(59)p eop end
-%%Page: 60 61
-TeXDict begin 60 60 bop 0 1199 a Fl(Chapter)65 b(6)0
-1668 y Fp(Miscellaneous)0 2203 y Fk(6.1)135 b(T)-11 b(roublesho)t
-(oting)0 2439 y Fn(If)24 b(something)e(go)r(es)h(wrong)e(then)j(the)g
-(comp)r(onen)n(t)f(whic)n(h)g(fails)g(usually)f(logs)g(an)h(error)f
-(message.)33 b(Dep)r(ending)24 b(on)f(the)0 2538 y(con\014guration,)31
-b(an)h(error)e(is)h(either)h(logged)f(via)g Fm(syslog\(3\))d
-Fn(or)j(prin)n(ted)h(in)n(to)f(a)h(log\014le)f(\(as)g(explained)h(in)g
-(Section)0 2638 y(4.8\).)37 b(Note:)g(ev)n(en)28 b(if)g(the)g(system)g
-(is)f(con\014gured)g(to)h(use)f Fm(syslog\(3\))e Fn(\(Section)j(3.4,)f
-(item)h(1\))g(errors)d(at)j(startup)g(are)0 2738 y(prin)n(ted)j(to)h
-(the)g(log\014le)f(if)h(those)f(errors)e(o)r(ccur)i(b)r(efore)g(the)h
-(con\014guration)e(is)h(read,)h(hence)g(those)f(\014les)g(need)h(to)f
-(b)r(e)0 2837 y(c)n(hec)n(k)n(ed)26 b(to)r(o.)0 3123
-y Fj(6.1.1)112 b(Startup)38 b(Problems)0 3330 y Fn(If)28
-b(MeT)-7 b(A1)28 b(fails)g(to)f(start)g(prop)r(erly)g(the)h(reason)e
-(should)i(b)r(e)g(logged)f(as)g(explained)g(b)r(efore.)37
-b(Some)28 b(p)r(ossible)f(reasons)0 3430 y(are)101 3649
-y(1.)42 b(in)n(v)-5 b(alid)20 b(con\014guration)f(\014le:)34
-b(use)20 b Fm(misc/smconf)c Fn(to)21 b(c)n(hec)n(k)f(the)h(syn)n(tax)e
-(b)r(efore)i(deplo)n(ying)e(a)i(new)f(con\014guration)208
-3749 y(\014le.)101 3915 y(2.)42 b(wrong)26 b(p)r(ermissions:)36
-b(c)n(hec)n(k)27 b(the)h(p)r(ermissions)e(as)h(explained)g(in)h
-(Section)g(2.4:)208 4114 y Fm($)43 b(./misc/sm.check.)o(sh)101
-4314 y Fn(3.)f(missing)27 b(or)f(in)n(v)-5 b(alid)28
-b(maps:)36 b(mak)n(e)27 b(sure)g(maps)g(are)g(created)g(prop)r(erly)f
-(with)i Fm(createmap\(8\))p Fn(.)0 4600 y Fj(6.1.2)112
-b(Log\014le)39 b(En)m(tries)0 4806 y Fn(Most)24 b(log\014le)f(en)n
-(tries)g(should)h(b)r(e)g(self-explaining.)35 b(Ho)n(w)n(ev)n(er,)23
-b(some)g(are)g(more)g(subtle)h(and)g(indicate)g(only)g(indirectly)0
-4906 y(what)k(migh)n(t)f(b)r(e)h(wrong.)36 b(Example:)0
-5142 y Fm(smtps:)41 b(...)h(client_name=Hostn)o(ame)o(_N)o(ot_)o(De)o
-(te)o(rmi)o(ne)o(d)0 5379 y Fn(indicates)27 b(that)h(the)g(access)f
-(map)g(\(Section)h(3.10,)e(3b\))i(is)f(not)h(used)g(whic)n(h)f(migh)n
-(t)h(p)r(oin)n(t)f(to)h(a)f(miscon\014guration.)1848
-5768 y(60)p eop end
-%%Page: 61 62
-TeXDict begin 61 61 bop 0 523 a Fk(6.2)135 b(Ca)l(v)l(eats)0
-758 y Fn(The)28 b(follo)n(wing)e(problems)h(exist)h(in)f(this)h(v)n
-(ersion)e(of)i(MeT)-7 b(A1:)125 995 y Fc(\017)41 b Fn(If)32
-b(the)h(system)f(runs)g(out)g(of)h(memory)e(then)i(the)g(MT)-7
-b(A)32 b(ma)n(y)g(not)g(act)g(gracefully)g(in)g(all)g(cases,)h(see)f
-(Section)208 1094 y(4.10.1.)125 1260 y Fc(\017)41 b Fn(If)25
-b(a)f(disk)g(that)h(is)f(used)h(for)f(one)g(of)g(the)h(queues)f(b)r
-(ecomes)h(full,)h(some)d(errors)g(ma)n(y)h(not)g(b)r(e)h(handled)g
-(gracefully)-7 b(,)208 1360 y(see)32 b(Section)g(4.10.1.)50
-b(T)-7 b(o)32 b(a)n(v)n(oid)f(this,)j(MeT)-7 b(A1)32
-b(has)g(some)g(limits)h(for)f(the)h(amoun)n(t)f(of)g(a)n(v)-5
-b(ailable)31 b(disk)h(space)208 1460 y(that)27 b(is)h(required)f(to)g
-(accept)g(mail)h(\(see)f(Section)h(3.8\).)0 1788 y Fk(6.3)135
-b(Chec)l(ks)45 b(in)g(SMTP)f(Serv)l(er)0 2023 y Fn(The)28
-b(SMTP)f(serv)n(er)f(has)h(some)g(builtin)h(c)n(hec)n(ks)f(whic)n(h)g
-(are)g(explained)g(in)h(the)g(follo)n(wing.)0 2309 y
-Fj(6.3.1)112 b(Strict)37 b(RF)m(C)g(Compliance)0 2516
-y Fn(The)29 b(SMTP)g(serv)n(er)e(curren)n(tly)g(enforces)h(fairly)h
-(strict)f(RF)n(C)h(2821)e(compliance.)40 b(F)-7 b(or)28
-b(example,)h(a)g Fm(MAIL)e Fn(command)0 2616 y(m)n(ust)h(b)r(e)g(giv)n
-(en)e(in)i(the)g(follo)n(wing)f(format)0 2852 y Fm(MAIL)42
-b(From:<user@some.)o(do)o(mai)o(n>)0 3088 y Fn(i.e.,)27
-b(the)g(angle)f(brac)n(k)n(ets)f(are)h(required,)g(there)h(m)n(ust)g(b)
-r(e)g(no)g(space)f(after)g(":",)g(etc.)37 b(This)27 b(has)f(the)h
-(useful)g(side)g(e\013ect)0 3188 y(of)h(catc)n(hing)e(some)h(spam)h
-(programs:)0 3424 y Fm(5.5.0)42 b(Syntax)f(error.,)f(input=MAIL)g
-(FROM:)h(<blafwhoyqjywvu@a)o(si)o(a.c)o(om)o(>)0 3661
-y Fn(Moreo)n(v)n(er,)26 b(the)j(serv)n(er)d(requires)i(that)g(lines)h
-(end)f(in)h(CRLF)g(\()p Fc(n)p Fn(r)p Fc(n)p Fn(n\),)f(it)h(will)f(not)
-h(accept)f(command)g(input)h(without)0 3760 y(the)f(correct)e(line)i
-(ending,)g(i.e.,)f(trying)g(to)h(do)f(that)h(will)g(cause)f(a)g(read)g
-(error.)0 3913 y(Another)39 b(requiremen)n(t)g(is)g(that)g(MX)h
-(records)e Fd(must)g Fn(p)r(oin)n(t)i(to)f(hostnames,)j(not)d(IP)g
-(addresses)e([Mo)r(c87)o(].)73 b(This)0 4013 y(applies)35
-b(to)g(receiving)f(mail)h({)f(a)h Fm(MAIL)f Fn(address)g(using)g(a)h
-(domain)g(whose)f(MX)i(record)d(p)r(oin)n(ts)i(to)g(an)g(IP)g(address)0
-4113 y(will)e(b)r(e)g(rejected)g(\()p Fm(553)42 b(5.1.8)g(Sender)f
-(address)f(does)i(not)h(exist)p Fn(\))31 b({)h(as)g(w)n(ell)g(as)g(to)h
-(sending)f(mail)h({)f(a)g Fm(RCPT)0 4212 y Fn(address)26
-b(with)i(a)g(domain)f(whose)g(MX)h(record)e(p)r(oin)n(ts)h(to)h(an)f
-(IP)g(address)g(is)g(not)h(resolv)n(ed)e(b)n(y)h(SMAR.)0
-4498 y Fj(6.3.2)112 b(V)-9 b(arious)38 b(Chec)m(ks)0
-4705 y Fn(The)22 b Fm(EHLO)e Fn(parameter)g(is)h(c)n(hec)n(k)n(ed)g
-(against)f(the)i(lo)r(cal)f(hostname)g(unless)h(the)g(connection)f
-(comes)g(from)g(lo)r(calhost)g(\(IP)0 4805 y(address)30
-b(127.0.0.1\))g(or)h(the)h(access)e(map)i(returned)f
-Fm(quick:ok)d Fn(or)j Fm(quick:relay)p Fn(,)d(see)k(Section)f(3.9.3.)48
-b(Violations)0 4904 y(will)28 b(b)r(e)g(logged)e(with)i(a)f(status)h
-(text)g(of)f Fm(Identity)p 1656 4904 27 4 v 28 w(Theft)p
-Fn(.)0 5058 y(The)21 b(SMTP)h(serv)n(er)d(c)n(hec)n(ks)h(for)h
-(\\illegal)f(pip)r(elining",)j(i.e.,)g(whether)e(a)g(clien)n(t)g(sends)
-g(commands)g(b)r(efore)g(it)h(is)f(allo)n(w)n(ed)0 5157
-y(to)28 b(do)f(so.)36 b(Moreo)n(v)n(er,)25 b(it)j(also)f(c)n(hec)n(ks)f
-(whether)i(the)g(clien)n(t)g(sends)f(a)g(command)g(b)r(efore)h(the)g
-(initial)g(greeting.)36 b(Note:)0 5257 y(according)24
-b(to)h(RF)n(C)h(2821)e(the)i(clien)n(t)f(SHOULD)h(w)n(ait)g(for)f(the)h
-(greeting,)e(but)j(this)f(is)f(not)h(\(y)n(et\))g(a)f(requiremen)n(t.)
-35 b(T)-7 b(o)0 5357 y(turn)28 b(this)g(o\013,)f(use)h
-Fm(allow_data_befor)o(e_)o(gr)o(eet)o(in)o(g)22 b Fn(\(Section)28
-b(3.10,)e(item)i(3m.\))1848 5768 y(61)p eop end
-%%Page: 62 63
-TeXDict begin 62 62 bop 0 523 a Fk(6.4)135 b(Securit)l(y)46
-b(Chec)l(ks)0 758 y Fn(There)21 b(are)g(curren)n(tly)f(no)i(additional)
-f(securit)n(y)f(c)n(hec)n(ks)h(when)h(creating/accessing)c(\014les)j
-(or)g(directories)f(b)r(esides)i(those)0 858 y(pro)n(vided)28
-b(b)n(y)h(the)g(op)r(erating)f(system.)41 b(This)29 b(could)g(b)r(e)h
-(a)f(problem)f(if)i(MCP)e(is)h(miscon\014gured)f(b)r(ecause)h(it)h
-(runs)e(as)0 958 y Fm(root)p Fn(.)56 b(Hence)35 b(it)g(will)f(simply)h
-(o)n(v)n(erwrite)d(existing)i(\014les)h(if)g(those)f(are)f(sp)r
-(eci\014ed)i(in)g(the)g(con\014guration)e(\014le.)58
-b(The)0 1057 y(other)33 b(mo)r(dules)g(run)g(as)g(non-privileged)f
-(users,)i(hence)f(the)h(OS)f(pro)n(vides)f(su\016cien)n(t)i(access)e(c)
-n(hec)n(ks)g({)h(unless)g(the)0 1157 y(system)27 b(is)h
-(miscon\014gured)e(and)i(the)g(MeT)-7 b(A1)27 b(accoun)n(ts)g(are)f
-(misused)i(for)f(other)g(purp)r(oses)g(to)r(o.)0 1485
-y Fk(6.5)135 b(Restrictions)0 1721 y Fn(Besides)38 b(the)h(ob)n
-(viously)e(missing)i(functionalit)n(y)f(there)h(are)e(some)h(other)h
-(things)f(that)h(ma)n(y)f(restrict)g(the)h(use)g(of)0
-1820 y(MeT)-7 b(A1)27 b(in)h(certain)f(en)n(vironmen)n(ts.)36
-b(Here)27 b(is)h(an)f(incomplete)h(list:)125 2057 y Fc(\017)41
-b Fn(DNS)30 b(lo)r(okups)f(curren)n(tly)g(use)g(only)h(UDP)g(b)n(y)f
-(default,)i(hence)f(answ)n(ers)e(that)i(exceed)f(the)h(UDP)g(pac)n(k)n
-(et)f(size)208 2156 y(will)j(cause)g(problems.)50 b(Ho)n(w)n(ev)n(er,)
-32 b(suc)n(h)g(DNS)h(pac)n(k)n(ets)e(are)h(really)f(rare)g(\(b)r
-(ecause)h(they)g(cause)g(op)r(erational)208 2256 y(problems)23
-b(in)h(v)-5 b(arious)22 b(places,)i(e.g.,)h(some)e(\014rew)n(alls)f(ma)
-n(y)h(blo)r(c)n(k)h(TCP)f(for)g(p)r(ort)h(53\).)35 b(A)24
-b(p)r(ossible)g(w)n(ork)-5 b(around)208 2355 y(migh)n(t)22
-b(b)r(e)g(to)g(force)f(TCP)h(\(see)g(Section)g(3.9.2,)f(item)i
-(1\(a\)i\),)g(the)g(correct)d(w)n(a)n(y)h(is)h(a)f(c)n(hange)g(in)i
-(the)f(DNS)h(library)208 2455 y(to)k(retry)g(with)h(TCP)-7
-b(,)27 b(but)h(this)g(has)f(not)h(y)n(et)f(b)r(een)h(implemen)n(ted.)
-125 2621 y Fc(\017)41 b Fn(Map)28 b(lo)r(okups)g(con)n(v)n(ert)f(k)n
-(eys)g(to)h(lo)n(w)n(er)f(case)h(b)r(efore)g(c)n(hec)n(king)f(an)i(en)n
-(try)-7 b(.)39 b(In)28 b(general)f(this)i(is)g(not)f(a)g(problem)208
-2721 y(unless)35 b(lo)r(cal)g(addresses)f(rely)h(on)g(preserving)f(the)
-i(case)e(of)i(the)g(lo)r(cal)f(parts)g(of)g(addresses.)59
-b(That)36 b(is,)h(lo)r(cal)208 2820 y(addresses)26 b(whic)n(h)h
-(require)g(upp)r(er)g(case)g(c)n(haracters)e(do)j(not)f(w)n(ork.)125
-2986 y Fc(\017)41 b Fn(Multi-line)22 b(replies)f(from)g(an)g(SMTP)g
-(serv)n(er)f(are)h(curren)n(tly)f(neither)i(stored)f(\(for)g(a)g(p)r
-(ossible)g(DSN\))i(nor)e(logged,)208 3086 y(instead)27
-b(just)h(the)g(last)f(line)h(is)g(used)f(for)g(that)h(purp)r(ose.)0
-3322 y(Ev)n(erything)34 b(that)h(is)g(not)g(describ)r(ed)g(in)h(the)f
-(do)r(cumen)n(tation)g(do)r(es)g(either)g(not)h(exist)f(in)g(the)h
-(curren)n(t)e(v)n(ersion)g(of)0 3422 y(MeT)-7 b(A1,)33
-b(or)e(is)h(unlik)n(ely)g(to)g(w)n(ork.)49 b(Ho)n(w)n(ev)n(er,)31
-b(there)h(ma)n(y)f(b)r(e)i(omissions)e(in)h(the)g(do)r(cumen)n(tation,)
-h(please)f(inform)0 3522 y(the)c(author)f(of)g(suc)n(h)h(bugs.)0
-3850 y Fk(6.6)135 b(Co)t(de)45 b(Review,)i(Enhancemen)l(ts,)f(P)l(atc)l
-(hes)0 4085 y Fn(Source)27 b(co)r(de)g(insp)r(ection)h(as)f(w)n(ell)g
-(as)g(patc)n(hes)g(and)h(suggestions)e(are)g(v)n(ery)h(w)n(elcome.)0
-4238 y(Enhancemen)n(ts)k(and)g(extensions)f(are)h(v)n(ery)f(w)n(elcome)
-g(to)r(o,)i(esp)r(ecially)f(to)g(extend)h(the)g(basic)f(functionalit)n
-(y)g(of)g(the)0 4338 y(curren)n(t)c(MeT)-7 b(A1)27 b(release.)0
-4666 y Fk(6.7)135 b(P)l(orting)0 4902 y Fn(P)n(orting)32
-b(to)i(curren)n(tly)g(unsupp)r(orted)g(platforms)f(including)i
-(non-Unix)e(systems)h(is)g(encouraged.)55 b(Note)34 b(that)g(the)0
-5001 y(destination)f(system)g(m)n(ust)h(supp)r(ort)f(statethreads)f
-([SGI01])h(and)g(Berk)n(eley)f(DB)i(4.x.)53 b(It)34 b(migh)n(t)f(b)r(e)
-h(necessary)e(to)0 5101 y(p)r(ort)27 b(those)h(\014rst.)1848
-5768 y(62)p eop end
-%%Page: 63 64
-TeXDict begin 63 63 bop 0 523 a Fk(6.8)135 b(V)-11 b(ersion)45
-b(Naming)0 758 y Fn(Eac)n(h)26 b(MeT)-7 b(A1)28 b(v)n(ersion)e(has)h(a)
-g(name)h(in)f(the)h(follo)n(wing)f(format:)0 912 y(MeT)-7
-b(A1-ma)5 b(jor.minor.[quali\014er]quali\014er-v)n(ersion.patc)n(hlev)m
-(el)0 1065 y(The)29 b(ma)5 b(jor)28 b(n)n(um)n(b)r(er)h(c)n(hanges)e(b)
-r(et)n(w)n(een)i(releases)e(when)j(new)f(features)f(are)g(in)n(tro)r
-(duced)h(\()p Fd(major)h Fn(c)n(hanges,)e(but)i(see)0
-1165 y(b)r(elo)n(w)25 b(ab)r(out)g(the)h(dev)n(elopmen)n(t)e(phases\).)
-36 b(The)25 b(minor)g(n)n(um)n(b)r(er)g(c)n(hanges)f(when)h(no)g(new)h
-(features)f(are)f(in)n(tro)r(duced,)0 1264 y(but)36 b(bug\014xes)e(and)
-h(\(p)r(ortabilit)n(y\))g(enhancemen)n(ts)g(are)f(made.)59
-b(That)35 b(is,)i(no)e(con\014guration)f(c)n(hanges)f(are)h(needed)0
-1364 y(when)27 b(going)f(from)h(one)g(minor)f(v)n(ersion)g(to)h(the)g
-(next.)37 b(The)27 b(patc)n(hlev)n(el)f(n)n(um)n(b)r(er)h(is)g(used)g
-(for)g(in)n(termediate)f(patc)n(hes)0 1463 y(b)r(et)n(w)n(een)h
-(releases,)e(e.g.,)i(if)h(something)e(is)h(brok)n(en)f(but)h(it)g(is)g
-(not)g(imp)r(ortan)n(t)g(enough)f(for)h(a)f(new)h(release)f(b)r(ecause)
-g(it)0 1563 y(is)h(barely)g(used)h(or)e(encoun)n(tered.)0
-1716 y(There)h(are)g(sev)n(eral)e(di\013eren)n(t)j(quali\014ers:)101
-1934 y(1.)42 b(PreAlpha:)59 b(This)39 b(means)g(the)g(soft)n(w)n(are)f
-(is)h(not)g(feature)g(complete)g(and)g(hence)h(migh)n(t)f(b)r(e)g
-(missing)g(some)208 2033 y(functionalit)n(y)30 b(that)g(is)g
-(considered)f(imp)r(ortan)n(t)h(b)n(y)f(di\013eren)n(t)i(users.)43
-b(Additionally)-7 b(,)31 b(there)f(is)g(most)f(lik)n(ely)h(no)208
-2133 y(compatibilit)n(y)37 b(in)i(data)e(structures)h(stored)f(on)h
-(disk)g(b)r(et)n(w)n(een)g(di\013eren)n(t)g(pre-alpha)f(v)n(ersions,)i
-(e.g.,)h(when)208 2232 y(upgrading)d(from)i(PreAlpha16)f(to)h
-(PreAlpha17)e(the)j(main)f(queue)g(format)g(ma)n(y)f(ha)n(v)n(e)g(c)n
-(hanged)g(without)208 2332 y(c)n(hec)n(ks)24 b(in)i(the)h(soft)n(w)n
-(are)d(for)h(this.)37 b(Hence)26 b(old)g(queues)f(m)n(ust)h(b)r(e)h
-(drained)e(b)r(efore)h(upgrading.)35 b(Moreo)n(v)n(er,)23
-b(the)208 2432 y(proto)r(cols)29 b(used)h(for)g(comm)n(unication)g(b)r
-(et)n(w)n(een)g(MeT)-7 b(A1)31 b(mo)r(dules)f(ma)n(y)g(ha)n(v)n(e)g(c)n
-(hanged)f(without)i(pro)n(viding)208 2531 y(bac)n(kw)n(ard)24
-b(compatibilit)n(y)-7 b(,)27 b(therefore)f(mo)r(dules)h(from)g
-(di\013eren)n(t)g(releases)e(m)n(ust)i Fd(not)g Fn(b)r(e)g(used)g
-(together.)36 b(Suc)n(h)208 2631 y(incompatibilities)27
-b(are)g(usually)g(stated)h(in)f(the)h(list)g(of)g(c)n(hanges)e
-Fm(ChangeLog)p Fn(.)208 2760 y(Do)34 b(not)h(run)f(this)h(on)g(a)f(pro)
-r(duction)g(serv)n(er)f(unless)i(y)n(ou)e(are)h(a)n(w)n(are)f(of)h(the)
-h(p)r(ossible)g(consequences.)57 b(The)208 2860 y(soft)n(w)n(are)29
-b(is)j(still)g(under)f(dev)n(elopmen)n(t)g(and)g(not)h(fully)g
-(functional.)49 b(Moreo)n(v)n(er,)29 b(it)j(ma)n(y)f(not)h(b)r(e)g
-(su\016cien)n(tly)208 2959 y(tested.)101 3118 y(2.)42
-b(Alpha:)37 b(In)27 b(this)h(state)g(the)g(soft)n(w)n(are)e(is)h(ready)
-g(for)g(public)h(testing)f(but)h(its)g(features)f(ma)n(y)g(still)h(c)n
-(hange.)101 3276 y(3.)42 b(Beta:)62 b(F)-7 b(eature)40
-b(c)n(hanges)f(are)g(unlik)n(ely)-7 b(,)43 b(but)e(still)g(p)r(ossible)
-f(if)h(required.)74 b(Usually)40 b(only)g(bug\014xes)g(o)r(ccur)208
-3376 y(b)r(et)n(w)n(een)27 b(b)r(eta)h(v)n(ersions.)101
-3534 y(4.)42 b(Gamma:)35 b(This)26 b(is)g(a)f(release)f(candidate.)36
-b(Usually)26 b(only)f(critical)g(bug\014xes)h(o)r(ccur)f(b)r(et)n(w)n
-(een)h(gamma)e(v)n(ersions.)208 3634 y(There)j(migh)n(t)g(b)r(e)h(no)f
-(gamma)g(v)n(ersions)f(at)h(all)h(if)g(b)r(eta)g(testing)f(w)n(as)g
-(considered)f(successful)i(and)f(su\016cien)n(t.)101
-3792 y(5.)42 b(A)27 b(release)g(v)n(ersion)f(do)r(es)h(not)h(ha)n(v)n
-(e)e(an)h(explicit)h(quali\014er.)0 4009 y(The)19 b(quali\014er-v)n
-(ersion)e(is)i(used)h(to)f(distinguish)g(b)r(et)n(w)n(een)g(di\013eren)
-n(t)h(v)n(ersion)e(of)h(the)h(same)f(quali\014er,)h(e.g.,)h(PreAlpha16)
-0 4109 y(and)27 b(PreAlpha17.)35 b(It)28 b(is)g(0)f(for)g(a)g(release)f
-(v)n(ersion.)0 4262 y(Examples)h(for)g(v)n(ersion)f(names:)36
-b(MeT)-7 b(A1-0.0.PreAlpha19.0,)24 b(MeT)-7 b(A1-1.0.0.0.)0
-4415 y(See)23 b(the)h(\014le)f Fm(include/sm/versio)o(n.)o(h)17
-b Fn(ho)n(w)23 b(the)g(v)n(ersion)f(string)h(is)g(con)n(v)n(erted)f(in)
-n(to)h(a)f(32)h(bit)g(n)n(um)n(b)r(er)g(that)h(denotes)0
-4515 y(the)k(v)n(ersion)e(n)n(um)n(b)r(er.)0 4798 y Fj(6.8.1)112
-b(Snapshots)0 5004 y Fn(F)-7 b(rom)29 b(time)g(to)g(time)h(snapshots)e
-(ma)n(y)g(b)r(e)i(made)e(a)n(v)-5 b(ailable.)40 b(Those)29
-b(are)f(mark)n(ed)g(with)h(a)g(date)g(in)g(the)g(distribution)0
-5104 y(\014le)k(name,)h(e.g.,)g Fm(meta1-0.0.16.0-20)o(04)o(092)o(8.)o
-(tar)o(.g)o(z)p Fn(.)47 b(The)33 b(name)g(indicates)f(that)i(it)f(is)g
-(a)g(snapshot)f(of)h(what)0 5204 y(will)c(b)r(ecome)g(v)n(ersion)f
-Fm(meta1-0.0.16.0)p Fn(,)c(i.e.,)29 b(the)h(next)f(release)f(will)h(ha)
-n(v)n(e)f(the)h(giv)n(en)g(v)n(ersion)e(n)n(um)n(b)r(er)i(\(without)0
-5303 y(the)j(date\).)50 b(The)32 b(only)g(other)f(indication)h(in)g
-(the)h(distribution)f(is)g(the)g(inclusion)g(of)g(an)f
-Fm(s)h Fn(in)g(the)g(v)n(ersion)f(n)n(um)n(b)r(er)0 5403
-y(that)f(is)h(sho)n(wn)e(in)h(the)h(v)n(ersion)d(output)j(of)f(the)h
-(main)f(comp)r(onen)n(ts.)44 b(A)31 b(snapshot)e(did)i(not)f(go)f
-(through)g(the)i(usual)0 5503 y(release)26 b(cycle)h(and)h(is)f(made)h
-(a)n(v)-5 b(ailable)26 b(as)h Fd(te)l(chnolo)l(gy)k(pr)l(eview)p
-Fn(.)1848 5768 y(63)p eop end
-%%Page: 64 65
-TeXDict begin 64 64 bop 0 1199 a Fl(Chapter)65 b(7)0
-1668 y Fp(Data)78 b(Flo)-6 b(w)77 b(in)g(MeT)-19 b(A1)0
-2203 y Fk(7.1)135 b(Data)46 b(Flo)l(w)g(in)f(MeT)-11
-b(A1)0 2439 y Fn(This)26 b(Section)h(explains)f(ho)n(w)f(MeT)-7
-b(A1)27 b(stores)e(information)h(ab)r(out)g(messages)f(that)i(are)e
-(transferred.)35 b(It)27 b(giv)n(es)e(some)0 2538 y(bac)n(kground)i
-(information)h(whic)n(h)h(is)g(useful)h(for)e(troublesho)r(oting.)40
-b(Details)29 b(ab)r(out)g(the)g(op)r(eration)f(of)h(MeT)-7
-b(A1)29 b(can)0 2638 y(b)r(e)f(found)g(in)g([A\031m)n(b].)0
-2791 y(MeT)-7 b(A1)23 b(uses)g(t)n(w)n(o)f(di\013eren)n(t)h(databases)f
-(on)g(disk)h(to)g(store)f(en)n(v)n(elop)r(e)g(information)h(\(sender)f
-(and)h(recipien)n(ts\):)34 b(IBDB:)0 2891 y(incoming)g(bac)n(kup)f
-(database,)i(DEFEDB:)f(deferred)f(en)n(v)n(elop)r(e)h(database,)g(and)g
-(one)g(database)f(to)h(store)f(message)0 2990 y(con)n(ten)n(ts:)42
-b(CDB:)31 b(con)n(ten)n(t)f(database.)44 b(See)30 b(Section)g(2.4.1)g
-(ab)r(out)g(the)h(lo)r(cation)f(and)g(la)n(y)n(out)f(of)h(these)h
-(databases)3721 2960 y Fi(1)3756 2990 y Fn(.)0 3090 y(The)20
-b(queue)f(manager)f(additionally)i(uses)f(t)n(w)n(o)g(in)n(ternal)g(en)
-n(v)n(elop)r(e)g(databases:)31 b(IQDB)20 b(\(Incoming)f(Queue)h
-(DataBase\))0 3190 y(and)27 b(A)n(Q)h(\(Activ)n(e)g(Queue\).)0
-3343 y(Incoming)20 b(mails)g(are)g(accepted)g(b)n(y)g(the)h(SMTP)f
-(serv)n(ers)e(whic)n(h)j(store)e(the)i(con)n(ten)n(t)f(in)h(the)g(CDB)g
-(\(complete)f(messages)0 3443 y(including)k(headers)f(in)i(the)f
-(format)g(as)g(receiv)n(ed\).)35 b(The)24 b(en)n(v)n(elop)r(e)f
-(information,)h(i.e.,)h(sender)f(\()p Fm(MAIL)p Fn(\))f(and)h(recipien)
-n(ts)0 3542 y(\()p Fm(RCPT)p Fn(\),)32 b(is)g(stored)g(b)n(y)h(the)g
-(queue)g(manager)e(in)i(IQDB)g(and)f(written)h(to)g(IBDB)g(whic)n(h)f
-(is)h(just)g(a)g(log)f(of)h(en)n(v)n(elop)r(e)0 3642
-y(data)c(and)g(what)g(happ)r(ened)g(to)g(it.)43 b(That)29
-b(is,)g(the)h(\014les)f(in)g(IBDB)h(are)e(written)h(sequen)n(tially)g
-(and)g(are)f(con)n(tin)n(uously)0 3741 y(gro)n(wing.)36
-b(If)29 b(a)e(\014le)i(reac)n(hes)d(its)i(size)g(limit)h(\(see)f
-(Section)g(3.8:)37 b Fm(IBDB)p Fn(\),)26 b(then)j(it)f(is)g(closed)g
-(and)g(a)f(new)h(\014le)h(is)e(op)r(ened.)0 3841 y(F)-7
-b(or)25 b(a)g(deliv)n(ery)-7 b(,)25 b(the)h(en)n(v)n(elop)r(e)f
-(information)g(m)n(ust)g(b)r(e)h(transferred)f(in)n(to)g(A)n(Q.)g(F)-7
-b(or)25 b(incoming)g(mail)h(this)g(happ)r(ens)f(as)0
-3941 y(so)r(on)30 b(as)f(a)h(transaction)f(is)h(accepted,)h(in)f(whic)n
-(h)g(case)g(the)g(data)g(is)g(mo)n(v)n(ed)f(from)h(IQDB)g(to)g(A)n(Q.)g
-(A)h(transaction)e(is)0 4040 y(only)d(accepted)g(if)h(the)f(message)f
-(is)h(safely)g(written)g(to)h(CDB)f(and)g(the)h(en)n(v)n(elop)r(e)e
-(information)h(has)f(b)r(een)i(committed)0 4140 y(to)g(IBDB,)h(i.e.,)g
-(all)f(information)g(is)h(committed)g(to)f(p)r(ersisten)n(t)h(storage)
-2326 4110 y Fi(2)2361 4140 y Fn(.)0 4293 y(The)g(sc)n(heduler)g(in)h
-(QMGR)f(tak)n(es)g(recipien)n(t)g(en)n(v)n(elop)r(es)f(from)h(A)n(Q)g
-(and)g(creates)g(transactions)e(whic)n(h)j(are)e(giv)n(en)h(to)0
-4393 y(the)34 b(SMTP)f(clien)n(ts)g(for)g(deliv)n(ery)-7
-b(.)53 b(An)34 b(SMTP)g(clien)n(t)f(tak)n(es)f(the)i(transaction)e
-(information)h(and)g(tries)g(to)h(send)f(a)0 4492 y(message)21
-b(whose)i(con)n(ten)n(t)f(is)h(read)f(from)g(CDB.)i(After)f(a)f
-(successful)h(deliv)n(ery)f(attempt)h(a)g(record)e(is)i(written)g(to)g
-(IBDB)0 4592 y(that)30 b(logs)e(this)i(information.)43
-b(A)30 b(clean)n(up)f(task)g(remo)n(v)n(es)f(p)r(erio)r(dically)h(old)g
-(IBDB)h(\014les)f(whic)n(h)h(con)n(tain)f(only)g(data)0
-4692 y(that)f(is)f(no)h(longer)e(referenced.)0 4845 y(The)e(deferred)g
-(en)n(v)n(elop)r(e)f(database)g(is)h(only)g(used)g(if)h(a)f(message)f
-(cannot)h(b)r(e)g(deliv)n(ered)g(during)f(the)i(\014rst)f(attempt.)36
-b(In)0 4945 y(that)21 b(case)e(the)i(appropriate)d(en)n(v)n(elop)r(e)i
-(data)g(is)g(added)g(to)g(DEFEDB)g(and)g(a)g(record)f(is)h(written)h
-(to)f(IBDB)g(stating)g(that)0 5044 y(the)30 b(data)f(has)g(b)r(een)h
-(transferred)e(to)i(DEFEDB.)f(En)n(tries)g(in)h(DEFEDB)f(con)n(tain)g
-(a)g(timestamp)h(called)g(next-time-)0 5144 y(to-try)f(at)g(whic)n(h)h
-(QMGR)f(reads)g(them)h(from)f(the)h(database)e(in)n(to)i(A)n(Q)f(and)g
-(the)h(sc)n(heduler)f(tries)g(another)g(deliv)n(ery)p
-0 5213 1512 4 v 92 5267 a Fh(1)127 5290 y Fg(the)35 b(term)f
-Ff(datab)l(ase)h Fg(is)e(used)h(lo)r(osely)g(here,)i(only)e(DEFEDB)g
-(is)f(a)h(real)f(database,)38 b(the)d(others)f(are)g(just)g(w)n(a)n(ys)
-g(to)g(store)g(some)0 5369 y(information)23 b(and)i(access)f(them)g(in)
-g(some)g(w)n(a)n(y)-6 b(.)92 5425 y Fh(2)127 5448 y Fg(If)24
-b(non-p)r(ersisten)n(t)g(storage)h(is)e(used)h(for)f(these)h(databases)
-i(mail)c(can)j(of)e(course)h(b)r(e)g(lost.)1848 5768
-y Fn(64)p eop end
-%%Page: 65 66
-TeXDict begin 65 65 bop 0 523 a Fn(attempt.)52 b(If)32
-b(that)h(succeeds,)g(the)g(en)n(tries)e(are)h(remo)n(v)n(ed)e(from)i
-(DEFEDB,)h(otherwise)e(they)i(are)e(either)h(requeued)0
-623 y(with)e(a)e(new)h(next-time-to-try)f(\(in)i(case)e(of)h(a)g(temp)r
-(orary)f(error\))f(or)h(a)h(DSN)h(\(b)r(ounce)f(message\))f(is)h
-(generated)f(\(in)0 722 y(case)f(of)g(a)g(p)r(ermanen)n(t)h(error\).)
-1848 5768 y(65)p eop end
-%%Page: 66 67
-TeXDict begin 66 66 bop 0 1199 a Fl(Chapter)65 b(8)0
-1668 y Fp(Adv)-13 b(anced)78 b(Con\014guration)g(Options)0
-2203 y Fk(8.1)135 b(Ov)l(erview)0 2439 y Fn(Some)26 b(con\014guration)e
-(options)h(are)g(only)h(needed)g(in)g(sp)r(ecial)g(situations)f(and)h
-(ma)n(y)f(require)g(bac)n(kground)f(kno)n(wledge)0 2538
-y(of)j(the)h(in)n(v)n(olv)n(ed)e(systems.)36 b(Those)26
-b(adv)-5 b(anced)27 b(con\014guration)f(options)g(are)g(explained)h(in)
-h(the)f(subsequen)n(t)g(sections.)0 2824 y Fj(8.1.1)112
-b(Flags)0 3031 y Fn(Usually)32 b(\015ags)f(are)g(not)h(set)g(and)g
-(hence)g(a)f(con\014guration)g(\014le)h(only)f(needs)h(to)g(turn)g(on)g
-(\015ags)f(\(if)i(required\).)49 b(Ho)n(w-)0 3131 y(ev)n(er,)40
-b(in)e(some)g(cases)f(\015ags)g(are)g(set)h(b)n(y)g(default)g(and)g
-(under)g(some)f(rare)g(circumstances)g(need)h(to)g(b)r(e)h(disabled.)0
-3230 y(T)-7 b(o)38 b(ac)n(hiev)n(e)e(this,)41 b(the)e(name)f(of)g(the)g
-(\015ag)f(can)h(b)r(e)g(pre\014xed)g(with)g(one)g(of)g
-Fm(not)p 2657 3230 27 4 v 30 w Fn(,)j Fm(dont)p 2927
-3230 V 30 w Fn(,)f Fm(no)p 3108 3230 V 31 w Fn(,)h Fm(-)p
-Fn(,)f Fm(!)p Fn(,)g(or)e Fm(~)p Fn(,)i(e.g.,)0 3330
-y Fm(~remove_unused_l)o(ogf)o(il)o(es)21 b Fn(or)27 b
-Fm(dont_remove_unus)o(ed)o(_lo)o(gf)o(ile)o(s)p Fn(.)0
-3658 y Fk(8.2)135 b(Adv)-7 b(anced)44 b(Con\014guration)i(for)f(MCP)101
-3894 y Fn(1.)d Fm(max_processes)p Fn(:)31 b(maxim)n(um)d(n)n(um)n(b)r
-(er)f(of)g(pro)r(cesses)g(to)g(start)g([default:)37 b(1].)101
-4060 y(2.)42 b Fm(min_processes)p Fn(:)31 b(minim)n(um)d(n)n(um)n(b)r
-(er)g(of)f(pro)r(cesses)f(to)i(start)f([default:)37 b(1].)101
-4226 y(3.)42 b Fm(use_id_in_logfi)o(le_)o(na)o(me)o Fn(:)52
-b(if)38 b(more)f(than)h(one)f(pro)r(cess)g(can)g(b)r(e)h(started)f
-(then)i(it)f(migh)n(t)f(b)r(e)i(useful)f(to)208 4325
-y(ha)n(v)n(e)27 b(unique)i(log\014les)f(unless)g(the)h(pro)r(cesses)f
-(use)g Fm(syslog\(3\))p Fn(.)37 b(If)29 b(set,)g(this)g(\(b)r(o)r
-(olean\))g(option)f(causes)g(MCP)208 4425 y(to)36 b(include)h(a)f
-(unique)h(iden)n(ti\014er)f(\(the)h(same)f(as)g(for)g
-Fm(pass_id)p Fn(,)g(whic)n(h)g(m)n(ust)h(b)r(e)g(used)f(to)r(o\))h(in)f
-(the)h(log\014le)208 4525 y(name.)64 b(By)37 b(default)g(the)g
-(log\014le)f(has)h(the)g(name)g(of)f(the)i(section)e(\(or)g(the)i
-(section)e(k)n(eyw)n(ord)f(if)i(no)g(section)208 4624
-y(name)j(is)h(giv)n(en\),)j(preceeded)d(b)n(y)f(the)i(log)e(directory)g
-(\(option)h Fm(-L)f Fn(for)g(MCP\),)h(and)g Fm(.log)f
-Fn(app)r(ended.)77 b(If)208 4724 y Fm(use_id_in_logfi)o(le_)o(na)o(me)
-28 b Fn(is)34 b(turned)h(on,)h(then)f(the)g(n)n(umeric)f(id)g(is)h
-(added)f(b)r(efore)g(the)h(extension,)h(e.g.,)208 4824
-y Fm(/var/log/meta1/)o(mai)o(le)o(r0)o(.lo)o(g)21 b Fn(for)28
-b Fm(-L)42 b(/var/log/meta1/)22 b Fn(and)27 b(a)g(section)h(with)g(the)
-g(name)f Fm(mailer)p Fn(.)101 4990 y(4.)42 b Fm(working_directo)o(ry)p
-Fn(:)36 b(p)r(erform)29 b(a)h Fm(chdir\(2\))d Fn(to)j(the)g(sp)r
-(eci\014ed)h(directory)e(b)r(efore)g(executing)h(the)h(pro)r(cess.)208
-5089 y(Note:)64 b(this)42 b(option)f(essen)n(tially)f(requires)g(that)i
-(all)f(relev)-5 b(an)n(t)40 b(pathnames)h(in)h(the)f(con\014guration)f
-(\014le)i(are)208 5189 y(absolute,)23 b(otherwise)e(it)j(is)e(v)n(ery)g
-(easy)g(to)g(miscon\014gure)g(some)g(pathnames,)h(esp)r(ecially)g
-(those)f(shared)g(b)r(et)n(w)n(een)208 5288 y(di\013eren)n(t)27
-b(pro)r(cesses.)1848 5768 y(66)p eop end
-%%Page: 67 68
-TeXDict begin 67 67 bop 0 523 a Fn(Note:)38 b(the)28
-b(n)n(um)n(b)r(er)g(of)f(pro)r(cesses)g(for)g(almost)h(all)f(MeT)-7
-b(A1)28 b(mo)r(dules)g(should)g(b)r(e)g(1.)37 b(It)29
-b Fd(must)e Fn(b)r(e)h(1)f(for)h(QMGR)g(and)0 623 y(SMAR,)k(it)g(can)f
-(b)r(e)g(larger)f(than)h(1)g(for)g(SMTPC.)g(F)-7 b(or)31
-b(SMTPS)g(it)h(should)f(b)r(e)h(1)e(in)i(the)g(default)g(setup)f(as)g
-(the)g(\014le)0 722 y(descriptor)26 b(to)i(whic)n(h)f(MCP)h(binds)f(on)
-h(b)r(ehalf)g(of)f(SMTPS)h(can)f(b)r(e)h(passed)f(to)g(only)h(one)f
-(pro)r(cess.)0 1045 y Fk(8.3)135 b(Adv)-7 b(anced)44
-b(Con\014guration)i(for)f(QMGR)101 1281 y Fn(1.)d Fm(connection_cont)o
-(rol)o(_h)o(as)o(h_t)o(ab)o(le_)o(si)o(ze)o Fn(:)i(size)33
-b(of)h(the)h(hash)e(table)h(used)g(for)f(connection)g(con)n(trol,)h
-(i.e.,)208 1380 y(n)n(um)n(b)r(er)27 b(of)g(incoming)h(connections)e
-(and)i(connection)f(rate)g(\(see)g(Section)h(3.8,)f(18a)f(and)h(18b\))
-101 1534 y(2.)42 b Fm(debug_level)p Fn(:)32 b(debug)27
-b(lev)n(el)h(\(only)f(if)h(compiled)g(with)g(QMGR)p 2283
-1534 25 4 v 30 w(DEBUG\).)101 1687 y(3.)42 b(subsection)26
-b Fm(DEFEDB)p Fn(:)e(Note:)37 b(The)27 b(Berk)n(eley)e(DB)i(do)r(cumen)
-n(tation)g([Sleb])g(should)f(b)r(e)i(consulted)e(b)r(efore)h(mo)r(d-)
-208 1787 y(ifying)g(an)n(y)g(of)h(these)f(options.)243
-1940 y(\(a\))41 b Fm(page_size)p Fn(:)33 b(DB)28 b(page)f(size)g
-(\(this)i(can)e(only)g(b)r(e)h(set)g(when)f(the)h(DB)g(is)g(initially)f
-(created\).)238 2060 y(\(b\))42 b Fm(cache_size)p Fn(:)33
-b(DB)28 b(cac)n(he)f(size.)247 2181 y(\(c\))42 b Fm(KBytes_written_fo)o
-(r_)o(che)o(ck)o(po)o(int)o(in)o(g)p Fn(:)28 b(If)23
-b(non-zero,)f(a)h(c)n(hec)n(kp)r(oin)n(t)e(will)i(b)r(e)g(done)g(if)g
-(more)e(than)i(the)390 2280 y(amoun)n(t)k(of)h(KBytes)f(of)g(log)g
-(data)g(ha)n(v)n(e)f(b)r(een)j(written)e(since)h(the)g(last)f(c)n(hec)n
-(kp)r(oin)n(t)g(\(unit:)38 b(KB\).)238 2401 y(\(d\))k
-Fm(delay_between_2_c)o(he)o(ckp)o(oi)o(nt)o(s)p Fn(:)31
-b(Minim)n(um)d(dela)n(y)f(b)r(et)n(w)n(een)h(t)n(w)n(o)e(c)n(hec)n(kp)r
-(oin)n(ts)h(\(unit:)38 b(s\).)247 2521 y(\(e\))k Fm(flags)p
-Fn(:)35 b(\015ags)27 b(for)g(DEFEDB:)458 2641 y(i.)41
-b Fm(remove_unused_log)o(fil)o(es)o Fn(:)48 b(this)37
-b(is)e(on)h(b)n(y)g(default,)j(hence)d(to)g(turn)g(it)g(o\013)g(one)g
-(of)g(the)g(forms)545 2741 y(explained)21 b(in)g(Section)f(8.1.1,)h
-(e.g.,)h Fm(dont_remove_unu)o(sed)o(_l)o(ogf)o(il)o(es)o
-Fn(,)17 b(can)j(b)r(e)h(used.)34 b(This)21 b(should)545
-2840 y(only)k(b)r(e)g(done)f(if)h(the)g(Berk)n(eley)e(DB)i(log\014les)e
-(are)h(remo)n(v)n(ed)f(some)h(other)g(w)n(a)n(y)-7 b(,)24
-b(e.g.,)h(after)f(arc)n(hiving.)101 2988 y(4.)42 b Fm(delivery_timeou)o
-(t)p Fn(:)k(timeout)35 b(for)g(a)g(single)f(deliv)n(ery)g(attempt)i
-(\(unit:)53 b(s\).)60 b(This)35 b(v)-5 b(alue)35 b(should)g(b)r(e)g
-(large)208 3087 y(enough)k(that)h(ev)n(en)f(big)g(mails)h(can)f(b)r(e)h
-(deliv)n(ered)f(o)n(v)n(er)f(a)h(slo)n(w)g(link)h(b)r(efore)f(the)h
-(QMGR)g(considers)e(the)208 3187 y(deliv)n(ery)26 b(attempt)i(a)g
-(failure)f(b)r(ecause)g(the)h(deliv)n(ery)e(agen)n(t)h(did)h(not)g
-(return)f(a)g(result)g(y)n(et.)101 3340 y(5.)42 b Fm(flags)p
-Fn(:)34 b(con\014guration)26 b(\015ags:)243 3494 y(\(a\))41
-b Fm(reuse_connection)p Fn(:)f(try)31 b(to)h(reuse)g(op)r(en)g(SMTP)g
-(connections)f(for)h(deliv)n(ery)-7 b(.)49 b(Note:)d(this)33
-b(feature)f(is)390 3594 y(still)c(exp)r(erimen)n(tal.)101
-3747 y(6.)42 b Fm(max_fds)p Fn(:)d(maxim)n(um)30 b(n)n(um)n(b)r(er)g
-(of)g(\014le)h(descriptors.)43 b(This)30 b(sets)g(an)g(upp)r(er)h
-(limit)g(on)f(the)h(n)n(um)n(b)r(er)f(of)g(clien)n(ts)208
-3847 y(that)d(can)h(connect)f(to)h(QMGR.)101 4000 y(7.)42
-b Fm(max_threads)p Fn(:)32 b(maxim)n(um)27 b(n)n(um)n(b)r(er)h(of)f
-(threads.)101 4154 y(8.)42 b Fm(min_threads)p Fn(:)32
-b(minim)n(um)c(n)n(um)n(b)r(er)g(of)f(threads.)101 4307
-y(9.)42 b Fm(scheduler_timeo)o(ut)p Fn(:)30 b(as)c(a)g(safet)n(y)g
-(measure)f(against)g(unforseen)h(problems)g(an)g(item)h(is)f(remo)n(v)n
-(ed)f(from)h(A)n(Q)208 4407 y(after)g(the)h(sp)r(eci\014ed)h(timeout.)
-37 b(This)27 b(timeout)g(m)n(ust)g(b)r(e)g(large)f(enough)g(to)h(allo)n
-(w)f(for)g(sc)n(heduling)h(dela)n(ys)e(if)j(all)208 4506
-y(deliv)n(ery)23 b(agen)n(ts)g(are)g(busy)h(whic)n(h)g(can)g(happ)r(en)
-h(if)f(deliv)n(eries)f(are)g(slo)n(w)h(or)f(if)i(there)f(are)f(few)n
-(er)h(deliv)n(ery)f(agen)n(ts)208 4606 y(a)n(v)-5 b(ailable)26
-b(than)i(en)n(tries)e(in)i(the)g(activ)n(e)f(queue.)60
-4759 y(10.)41 b Fm(SMAR_timeout)p Fn(:)e(timeout)32 b(in)g(address)e
-(resolv)n(er,)h(i.e.,)i(ho)n(w)d(long)h(to)h(w)n(ait)f(for)g(a)g
-(result)g(from)g(SMAR)i(\(unit:)208 4859 y(s\).)46 b(Note:)d(this)31
-b(v)-5 b(alue)31 b(m)n(ust)f(b)r(e)i(larger)c(than)j(the)g(total)g(DNS)
-g(timeout)g(and)g(it)g(m)n(ust)g(tak)n(e)f(alias)g(expansion)208
-4959 y(in)n(to)d(accoun)n(t.)60 5112 y(11.)41 b(subsection)27
-b Fm(smtps)p Fn(:)243 5266 y(\(a\))41 b Fm(connection_contro)o(l_)o
-(cac)o(he)o(_s)o(ize)o Fn(:)31 b(size)c(of)h(connection)f(con)n(trol)f
-(hash)i(table.)60 5419 y(12.)41 b Fm(tests)p Fn(:)46
-b(testing)33 b(only)g(\(a)n(v)-5 b(ailable)32 b(if)i(QMGR)g(is)f
-(compiled)g(with)h Fm(-DQMGR)p 2634 5419 27 4 v 29 w(TEST)p
-Fn(\).)e(See)h(the)h(source)e(co)r(de)h(for)208 5519
-y(details.)1848 5768 y(67)p eop end
-%%Page: 68 69
-TeXDict begin 68 68 bop 0 523 a Fk(8.4)135 b(Adv)-7 b(anced)44
-b(Con\014guration)i(for)f(SMAR)101 758 y Fn(1.)d Fm(DNS)p
-Fn(:)26 b(this)i(subsection)f(con)n(tains)g(DNS)h(related)f(options.)
-243 924 y(\(a\))41 b Fm(flags)p Fn(:)35 b(v)-5 b(alid)28
-b(\015ags)e(are:)458 1055 y(i.)41 b Fm(use_TCP)p Fn(:)27
-b(use)i(TCP)f(instead)h(of)g(UDP)h(for)e(connections)g(to)h(a)g
-(nameserv)n(er.)39 b(Note:)h(curren)n(tly)28 b(the)545
-1155 y(DNS)k(resolv)n(er)c(do)r(es)i(not)g(automatically)f(fall)h(bac)n
-(k)g(to)g(a)g(TCP)g(connection)f(if)i(the)g(reply)f(w)n(as)f(to)r(o)545
-1255 y(big.)37 b(This)28 b(ma)n(y)f(b)r(e)h(added)f(in)h(a)f(later)g(v)
-n(ersion.)435 1370 y(ii.)41 b Fm(use_connect)p Fn(:)28
-b(use)18 b Fm(connect\(2\))d Fn(ev)n(en)j(if)h(using)f(UDP)-7
-b(.)18 b(This)h(is)f(required)f(on)h(systems)g(lik)n(e)g(F)-7
-b(reeBSD)545 1470 y Fm(jail\(8\))p Fn(.)101 1635 y(2.)42
-b Fm(max_fds)p Fn(:)d(maxim)n(um)30 b(n)n(um)n(b)r(er)g(of)g(\014le)h
-(descriptors.)43 b(This)30 b(sets)g(an)g(upp)r(er)h(limit)g(on)f(the)h
-(n)n(um)n(b)r(er)f(of)g(clien)n(ts)208 1734 y(that)d(can)h(connect)f
-(to)h(SMAR.)101 1899 y(3.)42 b Fm(max_threads)p Fn(:)32
-b(maxim)n(um)27 b(n)n(um)n(b)r(er)h(of)f(threads.)101
-2064 y(4.)42 b Fm(min_threads)p Fn(:)32 b(minim)n(um)c(n)n(um)n(b)r(er)
-g(of)f(threads.)0 2392 y Fk(8.5)135 b(Adv)-7 b(anced)44
-b(Con\014guration)i(for)f(SMTP)e(Serv)l(er)101 2628 y
-Fn(1.)f Fm(daemon_address)p Fn(:)g(address)32 b(for)h(daemon)f(to)h
-(listen)h(on;)i(this)d(should)g(not)g(b)r(e)h(used)f(in)g(normal)g(op)r
-(eration.)208 2727 y(Curren)n(t)23 b(\(preliminary\))h(format)g(is:)35
-b Fm(host:port)p Fn(,)21 b Fm(:port)i Fn(\(listen)h(on)g(0.0.0.0\))f
-Fm(host)g Fn(\(p)r(ort)h(defaults)h(to)f(8000\).)208
-2827 y(Up)k(to)f(16)g(addresses)896 2797 y Fi(1)959 2827
-y Fn(can)g(b)r(e)h(sp)r(eci\014ed.)37 b(See)28 b(the)g(notes)f(b)r(elo)
-n(w.)101 2992 y(2.)42 b Fm(flags)p Fn(:)243 3157 y(\(a\))f
-Fm(background)p Fn(:)33 b Fm(fork\(2\))25 b Fn(after)i(start;)g(this)h
-(should)f(not)h(b)r(e)g(used)g(in)f(normal)g(op)r(eration.)238
-3289 y(\(b\))42 b Fm(serialize_accept)p Fn(:)29 b(serialize)24
-b Fm(accept\(2\))d Fn(calls,)j(see)h(the)g(statethreads)f(do)r(cumen)n
-(tation)g([SGI01)o(])h(for)390 3388 y(details.)101 3553
-y(3.)42 b Fm(listen_queue)p Fn(:)30 b(length)23 b(of)h
-Fm(listen\(2\))19 b Fn(queue;)25 b(this)f(m)n(ust)g(not)f(b)r(e)h(used)
-g(in)g(normal)e(op)r(eration,)h(i.e.,)i(if)f(MCP)208
-3653 y(is)j(used.)101 3818 y(4.)42 b Fm(max_wait_thread)o(s)p
-Fn(:)31 b(maxim)n(um)c(n)n(um)n(b)r(er)h(of)f(w)n(aiting)g(threads.)101
-3983 y(5.)42 b Fm(min_wait_thread)o(s)p Fn(:)31 b(minim)n(um)d(n)n(um)n
-(b)r(er)g(of)f(w)n(aiting)g(threads.)101 4148 y(6.)42
-b Fm(module_timeout)p Fn(:)31 b(timeout)d(for)f(comm)n(unication)g
-(with)h(other)f(mo)r(dules.)101 4313 y(7.)42 b Fm(processes)p
-Fn(:)33 b(n)n(um)n(b)r(er)27 b(of)h(pro)r(cesses)e(to)h(start.)101
-4478 y(8.)42 b Fm(tls)p Fn(:)243 4643 y(\(a\))f Fm(DSA_cert_file)p
-Fn(:)32 b(\014le)c(with)g(DSA)g(certi\014cate)f(in)h(PEM)f(format.)238
-4775 y(\(b\))42 b Fm(DSA_key_file)p Fn(:)32 b(\014le)c(with)g(priv)-5
-b(ate)27 b(k)n(ey)g(for)g(DSA)i(certi\014cate)e(in)h(PEM)e(format.)101
-4940 y(9.)42 b Fm(wait_for_smar)p Fn(:)31 b(maxim)n(um)d(amoun)n(t)f
-(of)g(time)h(to)g(w)n(ait)f(for)g(a)g(reply)g(from)h(SMAR.)0
-5174 y(Notes:)44 b(only)32 b(one)f(of)g Fm(daemon_address)26
-b Fn(and)31 b Fm(pass_fd_socket)26 b Fn(m)n(ust)32 b(b)r(e)f(sp)r
-(eci\014ed.)49 b(In)32 b(normal)e(op)r(eration)h(it)h(is)0
-5274 y(almost)26 b(alw)n(a)n(ys)f Fm(pass_fd_socket)c
-Fn(b)r(ecause)27 b(the)g(SMTP)f(serv)n(er)f(cannot)i(bind)g(to)g
-(privileged)f(p)r(orts,)g(hence)h(the)g(\014le)0 5373
-y(descriptor)f(m)n(ust)i(b)r(e)g(passed)f(from)g(MCP)-7
-b(.)p 0 5442 1512 4 v 92 5495 a Fh(1)127 5519 y Fg(Compile)23
-b(time)h(option)h Fe(SS)p 860 5519 22 4 v 26 w(MAX)p
-991 5519 V 26 w(BIND)p 1157 5519 V 26 w(ADDRS)1848 5768
-y Fn(68)p eop end
-%%Page: 69 70
-TeXDict begin 69 69 bop 0 523 a Fk(8.6)135 b(Adv)-7 b(anced)44
-b(Con\014guration)i(for)f(SMTP)e(Clien)l(t)101 758 y
-Fn(1.)f Fm(connect_only_to)o Fn(:)35 b(Sp)r(ecify)29
-b(an)g(IP)g(address)f(to)h(whic)n(h)g(all)g(outgoing)f(mail)i(is)f(sen)
-n(t.)41 b(This)29 b(can)g(b)r(e)h(used)f(for)208 858
-y(testing)35 b(with)g(otherwise)f(real)g(data,)j(i.e.,)g(addresses,)e
-(b)n(y)g(running)f(an)h(SMTP)g(sink)2998 828 y Fi(2)3070
-858 y Fn(on)g(a)f(computer)h(and)208 958 y(sp)r(ecifying)25
-b(its)g(IP)g(address.)35 b(Then)25 b(all)g(mails)g(that)g(should)g(b)r
-(e)h(sen)n(t)f(via)g(SMTP)g(will)g(go)f(to)h(that)h(host)f(instead)208
-1057 y(of)j(the)g(addresses)e(determined)j(b)n(y)e(SMAR.)i(Note:)38
-b(it)28 b(is)g(nev)n(ertheless)f(a)h(go)r(o)r(d)f(idea)h(to)g(use)f
-(\014rew)n(all)g(rules)h(to)208 1157 y(prev)n(en)n(t)e(mail)i(going)e
-(out)i(to)f(the)h(in)n(ternet,)g(i.e.,)g(prohibit)f(connections)g(to)g
-(p)r(ort)h(25)f(to)g(external)g(hosts.)101 1323 y(2.)42
-b Fm(debug_level)p Fn(:)32 b(debug)27 b(lev)n(el)h(\(only)f(if)h
-(compiled)g(with)g(SMTPC)p 2315 1323 25 4 v 29 w(DEBUG\).)101
-1489 y(3.)42 b Fm(flags)p Fn(:)243 1655 y(\(a\))f Fm(read_QUIT_reply)p
-Fn(:)30 b(read)23 b(the)j(reply)e(to)h(the)g Fm(QUIT)e
-Fn(command)h(instead)h(of)g(just)g(closing)f(the)h(connection)390
-1755 y(after)i(sending)h(it.)238 1888 y(\(b\))42 b Fm
-(separate_final_do)o(t_)o(and)o(_Q)o(UI)o(T)p Fn(:)27
-b(send)32 b(the)h(\014nal)g(dot)g(of)f(a)g(message)g(and)g(the)h
-Fm(QUIT)e Fn(command)h(in)390 1987 y(di\013eren)n(t)k(TCP)e(pac)n(k)-5
-b(ages)34 b(ev)n(en)h(if)g Fm(PIPELINING)d Fn(is)j(o\013ered.)59
-b(This)35 b(can)g(a)n(v)n(oid)f(problems)g(with)i(some)390
-2087 y(brok)n(en)27 b(serv)n(ers)e(or)i(\014rew)n(alls.)247
-2220 y(\(c\))42 b Fm(talk_to_myself)p Fn(:)g(do)33 b(not)g(c)n(hec)n(k)
-f(whether)h(serv)n(er)e(greets)h(with)i(the)f(hostname)g(of)g(the)g
-(mac)n(hine)g(on)390 2319 y(whic)n(h)28 b(sm)n(tp)r(c)g(runs.)101
-2485 y(4.)42 b Fm(max_wait_thread)o(s)p Fn(:)31 b(maxim)n(um)c(n)n(um)n
-(b)r(er)h(of)f(w)n(aiting)g(threads.)101 2651 y(5.)42
-b Fm(min_wait_thread)o(s)p Fn(:)31 b(minim)n(um)d(n)n(um)n(b)r(er)g(of)
-f(w)n(aiting)g(threads.)101 2817 y(6.)42 b Fm(module_timeout)p
-Fn(:)31 b(timeout)d(for)f(comm)n(unication)g(with)h(QMGR.)101
-2983 y(7.)42 b Fm(remote_port)p Fn(:)51 b(p)r(ort)38
-b(to)f(whic)n(h)g(connections)g(should)g(b)r(e)g(made.)66
-b(Note:)57 b(if)37 b(m)n(ultiple)h(SMTP)f(clien)n(ts)h(are)208
-3083 y(sp)r(eci\014ed,)31 b(all)f(of)h(them)g Fd(must)e
-Fn(use)h(the)h(same)f(v)-5 b(alue)30 b(for)g Fm(remote_port)p
-Fn(.)41 b(Curren)n(tly)30 b(the)g(sc)n(heduler)g(requires)208
-3183 y(that)25 b(all)g(SMTP)h(clien)n(ts)f(b)r(eha)n(v)n(e)f(the)i
-(same.)36 b(If)26 b(di\013eren)n(t)f(p)r(orts)g(are)f(required,)h(then)
-h(those)f(m)n(ust)h(b)r(e)g(listed)f(in)208 3282 y(mailertable)h(en)n
-(tries.)101 3448 y(8.)42 b Fm(tls)p Fn(:)243 3614 y(\(a\))f
-Fm(DSA_cert_file)p Fn(:)32 b(\014le)c(with)g(DSA)g(certi\014cate)f(in)h
-(PEM)f(format.)238 3747 y(\(b\))42 b Fm(DSA_key_file)p
-Fn(:)32 b(\014le)c(with)g(priv)-5 b(ate)27 b(k)n(ey)g(for)g(DSA)i
-(certi\014cate)e(in)h(PEM)e(format.)p 0 5441 1512 4 v
-92 5495 a Fh(2)127 5519 y Fg(F)-6 b(or)23 b(example,)h
-Fe(statethreads/examples/)q(smt)q(ps2)1848 5768 y Fn(69)p
-eop end
-%%Page: 70 71
-TeXDict begin 70 70 bop 0 1199 a Fl(Chapter)65 b(9)0
-1668 y Fp(T)-19 b(uning)0 2203 y Fk(9.1)135 b(Size)45
-b(of)h(Queues,)f(Cac)l(hes,)h(and)f(Databases)0 2439
-y Fn(All)21 b(data)e(structures)h(in)g(QMGR)h(ha)n(v)n(e)e(some)g
-(maxim)n(um)i(size.)34 b(This)20 b(is)g(not)g(just)h(done)f(to)g(a)n(v)
-n(oid)f(resource)f(exhaustion)0 2538 y(in)23 b(high)g(load)f
-(situations)h(but)h(also)e(to)g(pro)n(vide)g(a)h(feedbac)n(k)f(lo)r(op)
-h(b)r(et)n(w)n(een)g(SMTP)g(serv)n(ers)e(\(pro)r(ducers\))h(and)h(SMTP)
-0 2638 y(clien)n(ts)35 b(\(consumers\).)59 b(This)35
-b(feedbac)n(k)g(lo)r(op)g(helps)g(to)g(a)n(v)n(oid)f(\015o)r(o)r(ding)h
-(the)g(system)g(with)h(mails)f(that)g(it)h(cannot)0 2738
-y(deliv)n(er)c(fast)h(enough.)51 b(The)33 b(incoming)f(queue)h
-(\(IQDB\))g(and)f(the)h(activ)n(e)f(queue)h(\(A)n(Q\))g(implemen)n(t)g
-(this)g(feedbac)n(k)0 2837 y(lo)r(op.)41 b(As)29 b(explained)g(in)g
-(Section)g(7.1)f(the)i(data)e(from)h(the)h(SMTP)e(serv)n(ers)f(is)i
-(stored)f(in)i(the)f(incoming)g(queue)g(\014rst)0 2937
-y(whic)n(h)e(has)g(a)g(\014xed)g(size.)37 b(If)28 b(more)e(data)h(is)g
-(pro)r(duced)g(than)h(tak)n(en)e(out)i(\(b)n(y)f(the)h(sc)n(heduler)e
-(in)n(to)h(the)h(activ)n(e)e(queue\))0 3036 y(the)d(queue)g(will)h
-(\014ll)f(up)h(and)f(the)g(QMGR)g(will)g(throttle)h(the)f(SMTP)g(serv)n
-(ers)e(b)n(y)i(dynamically)f(reducing)g(the)i(n)n(um)n(b)r(er)0
-3136 y(of)30 b(a)n(v)-5 b(ailable)29 b(threads.)44 b(Throttling)29
-b(the)i(SMTP)f(serv)n(ers)e(is)i(done)f(based)h(on)g(v)-5
-b(arious)29 b(resources,)f(e.g.,)j(IQDB,)f(A)n(Q,)0 3236
-y(a)n(v)-5 b(ailable)27 b(disk)g(space,)h(and)g(m)n(uc)n(h)f(more.)37
-b(Hence)28 b(b)n(y)g(limiting)g(the)h(size)e(of)h(IQDB)g(\(see)g
-(Section)g(3.8,)f(item)h(8a\))g(and)0 3335 y(of)k(course)e(the)j(maxim)
-n(um)e(n)n(um)n(b)r(er)h(of)g(threads)f(in)h(the)g(SMTP)g(serv)n(ers)e
-(the)i(incoming)f(\015o)n(w)h(of)g(messages)e(can)h(b)r(e)0
-3435 y(con)n(trolled.)59 b(The)36 b(size)f(of)g(IQDB)h(should)f(b)r(e)h
-(greater)d(than)j(the)g(maxim)n(um)f(n)n(um)n(b)r(er)g(of)h(threads)e
-(in)i(the)g(SMTP)0 3535 y(serv)n(ers)28 b(m)n(ultiplied)k(b)n(y)e(the)h
-(a)n(v)n(erage)c(n)n(um)n(b)r(er)k(of)f(recipien)n(ts,)h(otherwise)e
-(transaction)h(will)g(b)r(e)h(rejected)g(b)r(efore)f(all)0
-3634 y(threads)d(are)f(busy)-7 b(.)0 3787 y(The)30 b(activ)n(e)f(queue)
-h(should)f(b)r(e)h(large)f(enough)g(to)h(pro)n(vide)e(enough)h(w)n(ork)
-g(for)g(all)h(SMTP)f(clien)n(ts)h(\(threads\))g(and)f(it)0
-3887 y(m)n(ust)j(b)r(e)h(larger)d(than)j(the)f(largest)f(n)n(um)n(b)r
-(er)h(of)g(recipien)n(ts)g(accepted)g(b)n(y)g(a)f(single)h(transaction)
-f(\(see)h(Section)g(3.8,)0 3987 y(item)c(1\).)0 4313
-y Fk(9.2)135 b(Disk)46 b(I/O)0 4549 y Fn(In)36 b(most)g(MT)-7
-b(As)37 b(disk)f(I/O)f(is)h(the)h(limiting)f(factor)g(unless)g(sp)r
-(ecial)f(hardw)n(are)f(is)j(used)f(whic)n(h)g(emplo)n(ys)f(battery)0
-4648 y(bac)n(k)n(ed)24 b(RAM)j(cac)n(he)d(to)i(ac)n(hiev)n(e)e(high)h
-(I/O)g(rates)g(\(IOP:)g(I/O)g(op)r(erations\).)35 b(If)26
-b(m)n(ultiple)g(disks)f(are)g(a)n(v)-5 b(ailable,)24
-b(they)0 4748 y(can)j(b)r(e)h(used)g(to)f(spread)g(the)h(load.)36
-b(Disk)28 b(\014les)f(\(see)h(Section)f(2.4.1\))g(are)g(used)g(for:)101
-4974 y(1.)42 b(IBDB:)27 b(the)h(directory)f(can)g(b)r(e)h(link)n(ed)f
-(to)h(a)f(di\013eren)n(t)h(disk.)101 5137 y(2.)42 b(DEFEDB:)31
-b(the)h(base)f(directory)f(can)h(b)r(e)h(c)n(hanged)f(via)g(an)g
-(option)g(\(Section)h(3.8,)g(item)g(4a\),)g(as)f(w)n(ell)g(as)g(the)208
-5236 y(directory)26 b(for)h(log\014les)g(\(Section)g(3.8,)g(item)h
-(4b\).)101 5398 y(3.)42 b(CDB:)28 b(the)g(base)f(directory)g(can)g(b)r
-(e)i(c)n(hanged)d(via)i(an)f(option)h(\(see)g(Section)f(3.4,)h(item)g
-(2\).)37 b(Individual)28 b(sub)r(di-)208 5498 y(rectories)e(\(see)h
-(Section)h(2.4.1\))e(can)h(b)r(e)h(link)n(ed)g(to)f(di\013eren)n(t)h
-(disks.)1848 5768 y(70)p eop end
-%%Page: 71 72
-TeXDict begin 71 71 bop 0 523 a Fk(9.3)135 b(Pro)t(cesses)46
-b(and)e(Threads)0 758 y Fn(The)32 b(main)g(MeT)-7 b(A1)31
-b(pro)r(cesses)g(are)g(m)n(ulti-threaded.)49 b(Ho)n(w)n(ev)n(er,)31
-b(t)n(w)n(o)g(di\013eren)n(t)h(threading)f(implemen)n(tations)h(are)0
-858 y(used:)62 b(POSIX)39 b(threads)h(\(pthreads\))g(for)f(QMGR)h(and)g
-(SMAR)h(and)f(statethreads)f([SGI01)o(])h(for)g(SMTP)f(serv)n(er)0
-958 y(and)d(clien)n(t.)61 b(Statethreads)35 b(only)h(switc)n(h)f(b)r
-(et)n(w)n(een)h(threads)f(on)g(net)n(w)n(ork)g(I/O)g(op)r(erations)f
-(as)h(it)h(is)g(a)f(threading)0 1057 y(implemen)n(tation)29
-b(in)h(user)e(space)h(without)g(k)n(ernel)f(supp)r(ort.)42
-b(Hence)29 b(op)r(erations)f(that)h(can)g(tak)n(e)g(a)f(long)h(time,)h
-(e.g.,)0 1157 y(computations)g(for)g(asymmetric)g(cryptograph)n(y)e
-(\(as)i(required)f(during)h(the)h(ST)-7 b(AR)g(TTLS)31
-b(handshak)n(e\))f(or)f(in)i(some)0 1257 y(cases)23 b(ev)n(en)h(sync)n
-(hronous)f(disk)h(I/O,)g(will)g(not)h(just)g(stop)f(a)g(single)g
-(thread)g(but)h(the)f(en)n(tire)g(pro)r(cess.)35 b(If)25
-b(this)g(happ)r(ens)0 1356 y(it)33 b(is)g(p)r(ossible)f(to)g(start)g(m)
-n(ultiple)i(SMTP)e(serv)n(ers,)g(see)g(Section)h(8.5,)g(item)g(7.)51
-b(If)34 b(it)f(b)r(ecomes)f(necessary)f(to)h(start)0
-1456 y(m)n(ultiple)c(SMTP)g(clien)n(ts,)f(then)h(the)g(MCP)f(can)h(b)r
-(e)g(instructed)f(to)h(do)f(so,)g(see)g(Section)h(8.2,)f(item)h(1.)1848
-5768 y(71)p eop end
-%%Page: 72 73
-TeXDict begin 72 72 bop 0 1199 a Fl(Chapter)65 b(10)0
-1668 y Fp(F)-19 b(ormat)77 b(Sp)6 b(eci\014cations)0
-2203 y Fk(10.1)136 b(So)t(c)l(k)l(et)45 b(Map)0 2439
-y Fn(The)34 b(so)r(c)n(k)n(et)g(map)g(uses)g(a)f(simple)i
-(request/reply)d(proto)r(col)i(o)n(v)n(er)e(TCP)i(or)f(UNIX)i(domain)f
-(so)r(c)n(k)n(ets)f(to)h(query)g(an)0 2538 y(external)28
-b(serv)n(er.)40 b(Both)29 b(requests)g(and)g(replies)f(are)g(text)i
-(based)f(and)g(enco)r(ded)g(as)f(netstrings,)h(i.e.,)h(a)f(string)f
-(\\hello)0 2638 y(there")f(b)r(ecomes:)0 2874 y Fm(11:hello)40
-b(there,)0 3110 y Fn(Note:)d(neither)28 b(requests)e(nor)h(replies)g
-(end)h(with)g(CRLF.)0 3264 y(The)g(request)f(consists)f(of)i(the)g
-(database)e(map)i(name)f(and)h(the)g(lo)r(okup)f(k)n(ey)g(separated)f
-(b)n(y)h(a)g(space)g(c)n(haracter:)0 3417 y Fd(mapname)i
-Fn(')e(')h Fd(key)0 3570 y Fn(The)g(serv)n(er)d(resp)r(onds)i(with)h(a)
-f(status)h(indicator)f(and)g(the)h(result)f(\(if)i(an)n(y\):)0
-3723 y Fd(status)e Fn(')g(')h Fd(r)l(esult)0 3877 y Fn(The)g(status)f
-(indicator)g(is)g(one)g(of)h(the)g(follo)n(wing)f(upp)r(er)g(case)g(w)n
-(ords:)50 4024 y Fm(OK)360 b Fn(the)28 b(k)n(ey)f(w)n(as)g(found,)h
-(result)f(con)n(tains)g(the)h(lo)r(ok)n(ed)e(up)i(v)-5
-b(alue)50 4124 y Fm(NOTFOUND)96 b Fn(the)28 b(k)n(ey)f(w)n(as)g(not)g
-(found,)h(the)g(result)f(is)h(empt)n(y)50 4224 y Fm(TEMP)272
-b Fn(a)27 b(temp)r(orary)g(failure)g(o)r(ccured)50 4323
-y Fm(TIMEOUT)140 b Fn(a)27 b(timeout)h(o)r(ccured)f(on)h(the)g(serv)n
-(er)d(side)50 4423 y Fm(PERM)272 b Fn(a)27 b(p)r(ermanen)n(t)h(failure)
-f(o)r(ccured)0 4577 y(In)h(case)f(of)g(errors)e(\(status)j
-Fm(TEMP)p Fn(,)e Fm(TIMEOUT)f Fn(or)i Fm(PERM)p Fn(\))f(the)i(result)f
-(\014eld)h(ma)n(y)f(con)n(tain)g(an)g(explanatory)f(message.)0
-4730 y(Example)h(replies:)0 4967 y Fm(31:OK)42 b(resolved.addres)o(s@)o
-(exa)o(mp)o(le.)o(co)o(m,)0 5203 y Fn(in)28 b(case)f(of)g(a)g
-(successful)h(lo)r(okup,)f(or:)0 5439 y Fm(8:NOTFOUND,)1848
-5768 y Fn(72)p eop end
-%%Page: 73 74
-TeXDict begin 73 73 bop 0 523 a Fn(in)28 b(case)f(the)h(k)n(ey)e(w)n
-(as)h(not)h(found,)g(or:)0 759 y Fm(55:TEMP)41 b(this)h(text)g
-(explains)e(that)i(we)h(had)f(a)h(temporary)d(failure,)0
-996 y Fn(in)28 b(case)f(of)g(a)g(failure.)0 1324 y Fk(10.2)136
-b(F)-11 b(ormat)45 b(of)g(Session/T)-11 b(ransaction)46
-b(Iden)l(ti\014ers)0 1559 y Fn(The)24 b(format)f(of)h(session)f(and)g
-(transaction)g(iden)n(ti\014ers)g(is)h(sp)r(eci\014ed)g(in)g
-Fm(include/sm/mta.h)p Fn(.)29 b(F)-7 b(or)24 b(the)g(SMTP)f(serv)n(er)0
-1659 y(it)30 b(consists)f(of)h(a)f(leading)h('S',)g(a)f(64)g(bit)h
-(coun)n(ter)f(and)h(an)f(8)h(bit)g(\\pro)r(cess")e(iden)n(ti\014er,)i
-(b)r(oth)g(of)g(whic)n(h)g(are)f(prin)n(ted)0 1758 y(in)g(hexadecimal)g
-(format.)41 b(F)-7 b(or)28 b(the)i(SMTP)f(clien)n(t)g(it)g(consists)g
-(of)g(a)f(leading)h('C',)g(an)g(8)g(bit)h(\\pro)r(cess")d(iden)n
-(ti\014er,)i(a)0 1858 y(32)e(bit)h(coun)n(ter,)f(and)g(a)g(32)g(bit)h
-(thread)f(index,)h(all)f(of)h(whic)n(h)f(are)g(prin)n(ted)g(in)h
-(hexadecimal)f(format.)0 2011 y(Examples:)36 b Fm(S00000000407CE49)o
-(20)o(0)p Fn(,)22 b Fm(C010000137D0000)o(000)o(0)p Fn(.)0
-2165 y(SMTP)35 b(serv)n(er)e(session/transaction)g(iden)n(ti\014ers)h
-(are)h(unique)g(un)n(til)h(the)f(64)f(bit)i(coun)n(ter)f(wraps)f
-(around,)i(SMTP)0 2264 y(clien)n(t)28 b(session/transaction)c(iden)n
-(ti\014ers)k(are)e(unique)i(only)f(within)h(a)g(single)f(in)n(v)n(o)r
-(cation)f(of)i(QMGR.)0 2417 y(Note:)36 b(the)25 b(format)f(ma)n(y)h(c)n
-(hange)e(b)r(et)n(w)n(een)i(di\013eren)n(t)g(release)f(of)h(MeT)-7
-b(A1,)25 b(hence)g(the)h(iden)n(ti\014ers)e(should)h(b)r(e)g(consid-)0
-2517 y(ered)i(opaque.)0 2845 y Fk(10.3)136 b(Log\014le)45
-b(F)-11 b(ormat)0 3081 y Fn(The)30 b(general)e(format)h(of)g(en)n
-(tries)g(in)h(a)f(log\014le)g(is)g(a)g(sequence)g(of)h(named)f
-(\014elds)h(whic)n(h)f(are)g(separated)f(b)n(y)h(commas.)0
-3180 y(Eac)n(h)c(\014eld)i(consists)f(of)g(a)g(name,)h(an)f(equal)g
-(sign,)g(and)h(a)f(v)-5 b(alue.)36 b(If)27 b(the)g(v)-5
-b(alue)26 b(is)h(a)f(text)h(\014eld)f(that)h(is)g(receiv)n(ed)e(from)0
-3280 y(an)k(external)f(\(un)n(trusted\))i(source,)f(then)g(all)g
-(non-prin)n(table)f(c)n(haracters,)g(commas,)h(and)g(p)r(ercen)n(t)g
-(signs)f(are)g(sho)n(wn)0 3380 y(as)f(their)g(t)n(w)n(o)g(digit)h
-(hexadecimal)f(ASCI)r(I)h(represen)n(tation)e(with)i(a)f(leading)g(p)r
-(ercen)n(t)h(sign.)36 b(F)-7 b(or)27 b(example,)g(the)h(text)0
-3599 y Fm(550)42 b(5.7.1)g(no,)g(not)h(now,)e(99\045)i(usage)0
-3819 y Fn(is)27 b(enco)r(ded)h(as)0 4039 y Fm(550)42
-b(5.7.1)g(no\0452C)f(not)i(now\0452C)e(99\04525)g(usage)0
-4258 y Fn(This)29 b(enco)r(ding)f(allo)n(ws)f(a)i(log\014le)f(analyzer)
-f(to)i(use)f(the)h(comma)f(sym)n(b)r(ol)h(as)f(a)g(delimiter)h(of)g
-(\014elds)g(without)g(ha)n(ving)0 4358 y(to)34 b(p)r(erform)g
-(complicated)g(parsing,)h(e.g,)g(the)g(Unix)f Fm(awk)g
-Fn(utilit)n(y)g(can)g(b)r(e)h(used)f(with)h(comma)f(as)f(\014eld)i
-(separator.)0 4457 y(Note:)42 b(suggestions)28 b(for)i(a)f(b)r(etter)i
-(enco)r(ding)f(or)f(di\013eren)n(t)h(solution)f(for)h(the)g(problem)g
-(are)f(w)n(elcome)g(\(more)h(details)0 4557 y(can)d(b)r(e)h(found)g(in)
-g([A\031m)n(b]\).)0 4710 y(Log\014les)e(use)h(the)g(iden)n(ti\014ers)g
-(describ)r(ed)f(earlier)g(suc)n(h)h(that)g(transactions)e(and)i
-(sessions)f(can)g(b)r(e)i(easily)e(recognized.)0 4810
-y(F)-7 b(or)27 b(the)h(follo)n(wing)e(examples)h(log\014le)g(en)n
-(tries)g(ha)n(v)n(e)g(b)r(een)h(sligh)n(tly)f(edited)h(and)f(line)h
-(breaks)e(ha)n(v)n(e)h(b)r(een)h(inserted.)0 4963 y(Here)f(is)h(one)f
-(example)g(of)h(a)f(session)f(in)i(an)g(SMTP)f(serv)n(er:)0
-5199 y Fm(ss_sess=S0000000)o(040)o(7E)o(AE)o(380)o(0,)37
-b(client_ipv4=127.)o(0.0)o(.1)o(,)87 5299 y(client_name=local)o(ho)o
-(st)o(.en)o(dm)o(ail)o(.o)o(rg.)0 5399 y(ss_sess=S0000000)o(040)o(7E)o
-(AE)o(380)o(0,)g(where=connection)o(,)h(starttls=succes)o(sfu)o(l)0
-5498 y(ss_sess=S0000000)o(040)o(7E)o(AE)o(380)o(0,)f(ss_ta=S000000004)o
-(07E)o(AE)o(4E)o(00,)1848 5768 y Fn(73)p eop end
-%%Page: 74 75
-TeXDict begin 74 74 bop 87 523 a Fm(mail=<SENDER@meta)o(1.)o(or)o(g>,)
-37 b(stat=0)0 623 y(ss_sess=S0000000)o(040)o(7E)o(AE)o(380)o(0,)g
-(ss_ta=S000000004)o(07E)o(AE)o(4E)o(00,)87 722 y(rcpt=<RECIPIENT@m)o
-(et)o(a1)o(.or)o(g>)o(,)h(idx=0,)j(stat=0)0 822 y(ss_sess=S0000000)o
-(040)o(7E)o(AE)o(380)o(0,)c(ss_ta=S000000004)o(07E)o(AE)o(4E)o(00,)87
-922 y(rcpt=<SOMEONE@SOM)o(E.)o(DO)o(MAI)o(N>)o(,)h(idx=1,)j(stat=0)0
-1021 y(ss_sess=S0000000)o(040)o(7E)o(AE)o(380)o(0,)c(ss_ta=S000000004)o
-(07E)o(AE)o(4E)o(00,)87 1121 y(msgid=<2004091605)o(04)o(57)o(.GG)o(54)o
-(961)o(@e)o(ndm)o(ai)o(l.)o(org)o(>,)g(size=1177,)i(stat=0)0
-1357 y Fn(The)31 b(\014rst)g(en)n(try)g(sho)n(ws)f(a)g(successful)h
-(session)f(creation)g(including)i(the)f(IPv4)f(address)g(and)h(the)h
-(hostname)e(of)h(the)0 1457 y(clien)n(t.)48 b(The)31
-b(second)g(en)n(try)f(indicates)h(that)h(ST)-7 b(AR)g(TTLS)32
-b(has)e(b)r(een)i(used.)48 b(A)31 b(new)g(transaction)f(is)h(sho)n(wn)g
-(in)g(the)0 1556 y(third)36 b(en)n(try)e(and)i(t)n(w)n(o)e(recipien)n
-(ts)h(are)f(giv)n(en)h(thereafter)g(\(along)f(with)i(the)g(index)f
-Fm(idx)p Fn(\).)59 b(The)36 b(last)f(en)n(try)g(sho)n(ws)0
-1656 y(that)28 b(the)h(transaction)d(w)n(as)h(successful)h(\()p
-Fm(status=0)p Fn(;)d(0)j(is)g(used)g(instead)f(of)h(250)f(or)g(other)h
-(SMTP)f(reply)h(co)r(des)f(that)0 1756 y(indicate)h(success\))f(and)g
-(the)h(size)f(of)h(the)g(receiv)n(ed)e(mail)i(\(in)g(b)n(ytes\))g(as)e
-(w)n(ell)i(as)f(its)h(Message-Id.)0 1909 y(Here)f(is)h(one)f(example)g
-(of)h(a)f(session)f(in)i(an)g(SMTP)f(clien)n(t:)0 2145
-y Fm(da_sess=C0100000)o(6C8)o(00)o(00)o(000)o(2,)37 b(status=connected)
-o(,)h(port=25,)i(addr=64.81.247.3)o(6)0 2245 y(da_sess=C0100000)o(6C8)o
-(00)o(00)o(000)o(2,)d(where=connection)o(,)h(starttls=succes)o(sfu)o(l)
-0 2344 y(da_sess=C0100000)o(6C8)o(00)o(00)o(000)o(2,)f
-(da_ta=C01000006C)o(900)o(00)o(00)o(02,)87 2444 y(ss_ta=S0000000040)o
-(7E)o(AE)o(4E0)o(0,)g(mail=<SENDER@met)o(a1.)o(or)o(g>)o(,)h(stat=0,)87
-2544 y(reply=250)i(2.5.0)i(MAIL)f(command)g(succeeded)0
-2643 y(da_sess=C0100000)o(6C8)o(00)o(00)o(000)o(2,)c(da_ta=C01000006C)o
-(900)o(00)o(00)o(02,)87 2743 y(ss_ta=S0000000040)o(7E)o(AE)o(4E0)o(0,)g
-(rcpt=<RECIPIENT@)o(met)o(a1)o(.o)o(rg>)o(,)g(stat=0,)87
-2842 y(reply=250)j(2.1.5)i(RCPT)f(ok)0 2942 y(da_sess=C0100000)o(6C8)o
-(00)o(00)o(000)o(2,)c(da_ta=C01000006C)o(900)o(00)o(00)o(02,)87
-3042 y(ss_ta=S0000000040)o(7E)o(AE)o(4E0)o(0,)g(where=final_dot,)g
-(size=1177,)i(stat=0)0 3278 y Fn(This)32 b(is)g(v)n(ery)e(similar)h(to)
-h(the)g(format)g(of)f(the)i(en)n(tries)e(en)n(tries)g(in)h(the)g(SMTP)g
-(serv)n(er)e(and)i(should)f(not)h(require)f(an)0 3378
-y(explanation.)j(In)23 b(addition)f(to)h(the)f(deliv)n(ery)g(agen)n(t)f
-(session)h(and)g(transaction)f(ids)h(\()p Fm(da)p 2763
-3378 27 4 v 31 w(sess)f Fn(and)h Fm(da)p 3235 3378 V
-31 w(ta)p Fn(\))g(the)h(SMTP)0 3477 y(serv)n(er)28 b(transaction)g(id)i
-(\()p Fm(ss)p 903 3477 V 30 w(ta)p Fn(\))f(is)h(logged)e(to)r(o.)42
-b(This)30 b(mak)n(es)e(it)i(simple)g(to)f(trac)n(k)f(a)h(message)f
-(through)h(the)h(MT)-7 b(A.)0 3577 y(Ob)n(viously)31
-b Fm(ss)p 488 3577 V 30 w(ta)g Fn(can)h(b)r(e)h(used)f(for)f(m)n
-(ultiple)i(outgoing)d(messages)h(if)h(the)h(incoming)e(message)g(has)g
-(b)r(een)i(sen)n(t)f(to)0 3676 y(m)n(ultiple)k(recipien)n(ts)f(\(ma)n
-(yb)r(e)g(indirectly)h(via)e(an)i(alias\),)g(hence)g(this)g(is)f(not)g
-(a)g(unique)h(iden)n(ti\014er)f(in)h(the)g(SMTP)0 3776
-y(clien)n(t)28 b(log.)0 3929 y(QMGR)g(can)f(also)f(log)h(the)h(dela)n
-(y)f(time)h(for)f(eac)n(h)g(recipien)n(t,)g(e.g.,)0 4149
-y Fm(func=q_upd_rcpt_)o(ok,)37 b(rcpt_id=S0000000)o(04)o(07)o(EAE)o(4E)
-o(00-)o(00)o(00)o(00,)87 4249 y(rcpt=<RECIPIENT@m)o(et)o(a1)o(.or)o(g>)
-o(,)h(xdelay=0,)h(delay=1)0 4468 y Fn(where)27 b Fm(xdelay)e
-Fn(is)j(the)g(time)g(for)f(this)h(deliv)n(ery)e(attempt,)j(and)e
-Fm(delay)f Fn(is)h(the)h(total)g(deliv)n(ery)e(time.)0
-4796 y Fk(10.4)136 b(F)-11 b(ormat)45 b(of)g(Receiv)l(ed)h(Header)0
-5032 y Fn(The)28 b(format)f(of)g(the)h Fm(Received:)33
-b Fn(header)27 b(added)h(b)n(y)f(the)h(SMTP)f(serv)n(er)f(is)i(sp)r
-(eci\014ed)f(in)h Fm(smtps/smtps.c)p Fn(.)0 5268 y Fm(Received:)40
-b(from)i(EHLO-NAME)e(\(CLIENT-NAME)e([CLIENT-ADDR]\))349
-5368 y(by)k(HOST-NAME)e(\(SM-X-VERSION\))e(with)k(PROTOCOL)349
-5467 y(id)g(SMTP-TA-ID;)d(DATE)1848 5768 y Fn(74)p eop
-end
-%%Page: 75 76
-TeXDict begin 75 75 bop 0 523 a Fn(where)31 b Fm(PROTOCOL)e
-Fn(is)i(one)g(of)h Fm(ESMTP)p Fn(,)e Fm(ESMTPS)p Fn(,)f
-Fm(ESMTPA)p Fn(,)g Fm(ESMTPSA)p Fn(,)g(or)i Fm(SMTP)f
-Fn([New04)o(].)49 b(If)32 b(ST)-7 b(AR)g(TTLS)33 b(is)e(activ)n(e,)0
-623 y(then)36 b Fm(\(TLS=TLSVERSION,)h(cipher=CIPHERSUI)o(TE)o(,)h
-(bits=CIPHERBITS)o(,)g(verify=VERIFYRE)o(SU)o(LT\))29
-b Fn(is)35 b(placed)0 722 y(b)r(efore)21 b Fm(id)p Fn(,)h(where)g
-(TLSVERSION)f(is)h(the)g(TLS)f(proto)r(col)g(v)n(ersion,)g(e.g.,)h
-(TLSv1,)h(SSLv3,)f(SSLv2;)h(CIPHERSUITE)0 822 y(is)d(the)h(cipher)g
-(suite)f(that)h(w)n(as)f(in)g(use,)i(e.g.,)g(AES256-SHA,)d
-(EDH-DSS-DES-CBC3-SHA,)h(EDH-RSA-DES-CBC-)0 922 y(SHA,)32
-b(CIPHERBITS)e(denotes)h(the)h(e\013ectiv)n(e)f(k)n(eylength)f(\(in)i
-(bits\))g(of)f(the)g(symmetric)g(encryption)g(algorithm)f(of)0
-1021 y(the)e(TLS)g(connection,)f(and)g(VERIFYRESUL)-7
-b(T)28 b(is)g(one)f(of)g(the)h(follo)n(wing:)50 1169
-y(OK)159 b(v)n(eri\014cation)26 b(succeeded.)50 1269
-y(NO)162 b(no)27 b(cert)g(presen)n(ted.)50 1368 y(NOT)102
-b(no)27 b(cert)g(requested.)50 1468 y(F)-9 b(AIL)100
-b(cert)27 b(presen)n(ted)g(but)h(could)f(not)h(b)r(e)g(v)n(eri\014ed,)f
-(e.g.,)g(the)h(signing)f(CA)h(cert)f(is)h(missing.)0
-1622 y(Note:)40 b(the)30 b(name)f(of)h(the)f(clien)n(t)h(is)f(only)g
-(sho)n(wn)g(if)h(the)f(access)g(map)g(feature)g(is)g(activ)-5
-b(ated)29 b(\(see)h(Section)f(3.10,)g(3b\),)0 1722 y(otherwise)e(the)h
-(time-consuming)f(DNS)h(lo)r(okups)f(\(PTR)h(and)f(A)h(records\))e(are)
-h(not)g(p)r(erformed.)0 2050 y Fk(10.5)136 b(F)-11 b(ormat)45
-b(of)g(DSNs)0 2285 y Fn(DSNs)26 b(\()p Fd(b)l(ounc)l(es)p
-Fn(\))f(are)f(curren)n(tly)g(not)g(complian)n(t)h(to)g(RF)n(C)g
-(1891\013,)f(ho)n(w)n(ev)n(er,)f(a)h(con\014guration)g(option)g
-(\(Section)h(3.8,)0 2385 y(item)36 b(5\(b\)ii\))g(can)f(b)r(e)g(set)h
-(to)f(send)g(DSNs)h(in)g(MIME)f(format,)i(i.e.,)g Fm(Content-Type:)82
-b(multipart/mixed)29 b Fn(with)0 2484 y Fm(Content-Type:)82
-b(message/rfc822)22 b Fn(for)27 b(the)h(original)e(message.)35
-b(The)28 b(format)f(lo)r(oks)g(lik)n(e)g(this:)0 2721
-y Fm(From:)42 b(Mailer-Daemon@H)o(OS)o(T.N)o(AM)o(E)0
-2820 y(Subject:)e(Undeliverable)e(mail)0 3020 y(A)43
-b(mail)f(from)g(you)g(could)g(not)g(be)h(delivered.)c(See)k(below)e
-(for)i(details.)0 3256 y Fn(and)27 b(then)i(a)e(list)h(of)f(recipien)n
-(ts)g(and)h(the)g(reasons)d(for)i(the)h(failure,)g(e.g.,)0
-3492 y Fm(Recipient:)0 3592 y(<user@example.co)o(m>)0
-3691 y(Remote-MTA:)0 3791 y(10.2.3.4)0 3891 y(Reason:)0
-3990 y(550)42 b(5.7.1)g(<user@example.co)o(m>)o(...)37
-b(Access)k(denied)0 4090 y(during)g(RCPT)1848 5768 y
-Fn(75)p eop end
-%%Page: 76 77
-TeXDict begin 76 76 bop 0 1199 a Fl(Chapter)65 b(11)0
-1668 y Fp(Setup)78 b(for)g(ST)-19 b(AR)g(TTLS)0 2203
-y Fk(11.1)136 b(Certi\014cates)46 b(for)f(ST)-11 b(AR)g(TTLS)0
-2439 y Fn(When)25 b(acting)g(as)f(a)h(serv)n(er,)e(MeT)-7
-b(A1)25 b(requires)f(X.509)g(certi\014cates)g(to)h(supp)r(ort)f(ST)-7
-b(AR)g(TTLS:)26 b(one)e(as)h(certi\014cate)f(for)0 2538
-y(the)30 b(serv)n(er,)f(at)h(least)f(one)g(ro)r(ot)g(CA)i(\()p
-Fm(CAcert_file)p Fn(\),)26 b(i.e.,)31 b(a)e(certi\014cate)g(that)i(is)e
-(used)h(to)g(sign)f(other)g(certi\014cates,)0 2638 y(and)f(a)f(path)h
-(to)g(a)f(directory)g(whic)n(h)h(con)n(tains)f(certs)g(of)h(other)f
-(CAs)h(\()p Fm(CAcert_directory)p Fn(\).)k(The)c(\014le)g(sp)r
-(eci\014ed)g(via)0 2738 y Fm(CAcert_file)23 b Fn(can)k(con)n(tain)g
-(sev)n(eral)e(certi\014cates)i(of)g(CAs.)37 b(The)28
-b(DNs)f(of)h(these)f(certi\014cates)g(are)f(sen)n(t)h(to)h(the)g(clien)
-n(t)0 2837 y(during)c(the)h(TLS)g(handshak)n(e)f(\(as)g(part)g(of)h
-(the)g(Certi\014cateRequest\))g(as)f(the)h(list)g(of)f(acceptable)h
-(CAs.)35 b(Ho)n(w)n(ev)n(er,)24 b(do)0 2937 y(not)k(list)f(to)r(o)h
-(man)n(y)f(ro)r(ot)g(CAs)g(in)h(that)g(\014le,)g(otherwise)e(the)i(TLS)
-g(handshak)n(e)e(ma)n(y)h(fail;)h(e.g.,)0 3154 y Fm(error:14094417:S)o
-(SL)37 b(routines:SSL3_REA)o(D_)o(BY)o(TES)o(:)0 3253
-y(sslv3)42 b(alert)f(illegal)g(parameter:s3_pkt)o(.c)o(:9)o(64:)o(SS)o
-(L)d(alert)j(number)g(47)0 3470 y Fn(Y)-7 b(ou)32 b(should)g(probably)f
-(put)i(only)e(the)i(CA)f(cert)g(in)n(to)g(that)g(\014le)h(that)f
-(signed)g(y)n(our)e(o)n(wn)i(cert\(s\),)h(or)e(at)h(least)g(only)0
-3570 y(those)k(y)n(ou)g(trust.)63 b(The)36 b(directory)f(sp)r
-(eci\014ed)i(via)f Fm(CAcert_directory)30 b Fn(m)n(ust)36
-b(con)n(tain)g(the)h(hashes)e(of)i(eac)n(h)e(CA)0 3670
-y(certi\014cate)e(as)h(\014lenames)f(\(or)h(as)f(links)h(to)g(them\).)
-56 b(Sym)n(b)r(olic)34 b(links)g(can)g(b)r(e)g(generated)f(with)h(the)g
-(follo)n(wing)f(t)n(w)n(o)0 3769 y(\(Bourne\))27 b(shell)h(commands:)0
-3986 y Fm(C=FileName_of_CA)o(_Ce)o(rt)o(if)o(ica)o(te)0
-4086 y(ln)43 b(-s)g($C)f(`openssl)f(x509)g(-noout)h(-hash)f(<)i($C`.0)0
-4303 y Fn(An)30 b(X.509)e(certi\014cate)g(is)h(also)g(required)f(for)g
-(authen)n(tication)h(in)h(clien)n(t)f(mo)r(de,)h(ho)n(w)n(ev)n(er,)d
-(MeT)-7 b(A1)29 b(will)h(alw)n(a)n(ys)d(use)0 4402 y(ST)-7
-b(AR)g(TTLS)35 b(when)f(o\013ered)g(b)n(y)g(a)f(serv)n(er.)55
-b(The)35 b(clien)n(t)f(and)g(serv)n(er)e(certi\014cates)i(can)f(b)r(e)i
-(iden)n(tical.)56 b(Certi\014cates)0 4502 y(can)29 b(b)r(e)h(obtained)f
-(from)h(a)f(certi\014cate)g(authorit)n(y)f(or)h(created)g(with)h(the)g
-(help)g(of)f(Op)r(enSSL.)h(The)g(required)e(format)0
-4602 y(for)e(certi\014cates)f(and)h(priv)-5 b(ate)26
-b(k)n(eys)f(is)h(PEM.)f(T)-7 b(o)26 b(allo)n(w)f(for)g(automatic)h
-(startup)g(of)g(MeT)-7 b(A1,)26 b(priv)-5 b(ate)26 b(k)n(eys)f(m)n(ust)
-h(b)r(e)0 4701 y(stored)d(unencrypted.)36 b(The)24 b(k)n(eys)g(are)f
-(only)h(protected)g(b)n(y)f(the)i(p)r(ermissions)e(of)i(the)f(\014le)g
-(system,)h(hence)f(they)h(should)0 4801 y(not)31 b(b)r(e)h(readable)e
-(b)n(y)g(an)n(y)n(one)g(but)i(the)f(o)n(wner.)47 b(If)31
-b(serv)n(er)f(and)h(clien)n(t)g(share)f(the)i(same)e(k)n(ey)h(it)g(is)g
-(ok)g(to)g(mak)n(e)f(the)0 4900 y(k)n(ey)d(group)f(readable)h(ho)n(w)n
-(ev)n(er.)34 b(Nev)n(er)27 b(mak)n(e)g(a)g(priv)-5 b(ate)27
-b(k)n(ey)g(a)n(v)-5 b(ailable)27 b(to)g(a)g(third)h(part)n(y)-7
-b(.)0 5133 y Fm(-r--r--r--)83 b(1)43 b(root)216 b(wheel)304
-b(CAcert.pem)0 5233 y(-r--r--r--)83 b(1)43 b(meta1s)128
-b(meta1c)260 b(smcert.pem)0 5333 y(-r--r-----)83 b(1)43
-b(meta1s)128 b(meta1c)260 b(smkey.pem)0 5432 y(drwxr-xr-x)83
-b(2)43 b(root)216 b(wheel)304 b(certs/)1848 5768 y Fn(76)p
-eop end
-%%Page: 77 78
-TeXDict begin 77 77 bop 0 1199 a Fl(Chapter)65 b(12)0
-1668 y Fp(More)78 b(Ab)6 b(out)79 b(Con\014guration,)0
-1917 y(Compilation,)d(Debugging,)i(and)0 2166 y(T)-19
-b(esting)0 2701 y Fk(12.1)136 b(Compile)46 b(Time)f(Options)0
-2937 y Fn(There)22 b(are)g(sev)n(eral)f(compile)i(time)g(parameters)e
-(whic)n(h)i(migh)n(t)g(b)r(e)g(useful)g(in)g(some)g(situations)f(that)h
-(are)f(listed)h(b)r(elo)n(w.)0 3036 y(Compile)k(time)i(options)e(to)g
-(turn)h(on)f(additional)g(debugging)g(are)f(listed)i(in)g(section)f
-(12.1.5.)0 3317 y Fj(12.1.1)113 b(Generic)0 3524 y Fn(T)-7
-b(o)18 b(further)g(restrict)g(the)h(length)f(of)g Fm(syslog\(3\))d
-Fn(messages)i(the)i(compile)f(time)h(options)f Fm(MTA_LOG_LEN)13
-b Fn(and)19 b Fm(MTA_LOG_LEN_MAX)0 3623 y Fn(can)k(b)r(e)g(used)g
-(\(see)h Fm(libmta/log.c)18 b Fn(for)k(the)i(defaults\).)36
-b(The)23 b(macro)f Fm(MTA_LOG_LEN_MAX)17 b Fn(sets)23
-b(the)h(maxim)n(um)f(length)0 3723 y(of)35 b(a)g Fm(syslog\(3\))c
-Fn(message,)k Fm(MTA_LOG_LEN)c Fn(needs)k(only)f(b)r(e)i(set)f(if)g
-Fm(MTA_LOG_LEN_MAX)29 b Fn(is)35 b(less)g(than)g(the)g(default)0
-3823 y(v)-5 b(alue)27 b(of)h Fm(MTA_LOG_LEN)p Fn(.)0
-4103 y Fj(12.1.2)113 b(QMGR)0 4310 y Fn(T)-7 b(o)38 b(enable)g(QMGR)g
-(statistics,)i(e.g.,)h(n)n(um)n(b)r(er)d(of)g(transactions)e(and)i
-(recipien)n(ts)g(that)g(ha)n(v)n(e)f(b)r(een)i(handled,)i(set)0
-4410 y Fm(QMGR)p 181 4410 27 4 v 30 w(STATS)p Fn(.)0
-4690 y Fj(12.1.3)113 b(SMAR)0 4897 y Fn(The)33 b(address)e(resolv)n(er)
-g(imp)r(oses)h(limits)h(on)f(the)h(n)n(um)n(b)r(er)g(of)f(MX)h(and)g(A)
-g(records)e(that)i(it)g(accepts)f(when)h(it)g(do)r(es)0
-4997 y(routing)27 b(lo)r(okups.)36 b(These)27 b(macros)f(are:)125
-5191 y Fc(\017)41 b Fm(MTA)p 345 5191 V 30 w(DNS)p 507
-5191 V 30 w(MX)p 625 5191 V 30 w(MAX)p Fn(:)27 b(maxim)n(um)g(n)n(um)n
-(b)r(er)h(of)f(MX)h(records)e(for)h(a)g(domain,)125 5345
-y Fc(\017)41 b Fm(MTA)p 345 5345 V 30 w(DNS)p 507 5345
-V 30 w(A)p 581 5345 V 31 w(PER)p 744 5345 V 30 w(MX)p
-862 5345 V 30 w(MAX)p Fn(:)27 b(maxim)n(um)g(n)n(um)n(b)r(er)h(of)f(A)h
-(records)e(for)h(one)g(MX)h(record,)125 5498 y Fc(\017)41
-b Fm(MTA)p 345 5498 V 30 w(DNS)p 507 5498 V 30 w(A)p
-581 5498 V 31 w(MAX)p Fn(:)26 b(maxim)n(um)i(n)n(um)n(b)r(er)f(of)h(A)g
-(records)d(for)j(a)f(domain)g(\(after)g(p)r(erforming)g(MX)h(lo)r
-(okups\).)1848 5768 y(77)p eop end
-%%Page: 78 79
-TeXDict begin 78 78 bop 0 523 a Fj(12.1.4)113 b(SMTPS)125
-730 y Fc(\017)41 b Fm(SS)p 301 730 27 4 v 30 w(EHLO)p
-507 730 V 30 w(ACCESS)p 801 730 V 29 w(CHK)27 b Fn(enables)h(lo)r
-(okups)g(of)g(the)h Fm(EHLO)p Fn(/)p Fm(HELO)c Fn(argumen)n(t)i(in)i
-(the)g(access)e(map)h(\(Section)h(3.10,)208 830 y(3b\))e(using)g(the)h
-(tag)f Fm(ehlo:)p Fn(.)35 b(This)28 b(m)n(ust)g(b)r(e)g(enabled)f(at)g
-(run)n(time)h(via)f(the)h(\015ag)f Fm(check)p 3023 830
-V 29 w(ehlo)p Fn(.)0 1116 y Fj(12.1.5)113 b(Debugging)38
-b(Compile)g(Time)g(Options)0 1322 y Fn(There)27 b(are)g(sev)n(eral)f
-(compile)h(time)h(parameters)e(to)i(supp)r(ort)f(debugging.)36
-b(An)28 b(option)g(that)f(applies)h(to)f(all)h(mo)r(dules)0
-1422 y(\(as)e(they)g(use)g(the)h(same)f(libraries\))f(is)h
-Fm(MTA)p 1378 1422 V 30 w(HEAP)p 1584 1422 V 30 w(CHECK)e
-Fn(whic)n(h)i(turns)g(on)g(v)-5 b(arious)25 b(heap)h(c)n(hec)n(ks)f
-(and)h(k)n(eep)g(trac)n(k)f(of)0 1522 y(memory)i(usage.)0
-1675 y(Other)32 b(options)g(are)g(sp)r(eci\014c)g(to)h(a)f(mo)r(dule)h
-(and)f(can)g(b)r(e)h(used)g(to)f(turn)h(on)f(debugging)g(output.)52
-b(Since)33 b(curren)n(tly)0 1775 y(no)c(logging)f(abstraction)g(is)i
-(in)g(use,)g(the)g(output)g(is)f(done)h(on)f(a)g(p)r(er-mo)r(dule)g
-(basis)g(\(whatev)n(er)g(is)g(simplest)h(for)f(the)0
-1874 y(individual)f(mo)r(dule\).)37 b(These)28 b(compile)f(time)h
-(options)f(are:)50 2027 y Fm(SC)p 143 2027 V 30 w(DEBUG)434
-b Fn(SMTPC)28 b(debugging)50 2126 y Fm(SSQ)p 187 2126
-V 30 w(DEBUG)390 b Fn(SMTPS)28 b(-)f(QMGR)h(comm)n(unication)f
-(debugging)50 2226 y Fm(SS)p 143 2226 V 30 w(DATA)p 349
-2226 V 30 w(DEBUG)228 b Fn(SMTPS)28 b(D)n(A)-7 b(T)g(A)28
-b(stage)f(debugging)50 2325 y Fm(QMGR)p 231 2325 V 30
-w(DEBUG)346 b Fn(QMGR)28 b(debugging)50 2425 y Fm(SMAR)p
-231 2425 V 30 w(DEBUG)346 b Fn(SMAR)29 b(debugging)50
-2525 y Fm(MTA)p 187 2525 V 30 w(LIBDNS)p 481 2525 V 29
-w(DEBUG)97 b Fn(lib)r(dns)29 b(debugging)0 2674 y(F)-7
-b(or)27 b(details)g(see)h(the)g(source)e(co)r(de.)0 2827
-y(Note:)50 b(it)34 b(is)g(p)r(ossible)g(to)g(set)g(di\013eren)n(t)g
-(debug)g(lev)n(els)f(for)g(di\013eren)n(t)h(debug)g(categories)e(in)i
-(QMGR.)g(F)-7 b(or)34 b(a)f(list)i(of)0 2927 y(categories)23
-b(see)i Fm(include/sm/qmgrd)o(bg)o(.h)p Fn(.)30 b(T)-7
-b(o)24 b(set)i(a)e(debug)h(lev)n(el)g Fd(n)g Fn(for)g(a)f(category)g
-Fd(c)h Fn(use)g(the)g(option)g Fm(-x)p Fd(c)p Fn(.)p
-Fd(n)p Fn(.)36 b(The)0 3027 y(general)26 b(syn)n(tax)h(for)g(the)h
-(parameters)e(is:)50 3174 y(debugoptions)99 b(::=)g(debugoption)27
-b([)h(",")e(debugoptions)h(])50 3274 y(debugoption)132
-b(::=)99 b(range)26 b([)i(".")f(lev)n(el)g(])50 3374
-y(range)380 b(::=)99 b(\014rst)27 b([)h("-")e(last)i(])0
-3523 y(If)g Fm(level)e Fn(is)h(omitted,)h(it)g(defaults)g(to)f
-Fm(1)p Fn(.)37 b(Example:)f Fm(-x1-3.4,5.3,9-11)0 3676
-y Fn(A)28 b(simple)g(w)n(a)n(y)e(to)i(set)f(compile)h(time)g(options)f
-(is)g(to)h(use:)0 3913 y Fm($)43 b(CFLAGS="-DSM_HEAP)o(_C)o(HE)o(CK")37
-b($PATHTO/meta1-$V)o(ER)o(SIO)o(N/)o(co)o(nfi)o(gu)o(re)0
-4149 y Fn(A)28 b(more)f(complicated)g(example)g(is:)0
-4385 y Fm($)43 b(CFLAGS="-O)d(-g)i(-DSM_HEAP_CHECK)c(-I/usr/local/inc)o
-(lu)o(de)o(")g(\\)44 4485 y(LDFLAGS="-L/usr)o(/lo)o(ca)o(l/)o(lib)o(")f
-(\\)44 4584 y($PATHTO/meta1-$)o(VER)o(SI)o(ON)o(/co)o(nf)o(igu)o(re)0
-4821 y Fn(Hin)n(t:)f(it)26 b(is)g(useful)g(to)f(write)g(the)h(command)f
-(line)h(in)n(to)f(a)g(lo)r(cal)g(\014le)h(that)g(can)f(b)r(e)h(reused)f
-(for)g(subsequen)n(t)g(builds)h(and)0 4920 y(v)n(ersions.)0
-5074 y(Note:)37 b(if)28 b Fm(configure)c Fn(has)j(problems)g(with)h(Op)
-r(enSSL)g(b)r(ecause)f(y)n(ou)g(do)g(not)h(ha)n(v)n(e)e(Kerb)r(erosV)g
-(installed,)i(add)0 5310 y Fm($)43 b(CPPFLAGS="-DOPENS)o(SL)o(_N)o(O_K)
-o(RB)o(5")1848 5768 y Fn(78)p eop end
-%%Page: 79 80
-TeXDict begin 79 79 bop 0 523 a Fk(12.2)136 b(P)l(ossible)46
-b(Compilation)g(Problems)g(or)f(W)-11 b(arnings)101 735
-y Fn(1.)42 b(If)28 b(gcc)f(is)g(used)h(as)f(C)g(compiler)g(and)h(full)g
-(c)n(hec)n(king)e(is)i(turned)f(on)h(w)n(arnings)e(lik)n(e)h(these)h
-(are)e(pro)r(duced:)208 935 y Fm(warning:)40 b(unknown)h(conversion)e
-(type)j(character)e(`N')i(in)h(format)208 1035 y(warning:)d(unsigned)g
-(int)i(format,)f(sm_str_P)f(arg)j(\(arg)f(3\))208 1134
-y(warning:)e(too)i(many)g(arguments)e(for)i(format)208
-1334 y Fn(Unfortunately)f(gcc)f(cannot)h(b)r(e)h(told)f(ab)r(out)g
-(additional)g(format)g(sp)r(eci\014ers)f(and)h(hence)h(the)f
-(misleading)208 1433 y(w)n(arning)26 b(migh)n(t)h(b)r(e)h(generated.)
-101 1594 y(2.)42 b(On)27 b(some)g(systems)g(the)h(follo)n(wing)f(w)n
-(arning)f(is)h(generated)g(b)n(y)g(the)h(compiler:)208
-1793 y Fm(`sys_nerr')39 b(is)k(deprecated;)c(use)j(`strerror')e(or)i
-(`strerror_r')d(instead)208 1993 y(sys_nerr)24 b Fn(is)k(used)g(to)g
-(determine)f(whether)h(it)g(mak)n(es)f(sense)h(to)f(in)n(v)n(ok)n(e)g
-Fm(strerror\(3\))c Fn(at)28 b(all.)37 b(The)28 b(systems)208
-2093 y(that)j(generate)e(this)i(error)e(do)i(not)f(pro)n(vide)g(an)g
-(alternativ)n(e)g(w)n(a)n(y)f(to)i(p)r(erform)f(this)i(c)n(hec)n(k.)45
-b(Just)31 b(ignore)e(the)208 2192 y(w)n(arning)22 b(or)h(ask)g(the)h
-(authors)f(of)h(that)g(w)n(arning)f(for)g(an)h(alternativ)n(e)e(w)n(a)n
-(y)h(to)h(determine)g(the)g(range)e(of)i(de\014ned)208
-2292 y(error)h(co)r(des.)0 2618 y Fk(12.3)136 b(More)45
-b(Ab)t(out)f(T)-11 b(est)45 b(Programs)0 2870 y Fj(12.3.1)113
-b(More)37 b(En)m(vironmen)m(t)h(V)-9 b(ariables)38 b(used)g(b)m(y)g(T)
--9 b(est)37 b(Programs)125 3077 y Fc(\017)k Fm(MTA_NAMESERVER)p
-Fn(:)21 b(can)27 b(b)r(e)h(used)f(to)g(set)g(a)g(sp)r(eci\014c)g
-(nameserv)n(er)e(\(IPv4)i(address\))f(in)i(case)e(the)i(simple)f
-(script)208 3176 y(whic)n(h)h(extracts)f(the)i(\014rst)f(line)g(b)r
-(eginning)g(with)h Fm(nameserver)24 b Fn(from)k(the)h(\014le)f
-Fm(/etc/resolv.conf)22 b Fn(do)r(es)28 b(not)208 3276
-y(giv)n(e)e(the)i(desired)f(result.)125 3436 y Fc(\017)41
-b Fm(MTA_PMILTER_REG)o(EX_)o(TE)o(ST)o Fn(:)20 b(can)k(b)r(e)h(used)g
-(to)g(enable)g(the)g(tests)g(\()p Fm(make)42 b(check)23
-b Fn(in)j Fm(chkmts/)p Fn(\))c(for)i(the)i(p)r(olicy)208
-3536 y(milter)h Fm(milter-regex)c Fn(pro)n(vided)j(it)j(is)e(enabled)g
-(and)h(compiled.)37 b(Notes:)301 3697 y Fo({)k Fn(this)28
-b(requires)e(that)i Fm(make)42 b(check)26 b Fn(is)h(executed)h(in)g
-Fm(contrib/)c Fn(b)r(efore)j Fm(make)42 b(check)26 b
-Fn(in)i Fm(chkmts/)p Fn(.)301 3824 y Fo({)41 b Fm(make)h(check)23
-b Fn(in)j Fm(contrib/)c Fn(ma)n(y)i(fail)i(due)f(to)g(a)g(compilation)g
-(error)e(for)i Fm(milter-regex.c)p Fn(.)30 b(If)c(y)n(our)e(OS)390
-3924 y(has)32 b Fm(yacc\(1\))e Fn(\(or)j Fm(bison\(1\))c
-Fn(installed)k(then)g(remo)n(v)n(e)e(that)i(\014le)g(\()p
-Fm(milter-regex.c)p Fn(\))28 b(and)k(try)h(again.)390
-4023 y(Y)-7 b(ou)28 b(ma)n(y)f(ha)n(v)n(e)f(to)i(tell)g
-Fm(configure)c Fn(to)j(use)g Fm(yacc\(1\))p Fn(,)e(e.g.,)390
-4167 y Fm(YACC=yacc)40 b(./configure)f(...)125 4328 y
-Fc(\017)i Fn(Some)32 b(test)h(programs)e(use)i(SMTP)f(serv)n(ers)f(and)
-i(sinks)f(listening)h(on)f(an)h(INET)f(p)r(ort.)53 b(The)33
-b(default)g(v)-5 b(alues)208 4427 y(for)30 b(these)h(p)r(orts)f(are)g
-(sp)r(eci\014ed)h(in)g Fm(chkmts/common.sh)o Fn(.)41
-b(If)31 b(one)f(of)h(the)g(default)g(p)r(orts)g(is)f(used)h(b)n(y)g
-(another)208 4527 y(program,)36 b(then)h(the)f(corresp)r(onding)f(en)n
-(vironmen)n(t)g(v)-5 b(ariable)35 b(m)n(ust)i(b)r(e)f(set)h(as)e
-(otherwise)h(all)g(related)f(test)208 4627 y(programs)25
-b(will)j(fail.)301 4801 y Fo({)41 b Fm(MTA_SNKPORT)p
-Fn(:)23 b(set)28 b(the)g(p)r(ort)f(on)h(whic)n(h)f(the)h(SMTP)g(sink)f
-(is)g(listening.)301 4929 y Fo({)41 b Fm(MTA_SRVPORT)p
-Fn(:)23 b(set)28 b(the)g(p)r(ort)f(on)h(whic)n(h)f(the)h(SMTP)g(test)f
-(serv)n(er)f(is)i(listening.)0 5212 y Fj(12.3.2)113 b(Other)37
-b(P)m(oten)m(tial)g(Problems)h(with)f(T)-9 b(est)37 b(Programs)0
-5419 y Fn(Some)22 b(of)h(the)g(test)f(programs)f(ma)n(y)g(generate)h(w)
-n(arnings,)g(e.g.,)h(most)f(of)h(the)f(tree)h(related)f(programs)e
-(cause)i(compilers)0 5519 y(on)27 b(32)g(bit)h(systems)f(to)h(emit)g(a)
-f(w)n(arning)f Fm(integer)41 b(constant)f(too)j(large)25
-b Fn(whic)n(h)j(can)f(b)r(e)h(ignored.)1848 5768 y(79)p
-eop end
-%%Page: 80 81
-TeXDict begin 80 80 bop 0 523 a Fo(Kno)m(wn)32 b(T)-8
-b(est)32 b(Program)g(Problems)e(sp)s(eci\014c)i(to)g(an)g(OS/setup)0
-730 y Fn(F)-7 b(reeBSD)28 b(systems)f(when)g(running)h(in)g(a)f
-Fm(jail\(8\))e Fn(exhibit)j(the)g(follo)n(wing)e(problems:)125
-966 y Fc(\017)41 b Fn(The)23 b(test)h(programs)d(for)i(SMAR)i(whic)n(h)
-e(p)r(erform)g(DNS)i(lo)r(okups)d(can)i(fail)f(b)r(ecause)g(UDP)h(do)r
-(es)f(not)h(w)n(ork)e(in)i(a)208 1066 y Fm(jail\(8\))d
-Fn(as)j(exp)r(ected.)36 b(A)25 b(w)n(ork)-5 b(around)22
-b(for)i(this)h(is)f(to)g(use)g(the)h Fm(-U)f Fn(option)g(for)g
-Fm(smar)f Fn(whic)n(h)h(can)g(b)r(e)h(ac)n(hiev)n(ed)208
-1165 y(b)n(y)i(setting)g(the)h(en)n(vironmen)n(t)f(v)-5
-b(ariable)27 b Fm(SMAROPTS)d Fn(to)j(that)h(v)-5 b(alue.)125
-1331 y Fc(\017)41 b Fn(Connections)d(from)i(lo)r(calhost)e(to)i(the)g
-(SMTP)f(serv)n(er)f(do)h(not)h(ha)n(v)n(e)e Fm(127.0.0.1)e
-Fn(as)j(source)g(IP)g(address,)208 1431 y(but)d(the)g(IP)f(address)f
-(of)h(a)g(NIC.)h(Hence)g(rela)n(ying)e(m)n(ust)h(b)r(e)h(allo)n(w)n(ed)
-e(for)h(it)h(b)n(y)f(setting)h(the)g(en)n(vironmen)n(t)208
-1531 y(v)-5 b(ariable)29 b Fm(MTA)p 659 1531 27 4 v 30
-w(SERVER)p 953 1531 V 29 w(OPTIONS)f Fn(to)i(the)h(option)f
-Fm(-C)g Fn(and)g(the)h(IP)f(address,)g(e.g.,)h Fm(-C)43
-b(10.2.3.4)p Fn(.)f(Moreo)n(v)n(er,)208 1630 y(b)r(ecause)34
-b(the)i(tests)f Fm(chkmts/t-mts-icr.)o(sh)29 b Fn(and)35
-b Fm(chkmts/t-mts-ocr)o(.s)o(h)29 b Fn(rely)35 b(on)g(connections)f
-(coming)208 1730 y(from)27 b Fm(127.0.0.1)d Fn(they)k(will)f(fail)h(to)
-r(o.)0 1966 y(MacOS)j(10.3.4)e(has)i(a)g(problem)f(with)i
-Fm(sigwait\(3\))p Fn(,)c(see)j(Apple's)h(bug)f(3675391;)e(hence)j(MeT)
--7 b(A1)31 b(do)r(es)g(not)g(w)n(ork)0 2066 y(on)c(this)h(OS)g(\(and)f
-(other)g(v)n(ersions)f(that)i(ha)n(v)n(e)e(the)i(same)f(bug\).)1848
-5768 y(80)p eop end
-%%Page: 81 82
-TeXDict begin 81 81 bop 0 1199 a Fl(Chapter)65 b(13)0
-1668 y Fp(Licenses)0 2153 y Fn(The)25 b(main)h(licenses)f(for)g(MeT)-7
-b(A1)25 b(can)g(b)r(e)h(found)g(in)f(the)h(\014le)g Fm(LICENSE)c
-Fn(and)k(in)f(the)h(directory)e Fm(license/)p Fn(.)33
-b(Addition-)0 2253 y(ally)-7 b(,)24 b(MeT)-7 b(A1)23
-b(con)n(tains)f(co)r(de)i(from)f(other)f(pro)5 b(jects)23
-b(whose)f(licenses)h(can)g(b)r(e)h(either)f(found)h(in)g(the)f(resp)r
-(ectiv)n(e)g(source)0 2353 y(\014les)32 b(or)f(in)h Fm
-(statethreads/READ)o(ME)25 b Fn(for)32 b(the)g(statethreads)f(library)g
-(and)h Fm(db-4.3.28.NC/LIC)o(EN)o(SE)26 b Fn(for)31 b(Berk)n(eley)0
-2452 y(DB.)d(Some)f(source)g(co)r(de)g(is)h(licensed)f(under)h(a)f(BSD)
-h(license)f(whic)n(h)h(can)f(b)r(e)h(found)g(at)f(the)h(b)r(egin)g(of)g
-(those)f(\014les.)1848 5768 y(81)p eop end
-%%Page: 82 83
-TeXDict begin 82 82 bop 0 1241 a Fp(Bibliograph)-6 b(y)0
-1717 y Fn([A\031ma])69 b(Claus)27 b(A\031mann.)36 b(Sendmail)28
-b(X.)37 b Fm(http://www.sendma)o(il)o(.or)o(g/)o(\0457E)o(ca)o(/em)o
-(ai)o(l/)o(sm-)o(9-)o(rfh)o(.h)o(tm)o(l)p Fn(.)0 1883
-y([A\031m)n(b])67 b(Claus)29 b(A\031mann.)43 b(Sendmail)30
-b(X:)g(Requiremen)n(ts,)g(Arc)n(hitecture,)g(F)-7 b(unctional)30
-b(Sp)r(eci\014cation,)g(Implemen-)330 1983 y(tation,)d(and)h(P)n
-(erformance.)34 b Fm(http://www.sendma)o(il)o(.or)o(g/)o(\0457)o(Eca)o
-(/e)o(mai)o(l/)o(sm)o(-X/)o Fn(.)0 2149 y([Ber97])71
-b(Dan)154 b(Bernstein.)412 b(VERP:)154 b(V)-7 b(ariable)153
-b(En)n(v)n(elop)r(e)f(Return)i(P)n(aths,)184 b(1997.)330
-2248 y Fm(http://cr.yp.to/)o(pr)o(oto)o(/v)o(er)o(p.t)o(xt)o
-Fn(.)0 2414 y([Cyr])147 b(Pro)5 b(ject)26 b(Cyrus.)36
-b Fm(http://asg.web.c)o(mu.)o(ed)o(u/c)o(yr)o(us)o(/)p
-Fn(,)22 b Fm(http://asg.web.c)o(mu)o(.ed)o(u/)o(sa)o(sl/)o
-Fn(.)0 2580 y([F)-7 b(re00])83 b(N.)33 b(F)-7 b(reed.)53
-b(SMTP)33 b(service)f(extension)h(for)g(command)f(pip)r(elining.)54
-b(RF)n(C)33 b(2920,)g(In)n(ternet)g(Engineering)330 2680
-y(T)-7 b(ask)27 b(F)-7 b(orce,)26 b(2000.)0 2846 y([Gn)n(u])129
-b(Gn)n(uPG.)36 b(GNU)29 b(Priv)-5 b(acy)26 b(Guard.)36
-b Fm(http://www.gnupg.)o(or)o(g/)p Fn(.)0 3012 y([Hal07])73
-b(Eric)33 b(A.)i(Hall.)56 b(Sm)n(tp)34 b(service)f(extension)h(for)g(p)
-r(er-recipien)n(t)f(data)h(resp)r(onses)f(\(prdr\).)56
-b(Draft,)36 b(In)n(ternet)330 3112 y(Engineering)26 b(T)-7
-b(ask)27 b(F)-7 b(orce,)26 b(2007.)0 3278 y([Hara])105
-b(Ev)-5 b(an)109 b(Harris.)281 b(The)110 b(next)h(step)f(in)g(the)g
-(spam)g(con)n(trol)f(w)n(ar:)200 b(Greylisting.)330 3377
-y Fm(http://greylisti)o(ng)o(.or)o(g/)o(ar)o(tic)o(le)o(s/w)o(hi)o(te)o
-(pap)o(er)o(.sh)o(tm)o(l)p Fn(.)0 3543 y([Harb])101 b(Ev)-5
-b(an)27 b(Harris.)35 b(Whitelisting.)j Fm(http://greylist)o(ing)o(.o)o
-(rg/)o(wh)o(ite)o(li)o(st)o(ing)o(.s)o(htm)o(l)p Fn(.)0
-3709 y([Harc])110 b(Daniel)18 b(Hartmeier.)j(b)r(enzedrine.cx)d(-)h
-(milter-spamd.)i Fm(http://www.benze)o(dr)o(ine)o(.c)o(x/)o(mil)o(te)o
-(r-s)o(pa)o(md.)o(ht)o(ml)o Fn(.)0 3875 y([Hof99])71
-b(P)-7 b(.)18 b(Ho\013man.)k(SMTP)c(service)g(extension)g(for)f(secure)
-h(SMTP)g(o)n(v)n(er)f(TLS.)22 b(RF)n(C)c(2487,)h(In)n(ternet)f
-(Engineering)330 3975 y(T)-7 b(ask)27 b(F)-7 b(orce,)26
-b(1999.)0 4141 y([Kle01])75 b(Simple)28 b(mail)f(transfer)g(proto)r
-(col.)36 b(RF)n(C)27 b(2821,)f(In)n(ternet)i(Engineering)e(T)-7
-b(ask)26 b(F)-7 b(orce,)27 b(2001.)0 4307 y([MeT])111
-b(PGP)27 b(k)n(eys.)35 b Fm(http://www.MeTA1.)o(org)o(/s)o(ecu)o(ri)o
-(ty)o(/PG)o(PK)o(EYS)o Fn(.)0 4473 y([Mo)r(c87])43 b(P)-7
-b(.V.)40 b(Mo)r(c)n(k)-5 b(ap)r(etris.)72 b(Domain)40
-b(names)f(-)h(implemen)n(tation)f(and)h(sp)r(eci\014cation.)73
-b(RF)n(C)40 b(1035,)h(In)n(ternet)330 4573 y(Engineering)26
-b(T)-7 b(ask)27 b(F)-7 b(orce,)26 b(1987.)0 4739 y([m)n(ut])139
-b(m)n(utt.)37 b Fm(http://www.mutt.o)o(rg)o(/)p Fn(.)0
-4905 y([MV03])62 b(K.)29 b(Mo)r(ore)g(and)h(G.)g(V)-7
-b(audreuil.)43 b(An)31 b(Extensible)e(Message)f(F)-7
-b(ormat)30 b(for)f(Deliv)n(ery)g(Status)h(Noti\014cations.)330
-5005 y(RF)n(C)d(3464,)f(In)n(ternet)i(Engineering)e(T)-7
-b(ask)26 b(F)-7 b(orce,)27 b(2003.)0 5171 y([My)n(e96])45
-b(John)27 b(My)n(ers.)36 b(Lo)r(cal)26 b(mail)i(transfer)f(proto)r
-(col.)35 b(RF)n(C)28 b(2033,)e(In)n(ternet)h(Engineering)f(T)-7
-b(ask)27 b(F)-7 b(orce,)27 b(1996.)0 5337 y([My)n(e99])45
-b(J.)34 b(My)n(ers.)54 b(SMTP)34 b(service)f(extension)g(for)h(authen)n
-(tication.)55 b(RF)n(C)34 b(2554,)g(In)n(ternet)g(Engineering)e(T)-7
-b(ask)330 5436 y(F)g(orce,)27 b(1999.)1848 5768 y(82)p
-eop end
-%%Page: 83 84
-TeXDict begin 83 83 bop 0 523 a Fn([New04])41 b(Chris)36
-b(Newman.)65 b(ESMTP)36 b(and)h(LMTP)g(T)-7 b(ransmission)35
-b(T)n(yp)r(es)i(Registration.)63 b(RF)n(C)37 b(3848,)h(In)n(ternet)330
-623 y(Engineering)26 b(T)-7 b(ask)27 b(F)-7 b(orce,)26
-b(2004.)0 789 y([Op)r(e])134 b(Op)r(enSSL.)37 b Fm(http://www.opens)o
-(sl)o(.or)o(g/)o Fn(.)0 955 y([PGP])105 b(PGP.)36 b Fm
-(http://www.pgp.c)o(om)o(/)p Fn(.)0 1121 y([P)n(osa])112
-b(Jef)149 b(P)n(osk)-5 b(anzer.)396 b(gra)n(ymilter)148
-b(-)h(simple)g(gra)n(ylist)e(mail)i(\014lter)g(mo)r(dule.)330
-1220 y Fm(http://www.acme.)o(co)o(m/s)o(of)o(tw)o(are)o(/g)o(ray)o(mi)o
-(lt)o(er/)o Fn(.)0 1386 y([P)n(osb])108 b(Jef)99 b(P)n(osk)-5
-b(anzer.)249 b(mini)p 1336 1386 25 4 v 30 w(sendmail)99
-b(-)g(accept)h(email)f(on)g(b)r(ehalf)h(of)f(real)g(sendmail.)330
-1486 y Fm(http://www.acme.)o(co)o(m/s)o(of)o(tw)o(are)o(/m)o(ini)p
-1779 1486 27 4 v 25 w(sendmail/)p Fn(.)0 1652 y([SGI01])59
-b(SGI.)27 b(State)22 b(threads)e(for)h(in)n(ternet)h(applications,)g
-(2001.)j Fm(http://state-thr)o(ea)o(ds.)o(so)o(ur)o(cef)o(or)o(ge.)o
-(ne)o(t/)o Fn(.)0 1818 y([Slea])136 b(Berk)n(eley)17
-b(DB)h(4.4.XX)g(Change)g(Log.)j Fm(http://www.sleep)o(yc)o(at)o(.co)o
-(m/)o(upd)o(at)o(e/4)o(.4)o(.X)o(X/i)o(f.)o(4.4)o(.X)o(X.)o(htm)o(l)p
-Fn(.)0 1984 y([Sleb])132 b(Berk)n(eley)20 b(DB)i(T)-7
-b(utorial)21 b(and)g(Reference)g(Guide,)j(v)n(ersion)c(4.3.28.)25
-b Fm(http://www.sleep)o(yc)o(at.)o(co)o(m/d)o(oc)o(s/)o
-Fn(.)0 2150 y([T)-7 b(ok])145 b(Mic)n(hael)81 b(T)-7
-b(ok)i(arev.)197 b(tin)n(ycdb:)145 b(A)82 b(pac)n(k)-5
-b(age)80 b(for)h(main)n(tenance)g(of)h(constan)n(t)f(databases.)330
-2250 y Fm(ftp://ftp.corpit)o(.r)o(u/p)o(ub)o(/t)o(iny)o(cd)o(b/)p
-Fn(.)0 2416 y([V)-7 b(au03])57 b(G.)25 b(V)-7 b(audreuil.)33
-b(Enhanced)24 b(mail)h(system)g(status)g(co)r(des.)32
-b(RF)n(C)25 b(3463,)f(In)n(ternet)h(Engineering)e(T)-7
-b(ask)24 b(F)-7 b(orce,)330 2516 y(2003.)0 2682 y([vdBG])70
-b(S.R.)28 b(v)-5 b(an)27 b(den)h(Berg)f(and)g(Philip)h(Guen)n(ther.)36
-b(pro)r(cmail.)g Fm(http://www.procma)o(il)o(.or)o(g/)o
-Fn(.)1848 5768 y(83)p eop end
-%%Page: 84 85
-TeXDict begin 84 84 bop 0 999 a Fp(Index)0 1414 y Fn(8bitmime,)28
-b(31)0 1593 y(ab)r(ort,)f(32)0 1693 y(accept)p 236 1693
-25 4 v 30 w(but)p 390 1693 V 30 w(reconnect,)g(32)0 1792
-y(access,)f(31)0 1892 y(access)p 224 1892 V 29 w(map,)h(24)0
-1992 y(address,)f(20,)h(23,)g(32)0 2091 y(address)p 275
-2091 V 29 w(delimiter,)g(24)0 2191 y(aliases,)f(24)0
-2291 y(all)p 93 2291 V 30 w(domains,)h(24)0 2390 y(allo)n(w)p
-193 2390 V 29 w(b)n(y)-7 b(,)27 b(33)0 2490 y(allo)n(w)p
-193 2490 V 29 w(rela)n(ying)p 510 2490 V 28 w(if)p 586
-2490 V 30 w(v)n(eri\014ed,)g(33)0 2589 y(A)n(Q)p 130
-2589 V 29 w(max)p 314 2589 V 30 w(en)n(tries,)g(21)0
-2689 y(argumen)n(ts,)f(20)0 2789 y(auth,)i(31)0 2968
-y(bac)n(kground,)e(64)0 3068 y(base)p 163 3068 V 29 w(directory)-7
-b(,)27 b(21)0 3247 y(CAcert)p 266 3247 V 30 w(directory)-7
-b(,)26 b(33,)h(36)0 3347 y(CAcert)p 266 3347 V 30 w(\014le,)h(33,)e(36)
-0 3446 y(cac)n(he)p 202 3446 V 29 w(size,)h(33,)g(63)0
-3546 y(cac)n(he)p 202 3546 V 29 w(timeout,)h(33)0 3646
-y(CDB)p 187 3646 V 30 w(base)p 375 3646 V 29 w(directory)-7
-b(,)27 b(18)0 3745 y(CDB)p 187 3745 V 30 w(gid,)h(31)0
-3845 y(cert)p 144 3845 V 29 w(\014le,)g(33,)f(36)0 3945
-y(c)n(hec)n(k)p 202 3945 V 29 w(access)p 450 3945 V 29
-w(map)p 636 3945 V 29 w(for)p 765 3945 V 29 w(rela)n(ying,)f(33)0
-4044 y(clien)n(t)p 201 4044 V 30 w(ip,)i(33)0 4144 y(conf,)g(21)0
-4243 y(connect)p 282 4243 V 30 w(only)p 467 4243 V 29
-w(to,)g(65)0 4343 y(connection)p 393 4343 V 29 w(con)n(trol)p
-675 4343 V 29 w(cac)n(he)p 901 4343 V 29 w(size,)f(63)0
-4443 y(connection)p 393 4443 V 29 w(con)n(trol)p 675
-4443 V 29 w(hash)p 871 4443 V 29 w(table)p 1080 4443
-V 30 w(size,)g(63)0 4542 y(con)n(trol)p 258 4542 V 28
-w(so)r(c)n(k)n(et,)g(21)0 4722 y(daemon)p 287 4722 V
-29 w(address,)g(64)0 4821 y(debug)p 222 4821 V 30 w(lev)n(el,)g(63,)g
-(65)0 4921 y(dela)n(y)p 195 4921 V 29 w(b)r(et)n(w)n(een)p
-517 4921 V 30 w(2)p 589 4921 V 29 w(c)n(hec)n(kp)r(oin)n(ts,)g(63)0
-5021 y(dela)n(y)p 195 5021 V 29 w(c)n(hec)n(ks,)g(31)0
-5120 y(dela)n(y)p 195 5120 V 29 w(greylisting)p 602 5120
-V 28 w(error)p 808 5120 V 28 w(un)n(til)p 1004 5120 V
-31 w(D)n(A)-7 b(T)g(A,)28 b(31)0 5220 y(deliv)n(ery)p
-290 5220 V 29 w(timeout,)g(63)0 5320 y(DNS,)h(25,)d(64)0
-5419 y(dnsbl,)i(25)0 5519 y(domain,)f(25)2035 1414 y(DSA)p
-2211 1414 V 31 w(cert)p 2381 1414 V 29 w(\014le,)h(64,)f(65)2035
-1513 y(DSA)p 2211 1513 V 31 w(k)n(ey)p 2365 1513 V 29
-w(\014le,)h(64,)e(65)2035 1696 y(expire)p 2260 1696 V
-29 w(limit,)j(26)2035 1879 y(facilit)n(y)-7 b(,)28 b(18)2035
-1978 y(\014le,)g(23,)f(24,)f(26)2035 2078 y(\015ags,)h(21,)f(24,)h(26,)
-g(31,)g(33,)f(63{65)2035 2261 y(generic)p 2295 2261 V
-29 w(lo)r(okup,)h(33)2035 2360 y(grey)p 2196 2360 V 29
-w(expire,)g(26)2035 2460 y(grey)p 2196 2460 V 29 w(w)n(ait,)g(26)2035
-2559 y(greylisting,)f(26,)h(31)2035 2659 y(group,)g(20)2035
-2842 y(hash)p 2207 2842 V 29 w(table)p 2416 2842 V 30
-w(en)n(tries,)g(21)2035 2941 y(header)p 2281 2941 V 29
-w(only)-7 b(,)27 b(21)2035 3041 y(hostname,)g(18)2035
-3224 y(id,)h(31)2035 3323 y(iden)n(t,)g(18)2035 3423
-y(implicitly)p 2383 3423 V 31 w(matc)n(h)p 2638 3423
-V 29 w(detail,)g(24,)f(26,)f(33)2035 3522 y(initial)p
-2252 3522 V 30 w(connections,)h(22)2035 3622 y(io)p 2105
-3622 V 30 w(timeout,)h(31,)e(35)2035 3805 y(KBytes)p
-2310 3805 V 29 w(written)p 2602 3805 V 30 w(for)p 2732
-3805 V 29 w(c)n(hec)n(kp)r(oin)n(ting,)h(63)2035 3904
-y(k)n(ey)p 2163 3904 V 29 w(\014le,)h(33,)f(36)2035 4087
-y(listen)p 2234 4087 V 30 w(queue,)h(64)2035 4187 y(listen)p
-2234 4187 V 30 w(so)r(c)n(k)n(et,)f(19)2035 4286 y(lm)n(tp)p
-2208 4286 V 30 w(do)r(es)p 2398 4286 V 30 w(not)p 2548
-4286 V 30 w(imply)p 2783 4286 V 30 w(rela)n(ying,)f(31)2035
-4386 y(lm)n(tp)p 2208 4386 V 30 w(max)p 2393 4386 V 30
-w(rcpts)p 2604 4386 V 29 w(p)r(er)p 2751 4386 V 30 w(transaction,)g(22)
-2035 4485 y(LMTP)p 2285 4485 V 29 w(so)r(c)n(k)n(et,)h(35)2035
-4585 y(lo)r(cal)p 2209 4585 V 29 w(domains,)g(24)2035
-4685 y(lo)r(cal)p 2209 4685 V 29 w(user)p 2387 4685 V
-29 w(map,)h(26)2035 4784 y(lo)r(calpart,)f(24)2035 4884
-y(log,)g(18)2035 4984 y(log)p 2147 4984 V 29 w(directory)-7
-b(,)26 b(21)2035 5083 y(log)p 2147 5083 V 29 w(lev)n(el,)h(21,)g(26,)g
-(36)2035 5266 y(mailertable,)g(26)2035 5366 y(main)p
-2220 5366 V 30 w(DB)p 2372 5366 V 30 w(name,)g(26)2035
-5465 y(mapname,)g(23)1848 5768 y(84)p eop end
-%%Page: 85 86
-TeXDict begin 85 85 bop 0 523 a Fn(maps,)27 b(24)0 623
-y(matc)n(h)p 229 623 25 4 v 30 w(t)n(yp)r(e,)g(33)0 722
-y(max)p 160 722 V 29 w(bad)p 323 722 V 30 w(commands)p
-737 722 V 29 w(p)r(er)p 884 722 V 30 w(session,)g(32)0
-822 y(max)p 160 822 V 29 w(bad)p 323 822 V 30 w(commands)p
-737 822 V 29 w(p)r(er)p 884 822 V 30 w(transaction,)f(32)0
-922 y(max)p 160 922 V 29 w(cac)n(he)p 386 922 V 29 w(en)n(tries,)h(21)0
-1021 y(max)p 160 1021 V 29 w(commit)p 461 1021 V 30 w(dela)n(y)-7
-b(,)27 b(21)0 1121 y(max)p 160 1121 V 29 w(connection)p
-577 1121 V 30 w(rate,)g(22)0 1220 y(max)p 160 1220 V
-29 w(connections,)g(22)0 1320 y(max)p 160 1320 V 29 w(errors)p
-400 1320 V 28 w(p)r(er)p 546 1320 V 30 w(DSN,)h(21)0
-1420 y(max)p 160 1420 V 29 w(fds,)g(63,)f(64)0 1519 y(max)p
-160 1519 V 29 w(hops,)h(32)0 1619 y(max)p 160 1619 V
-29 w(in)n(v)-5 b(alid)p 429 1619 V 30 w(addresses)p 799
-1619 V 28 w(p)r(er)p 945 1619 V 30 w(session,)27 b(32)0
-1719 y(max)p 160 1719 V 29 w(in)n(v)-5 b(alid)p 429 1719
-V 30 w(addresses)p 799 1719 V 28 w(p)r(er)p 945 1719
-V 30 w(transaction,)26 b(32)0 1818 y(max)p 160 1818 V
-29 w(message)p 482 1818 V 29 w(size,)h(32)0 1918 y(max)p
-160 1918 V 29 w(nop)p 323 1918 V 30 w(commands)p 737
-1918 V 29 w(b)r(et)n(w)n(een)p 1059 1918 V 30 w(transactions,)f(32)0
-2017 y(max)p 160 2017 V 29 w(nop)p 323 2017 V 30 w(commands)p
-737 2017 V 29 w(in)p 835 2017 V 30 w(transaction,)h(32)0
-2117 y(max)p 160 2117 V 29 w(op)r(en)p 362 2117 V 30
-w(T)-7 b(As,)28 b(21)0 2217 y(max)p 160 2217 V 29 w(pro)r(cesses,)f(62)
-0 2316 y(max)p 160 2316 V 29 w(recipien)n(ts)p 534 2316
-V 30 w(p)r(er)p 682 2316 V 29 w(session,)g(32)0 2416
-y(max)p 160 2416 V 29 w(recipien)n(ts)p 534 2416 V 30
-w(p)r(er)p 682 2416 V 29 w(transaction,)g(32)0 2516 y(max)p
-160 2516 V 29 w(threads,)g(31,)g(63,)g(64)0 2615 y(max)p
-160 2615 V 29 w(transactions,)f(33)0 2715 y(max)p 160
-2715 V 29 w(w)n(ait)p 344 2715 V 30 w(threads,)h(64,)g(65)0
-2814 y(merge)p 223 2814 V 29 w(dela)n(y)p 442 2814 V
-29 w(max,)g(21)0 2914 y(MIME)p 244 2914 V 30 w(F)-7 b(ormat,)27
-b(21)0 3014 y(min)p 143 3014 V 30 w(disk)p 319 3014 V
-30 w(space,)g(21)0 3113 y(min)p 143 3113 V 30 w(pro)r(cesses,)f(62)0
-3213 y(min)p 143 3213 V 30 w(threads,)h(63,)g(64)0 3313
-y(min)p 143 3313 V 30 w(w)n(ait)p 328 3313 V 30 w(threads,)g(64,)f(65)0
-3412 y(mo)r(dule)p 270 3412 V 30 w(timeout,)i(64,)f(65)0
-3512 y(MT)-7 b(A,)28 b(13)0 3611 y(MT)-7 b(A)p 196 3611
-V 30 w(DNS)p 397 3611 V 31 w(TIMEOUT,)27 b(11)0 3711
-y(MT)-7 b(A)p 196 3711 V 30 w(NAMESER)e(VER,)28 b(75)0
-3811 y(MT)-7 b(A)p 196 3811 V 30 w(NO)p 353 3811 V 30
-w(DNS)p 554 3811 V 31 w(TEST,)27 b(11)0 3910 y(MT)-7
-b(A)p 196 3910 V 30 w(NO)p 353 3910 V 30 w(LOG)p 565
-3910 V 30 w(TEST,)27 b(11)0 4010 y(MT)-7 b(A)p 196 4010
-V 30 w(NO)p 353 4010 V 30 w(SLO)n(W)p 629 4010 V 30 w(TEST,)27
-b(11)0 4110 y(MT)-7 b(A)p 196 4110 V 30 w(PMIL)g(TER)p
-612 4110 V 29 w(REGEX)p 943 4110 V 30 w(TEST,)27 b(75)0
-4209 y(MT)-7 b(A)p 196 4209 V 30 w(SNKPOR)g(T,)27 b(75)0
-4309 y(MT)-7 b(A)p 196 4309 V 30 w(SR)e(VPOR)i(T,)28
-b(75)0 4408 y(MT)-7 b(A)p 196 4408 V 30 w(STOPONERR)n(OR,)26
-b(11)0 4508 y(MT)-7 b(A)n(C,)28 b(13)0 4608 y(MT)-7 b(A)n(CONFDIR,)28
-b(13)0 4707 y(MT)-7 b(ALG,)28 b(13)0 4807 y(MT)-7 b(ALOGDIR,)28
-b(13)0 4907 y(MT)-7 b(AM,)28 b(13)0 5006 y(MT)-7 b(A)n(Q,)27
-b(13)0 5106 y(MT)-7 b(A)n(QDIR,)28 b(13)0 5205 y(MT)-7
-b(AS,)28 b(13)0 5388 y(name,)f(24,)g(26)0 5488 y(nameserv)n(ers,)e(25)
-2035 523 y(netmask,)i(26)2035 706 y(OCC)p 2225 706 V
-29 w(max)p 2409 706 V 30 w(en)n(tries,)g(22)2035 805
-y(ok)p 2126 805 V 29 w(disk)p 2301 805 V 30 w(space,)g(22)2035
-905 y(options,)g(18)2035 1088 y(page)p 2207 1088 V 29
-w(size,)g(63)2035 1187 y(pass)p 2194 1187 V 29 w(fd)p
-2294 1187 V 30 w(so)r(c)n(k)n(et,)g(20)2035 1287 y(pass)p
-2194 1287 V 29 w(id,)h(20)2035 1386 y(path,)g(20,)f(24,)f(32)2035
-1486 y(p)r(olicy)p 2257 1486 V 30 w(milter,)h(32)2035
-1586 y(p)r(ort,)h(19,)e(24,)h(32)2035 1685 y(preserv)n(e)p
-2338 1685 V 28 w(domain,)g(25)2035 1785 y(pro)r(cesses,)f(32,)h(64)2035
-1885 y(protected)p 2382 1885 V 29 w(recipien)n(ts,)h(33)2035
-2067 y(queue)p 2250 2067 V 30 w(dela)n(y)p 2470 2067
-V 29 w(timeout,)g(22)2035 2167 y(queue)p 2250 2167 V
-30 w(return)p 2507 2167 V 29 w(timeout,)g(22)2035 2350
-y(read)p 2198 2350 V 29 w(QUIT)p 2444 2350 V 30 w(reply)-7
-b(,)27 b(65)2035 2449 y(remote)p 2290 2449 V 29 w(p)r(ort,)h(65)2035
-2549 y(remo)n(v)n(e)p 2298 2549 V 28 w(un)n(used)p 2578
-2549 V 30 w(log\014les,)f(63)2035 2648 y(replace)p 2295
-2648 V 29 w(macros,)f(25)2035 2748 y(require)p 2293 2748
-V 29 w(EHLO)p 2558 2748 V 29 w(b)r(efore)p 2809 2748
-V 29 w(MAIL,)i(31)2035 2848 y(restart)p 2282 2848 V 29
-w(dep)r(endencies,)g(20)2035 2947 y(retries,)f(25)2035
-3047 y(retry)p 2219 3047 V 29 w(max)p 2403 3047 V 29
-w(dela)n(y)-7 b(,)27 b(22)2035 3147 y(retry)p 2219 3147
-V 29 w(min)p 2386 3147 V 30 w(dela)n(y)-7 b(,)27 b(22)2035
-3246 y(reuse)p 2226 3246 V 29 w(connection,)g(63)2035
-3429 y(sc)n(heduler)p 2376 3429 V 29 w(timeout,)h(63)2035
-3528 y(secondary)p 2400 3528 V 28 w(DB)p 2550 3528 V
-30 w(name,)g(26)2035 3628 y(sender,)f(33)2035 3728 y(separate)p
-2342 3728 V 28 w(\014nal)p 2527 3728 V 30 w(dot)p 2677
-3728 V 30 w(and)p 2841 3728 V 30 w(QUIT,)g(65)2035 3827
-y(serialize)p 2328 3827 V 29 w(accept,)g(64)2035 3927
-y(size,)g(21)2035 4027 y(SMAR)p 2285 4027 V 31 w(so)r(c)n(k)n(et,)f(18)
-2035 4126 y(SMAR)p 2285 4126 V 31 w(timeout,)i(63)2035
-4226 y(sm)n(tp)p 2218 4226 V 30 w(max)p 2403 4226 V 29
-w(rcpts)p 2613 4226 V 30 w(p)r(er)p 2761 4226 V 30 w(transaction,)e(22)
-2035 4325 y(SMTPC)p 2339 4325 V 30 w(so)r(c)n(k)n(et,)g(18)2035
-4425 y(SMTPS)p 2325 4425 V 30 w(so)r(c)n(k)n(et,)g(18)2035
-4525 y(so)r(c)n(k)n(et,)h(32)2035 4624 y(soft)p 2172
-4624 V 30 w(b)r(ounce,)h(31)2035 4724 y(start)p 2212
-4724 V 29 w(action,)f(19)2035 4824 y(strict)p 2230 4824
-V 30 w(ehlo)p 2408 4824 V 29 w(c)n(hec)n(ks,)g(31)2035
-5006 y(tag,)g(25)2035 5106 y(talk)p 2181 5106 V 30 w(to)p
-2285 5106 V 29 w(m)n(yself,)h(65)2035 5205 y(tests,)g(63)2035
-5305 y(timeout,)g(25,)f(32)2035 5405 y(tls,)h(33,)f(36,)f(64,)h(65)2035
-5504 y(trusted)p 2299 5504 V 30 w(mec)n(hanisms,)g(31)1848
-5768 y(85)p eop end
-%%Page: 86 87
-TeXDict begin 86 86 bop 0 523 a Fn(t)n(yp)r(e,)28 b(23)0
-706 y(umask,)f(20)0 805 y(use)p 121 805 25 4 v 30 w(connect,)g(64)0
-905 y(use)p 121 905 V 30 w(id)p 220 905 V 30 w(in)p 319
-905 V 30 w(log\014le)p 562 905 V 29 w(name,)g(62)0 1005
-y(use)p 121 1005 V 30 w(TCP)-7 b(,)27 b(64)0 1104 y(user,)g(20)0
-1287 y(w)n(ait)p 160 1287 V 29 w(for)p 289 1287 V 30
-w(clien)n(t,)g(22)0 1386 y(w)n(ait)p 160 1386 V 29 w(for)p
-289 1386 V 30 w(serv)n(er,)f(22,)g(36)0 1486 y(w)n(ait)p
-160 1486 V 29 w(for)p 289 1486 V 30 w(smar,)g(64)0 1586
-y(white)p 203 1586 V 30 w(expire,)h(26)0 1685 y(white)p
-203 1685 V 30 w(timeout,)h(26)0 1785 y(w)n(orking)p 293
-1785 V 28 w(directory)-7 b(,)27 b(62)0 1968 y(xv)n(erp,)g(31)1848
-5768 y(86)p eop end
-%%Trailer
-
-userdict /end-hook known{end-hook}if
-%%EOF
diff --git a/doc/README.tex b/doc/README.tex
index f6d4455..174e2a6 100644
--- a/doc/README.tex
+++ b/doc/README.tex
@@ -1,5 +1,5 @@
 %
-% $Id: README.tex,v 1.441 2009/06/02 14:05:43 ca Exp $
+% $Id: README.tex,v 1.449 2009/08/11 04:52:44 ca Exp $
 %
 % Copyright (c) 2003-2006 Sendmail, Inc. and its suppliers.
 %	All rights reserved.
@@ -178,7 +178,7 @@ as it is usual for Unix documents.
 
 \section{Version}
 
-This document has been written for MeTA1-1.0.PreAlpha29.0,
+This document has been written for MeTA1-1.0.PreAlpha30.0,
 see also the greeting of the SMTP server
 and the version output of the main components.
 See Section \ref{VersionNaming} for information
@@ -1440,7 +1440,7 @@ kind of lookups should be performed.
 
 \begin{enumerate}
 \item
-\verb|full_adress|: use the full address as key.
+\verb|full_address|: use the full address as key.
 \item
 \verb|detail_plus|: lookup also
 ``{\tt user++@subdomain}''.
@@ -1978,7 +1978,7 @@ these flags can be used to select a subset of the matching described in
 Section \ref{LookupOrdersinMaps}.
 \begin{enumerate}
 \item
-\verb|full_adress|: use the full address as key.
+\verb|full_address|: use the full address as key.
 \item
 \verb|detail_plus|: lookup also
 ``{\tt user++@subdomain}''.
@@ -2633,6 +2633,36 @@ in the access map
 \end{enumerate}
 
 \item
+\verb|greeting|\index{greeting}:
+initial {\tt ESMTP} greeting text.
+Unless the greeting string starts with the text ``220'' and ends with
+CRLF (\textbackslash r\textbackslash n),
+it will be appended to the greeting code {\tt 220},
+and the host name (separated by a space each).
+Otherwise, the entire string will be used verbatim.
+To specify a multiline greeting, use something like:
+
+\begin{verbatim}
+greeting = "220-host.name Welcome to my fancy ESMTP server\r\n"
+   "220-Sending UBE is forbidden.\r\n220 Violators will be prosecuted.\r\n";
+\end{verbatim}
+
+The default greeting text consists of the code {\tt 220},
+the host name,
+the word ``{\tt ESMTP}''
+and the MeTA1 version
+(separated by spaces).
+Note: RFC 2821 requires that the greeting has the form
+
+\begin{verbatim}
+220 FULLY.QUALIFIED.HOST.NAME optionally more text
+\end{verbatim}
+
+that is,
+the first word after the {\tt 220} code {\em must} be the host name,
+hence these two words are usually prepended to the specified greeting text.
+
+\item
 \verb|id|\index{id}:
 \label{ConfigurationforSMTPServer:id}
 unique identifier for SMTP server (0);
@@ -2926,6 +2956,22 @@ DeathStar/emailAddress=deathstar@endmail.org	& relay	\\
 Notes:
 \begin{itemize}
 \item
+if a CN contains a bogus value (e.g., an embedded NUL),
+then it will be represented by a textual error description instead:
+
+\begin{tabular}{ll}
+BadCert:TooLong	& CN is too long	\\
+BadCert:ContainsNUL	& CN contains an embedded NUL	\\
+BadCert:Unknown	& other, unspecified error while extracting CN	\\
+\end{tabular}
+
+\item
+if a DN contain an unprintable character,
+then it will be replaced by a backslash, an 'x',
+and the hexadecimal value (two digits), e.g.,
+an embedded NUL is shown as \verb|\x00|.
+
+\item
 line breaks have been inserted after {\tt CN=} for readability,
 each tagged entry must be one (long) line in the access map.
 \item
@@ -3268,7 +3314,7 @@ Repeat the following lookups for each subdomain of domain
 ``{\tt user+detail@subdomain}'' if ``{\tt +detail}'' exists;
 this is a verbatim match.
 Flag:
-\verb|full_adress|.
+\verb|full_address|.
 \item
 ``{\tt user++@subdomain}'' if ``{\tt +detail}'' exists and
 ``{\tt detail}'' is not empty;
@@ -3569,7 +3615,7 @@ the cert issuer must be listed in
 item
 \ref{ConfigurationforSMTPServer:tls}).
 \item
-\verb|encrypted|
+\verb|encrypted|:
 the TLS connection must be encrypted (i.e.,
 the effective keylength (in bits)
 of the symmetric encryption algorithm used for a TLS  connection
@@ -5074,6 +5120,7 @@ upper case words:
 \begin{tabular}{ll}
 {\tt OK}	& the key was found, result contains the looked up value \\
 {\tt NOTFOUND}	& the key was not found, the result is empty	\\
+{\tt NOMORE}	& the key was not found, stop further search    \\
 {\tt TEMP}	& a temporary failure occured	\\
 {\tt TIMEOUT}	& a timeout occured on the server side	\\
 {\tt PERM}	& a permanent failure occured	\\
@@ -5082,6 +5129,44 @@ upper case words:
 In case of errors (status {\tt TEMP}, {\tt TIMEOUT} or {\tt PERM})
 the result field may contain an explanatory message.
 
+The {\tt NOMORE} status indicates that the key has not been found and
+also instructs smar to stop any further searches using this key and its
+derivatives. 
+
+For example, consider lookups in the alias map.
+Suppose that the current alias map is configured as:
+
+\begin{verbatim}
+aliases {
+     name = aliasmap;
+     flags = { localpart, local_domains };
+}
+\end{verbatim}
+where {\tt aliasmap} is a socket map declared earlier in the configuration.
+This means that when looking for the key {\tt foo@bar.net},
+smar will perform the following lookups 
+(see Section \ref{LookupOrders}):
+
+\begin{verbatim}
+aliases foo@bar.net
+aliases foo*@bar.net
+aliases foo
+\end{verbatim}
+
+Suppose that the alias {\tt foo@bar.net} does not exist,
+but the local alias {\tt foo} does exist.
+Now, when presented the lookup key {\tt foo@bar.net},
+the socket map cannot simply return {\tt NOTFOUND},
+because then smar will go on searching until the search for
+{\tt foo} returns a false positive.
+In this case, the map should return {\tt NOMORE}.
+When returned this reply,
+smar discontinues further searches and acts as if {\tt NOTFOUND} was returned.
+
+The {\tt NOMORE} return works also in sequence map.
+If any of the maps in the sequence returns {\tt NOMORE},
+the remaining maps are not tried.
+
 Example replies:
 
 \begin{verbatim}
diff --git a/doc/README.txt b/doc/README.txt
deleted file mode 100644
index ff8769e..0000000
--- a/doc/README.txt
+++ /dev/null
@@ -1,4723 +0,0 @@
-                               MeTA1 README
-
-                              Claus Assmann
-
-
-Contents
-
-  * Introduction to MeTA1
-      + MeTA1 is a Message Transfer Agent
-          o Main Components of MeTA1
-      + Documentation
-          o Typographical Conventions
-      + Version
-      + Current State
-          o Providing Feedback
-      + For the Impatient
-
-  * Building, Testing, and Installing MeTA1
-      + Verifying the Source Code Distribution
-      + Building MeTA1
-          o Compile-Time Configuration Options
-      + Test Programs
-          o Environment Variables used by Test Programs
-          o Known Test Program Problems
-      + Installing MeTA1
-          o Directories, Files, and Permissions
-          o Upgrading from earlier MeTA1 Versions
-
-  * Run-Time Configuration of MeTA1
-      + Overview
-      + Configuration File Syntax
-          o Configuration File Values
-      + Example Configuration File
-      + Common Global Configuration
-      + Common Configuration Options
-      + Pathnames for Files, Directories, and Maps
-      + Configuration for MCP
-      + Configuration for QMGR
-          o Configuration Map for QMGR
-      + Configuration for SMAR
-          o Declaring Maps for SMAR
-          o Configuration Options for SMAR
-          o Configuration Maps for SMAR
-          o Greylisting
-      + Configuration for SMTP Server
-          o SMTP Server Session Configuration
-          o Multiple SMTP Servers with different Configurations
-          o Protecting Recipients
-      + Configuration for SMTP Client
-          o SMTP Client Session/Recipient Configuration
-      + Lookup Orders
-          o Lookup Orders in Maps
-          o Lookup Orders for Anti-Spam Measures
-          o Macro Replacements in RHS
-      + STARTTLS Restrictions
-      + VERP
-
-  * Running MeTA1
-      + Starting MeTA1
-      + Using MeTA1 only for Outgoing Mail
-      + Using MeTA1 for Incoming Mail
-          o Local Delivery and Specifying Local Domains
-          o Specifying Valid Local Addresses
-      + Using MeTA1 as Gateway
-      + Using MeTA1 as Backup MX Server
-          o Note about Backup MX Servers
-      + Miscellaneous Programs
-          o Do not run programs as root User
-          o Displaying Content of Mail Queues
-          o Interacting with QMGR
-      + Reloading Maps
-      + Logging
-          o Logfile Rotation
-      + Regular Checks
-      + Dealing with Errors
-          o Resource Problems
-          o Database Problems
-          o Writing Core Dumps
-      + Replacements for Features available in other MTAs
-
-  * Policy Milter
-      + Policy Milter Overview
-      + Native Policy Milter API
-          o Data Structures
-          o Start and Stop
-          o New SMTP Server
-          o SMTP Session and Transaction
-          o Set and Get pmilter Contexts
-          o Accessing MTA Symbols
-          o Sender Modification
-          o Recipient Modifications
-          o Header Modifications
-          o Message Replacement
-          o Further Capabilities
-          o Miscellaneous Functions
-          o Return Values
-          o Implementation Notes
-      + Policy Milter Examples
-
-  * Miscellaneous
-      + Troubleshooting
-          o Startup Problems
-          o Logfile Entries
-      + Caveats
-      + Checks in SMTP Server
-          o Strict RFC Compliance
-          o Various Checks
-      + Security Checks
-      + Restrictions
-      + Code Review, Enhancements, Patches
-      + Porting
-      + Version Naming
-          o Snapshots
-
-  * Data Flow in MeTA1
-      + Data Flow in MeTA1
-
-  * Advanced Configuration Options
-      + Overview
-          o Flags
-      + Advanced Configuration for MCP
-      + Advanced Configuration for QMGR
-      + Advanced Configuration for SMAR
-      + Advanced Configuration for SMTP Server
-      + Advanced Configuration for SMTP Client
-
-  * Tuning
-      + Size of Queues, Caches, and Databases
-      + Disk I/O
-      + Processes and Threads
-
-  * Format Specifications
-      + Socket Map
-      + Format of Session/Transaction Identifiers
-      + Logfile Format
-      + Format of Received Header
-      + Format of DSNs
-
-  * Setup for STARTTLS
-      + Certificates for STARTTLS
-
-  * More About Configuration, Compilation, Debugging, and Testing
-      + Compile Time Options
-          o Generic
-          o QMGR
-          o SMAR
-          o SMTPS
-          o Debugging Compile Time Options
-      + Possible Compilation Problems or Warnings
-      + More About Test Programs
-          o More Environment Variables used by Test Programs
-          o Other Potential Problems with Test Programs
-
-  * Licenses
-  * Bibliography
-  * Index
-
-Introduction to MeTA1
-
-MeTA1 is a Message Transfer Agent
-
-This distribution contains the source code for MeTA1 which implements a
-message transfer agent (MTA). It supports the Simple Mail Transfer
-Protocol (SMTP) as specified by RFC 2821 [Kle01] and various extensions,
-e.g., STARTTLS [Hof99], AUTH [Mye99], PIPELINING [Fre00], as well as other
-protocols, e.g., LMTP [Mye96].
-
-MeTA1 is intended to be used as a secure and efficient mail gateway. It
-does not provide any mail content modification capabilities, e.g.,
-masquerading of addresses or changing (addition, removal) of headers.
-Later versions will probably add such capabilities.
-
-
-Main Components of MeTA1
-
-MeTA1 is a modularized message transfer agent consisting of five (or more)
-persistent processes, four of which are multi-threaded. A central queue
-manager (QMGR) controls SMTP servers (SMTPS) and SMTP clients (SMTPC) to
-receive and send e-mails, an address resolver (SMAR) provides lookups in
-various maps including DNS for mail routing, and a main control program
-(MCP) starts the others processes and watches over their execution. The
-queue manager organizes the flow of messages through the system and
-provides measures to avoid overloading the local or remote systems by
-implementing a central control instance.
-
-More information about each component will be given in the appropriate
-sections. Complete documentation and background information can be found
-in [Assmb]. Section 7.1 describes the data flow in MeTA1, the following is
-a brief summary. Figure 1.1 shows the interaction of the various
-components and databases^1.1. Incoming messages are accepted by an SMTP
-server (SMTPS) which stores the messages in the content database (CDB).
-The envelope information, i.e., sender and recipients, is stored by the
-queue manager in an incoming queue (IQDB) and written to disk to the
-incoming queue backup database (IBDB). For a delivery, the envelope
-information must be transferred into the active queue (AQ). The scheduler
-in QMGR takes recipient envelopes from AQ and creates transactions which
-are given to an SMTP client (SMTPC) for delivery. An SMTP client takes the
-transaction information and tries to send a message whose content is read
-from CDB. After a successful delivery attempt a record is written to IBDB
-that logs this information. The deferred envelope database (DEFEDB) is
-only used if a message cannot be delivered during the first attempt.
-
-                   Figure 1.1: MeTA1: Overall Structure
-
-\begin{picture}(120, 120)\
-epsfxsize 120mm\leavevmode\
-epsffile{overview1.eps}\end
-{picture}
-
-This version of MeTA1 does not come with a local delivery agent nor a mail
-submission program. See Sections 4.3.1 and 4.2 which programs can be used
-to achieve the desired functionality.
-
-
-Documentation
-
-The document ``sendmail X: Requirements, Architecture, and Functional
-Specification'' [Assmb] provides the background about the MeTA1 design,
-its architecture, as well as the functional specification, and details
-about the implementation.
-
-Typographical Conventions
-
-In this documentation, a command written as
-
-$ command
-
-should be executed as an unprivileged user. Only a command written as
-
-# command
-
-should be executed as the superuser.
-
-If a command contains components that need to be replaced by values that
-depend on the environment or the local configuration, then it is usually
-written as a macro, e.g., $LOGFILE.
-
-A number in parentheses behind a command or function refers to the manual
-section, e.g., syslog(3), as it is usual for Unix documents.
-
-Version
-
-This document has been written for MeTA1-1.0.PreAlpha24.1, see also the
-greeting of the SMTP server and the version output of the main components.
-See Section 6.8 for information about version naming.
-
-Current State
-
-There are still some error conditions which may not be handled gracefully,
-i.e., in case of some resource problems (e.g., out of memory or out of
-disk space) the system may abort; however, this is common for most open
-source MTAs which simply abort if they are running out of memory. See
-Section 4.10.1 how to deal with those conditions. The software is running
-since 2004-01-01 as MTA on the main machine of the author without any
-significant problem, i.e., it never lost any mail.
-
-
-Providing Feedback
-
-Please report bugs and provide feedback either to the developers list[
-Assma] (if you are subscribed) or directly to^1.2:
-
-    < MeTA1 + feedback (at) MeTA1 . org >
-
-Feedback about the code, the documentation (including typographical,
-syntactical, and grammatical errors, pointing out parts that are not well
-enough explained, etc.), as well as patches and enhancements are highly
-appreciated.
-
-For the Impatient
-
-For those who do not want to read the entire documentation, it is adviced
-to read at least sections 2.2 and 2.4, and the appropriate section of
-Chapter 4.
-
-Building, Testing, and Installing MeTA1
-
-
-Verifying the Source Code Distribution
-
-The source code is distributed as a (compressed) tar file and is
-accompanied by a PGP signature file which has the same name as the tar
-file plus the ending .sig. To verify the integrity of the source code PGP
-[PGP] or GPG [Gnu] are required as well as the MeTA1 PGP signing key [MeT
-]:
-
-$ gpg -verify meta1-$VERSION.tar.gz.sig
-or:
-$ pgp meta1-$VERSION.tar.gz.sig meta1-$VERSION.tar.gz
-
-Further information, especially about warnings or possible errors, can be
-found in the documentation for PGP or GPG.
-
-
-Building MeTA1
-
-MeTA1 uses a configure file generated by GNU autoconf for configuration.
-Hence you can build it (after verifying and unpacking the distribution) as
-follows:
-
-$ mkdir obj.$OS && cd obj.$OS && $PATHTO/meta1-$VERSION/configure $OPTIONS \
-  && make && make check
-
-Obviously you have to replace $OS, $VERSION, $OPTIONS, as well as $PATHTO.
-It is also possible to build MeTA1 in the source tree, however, this is
-discouraged:
-
-$ ./configure && make && make check
-
-Notes: do not run this as root; this is not just a basic security measure
-(only use a privileged account if it is really required), but most of the
-programs refuse to run with root privileges. It might be useful to save
-the output of these commands^2.1for later inspection.
-
-
-Compile-Time Configuration Options
-
-Beside the usual configure options like --prefix a few MeTA1 specific
-configuration options are available:
-
-    --enable-TLS Enable check for STARTTLS support. The default is yes,
-    i.e., configure tries to determine whether OpenSSL is available on the
-    machine. Requires OpenSSL 0.9.6 or newer [Ope]. Note: check the
-    OpenSSL website [Ope] for security announcement and be aware that due
-    to the complexity of the software it may cause (security) problems.
-
-    --enable-SASL Enable check for AUTH support. The default is yes, i.e.,
-    configure tries to determine whether Cyrus SASL v2 is available on the
-    machine. Requires Cyrus SASL version 2.1.18 or newer [Cyr]. Notes:
-     1. check http://asg.web.cmu.edu/cyrus/ and http://asg.web.cmu.edu/
-        sasl/ for security announcement and be aware that due to the
-        complexity of the software it may cause (security) problems.
-     2. If Cyrus SASL uses Berkeley DB then it is necessary that the
-        version which has been used during compilation matches the version
-        that it is linked against.
-
-    --with-sasl-libdir=path Path to directory containing Cyrus SASL v2
-    library.
-
-    --with-sasl-incdir=path Path to directory containing Cyrus SASL v2
-    include files.
-
-    --disable-included-bdb MeTA1 ships with a modified version of Berkeley
-    DB 4.3.28 which is built and used by default. To use a different
-    version of Berkeley DB (it must be 4.3, 4.2, or 4.1), e.g., one that
-    is part of the host OS, specify --disable-included-bdb.
-
-    Notes:
-     1. If you do not use the Berkeley DB version that comes with MeTA1,
-        make sure you run all the tests. For example, with Berkeley DB
-        4.2.50 on OpenBSD 3.2/i386 at least one of the test programs fails
-        and hence this combination must not be used. Moreover, if you
-        encounter a problem using some other BDB version then you must try
-        to reproduce the problem with the shipped version before reporting
-        a possible bug.
-     2. Do not use Berkeley DB 4.3.27/28 in 64 bit mode on Solaris 5.8/9
-        as it crashes at least in those configurations^2.2. This bug is
-        fixed in the version that is distributed with MeTA1.
-
-    --with-bdb-libdir=path Path to directory containing Berkeley DB
-    library. This option is only needed if --disable-included-bdb is used
-    and Berkeley DB is not installed in a location that the compiler or
-    linker use by default. Note: configure currently checks only for a
-    static library.
-
-    --with-bdb-incdir=path Path to directory containing Berkeley DB
-    include files. This option is only needed if --disable-included-bdb is
-    used and Berkeley DB is not installed in a location that the compiler
-    uses by default. Example:
-
-    $ B=/usr/local/BerkeleyDB.4.3
-    $ $PATHTO/meta1-$VERSION/configure --with-bdb-libdir=$B/lib \
-      --with-bdb-incdir=$B/include --disable-included-bdb
-
-    --enable-pmilter Enable policy milter protocol, see Chapter 5.
-
-    --enable-msp Enable a simple mail submission program (MSP) that is
-    currently not supported (located in contrib/). This is just a helper
-    program for those who do not want to install a different MSP but need
-    only some basic functionality (which does not include a queueing
-    mechanism). Note: this will install the MSP as sendmail thus
-    overriding any existing program of that name (as well as a man page).
-
-    --enable-tinycdb Enable support for cdb map type, based on tinycdb
-    0.75 [Tok].
-
-To get the current list of configuration options, use configure --help.
-
-
-Test Programs
-
-$ make check
-
-will run all test programs; currently those tests take about eighty
-minutes to run on a standard workstation. For each of the test programs
-one line is printed to denote whether the test succeeded, i.e., the output
-consists of lines with the marker PASS: or FAIL: and the name of the test
-program program. Additional output might be generated by the test programs
-themselves, e.g.,
-
-2 of 2 tests completed successfully,
-
-or some debug output. The debug output may even indicate an error, but
-only a final FAIL: indicates a test failure. Some tests depend on
-compilation options and are only conditionally enabled; others may depend
-on environment variables, see 2.3.1. For disabled tests SKIP is shown.
-
-Since some of the tests may fail (see Section 2.3.2) and make will usually
-stop after encountering an error, it might be required to use
-
-$ make -i check >check.out 2>&1
-
-to perform all tests.
-
-
-Environment Variables used by Test Programs
-
-Environment variables can be used to disable some test programs if
-required or change the behavior of some test programs. These environment
-variables and their effects are:
-
-  * MTA_NO_DNS_TEST: disable tests that perform DNS lookups. These lookups
-    may use domains that are under control of the MeTA1 author.
-
-  * MTA_DNS_TIMEOUT: can be used to set a different timeout than the
-    default, however, it may not be obeyed by all DNS test programs.
-
-  * MTA_TEST_DNS_TIMING: run DNS tests that are timing dependent and may
-    fail under certain conditions (e.g., network too slow).
-
-  * MTA_TIMING: run MTA tests that are timing dependent and may fail under
-    certain conditions.
-
-  * MTA_STOPONERROR: causes most test scripts that perform multiple checks
-    to stop on the first error that occurs instead of performing all
-    checks.
-
-  * MTA_NO_LOG_TEST: disables some tests that use syslog(3).
-
-  * MTA_NO_SLOW_TEST: disables some tests that take a very long time.
-
-In this example the DNS timeout is set to 60 seconds and tests that take a
-very long time are disabled:
-
-$ MTA_DNS_TIMEOUT=60
-$ MTA_NO_SLOW_TEST=1
-$ export MTA_DNS_TIMEOUT MTA_NO_SLOW_TEST
-$ make -i check
-
-
-Known Test Program Problems
-
-  * connctl.sh will fail on systems that have neither inet_pton(3) nor
-    inet_aton(3). Fix: upgrade your OS or write a replacement function and
-    put it into librepl/.
-  * t-evthr-slp can fail in some circumstances if the OS is busy with
-    other tasks as it depends on the OS scheduler. Fix: just rerun the
-    test.
-  * t-evthr-sig.sh fails on Linux systems that use a thread implementation
-    that is not POSIX compliant. The test is currently disabled on all
-    Linux versions. Note: if you know a simple way to figure out whether
-    the OS actually provides POSIX compliant pthreads, please let me know.
-  * t-hostname fails on systems where gethostname() does not return any
-    FQHN at all (e.g., default SunOS 4/5 installations). Add the FQHN as
-    alias to /etc/hosts (see hosts(5) to solve this problem, e.g.,
-
-            10.1.2.3    myname myname.my.domain
-
-    or
-
-            10.1.2.3    myname.my.domain myname
-
-  * t-parsesockstr fails on systems like AIX which treat an empty string
-    as a valid IP address in inet_addr(3).
-
-  * t-mts-icr.sh and t-mts-ocr-?.sh try to test incoming/outgoing rate
-    control. They rely on the time it takes to send/receive mails which
-    may not work on machines that are significantly slower or faster than
-    the machines available to the author.
-
-  * t-smar-0.sh, t-smar-3.sh, and t-dns-1.sh may fail sometimes due to DNS
-    timeouts. Run the tests again or increase the DNS timeout, see Section
-    2.3.1.
-
-Note: DNS related test programs may fail if the first nameserver entry in
-/etc/resolv.conf does not respond properly (and reasonably fast) to DNS
-queries. See Section 12.3.1 how to override the default nameserver
-selection: MTA_NAMESERVER.
-
-For more information about possible test program problems see Section
-12.3.2. For problems with programs in the contrib/ directory, see contrib/
-README.
-
-
-Installing MeTA1
-
-MeTA1 needs several users to provide separation of privileges and to
-enhance security. Currently there are four required accounts (the numbers
-for uid and gid are examples only); the last one listed below (meta1) is
-not really required:
-
-meta1s:*:260:260:meta1 SMTPS:/nonexistent:/sbin/nologin
-meta1q:*:261:261:meta1 QMGR:/nonexistent:/sbin/nologin
-meta1c:*:262:262:meta1 SMTPC:/nonexistent:/sbin/nologin
-meta1m:*:263:263:meta1 misc:/nonexistent:/sbin/nologin
-meta1:*:264:264:meta1 other:/nonexistent:/sbin/nologin
-
-with the corresponding groups:
-
-meta1s:*:260:
-meta1q:*:261:
-meta1c:*:262:meta1s
-meta1m:*:263:meta1s,meta1q
-meta1:*:264:
-
-Note: on some operating systems the star character is not a valid value
-for the password field. Check passwd(5)^2.3to determine which value to use
-to disable the password.
-
-To check whether the required users and groups exist, run
-
-$ ./misc/sm.check.sh -p
-
-(in the build directory); see below how to override the default values for
-the user and group names.
-
-A shell script to setup the directories, files, etc. as described below is
-available in misc/sm.setup.sh.in. This script is modified by configure to
-create misc/sm.setup.sh (in the build directory) which is invoked when
-
-# make install
-
-is called. Most defaults in the installation script misc/sm.setup.sh can
-be overridden with environment variables (default is listed in square
-brackets):
-
-  * MTACONFDIR: [/etc/meta1] configuration directory.
-  * MTAQDIR: [/var/spool/meta1] queue directory; communication sockets are
-    created in this directory by default too.
-  * MTALOGDIR: [.] logging directory (relative to MTAQDIR). If logging is
-    done via syslog(3) then this directory is not used.
-  * MTAS [meta1s] SMTP Server user and group.
-  * MTAC [meta1c] SMTP Client user and group.
-  * MTAQ [meta1q] QMGR user and group.
-  * MTAM [meta1m] address resolver (misc) user and group.
-  * MTA [meta1] generic (configuration etc) user and group.
-  * MTALG group for logfiles; the install program tries operator,
-    sysadmin, and root.
-
-Important Notes:
-
- 1. The users and groups must be created before make install is invoked.
-
- 2. misc/sm.setup.sh will not overwrite existing files or directories,
-    hence it does not work for upgrading a system if configuration files
-    or directory/file owners need to changed.
-
-
-Directories, Files, and Permissions
-
-make install (i.e., misc/sm.setup.sh) will create all the required
-directories and files with the correct permissions provided the users and
-groups have been set up properly. This section explains what the created
-structure looks like.
-
-The CDB directories (0-9, A-F) must be owned by meta1s and have group
-meta1q with the permissions 0771:
-
-drwxrwx--x  2 meta1s  meta1q        0/
-
-Note: this means that everyone with access to the machine can guess the
-name of content files (see Section 10.2 for the format; the names can also
-be read from the logfiles if those are world-readable) and list (ls(1))
-them, however, they cannot access the content files as those are owned by
-meta1s with mode 0640 and group meta1c, e.g.,
-
--rw-r-----  1 meta1s  meta1c  1993 Jul  9 21:19 2/S000000000006B1D200
-
-The main (DEFEDB) and incoming queues (IBDB) must belong to meta1q and
-should not accessible by anyone else:
-
-drwx------  2 meta1q  meta1q        defedb/
-drwx------  2 meta1q  meta1q        ibdb/
-drwx------  2 meta1q  meta1q        ibdb/ibdb/
-
-Mailertable, aliases map, and other maps for SMAR (see Section 3.9.3)
-should belong to meta1m and can be readable as local conventions require:
-
--rw-r--r--  1 meta1m  meta1m         mt
--rw-r--r--  1 meta1m  meta1m         aliases.db
-
-In general, maps should be owned by the user id of the program that uses
-them, e.g., meta1q owns the QMGR configuration map qmgr_conf.db (see
-Section 3.8.1).
-
-The meta1 configuration file can either belong to root or the generic
-meta1 user:
-
--rw-r--r--  1 meta1   meta1          meta1.conf
-
-The directories in which the communication sockets between QMGR and the
-other programs are located must belong to meta1q and be group accessible
-for the corresponding program:
-
-drwxrws---  2 meta1q  meta1m        qmsmar/
-drwxrws---  2 meta1q  meta1c        qmsmtpc/
-drwxrws---  2 meta1q  meta1s        qmsmtps/
-
-The directory in which the communication socket between MCP and SMTPS is
-located must belong to meta1s:
-
-drwxr-x---  2 meta1s  meta1s        smtps/
-
-The logfiles must be owned by the corresponding user and may have relaxed
-group (or even world) read permissions:
-
--rw-r-----  1 meta1q  operator   qmgr.log
--rw-r-----  1 meta1m  operator   smar.log
--rw-r-----  1 meta1c  operator   smtpc.log
--rw-r-----  1 meta1s  operator   smtps.log
-
-To check whether an installation was successful, run
-
-# ./misc/sm.check.sh -P
-
-(in the build directory). Note: this script uses the same environment
-variables as the installation script.
-
-Upgrading from earlier MeTA1 Versions
-
-Currently there is no support for automated upgrades. If you have an
-earlier version of MeTA1 installed and want to upgrade, here are some tips
-(note: all programs should be run from the build directory unless
-mentioned otherwise):
-
-  * To check whether an installation was successful, run
-
-    # ./misc/sm.check.sh -P
-
-  * To check whether the configuration file needs changes, run
-
-    $ ./misc/smconf /etc/meta1/meta1.conf
-
-    If the file is syntactically invalid for this version of MeTA1 the
-    program will show those errors. Use -h as argument to see the
-    available option, e.g., -u might be useful.
-
-Run-Time Configuration of MeTA1
-
-Overview
-
-Configuration of MeTA1 can be done via command line parameters or via a
-configuration file (the latter is preferred, the former offers only a
-small subset of the available configuration options). If a configuration
-file and command line options are specified, then the options are
-currently processed in order, i.e., later settings override earlier ones
-for the same options. Information about the former is available by
-invoking a program with the option -h (MCP currently uses syslog(3)
-instead of stderr), it will show the usage as well as the default values.
-The syntax of the configuration files is specified in the following
-sections. To actually use a configuration file, the option -f $CONFIGFILE
-must be used, otherwise the programs use only the built-in default values,
-but not a configuration file. Option '-V' can be used to show version
-information, specifying '-V' multiple times shows more detail, e.g.,
-'-VVVVV' will show the configuration data including the default value for
-(almost) every option, and '-VVVVVV' will also show all available flags.
-
-Some configuration options can be set via maps, these maps are: qmgr_conf
-for QMGR (see Section 3.8.1) and access for SMTPS (indirectly via the
-address resolver, see Section 3.9.3).
-
-
-Configuration File Syntax
-
-The grammar for a MeTA1 configuration file is very simple:
-
-conf     ::=  entries
-
-entries  ::=  entry *
-
-entry    ::=  option | section
-
-section  ::=  keyword [name ] "{" entries "}" [";"]
-
-option   ::=  option-name "=" rhs
-
-rhs      ::=  value ";" | "{" value-list "}" [";"]
-
-A configuration file consists of entries, each entry is either an option
-or a section. An option has a name, an equal sign, and a value terminated
-by a semicolon or a (bracketed) list of values separated by comma^3.1. A
-section consists of a keyword, an optional name, and a (bracketed)
-sequence of entries. Keywords and options are not case sensitive. The
-layout of a configuration file does not matter, i.e., indentation and line
-breaks are irrelevant (in general, but see below for strings).
-
-
-Configuration File Values
-
-Values in a configuration file are usually strings or numbers. If a string
-is used, then it should be quoted, unless it contains no special
-characters which are treated specially by the grammar. If a string is very
-long it can be broken into substrings spread out over several lines (just
-like strings in ANSI C), e.g.,
-
-  somemessage = "this is a very long string which is spread "
-     "out over several lines because otherwise it is too "
-     "hard too read.";
-
-Numeric values can have the usual prefixes (known from the programming
-language C) of 0x for hexadecimal (with digits 0 to 9, A to F, and a to f)
-and 0 for octal (with digits 0 to 7). Valid boolean values are 0, false,
-off for false, and 1, true, on for true (case insensitive).
-
-In some cases it is possible to have units for values. Currently time and
-size values make use of this feature. Valid time units are w for weeks, d
-for days, h for hours, m for minutes, and s for seconds. Valid units for
-size are B for bytes, KB for kilo bytes, MB for mega bytes, and GB for
-giga bytes. It is allowed to specify a sequence of numbers and units,
-e.g., 1h 5m 12s. Unless otherwise specified, the default units for times
-and sizes in a configuration file are s and B, respectively; for those
-values these units can be used.
-
-
-Example Configuration File
-
-The installation script creates the file meta1.conf in the configuration
-directory (/etc/meta1, see Section 2.4). Check the comments in the file
-and edit it if required. A configuration file for meta1 contains several
-sections: a global section which specifies the locations of sockets and
-directories that are used by multiple components, and one section each for
-QMGR, SMAR, SMTP server, and SMTP client. Other sections may define
-services that are started by MCP, e.g., a local mailer.
-
-CDB_base_directory = "/var/spool/meta1/";
-
-qmgr {
-  AQ_max_entries = 8192;
-  smtpc { initial_connections = 19; max_connections = 101; }
-  smtps { max_connections = 5; max_connection_rate=160; }
-  max_errors_per_DSN=16;
-  wait_for_server = 4; wait_for_client = 4;
-  start_action = wait; user = meta1q;
-  restart_dependencies = { smtps, smtpc, smar };
-  path = "/usr/libexec/qmgr"; arguments = "qmgr -f /etc/meta1/meta1.conf";
-}
-
-smtps { flags = {8bitmime}; CDB_gid = 261; IO_timeout = 5m3s;
-  listen_socket { type = inet; port = 25; }
-  start_action = pass; pass_fd_socket = smtps/smtpsfd;
-  user = meta1s; path = /usr/libexec/smtps;
-  arguments = "smtps -f /etc/meta1/meta1.conf"; }
-
-smtpc {
-  Log_Level = 12; IO_timeout = 6m; wait_for_server = 4;
-  start_action = wait; user = meta1c; path = "/usr/libexec/smtpc";
-  arguments = "smtpc -f /etc/meta1/meta1.conf"; }
-
-smar {
-  Log_Level = 12;
-  nameserver = {10.10.10.9, 127.0.0.1};
-  DNS_timeout = 6;
-  start_action = wait; user = meta1m; restart_dependencies = { smtps, qmgr };
-  path = "/usr/libexec/smar"; arguments = "smar -f /etc/meta1/meta1.conf";
-}
-
-
-Common Global Configuration
-
-All of the following options have defaults and should only be changed if
-necessary.
-
- 1. hostname: set the hostname to use for the various components. This can
-    be set if gethostbyname(3) does not return a valid (fully qualified)
-    hostname (format: string).
- 2. CDB_base_directory: base directory of CDB (format: string); this
-    should either be empty (which is the default) or a path to a directory
-    including a trailing slash; the CDB library currently simply appends
-    the directory names (see Section 2.4.1) to it. It might be useful to
-    move some subdirectories to different disks (by creating (symbolic)
-    links (ln(1))) to spread the I/O load.
- 3. SMAR_socket: socket created by the address resolver over which clients
-    (SMTPS, QMGR) can send requests (format: string).
- 4. SMTPC_socket: communication socket between SMTPC and QMGR (format:
-    string).
- 5. SMTPS_socket: communication socket between SMTPS and QMGR (format:
-    string).
-
-The sockets are currently Unix domain sockets only, hence the value is
-simply the pathname of the socket.
-
-
-Common Configuration Options
-
-There is currently one configuration option which is the same across all
-modules but is not specified in the global section because it is specific
-to the individual modules.
-
- 1. log: this is a section with the following options:
-     1. facility: see syslog(3) for valid facilities, here are some valid
-        options provided the OS offers them: daemon, mail, auth, local0,
-        etc.
-     2. ident: identification string for openlog(3), defaults to name of
-        the modules. It might be useful to chose other identifiers, e.g.,
-        MeTA1 or MeTA1QMGR.
-     3. options: options for openlog(3) (without the leading LOG_) as
-        provided by the OS, e.g., pid or ndelay.
-
-    Example:
-
-    qmgr { log { facility = daemon; ident=meta1-qmgr; } }
-    smtps { log { facility = mail; ident=meta1-MTA; } }
-
-    Note: debug output is currently sent to stdout; syslog(3) is not used
-    for debugging.
-
-All modules have an option to set the amount of logging (log_level) that
-should be done. The larger the value the more information is logged. For
-normal operation a value of 9 is recommended. During testing values of 12
-to 14 are useful.
-
-
-Pathnames for Files, Directories, and Maps
-
-Most names of files (including maps) and directories in the configuration
-file have a default name (compiled into the binary) without an absolute
-path, e.g., aliases.db. If a pathname is not explicitly set in the
-configuration file or does not use a absolute path (i.e., begins with a
-slash), then the default is relative to either
-
- 1. the configuration directory: maps and configuration files, e.g.,
-    aliases.db and cert_file.
- 2. the main queue directory: pathnames of sockets, and databases to store
-    envelope information (IBDB, DEFEDB) or message contents (CDB).
-
-The paths for files mentioned in case 1 are taken relative to the path of
-the configuration file which is passed via the -f option to the various
-modules. For example: if SMAR is started as
-
-/usr/libexec/smar -f /etc/meta1/meta1.conf
-
-then the pathname used for the aliases map is /etc/meta1/aliases.db. This
-applies to the SMAR maps aliases, mailertable, and access (3.9.2), the
-QMGR qmgr_conf map (3.8.1), and the STARTTLS related files and directories
-used by the SMTP server (3.10) and client (3.11).
-
-The paths for files mentioned in case 2 are taken relative to the
-execution directory. All MeTA1 modules should be started (via MCP) in the
-main queue directory (default: /var/spool/meta1, see Section 2.4).
-
-See the various configuration options explained below how to override the
-defaults. Note: relative pathnames specified in the configuration file are
-(currently) always relative to the main queue directory.
-
-
-Configuration for MCP
-
-Every section in a MeTA1 configuration file that refers to one of its four
-main components (QMGR, SMTPS, SMTPC, and SMAR; see Section 1.1.1) has some
-options that are relevant for MCP. These MCP options are:
-
- 1. start_action: one of nostartaccept, accept, pass, wait (required).
-
- 2. listen_socket: this is a subsection that specifies the socket on which
-    a process should listen. It must be specified for any start_action
-    except wait. There are two different socket types available:
-
-     1. type = inet
-         1. port: port number on which process should listen (format:
-            numeric).
-         2. address: IP address on which process should listen, if none is
-            specified the process listens on all local (IPv4) addresses
-            (format: IPv4 address).
-
-     2. type = unix
-         1. path: pathname of Unix Domain socket on which process should
-            listen (format: string).
-         2. umask: umask for socket (format: numeric).
-         3. user: owner of socket (format: string).
-         4. group: group of socket (format: string).
-
- 3. pass_fd_socket: pathname of Unix Domain socket to pass a file
-    descriptor to the process.
- 4. user: user name to run process.
- 5. group: group name to run process.
- 6. restart_dependencies: list of other MeTA1 components that need to be
-    restarted when this one is restarted (or crashes).
- 7. path: path to program to execute (required).
- 8. arguments: arguments (argv), must start with name of program, see
-    execv(2) (required).
- 9. pass_id: option to use to pass a unique, numeric identifier to the
-    spawned process via the command line. The option will be inserted as
-    first argument. Example:
-
-    smtpc { pass_id = "-i"; min_processes = 4; max_processes = 4;
-      path = /usr/libexec/smtpc; arguments = "smtpc -f meta1.conf"; }
-
-    will cause MCP to start four smtpc processes, each with the options -i
-    $ID$ -f meta1.conf where $ID$ is replaced with a unique identifier.
-
-Notes about start_action:
-
-  * For start_action = pass the option pass_fd_socket must be specified;
-    in this case MCP binds to the specified socket (listen_socket) and
-    passes it via the Unix domain socket (pass_fd_socket) to the started
-    process.
-  * For start_action = nostartaccept MCP waits for incoming connections,
-    and then starts a process to handle a single connection.
-  * For start_action = accept MCP binds to the socket and then starts a
-    process to handle the connections without waiting for an actual
-    request.
-  * For start_action = wait MCP simply starts the requested number of
-    processes without passing them any open connections. This is intended
-    for processes that do not communicate with external clients.
-
-MCP is currently a generic control program that does not have any builtin
-knowledge about the various MeTA1 modules. Hence the MCP options for each
-MeTA1 component must be specified properly, there are no builtin defaults
-that could be associated with the functionality of the various MeTA1
-modules. The default configuration file created by the installation
-program contains the correct defaults. These should only be changed if
-really necessary.
-
-
-Configuration for QMGR
-
-The following configuration options are valid for QMGR:
-
- 1. AQ_max_entries: maximum number of entries in AQ (active queue) (unit:
-    entries). Note: this value must be larger than the largest number of
-    recipients accepted by a single transaction.
- 2. conf: name of configuration map (including extension), see Section
-    3.8.1 for details. See also Section 3.6 about relative pathnames.
- 3. control_socket: specify pathname of ``control'' socket (for querying
-    and making requests). This socket can be used by the query/control
-    program qmgrctl, see Section 4.6.3.
-
- 4. subsection DEFEDB:
-     1. base_directory: home directory for DEFEDB.
-     2. log_directory: log directory for DEFEDB. For better performance,
-        this directory can be set to point to a different disk than the
-        base directory of DEFEDB.
-
- 5. subsection DSN_handling:
-     1. merge_delay_max: maximum time to wait for merging multiple DSNs
-        into one (unit: s).
-     2. flags: configuration flags:
-         1. header_only: include only the headers in a DSN; by default the
-            first bounce includes the entire message and subsequent ones
-            include only the headers.
-         2. MIME_Format: use MIME to structure a DSN. Note: this is not
-            (yet) a DSN in the format specified by RFC 3464 [MV03].
-     3. max_errors_per_DSN: maximum number of error messages (failed
-        recipients) in a bounce (DSN) (unit: entries).
-
- 6. double_bounce_address: RFC 2821 address for double bounces; defaults
-    to <postmaster@hostname>.
- 7. subsection IBDB:
-     1. max_commit_delay: maximum time between commits to IBDB (unit: $\
-        mu$s)
-     2. size: maximum size of each IBDB file (unit: B).
-     3. max_open_TAs: maximum number of open transactions in IBDB before a
-        commit is performed (unit: entries).
-
-    Note: the configuration file offers no way to specify a base directory
-    for IBDB, however, the directory can be easily moved elsewhere and a
-    (symbolic) link (ln(1)) can be added.
-
- 8. subsection IQDB:
-     1. max_cache_entries: maximum number of entries in IQDB cache (unit:
-        entries). This must be larger than the sum of all recipients in
-        open transactions.
-     2. hash_table_entries: size of hash table for IQDB (unit: entries).
-        This must be larger than max_cache_entries.
-
- 9. log_level: logging level.
-10. min_disk_space: minimum amount of free disk space (unit: KB). This
-    value should be significantly larger than the maximum size of a
-    message to be accepted by the SMTP server, it should be as large as
-    the maximum message size multiplied by the maximum number of incoming
-    connections.
-11. OCC_max_entries: size of outgoing (SMTPC) connection cache (unit:
-    entries). This should be large enough to keep track of outgoing
-    connections over a time span that is at least as long as the maximum
-    retry time.
-12. ok_disk_space: amount of free disk space at which normal operation
-    continues (unit: KB). Must be larger than min_disk_space.
-13. queue_return_timeout: maximum time in queue (unit: s).
-14. queue_delay_timeout: send delay warning (``delayed DSN'') if the mail
-    is still in the queue after at least this duration (unit: s). To turn
-    off delayed DSNs set this to a value bigger than queue_return_timeout.
-    Note: based on the retry schedule the delayed DSN might be sent later
-    than the option specifies.
-15. retry_max_delay: maximum time for retrying a delivery (unit: s).
-16. retry_min_delay: minimum time for retrying a delivery (unit: s).
-
-17. subsection smtpc:
-     1. initial_connections: maximum initial number of outgoing
-        connections to a single host (unit: entries). The sliding window
-        for the slow start algorithm (see Section 3.8.1) is initialized
-        with this value.
-     2. max_connections: maximum number of outgoing connections to a
-        single host (unit: entries).
-     3. lmtp_max_rcpts_per_transaction: maximum number of recipients per
-        transaction for mail sent via LMTP (unit: entries).
-     4. smtp_max_rcpts_per_transaction: maximum number of recipients per
-        transaction for mail sent via (E)SMTP (unit: entries).
-
-     5. flags: configuration flags:
-         1. lookup_rcpt_conf: Look up recipient configuration data (see
-            Section 3.11.1) in the access map (see Section 3.9.3)
-
-         2. lookup_session_conf: Look up session configuration data (see
-            Section 3.11.1) in the configuration map (see item 2).
-
-     6. rcpt_conf_lookup_flags: If recipient configuration data (see item
-        17(e)i) is looked up in the access map, then these flags determine
-        which kind of lookups should be performed.
-
-         1. full_adress: use the full address as key.
-         2. detail_plus: lookup also ``user++@subdomain''.
-         3. detail_star: lookup also ``user+*@subdomain''.
-         4. star: lookup also ``user*@subdomain''.
-         5. domain: lookup domain part.
-         6. dotsubdomain: iterate through subdomains.
-         7. dot: lookup also ``.''.
-
-        The default is to perform all lookups.
-
-18. subsection smtps:
-     1. max_connection_rate: maximum incoming connection rate from a
-        single host (unit: connections/60s).
-     2. max_connections: maximum number of open incoming connection from a
-        single host (unit: entries).
-
-19. wait_for_client: maximum amount of time to wait for a client to become
-    available (unit: s)
-20. wait_for_server: maximum amount of time to wait for a server to become
-    available (unit: s)
-
-
-Configuration Map for QMGR
-
-QMGR implements a ``slow start'' algorithm to control the number of 
-concurrent connections to one IP address. Initially, it will at most
-create a (small) number of open connections up to a specified initial
-limit. For each successful delivery, the allowed number is increased up to
-specified maximum limit.
-
-For incoming connections, QMGR establishes two limits: the connection rate
-and the number of open connections.
-
-The Berkeley DB hash map qmgr_conf.db (the file should be owned by meta1q)
-can have the following entries:
-
- 1. oci: this key specifies the initial number of concurrent outgoing
-    connection to an IP address.
- 2. ocm: this key specifies the maximum number of concurrent outgoing
-    connection to an IP address.
- 3. octo: specify the timeout for an entry in the outgoing connection
-    cache.
- 4. icr: this key specifies the maximum rate for incoming connections (per
-    60s).
- 5. icm: this key specifies the maximum number of concurrently open
-    incoming sessions.
- 6. smtpc_session_conf: see Section 3.11.1
-
-oci:, ocm:, icr:, icm:, and smtpc_session_conf: take an IP address/net as
-parameter such that the limits can be imposed per IP address/net. For
-example:
-
-oci:127.0.0.1      5
-ocm:127.0.0.1     10
-oci:10            10
-ocm:10            50
-oci:               1
-ocm:               4
-icr:10             5
-icr:127.0.0.1    100
-icm:127.0.0.1    120
-
-Note, however, that the limits apply only to single IP addresses, they are
-not aggregated for nets. That is, for the example every single host in the
-IP net 10.x.y.z can have a maximum incoming connection rate of 5 messages
-per minute.
-
-The default values for these configuration options are set in the binary
-and can be changed via command line options or the configuration file (see
-Section 3.8):
-
- 1. -C n maximum number of concurrent connections to one IP address
-    [default: 100]
- 2. -c n initial number of concurrent connections to one IP address
-    [default: 10]
- 3. -O R=n maximum connection rate per 60s (SMTPS) [default: 100]
- 4. -O O=n maximum number of open connections (SMTPS) [default: 100]
-
-
-Configuration for SMAR
-
-
-Declaring Maps for SMAR
-
-In general, maps must be declared before they can get used. Each map
-declaration in a configuration file is a named subsection - the name is
-used for later references - map in the smar section with the following
-options:
-
- 1. type: type of the map; currently one of hash (Berkeley DB hash), cdb
-    (tinycdb), sequence, socket, and passwd.
- 2. file: the filename of the db file (including the extension) (for type
-    hash, cdb).
- 3. mapname: name of the map used in the protocol (type socket only).
- 4. address: IPv4 address of inet socket. (type socket only).
- 5. path: the pathname of the Unix domain socket (for type socket).
- 6. port: port for inet socket (type socket only).
- 7. maps: list of map names to use in the map (type sequence only).
-
-Note: for socket maps either a Unix domain socket (path) or an inet socket
-(address and port) must be specified.
-
-Example:
-
-map localusers { type = hash; file = "/etc/meta1/localusr.db"; }
-map otherusers { type = cdb; file = "/etc/meta1/otherusr.cdb"; }
-map password { type = passwd; }
-map seq1 { type = sequence; maps = { localusers, otherusers }; }
-map seq2 { type = sequence; maps = { password, otherusers }; }
-
-
-Configuration Options for SMAR
-
-The following configuration options are valid for SMAR:
-
- 1. access_map: this is a subsection that specifies the access control
-    map. See Section 3.9.3 for details.
-
-    Note: only one of file (1a) and name (1b) must be specified.
-
-     1. file: filename of access map (including extension) [default:
-        access.db].
-     2. name: name of access map . This can be used if a different map
-        type should be used, in which case the map must be declared as
-        explained in Section 3.9.1.
-
- 2. address_delimiter: list of delimiters (specified as string) for
-    address extensions in local part, [default: "+"]. Note: if
-    address_delimiter has more than one character, the first one that is
-    found in the local part of an address is used as delimiter in map
-    lookups (see Section 3.12). For example: if the following option is
-    used in the configuration file:
-
-    address_delimiter = "/_-";
-
-    then for the address ``<user/ext-list@dom.ain>'', the delimiter
-    for map lookups is ``/'' and the address detail is ``ext-list'', while
-    for the address ``<user-ext_list@dom.ain>'', the delimiter for map
-    lookups is ``-'' and the address detail is ``ext_list''.
-
- 3. aliases: this is a subsection that specifies the parameters for
-    aliases.
-
-    Note: only one of file (3a) and name (3b) must be specified.
-
-     1. file: filename of aliases map (including extension) [default:
-        aliases.db].
-     2. name: name of aliases map . This can be used if a different map
-        type should be used, in which case the map must be declared as
-        explained in Section 3.9.1.
-     3. flags:
-         1. localpart: the aliases map contains only localparts of
-            addresses and those are only looked up for local addresses.
-         2. local_domains: the aliases map contains fully qualified
-            addresses which are only looked up for local addresses. This
-            can be used similar to virtual users in sendmail 8, e.g.,
-
-            vuser1@virt1.tld:   user1
-
-            vuser2@virt1.tld:   user2
-
-            vuser3@virt2.tld:   user3
-
-         3. all_domains: the aliases map contains fully qualified
-            addresses which are looked up for all domains.
-         4. implicitly_match_detail: the items are looked up according to
-            the algorithm specified in Section 3.12.1. and additionally
-            +detail is implicitly matched when the pattern is
-            ``user@hostname''. That is, it overrides the default matching
-            explained in case 1e in Section 3.12.1.
-         5. replace_macros: replace macros in the RHS of the map entries
-            by the appropriate value, see Section 3.12.3.
-         6. preserve_domain: if the RHS of an entry is an unqualified
-            address, do not append the local hostname to it but the domain
-            of the original address, i.e., preserve the original domain.
- 4. DNS: this subsection contains DNS related options.
-     1. nameservers: list of up to four IPv4 addresses^3.2of nameservers.
-        Note: it is important that all of these nameserves work properly.
-        Currently they are used ``round robin'' without excluding
-        nameservers that do not answer^3.3.
-     2. retries: maximum number of retries. A value of 0 means one query
-        only, i.e., no retry.
-     3. timeout: the default timeout for a single DNS query (unit: s).
-        Notes:
-          o the timeout for a DNS request is the product of the number of
-            tries and the individual timeout, i.e., (retries + 1) *
-            timeout.
-          o this value is only the default timeout which can be overridden
-            by an application. For example, QMGR dynamically increases the
-            timeout for addresses which did not resolve in earlier tries.
-     4. flags: The flag use_resolvconf causes the list of nameservers (see
-        4a) to be read from /etc/resolv.conf. This flag is set by default
-        unless the nameservers option is used. Note: the list of
-        nameservers is not updated when /etc/resolv.conf is changed, smar
-        needs to be restarted to achieve that.
-
-        More flags can be found in Section 8.4.
-
- 5. dnsbl: specify a DNS based blacklist^3.4. This section can be
-    specified multiple times^3.5; it has the following required options:
-      + domain: specify the domain to use for DNS lookups, e.g.,
-        dnsbl.tld.
-      + tag: specify the tag to use for lookups in the access map (which
-        must be enabled, see Section 3.10, 3b).
-    The client IPv4 address A.B.C.D is looked up via DNS as D.C.B.A.domain
-    querying for an A record. If an A record W.X.Y.Z is found, then it is
-    looked up in the access map as tag:W.X.Y.Z. for temporary and
-    permanent DNS lookup failures the entries that will be checked in the
-    access map are tag:temp and tag:perm, respectively.
-
-    Notes:
-      + DNS lookups in blacklists can be disabled via entries in the
-        access map using the tag cltaddr, see Section 3.9.3.
-      + Some DNS blacklists return multiple A records. For those the A
-        records are checked (in the order returned by the DNS server)
-        until an access map entry is found. This is an intermediate
-        solution as it may cause random results if multiple access map
-        entries for a DNS blacklist exist. However, as long as all of them
-        have the same return code type (i.e., temporary or permanent),
-        this behavior is sufficient.
-      + currently a colon is added as delimiter after tag, this may be
-        removed in later versions to allow for more flexibility; e.g., the
-        configuration option itself can include a delimiter.
-
-    The access map entry should have one of the usual rejection RHSs as
-    explained in 3.9.3. Example: configuration file:
-
-    smar { dnsbl { domain = dnsbl.tld; tag = dnsbltld; } }
-
-    access map:
-
-    dnsbltld:127.0.0.1  error:550 5.7.1 listed at dnsbl.tld as open relay
-    dnsbltld:127.0.0.2  error:550 5.7.1 listed at dnsbl.tld as spam source
-    dnsbltld:127.0.0.9  error:451 4.7.1 listed at dnsbl.tld as suspicious
-    dnsbltld:temp       error:451 4.7.1 temporary lookup failure at dnsbl.tld
-
-    If multiple DNS based blacklists are specified, the DNS queries are
-    made concurrently but the lookups in the access map are performed in
-    the order in which the blacklists are given; the first successful
-    lookup is used as result, no further priorization is performed.
-
- 6. greylisting: specify greylisting options, see Section 3.9.4 for
-    details.
-     1. grey_wait: how long before greylisted can be confirmed.
-     2. grey_expire: timeout for greylisted entries (did not confirm
-        within that time).
-     3. white_expire: expire whitelisted entries after this time if
-        necessary.
-     4. white_timeout: force whitelisted entries to reconfirm after this
-        time.
-     5. main_DB_name: name of main database (including .db extension).
-     6. secondary_DB_name: name of secondary database (including .db
-        extension).
-     7. expire_limit: try to expire entries when this limit is reached.
-     8. netmask: by default the entire IPv4 address is used as a key,
-        however, by specifying a netmask, e.g., 0xFFFFFF00, the least
-        significant bits can be cut off. This can be used to deal with
-        server farms, see Section 3.9.4, e.g., if those are in the same
-        class C subnet.
-
- 7. local_user_map: this is a subsection that specifies a map of valid
-    local addresses.
-     1. name: Name of the map of valid local addresses; the map must have
-        been declared as explained in Section 3.9.1.
-     2. flags:
-         i. implicitly_match_detail: +detail is implicitly matched when
-            the pattern is ``user@hostname''. That is, it overrides the
-            default matching explained in case 1e in Section 3.12.1.
-
- 8. log_level: logging level.
-
- 9. mailertable: this is a subsection that specifies a mailertable,
-    currently you can specify exactly one of the following two options:
-     1. file: filename of mailertable [default: mt]. In this case a plain
-        text file is read during startup and placed in an internal hash
-        table.
-     2. name: name of a mailertable map that has been declared before (see
-        Section 3.9.1).
-
-     3. flags: these flags can be used to select a subset of the matching
-        described in Section 3.12.1.
-         1. full_adress: use the full address as key.
-         2. detail_plus: lookup also ``user++@subdomain''.
-         3. detail_star: lookup also ``user+*@subdomain''.
-         4. star: lookup also ``user*@subdomain''.
-         5. domain: lookup domain part.
-         6. dotsubdomain: iterate through subdomains.
-         7. dot: lookup also ``.''.
-
-        The default is domain, dotsubdomain, dot.
-
-    The format of entries in the map is explained in Section 3.9.3. Note:
-    reloading mailertable (Section 4.7) while SMAR is running can be done
-    only if it is declared as Berkeley DB (case 9b with the proper map)
-
-
-Configuration Maps for SMAR
-
-SMAR requires a mailertable, and it can make use of an alias map as well
-as an access map, all of which are described in the subsequent sections.
-
-
-Access Map
-
-To activate the access map the flag access (see Section 3.10, item 3b) (or
-the option -a) must be given to the SMTP servers. All entries consist of a
-left hand side (LHS, key) which in turn has a tag and a (partial) address
-and a right hand side (RHS, value). Valid tags are:
-
-Tag                  refers to
-
-from:                envelope sender address (MAIL)
-
-to:                  envelope recipient address (RCPT)
-
-cltaddr:             client IPv4 address
-
-cltname:             client host name
-
-cltresolve:          result of forward and reverse client lookup
-
-mxbadip:             IPv4 addresses that are not allowed for MX - A
-                     records
-
-certissuer:          DN of CA cert that signed that presented cert
-
-certsubject:         DN of presented cert
-
-protectedrcpt:       restrictions for recipient address (see Section
-                     3.10.3)
-
-smtps_session_conf:  configuration options for a session in the SMTP
-                     server (see Section 3.10.1)
-
-smtpc_rcpt_conf:     configuration options for recipient in the SMTP
-                     client (see Section 3.11.1)
-
-Valid addresses for from: and to: are RFC 2821 addresses without the angle
-backets (localpart@domain) as well as partial addresses in the form
-localpart and @domain, i.e., domains must be preceeded with an at (@)
-sign. Valid addresses for cltaddr: and mxbadip: are IPv4 addresses and
-(sub)nets, and for cltname: host names. The client host name is determined
-by performing a reverse lookup (PTR record) for its IP address. The
-resulting names are looked up as A records. Only if one of the A records
-matches the client IP address, the host name is set. Note: the host name
-has a trailing dot after DNS resolution, this dot must be included in the
-entry. The result of these lookups can be used for cltresolve: where the
-following keys are valid:
-
-ok       reverse and forward lookup match
-
-no       reverse and forward lookup do not match
-
-tempptr  reverse lookup (PTR) caused a temporary error
-
-tempa    forward lookup (A) caused a temporary error
-
-Valid values for RHS are
-
-relay                 allow relaying; currently only for to:, cltaddr:,
-
-                      cltname:, certissuer:, and certsubject:
-
-ok                    accept command
-
-error:XYZ A.B.C.D     return an error consisting of SMTP reply code XYZ,
-text
-
-                      enhanced status code A.B.C.D, and text,
-
-                      i.e., the part after error: is returned to the
-                      client.
-
-reject                same as error:550 5.7.0 Rejected.
-
-discard               accept command but silently discard its effects.
-
-cont                  stop current check (e.g., map lookup), but continue
-                      others.
-
-Some tags may allow for other RHS values, these are explained when those
-tags are discussed in more detail.
-
-Optionally a RHS can be preceeded by the modifier quick:. For an error:
-entry it causes an immediate rejection when the entry matches. Otherwise
-rejections can be delayed to the RCPT stage - if SMTPS is configured
-appropriately, see Section 3.10, item 3c - and can be overridden using the
-modifier quick: together with ok or relay in the access map for the
-recipient address with the to: tag. Using the modifier quick: together
-with relay for an entry with the cltaddr: tag causes it to override all
-other access map checks. quick:ok for an entry with the cltaddr: tag
-causes it to override other access map checks unless they are necessary to
-allow relaying.
-
-Domain names (@domain) must have an exact match, subdomain matching can be
-specified with a leading dot, i.e., @.domain, see Section 3.12.1.
-
-Examples:
-
-cltresolve:tempptr       error:451 4.7.1 reverse lookup failed
-
-mxbadip:127.0.0.1        error:551 5.7.1 Bad IP address 127.0.0.1 in MX/A
-                         list
-
-mxbadip:192.168.255.255  error:551 5.7.1 Bad IP address 192.168.255.255 in
-                         MX/A list
-
-from:@spammer.domain     error:551 5.7.1 No spammers
-
-from:@.spammer.domain    error:551 5.7.1 No spammers in subdomains either
-
-to:root                  error:551 5.7.1 No mail to root
-
-to:abuse                 quick:ok
-
-cltaddr:10               error:551 5.7.1 No direct mail from 10.x.y.z
-
-cltname:spammer.domain.  quick:error:551 5.7.1 No mail from spammers
-
-to:@primary.domain       relay
-
-cltaddr:10               relay
-
-cltaddr:127.0.0.1        quick:relay
-
-
-Discard
-
-The effect of discard depends on the protocol stage in which it is
-returned. If it is returned for a session, e.g., when a client connects,
-all transactions in the session are discarded. If it is returned for MAIL
-only that transaction is discarded. If it is returned for RCPT only that
-recipient is discarded; however, if no valid recipients are left, the
-entire transaction is discarded. Moreover, if quick:discard is returned
-for one recipient the entire transaction is discarded too.
-
-
-Mailertable
-
-The address resolver implements an asynchronous DNS resolver and by
-default it uses a file called mt (mailertable) (see Section 3.9.2, item 9)
-which consists of domain parts of e-mail addresses and corresponding IP
-addresses (in square brackets) or domain/host names. An entry consists (as
-usual in a map) of a LHS and a RHS; in the case of a flat text file, i.e.,
-case 9a of Section 3.9.2, those are separated by one or more whitespace
-characters.
-
-LHS     ::  [ local "@" ] [ "." ] hostname | "."
-        =
-
-RHS     ::  [[ port "^" ] ["esmtp:"]] hosts | "lmtp:" | port "
-        =   ^"lmtp:" hosts
-
-port    ::  integer
-        =
-
-hosts   ::  hostname | iplist
-        =
-
-iplist  ::  "[" IPv4-address "]" [ " " iplist ]
-        =
-
-The key (LHS) is an address (without angle brackets), a hostname, or a dot
-(denoting the default entry), the value (RHS) consists of an optional port
-number, an optional (esmtp) mailer and a hostname or a list of IPv4
-addreses (in square brackets) which are separated by spaces. If LMTP
-should be used, then the lmtp mailer must be selected. There are two
-cases: just lmtp: by itself means the delivery agent will use the Unix
-domain socket specified in the configuration file (see Section 3.11, item
-2), if an inet socket should be used then a port and a host must be
-specified. A hostname is subject to MX lookups.
-
-Example:
-
-localhost           lmtp:
-
-SPAM.FILTER.DOMAIN  2525^esmtp:[127.0.0.1]
-
-LMTPHOST.MY.DOMAIN  525^lmtp:[10.11.12.13]
-
-MY.DOMAIN           esmtp:[10.1.2.3]
-
-ANOTHER.DOMAIN      esmtp:MTA.SERVER
-
-.TLD                esmtp:GATE.WAY
-
-.                   esmtp:SMART.HOST
-
-Note: currently this file must exist, even if there are no entries (it is
-created during installation).
-
-
-Aliases
-
-To specify aliases for local addresses the map aliases.db (Section 3.9.2,
-item 3a) is used. The key in the map must be
-
-  * the local part of a valid (local) e-mail address,
-  * or a complete local e-mail address,
-  * or any e-mail address,
-
-based on the flags of the aliases option (see Section 3.9.2, 3c). The
-value (RHS) for an alias entry is a list of one or more RFC 2821 addresses
-(including the angle brackets) separated by spaces (not commas). If the
-RHS has only a single address which does not start with an angle bracket,
-then it is converted into an RFC 2821 address by SMAR, i.e., SMAR will
-append the hostname of the machine and put angle brackets around the
-string. Example:
-
-myalias: localuser
-
-mylist: <user1@my.dom> <user2@my.dom> <localuser@local.host>
-
-owner-mylist: someuser
-
-For mailing lists, the owner- notation is supported, i.e., if there are
-aliases list and owner-list then mail sent to list will use owner-list as
-envelope sender address; the original domain will be preserved.
-
-Example for the flag local_domains (see 3.9.2, 3(c)ii). Let two domains be
-local, i.e., in mailertable:
-
-first.dom    lmtp:
-
-second.dom   lmtp:
-
-and these entries be in aliases:
-
-myalias@first.dom: user1
-
-another@second.dom: user2
-
-Then mail to <myalias@second.dom> and <another@first.dom> would be
-rejected while mail to <myalias@first.dom> or <another@second.dom> would
-be accepted.
-
-Aliases can be nested (currently up to 5 levels, see smar/rcpts.c).
-
-
-Greylisting
-
-MeTA1 supports a very simple form of greylisting [Hara] which only uses
-the client IP address as key [Posa] instead of a tuple consisting of
-client IP address, envelope sender, and envelope recipient. The idea
-behind greylisting is simple: do not accept mail from an unknown source on
-the first connection, but reject it with a temporary error. Any MTA that
-conforms to RFC 2821 [Kle01] will try to send the mail later on, however,
-spamming systems often do not do that. An IP address can be in three
-different states: unknown: the client has not connected before or the
-entry is expired from the database, greylisted: the client has connected
-before but it did not yet connect again within the configured time
-interval, whitelisted: the client has connected before and it connected
-again within the configured time interval. The time interval is specified
-by its lower limit grey_wait and its upper limit grey_expire. A lower
-limit is used to prevent system from getting accepted that just send a
-single message within a few seconds again and again. The upper limit is
-used to avoid filling up the database. If an entry has made it to the
-whitelisted state, it will stay there for (at least) up to the timeout
-specified by white_expire. The greylisting algorithm implemented in MeTA1
-uses another timeout white_timeout after which a whitelisted entry is
-considered stale and must go through the greylisting stages again, i.e.,
-it is considered to be in state unknown. Each time a mail is sent from a
-whitelisted host, the entry is updated, to avoid that systems which
-regularly sent mail become greylisted again.
-
-Greylisting is performed at the RCPT stage of the SMTP dialogue. It is
-only done when a valid recipient is specified, i.e., all other checks must
-have been successful. Hence clients that do not try to send mail or just
-try invalid recipient addresses will not be added to the greylisting
-database. If a transaction is subject to greylisting then the session is
-aborted with an 421 error. If a server uses callbacks to verify the sender
-address, then the option delay_greylisting_error_until_DATA (see Section
-3.10, item 3d) is useful to avoid unnecessary delays. Here is an example:
-host A is the main MX server for domain example.com and it uses
-greylisting, host B is the main MX server for domain example.net and it
-uses sender callbacks. If a mail is sent to host B for <rcpt@example.net>
-with the sender address <user@example.com> then host B will connect to
-host A to test whether <user@example.com> is a valid recipient. However,
-if host A does not have host B in its whitelist, it will return a 421
-error after the RCPT To:<user@example.com> command, which (depending on
-the implementation of the sender callback) will cause host B to
-temporarily reject the mail for <rcpt@example.net>. By specifying the
-option delay_greylisting_error_until_DATA on host A the RCPT command will
-succeed and the original mail to <rcpt@example.net> will go through
-without delay.
-
-The greylisting implementation uses two persistent databases (specified by
-main_DB_name and secondary_DB_name), where the second DB is just a
-secondary index (by expiration time) for the main DB. These databases
-should be on a filesystem with sufficient free disk space depending on how
-many connections from different clients the MTA receives. Entries are only
-removed from the DB if there are more than expire_limit elements. However,
-if none of the entries are expired yet, then the number of elements can
-exceed that limit.
-
-
-Greylisting: Whitelisting
-
-Greylisting can be disabled for selected hosts by adding them to the
-access map (see Section 3.9.3), e.g.,
-
-cltaddr:10         relay
-
-cltaddr:127.0.0.1  quick:relay
-
-
-Possible Problems with Greylisting
-
-Some legitimate mailers do not behave properly and will not retry a mail
-that had a temporary error. This can cause mail loss in various
-situations, e.g., because the receiving system is currently out of some
-resources. However, to minimize the impact of greylisting on these
-misbehaving mailers it might be useful to explicitly whitelist them as:
-
-cltaddr:12.107.209.244   ok
-
-cltaddr:64.12.137        ok
-
-A list of such broken mailers can be found at http://cvs.puremagic.com/
-viewcvs/greylisting/schema/whitelist_ip.txt [Harb]. A related problem are
-server farms where a mail might be resent from a different IP address.
-These should probably be whitelisted too; some of these can be found at
-the URL given before. However, entries in that file which have the comment
-``unique sender per attempt'' do not need to be whitelisted as this
-implementation does not use the sender address.
-
-Note: if a client authenticates via STARTTLS or AUTH such that relaying is
-allowed then greylisting is disabled for that client.
-
-
-Configuration for SMTP Server
-
-The following configuration options are valid for SMTPS:
-
- 1. auth: this is a subsection that specifies the parameters for AUTH
-    support. It is only available if the system has been configured with
-    the option --enable-SASL, see Section 2.2.1.
-     1. flags: flags for SMTP AUTH
-
-        See the Cyrus SASL documentation for the meaning of these flags:
-        noplaintext, noactive, nodictionary, forward_secrecy, noanonymous,
-        pass_credentials, mutual_auth.
-
-     2. trusted_mechanisms: list of SASL mechanisms for which relaying is
-        allowed if a client successfully authenticated using one of those
-
-    Note: the name for the Cyrus-SASL configuration file is currently
-    meta1.conf. That file can be used to adjust the list of mechanisms
-    (option mech_list) that should be advertised (besides many other
-    things), hence this option is not in the SMTP server itself.
-
- 2. CDB_gid: (numeric) group id for CDB files, i.e., the group id of
-    meta1c, see Section 2.4.1.
- 3. flags:
-     1. 8bitmime: offer 8BITMIME: MeTA1 is 8 bit transparent, but it does
-        not perform any conversion, so this option should only be used if
-        all communication partners can deal with 8 bit data.
-     2. access: use access map (in SMAR). Note: currently this flag is
-        required to perform a reverse lookup for a client IP address to
-        get the hostname of the client which then can be used for logging
-        and the Received: header.
-     3. delay_checks: delay acceptance check until RCPT stage (unless
-        explicitly overridden, see Section 3.9.3).
-     4. delay_greylisting_error_until_DATA: if greylisting (3e) is enabled
-        then wait until the DATA command to return an error; see Section
-        3.9.4 for details.
-     5. greylisting: enable greylisting (which must also be enabled in
-        SMAR, see Section 3.9.2 item 6), see Section 3.9.4 for details.
-     6. lmtp_does_not_imply_relaying: even if a domain in the mailertable
-        has lmtp: as RHS do not implicitly allow relaying to it, i.e., do
-        not consider the domain as ``local'' with respect to relaying.
-        This is useful for an MSA to avoid external mail to local domains
-        without authentication.
-     7. soft_bounce: change permanent (5xy) SMTP error replies into
-        temporary (4xy) errors. This is a useful feature for testing to
-        avoid bounces due to misconfigurations.
-     8. require_EHLO_before_MAIL: require EHLO (or HELO) before a MAIL
-        command.
-     9. strict_EHLO_checks: perform a strict syntax check on the argument
-        for EHLO (or HELO).
-
-    10. xverp: offer XVERP extension to turn on VERP [Ber97] support for a
-        transaction. This is a parameter for the MAIL command, e.g.
-
-        MAIL From:<sender@some.domain> XVERP
-    11. allow_data_before_greeting: allow a client to send data before the
-        initial 220 greeting.
-
-    12. prdr: PRDR is an SMTP extension [Hal07] to return individual RCPT
-        status after the end of data (similar to LMTP). This feature is
-        turned on if a policy milter is configured (see item 17).
-
-    13. lookup_session_conf: Look up session configuration data (see
-        Section 3.10.1) in the access map (which must be activated, see 3b
-        ).
-
- 4. id: unique identifier for SMTP server (0); see Section 3.10.2.
- 5. io_timeout: timeout for SMTP operations.
- 6. max_threads: maximum number of threads.
- 7. max_bad_commands_per_session: maximum number of bad, i.e., unknown,
-    SMTP commands per session accepted by server. After this limit is
-    reached the connection is terminated with an 421 error.
- 8. max_invalid_addresses_per_session maximum number of invalid, e.g.,
-    unknown, RCPT addresses per session accepted by server. After this
-    limit is reached the connection is terminated with an 421 error.
- 9. max_nop_commands_between_transactions: maximum number of NOOP, RSET,
-    and related SMTP commands between two successful transactions accepted
-    by server. After this limit is reached the connection is terminated
-    with an 421 error.
-10. max_bad_commands_per_transaction: maximum number of bad, i.e.,
-    unknown, SMTP commands per transaction accepted by server. After this
-    limit is reached the connection is terminated with an 421 error.
-11. max_nop_commands_in_transaction: maximum number of NOOP and related
-    SMTP commands in a single transaction accepted by server. After this
-    limit is reached the connection is terminated with an 421 error.
-12. max_invalid_addresses_per_transaction maximum number of invalid, e.g.,
-    unknown, RCPT addresses per transaction accepted by server. After this
-    limit is reached the connection is terminated with an 421 error.
-13. max_recipients_per_session: maximum number of recipients per session.
-14. max_recipients_per_transaction: maximum number of recipients per
-    transaction.
-15. max_hops: maximum number of hops (Received: headers). If this value is
-    exceeded the incoming mail is rejected because it is considered a
-    possible mail loop.
-16. max_message_size: maximum message size (unit: KB).
-17. policy_milter: this is a subsection that specifies the parameters for
-    pmilter support (see Section 5). It is only available if it has been
-    enabled during configure (--enable-pmilter, see Section 2.2.1).
-     1. socket: this is a subsection that specifies the socket to
-        communicate with policy milter. The type (option type) of the
-        socket must be either inet or unix.
-         1. type = inet
-             1. port: port number for connection.
-             2. address: IP address for connection.
-
-         2. type = unix
-             A. path: pathname of Unix Domain socket.
-
-     2. timeout: maximum amount of time to wait for a reply from a policy
-        milter.
-     3. flags: policy milter flags. If the connection to pmilter fails
-        then SMTPS will ignore pmilter by default. This behavior can be
-        changed by setting one of following two flags:
-         1. abort: if the connection to pmilter fails then abort the
-            current session with a 421 error.
-         2. accept_but_reconnect: if the connection to pmilter fails then
-            continue the current session but try to reconnect for the next
-            session.
-
-18. processes: number of processes to start.
-19. protected_recipients: this is a subsection which provides a few simple
-    options to protect recipients by restricting who can send mail to
-    them.
-     1. allow_by: this is a required subsection which has two possible
-        flags (at least one must be specified).
-         1. sender: allow sending mail based on the envelope sender (MAIL)
-            address. Even though this address can be forged it provides
-            some basic protection.
-         2. client_ip: allow sending mail based on the client IP address.
-
-     2. match_type: this specifies what type of matching should be done.
-        By default, exact matches are required. Alternatively, one of the
-        following two options can be selected:
-         1. generic_lookup: the items are looked up according to the
-            algorithm specified in Section 3.12.1.
-         2. implicitly_match_detail: the items are looked up according to
-            the algorithm specified in Section 3.12.1. and additionally
-            +detail is implicitly matched when the pattern is
-            ``user@hostname''. That is, it overrides the default matching
-            explained in case 1e in Section 3.12.1.
-
-    See Section 3.10.3 for details.
-20. max_transactions: maximum number of transactions per session.
-
-21. tls: this is a subsection that specifies the parameters for STARTTLS
-    support. It is only available if the system been configured with the
-    option --enable-TLS, see Section 2.2.1. See Section 11.1 for some
-    background information about these options.
-
-     1. cache_size: size of TLS session session cache (0: disable cache).
-     2. cache_timeout: timeout for entries in TLS session session cache.
-     3. cert_file: file with certificate in PEM format.
-     4. key_file: file with private key for certificate in PEM format.
-     5. CAcert_file: file with CA certificate in PEM format.
-     6. CAcert_directory: directory with (symbolic links for) CA
-        certificates in PEM format.
-
-     7. flags: some flags are available to influence the behavior of the
-        SMTP server with respect to STARTTLS.
-         1. allow_relaying_if_verified: if the client presented a
-            certificate that can be verified by the CA certificates that
-            are available to the server (see above: CAcert_file and
-            CAcert_directory), then relaying is allowed for the SMTP
-            session.
-
-         2. check_access_map_for_relaying: if this flag is set then the
-            access map (which must be activated, see 3b) is checked to see
-            whether relaying should be allowed for a client which
-            presented a certificate that has been verified (see above).
-            For this purpose, the DN of the cert issuer is looked up in
-            the access map using the tag certissuer:. If the resulting
-            value is relay, relaying is allowed. If it is cont, the DN of
-            the cert subject is looked up next in the access map using the
-            tag certsubject:. If the value is relay, relaying is allowed;
-            every other value is currently ignored.
-
-            To avoid problems with the DN names in map lookups, they are
-            modified as follows: each non-printable character and the
-            characters '<', '>', '(', ')', '"', '+', ' ' are replaced by
-            their hexadecimal ASCII value with a leading '+'. For example:
-
-            /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/emailAddress=
-            darth+2Bcert@endmail.org
-
-            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/emailAddress=
-            darth+2Bcert@endmail.org
-
-            simply use:
-
-            certissuer:/C=US/ST=California/O=endmail.org/OU=private
-            /CN=
-
-            Darth+20Mail+20+28Cert+29/emailAddress=                  relay
-            darth+2Bcert@endmail.org
-
-            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/emailAddress=
-            darth+2Bcert@endmail.org
-
-            use:
-
-            certissuer:/C=US/ST=California/O=endmail.org/OU=private
-            /CN=
-
-            Darth+20Mail+20+28Cert+29/emailAddress=                  cont
-            darth+2Bcert@endmail.org
-
-            CertSubject:/C=US/ST=California/O=endmail.org/OU=
-            private/CN=
-
-            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.6 is used then the emailAddress= part of a
-                DN is replaced by Email=.
-
-     8. requirements_violation: This option decides how to (globally)
-        handle TLS requirement violations (see Section 3.10.1). Possible
-        values are: permfail: generate permanent failure, tempfail:
-        generate temporary failure, abort: abort session. These option
-        take effect when a MAIL command is issued by the client.
-
-22. session_features: This section can be used to define classes of
-    features for an SMTP server session which then can be referenced via
-    the access map. Available flags are a subset of those listed in item 3
-    : starttls, auth, delay_checks, allow_data_before_greeting,
-    require_EHLO_before_MAIL, strict_EHLO_checks, check_EHLO.
-
-    Example: to turn off STARTTLS for some clients, declare a notls class
-    in the configuration file:
-
-    session_features  notls { flags = { -starttls }}
-
-    and reference it in the access map for those clients:
-
-    smtps_session_conf:217.126.135.148      session_feature=notls;
-
-
-
-SMTP Server Session Configuration
-
-Some options can be set via the access map (see Section 3.9.3, tag
-smtps_session_conf) because they apply to a session, not globally.
-Currently available are: STARTTLS requirements (tls_requirements) (see
-Section 3.13) and session_features (see Section 3.10, item 22).
-
-
-Multiple SMTP Servers with different Configurations
-
-The normal way to run multiple SMTP servers is to let MCP start several
-SMTP servers. Each SMTP server must given a unique identifier (see Section
-3.10, item 4) and each SMTP server section in meta1.conf must have a
-unique name (e.g., MTA and MSA), which is passed via the option -N name to
-smtps. Example: meta1.conf:
-
-smtps MTA {
-  id = 0;
-  listen_socket { type=inet; port = 25; }
-  start_action = pass; pass_fd_socket = smtps/mtafd;
-  user = meta1s;
-  path = /usr/libexec/smtps;
-  arguments = "smtps -N MTA -f /etc/meta1/meta1.conf";
-  log { facility = mail; ident=meta1-MTA; }
-}
-
-smtps MSA {
-  id = 1;
-  listen_socket { type=inet; port = 587; }
-  start_action = pass; pass_fd_socket = smtps/msafd;
-  user = meta1s;
-  path = /usr/libexec/smtps;
-  arguments = "smtps -N MSA -f /etc/meta1/meta1.conf";
-  log { facility = mail; ident=meta1-MSA; }
-  auth { trusted_mechanisms = "CRAM-MD5 DIGEST-MD5";
-         flags = { noplaintext }; } }
-
-For tests it is also possible to let MCP start only one SMTP server which
-creates several copies of itself if multiple daemon addresses are
-specified (see Section 3.10, item 1). Note: this only works for
-unprivileged ports because the SMTP server does not run as root.
-
-
-Protecting Recipients
-
-A few simple features are available to protect recipients by restricting
-who can send mail to them. To do this the configuration section
-protected_recipients must be turned on and at least one of the two flags
-sender and client_ip must be selected (see Section 3.10, item 19a). If
-this is done, then every recipient is looked up in the access map (which
-must be activated, see Section 3.10, item 3b), using the tag
-protectedrcpt:. If a matching entry is found, it must have a list of (one
-or more) restrictions, each of which must be one of the following:
-
-+-----------------------------------------------+
-| restriction          | required allow_by flag |
-|----------------------+------------------------|
-| from:sender          | sender                 |
-|----------------------+------------------------|
-| cltaddr:IPv4-address | client_ip              |
-|----------------------+------------------------|
-| list:alias           | sender                 |
-+-----------------------------------------------+
-
-The meaning of the first two restriction types should be obvious, the
-third one is interesting: it refers to an alias (in the aliases map, see
-Section 3.9.3) and requires that the sender address matches one of the
-entries to which the alias expands. This can be used to allow only
-subscribed members of a mailing list to send mail to it.
-
-The restrictions are evaluated sequentially, if there is a match, the
-recipient is accepted (sequential OR). If none of them matches, the
-recipient is rejected.
-
-By default exact matches are required. However, if the flag generic_lookup
-is set (see Section 3.10, item 19b), the items are looked up as specified
-in Section 3.12.1. The flag implicitly_match_detail is useful for the
-list: restriction if a sender uses +detail without having that specified
-during subscription.
-
-Examples: consider the following aliases map:
-
-list1:  <user1-1@l1-1.dom> <user2-1@l1-1.dom> <list2@local.dom>
-
-list2:  <user1-2@l2-1.dom> <user2-2@l2-2.dom>
-
-list3:  <user1-3@l3-1.dom> <user2-3@l3-2.dom>
-
-together with this access map:
-
-protectedrcpt:list1@local.dom  list:<list1@local.dom>
-
-protectedrcpt:list3            from:<moderator3@local.dom> cltaddr:1.2.3.4
-                               cltaddr:10
-
-The mails to <list1@local.dom> are only accepted from <user1-1@l1-1.dom>
-and <user2-1@l1-1.dom>. Note: the list is not recursively expanded, i.e.,
-members of list2 are not allowed, that restriction must be listed in the
-access map. Mails to <list3@local.dom> are only accepted from
-<moderator3@local.dom>, the client with the IPv4 address 1.2.3.4, or
-clients in the IPv4 net 10. The latter requires that the flag
-generic_lookup is turned on too.
-
-
-Configuration for SMTP Client
-
-The following configuration options are valid for SMTPC:
-
- 1. io_timeout: timeout for SMTP operations (unit: s).
- 2. LMTP_socket: Unix domain socket to use for LMTP [default: lmtpsock].
- 3. log_level: logging level.
-
- 4. tls: this is a subsection that specifies the parameters for STARTTLS
-    support. It is only available if the system been configured with the
-    option --enable-TLS, see Section 2.2.1. See Section 11.1 for some
-    background information about these options.
-     1. cert_file: file with certificate in PEM format.
-     2. key_file: file with private key for certificate in PEM format.
-     3. CAcert_file: file with CA certificate in PEM format.
-     4. CAcert_directory: directory with (symbolic links for) CA
-        certificates in PEM format.
-
- 5. wait_for_server: maximum amount of time to wait for a server (QMGR) to
-    become available (unit: s).
-
-
-SMTP Client Session/Recipient Configuration
-
-The following options can only be set via the access map (see Section
-3.9.3, tag smtpc_rcpt_conf) or the configuration map for QMGR (see 3.8.1,
-tag smtpc_session_conf) not in the SMTP client configuration section
-itself, as they apply to a session or recipient, not globally. Currently
-only STARTTLS requirements are available which are documented in Section
-3.13, more option might be added later on. Note: as more options might be
-added, the structure of this may change a bit.
-
-
-Lookup Orders
-
-
-Lookup Orders in Maps
-
-In many cases an item is not just looked up verbatim in a map, but it may
-be split into logical parts and then less significant parts are
-iteratively removed and the remaining data is looked up until either a
-match is found or the data is empty; in the latter case a default key may
-be looked up depending on the map. These steps can be controlled by flags
-that are specified in the configuration file for the map. These flags are
-listed below for the various lookup steps.
-
-For domain names of the form ``sub2.sub1.tld'' the lookup order is
-``sub2.sub1.tld'', ``.sub1.tld'', ``.tld'', and ``.'' (without the
-quotes). The subdomains are tried if the flag dotsubdomain is set. The
-last lookup (``.'') is only done if the flag dot is set, as it is the
-default for mailertable. Obviously this schema is extended if more
-components are specified. As the sequence shows there is no implicit
-``match all subdomains'' lookup, instead entries in a map must have a
-leading dot for subdomains matches. To reiterate: ``sub2.sub1.tld'' does
-neither match the entry ``sub1.tld'' nor ``tld''.
-
-For IPv4 addresses of the form ``A.B.C.D'', the lookup order is
-``A.B.C.D'', ``A.B.C'', ``A.B'', and ``A'' (without the quotes). In
-contrast to domain lookups, no trailing dots are required (nor checked) to
-denote subnet matches, because the number of components of an IPv4 address
-is fixed (and known) in contrast to the number of components in a host
-name or domain name.
-
-For RFC 2821 addresses of the form ``<user+detail@domain>'', where
-``+detail'' is optional and ``+'' is the first delimiter in the localpart
-that was found in the address_delimiter string (see Section 3.9.2), the
-lookups are done according to the following sequence:
-
- 1. Repeat the following lookups for each subdomain of domain (as
-    explained above):
-     1. ``user+detail@subdomain'' if ``+detail'' exists; this is a
-        verbatim match. Flag: full_adress.
-     2. ``user++@subdomain'' if ``+detail'' exists and ``detail'' is not
-        empty; this matches any non-empty ``+detail''. Note: the second
-        ``+'' character is a fixed metacharacter, it does not depend on
-        address_delimiter; it is a modelled after the ``+'' operator in
-        regular expressions etc to denote a non-empty sequence of items.
-        Flag: detail_plus
-     3. ``user+*@subdomain'' if ``+detail'' exists; this matches any
-        ``+detail'' (including just ``+''). Flag: detail_star
-     4. ``user*@subdomain''; this matches ``user@subdomain'' as well as
-        ``user+detail@subdomain'' (``detail'' can be empty). Note: ``*''
-        is not a generic metacharacter here, it matches only a token
-        beginning with address_delimiter or an empty sequence, it does not
-        match any other character sequence. For example: the input
-        ``user1@subdomain'' does not match the LHS ``user*@subdomain''.
-        Flag: star
-     5. ``user@subdomain''; this does not match if ``+detail'' exists,
-        unless the flag implicitly_match_detail is selected for the map to
-        implicitly match a detail even if there is no wildcard in the
-        pattern.
-     6. ``@subdomain''.
-
- 2. If nothing has been found and the map type requests it, then try
-    localpart only (with the same meaning as above):
-     1. ``user+detail'' if detail exists
-     2. ``user++'' if detail exists and is not empty,
-     3. ``user+*'' if detail exists,
-     4. ``user*'',
-     5. ``user''
-
-
-Lookup Orders for Anti-Spam Measures
-
-Map lookups for anti-spam measures are performed according to the SMTP
-dialogue, i.e., connection information (cltaddr: and cltname:), MAIL
-command (from:), and RCPT command (to:). Whether a rejection has an
-immediate effect depends on the result of the lookup, e.g., the quick:
-modifier, and whether the option delay_checks is set. If multiple checks
-are performed during a single stage of the SMTP dialogue then they are
-done sequentially until one of them returns something else than cont.
-
-Note: in the description of the algorithms below some items are marked as
-check:. Only those can change the result value, other steps perform just
-operations that may be needed later on but have no immediate effect on the
-outcome of the checks.
-
-
-Connect
-
-During connect the following operations are performed if the access flag
-(see Section 3.10, item 3b) is enabled:
-
- 1. check: look up client IP address using tag cltaddr: (as explained in
-    3.12.1)
- 2. start DNS blacklist queries,
- 3. map client IP address to client hostname returning the tuple
-    (clientresolve, clientname).
- 4. check: look up cltresolve:clientresolve
- 5. check: look up cltname:clientname (as explained in 3.12.1)
- 6. check: look up results of DNS blacklists in access map.
-
-
-MAIL
-
-After a MAIL command has been received the following checks are performed
-unless the address is <> or a session check resulted in quick:relay or
-quick:ok:
-
- 1. check: is the address routeable? That is, if the sender address would
-    be used as a recipient address (as it would be necessary if a DSN must
-    be sent) is it possible to find a host that will deal with the
-    address? This means that the domain part must have a valid MX or A
-    record or that routing is specified via mailertable.
- 2. check: if the domain of sender address is local: is the local part
-    valid?
- 3. check: look up the address in the access map (provided it is enabled)
-    with the tag from:.
- 4. check: look up the IP addresses that were found when trying to
-    determine whether the address is routeable with the tag mxbadip: in
-    the access map.
-
-
-RCPT
-
-A RCPT command causes different checks (note: these are sequential checks,
-not exclusive, i.e., if the first one applies and it does not return a
-decision, the second one is performed):
-
- 1. is this a relaying attempt and if so, is it authorized? Relaying can
-    be allowed for the entire session, e.g., due to the client IP address
-    or other authorization based on some authentication (STARTTLS, AUTH).
- 2. are there any other restrictions for the recipient address?
-
-For case 1 the following tests are performed:
-
- 1. check: is the recipient local and does the address exist? If yes, it
-    is not a relaying attempt and hence allowed.
- 2. check: look up the recipient address with the tag to: (provided the
-    access map is enabled) (provided the access map is enabled) and check
-    whether the RHS is relay, otherwise reject the RCPT command as
-    unauthorized relaying attempt unless the RHS is an error entry which
-    is then used as reply.
-
-For case 2 the following steps are taken:
-
- 1. look up address with tag protectedrcpt:, if found perform all the
-    necessary checks as explained in Section 3.10.3.
- 2. check: look up the address using the tag to: if all of the following
-    three conditions are met:
-     1. the access map is enabled.
-     2. a session check did not result in quick:relay.
-     3. a session check did not result in quick:ok and relaying is allowed
-        by other means.
- 3. check: perform greylisting unless the session is marked as ok or relay
-    or the RCPT lookup returned quick:ok or quick:relay.
-
-
-Macro Replacements in RHS
-
-The alias map allows the use of macro in the right hand side of map
-entries. Macros have the form ``${name}'' (without the quotes). Available
-macros are: user, detail, domain, tag, delimiter, subdomain, extension.
-They have the obvious meaning; subdomain refers to the part of the domain
-before the dot, i.e., if the pattern is @.domain and the input is
-user@host.domain then subdomain refers to host, extension is the delimiter
-and the detail together (provided the address contains them).
-
-Example:
-
-alias*@.domain     user${extension}@${subdomain}.domain
-
-provides the following mappings:
-
-alias@host.domain             user@host.domain
-alias+detail@host2.domain     user+detail@host2.domain
-
-
-STARTTLS Restrictions
-
-STARTTLS requirements can be set for the SMTP server and SMTP client via
-map entries (see Sections 3.10.1 and 3.11.1). These restrictions are
-listed in a section called tls_requirements.
-
- 1. common_name: require that the CN (Common Name) of the presented TLS
-    certificate matches the specified value.
- 2. cert_subject require that the CS (CERT subject) of the presented TLS
-    certificate matches the specified value.
- 3. cert_issuer require that the DN (Distinguised Name) of the issuer of
-    the presented TLS certificate matches the specified value.
- 4. min_cipher_bits require that the effective keylength (in bits) of the
-    symmetric encryption algorithm used for a TLS connection is at least
-    as big as the specified value.
- 5. flags: available flags are currently:
-     1. verified: the TLS connection must be verified, i.e., the cert
-        issuer must be listed in CAcert_file or CAcert_directory (see
-        Section 3.10, item 21).
-     2. encrypted the TLS connection must be encrypted (i.e., the
-        effective keylength (in bits) of the symmetric encryption
-        algorithm used for a TLS connection is greater than zero.
- 6. requirements_violation See Section 3.10, item 21h, for possible
-    values.
-
-Example (note: the entry must be currently written in a single line to be
-properly processed by createmap(8)):
-
-smtpc_rcpt_conf:@meta.org       tls_requirements { cert_issuer="/C=US/ST=Berkeley/L=Endmail+20Org/O=MTA/CN=Claus+20Assmann+20CA+20RSA+202007/emailAddress=ca+ca-rsa2007@esmtp.org"; }
-
-
-VERP
-
-There are two ways to enable VERP [Ber97]:
-
- 1. Via the XVERP extension in the SMTP server (see Section 3.10, item 3j
-    ).
- 2. Via an entry in aliases marking a list with verp-:
-
-    otherlist: <user5@my.dom> <user6@other.dom> <user7@local.host>
-
-    verp-otherlist: something
-
-
-Running MeTA1
-
-
-Starting MeTA1
-
-All components of MeTA1 are under control of the MCP which must be started
-as root in the directory /var/spool/meta1 (i.e., the main queue directory,
-see Section 2.4: MTAQDIR) using
-
-# ./mcp.sh start
-
-The script contains the runtime path for MCP based on the data used by
-configure as well as a reference to the MeTA1 configuration file.
-
-To stop all MeTA1 components use
-
-# ./mcp.sh stop
-
-or simply terminate the MCP, it will forward the signal to all processes
-it started.
-
-The MCP provides some restart functionality: if a process terminates
-(e.g., crashes), it will restart it unless the exit code indicates that a
-restart is useless, e.g., EX_USAGE. Moreover, the processes listed in the
-restart dependencies will be stopped and started too.
-
-
-Using MeTA1 only for Outgoing Mail
-
-MeTA1 can be used in combination with a MUA that speaks (E)SMTP directly
-or with the sendmail 8 MSP (Mail Submission Program) for outgoing mail.
-For the latter add this to your sendmail 8 submit.mc file (see also misc/
-sm8.submit.mc):
-
-LOCAL_RULE_0
-R$* + X<@$*>    $#meta1 $@ localhost $: $1 <@$2>
-
-LOCAL_RULESETS
-SHdrToSMTP
-R$+                     $: $>PseudoToReal $1            sender/recipient common
-R$+                     $: $>MasqSMTP $1                qualify unqual'ed names
-R$* + X<@$*>            $: $1 < @ $2 >
-R$* < @ *LOCAL* > $*    $: $1 < @ $j . > $2
-
-MAILER_DEFINITIONS
-Mmeta1,   P=[IPC], F=kmDFMuXa, S=EnvFromSMTP/HdrFromSMTP, R=EnvToSMTP/HdrToSMTP,
-        E=\r\n, L=990, T=DNS/RFC822/SMTP,
-        A=TCP $h 2009
-
-and run the SMTP server of MeTA1 as listener on localhost:2009. Then mail
-to <user+X@domain> will be sent via MeTA1, i.e., by adding the
-sequence +X to the address <user@domain> the mail will be redirected
-to MeTA1 (and +X will be removed). After initial testing the relay mailer
-can be changed to use port 2009 by default hence the local additions shown
-above can be removed.
-
-There are also other programs available as substitute for the command line
-invocation of sendmail as mail submission program, e.g., mini_sendmail [
-Posb].
-
-
-Using MeTA1 for Incoming Mail
-
-
-Local Delivery and Specifying Local Domains
-
-If the domain of a recipient address matches an entry in mailertable (see
-Section 3.9.3) with the right hand side lmtp:^4.1then SMTPC talks LMTP
-over the local socket lmtpsock (see 3.11). If you have an LDA that runs as
-daemon and can talk LMTP over a local socket you can use it for local
-delivery. It is also possible to use procmail [vdBG] in LMTP mode and
-start it from mcp, see meta1.conf. See contrib/procmail.lmtp.p0 for a
-patch^4.2for procmail 3.22 to allow handling of addresses with extensions
-(+detail) in LMTP mode. A mailertable for local delivery via LMTP should
-look like this:
-
-localhost     lmtp:
-
-MY.DOM        lmtp:
-
-HOST.MY.DOM   lmtp:
-
-By default mail to addresses whose domain part is listed in mailertable
-with RHS lmtp: is allowed, i.e., those domains are considered local and
-hence relaying (even though technically this might not be called relaying)
-to them is allowed. This behavior can be turned off (see Section 3.10,
-item 3f) in which case it is necessary to also allow relaying to these
-domains which can be done either via the access map (see Section 3.10, 3b
-), or the command line option -T for SMTPS. This allows for treating (some
-of) these domains as private by not allowing relaying to them, hence they
-will be only reachable from systems from which relaying is allowed.
-
-
-Specifying Valid Local Addresses
-
-To validate addresses for local domains, SMAR uses the map aliases.db
-(Section 3.9.2, item 3a), which can be created using createmap, or a map
-specified by the option local_user_map (see Section 3.9.2, item 7). The
-key in the map must be the local part of a valid (local) e-mail address.
-If the local part cannot be found in either map, the address is rejected.
-
-To list valid local addresses in the alias map the right hand side must be
-the string ``local:'', e.g.,
-
-postmaster:  <user@host.domain>
-
-abuse:       user+abuse
-
-user++:      local:
-
-user:        local:
-
-Note: local addresses are checked for the envelope recipient and sender.
-
-
-Using MeTA1 as Gateway
-
-MeTA1 can easily be used as an internet gateway. To override routing,
-mailertable entries (see Section 3.9.3) can be specified. A list of valid
-addresses can be made available via the access map by allowing relaying to
-those addresses instead of entire domains, e.g.,
-
-to:user1@my.domain       relay
-
-to:user2@my.domain       relay
-
-to:postmaster@my.domain  relay
-
-cltaddr:10.12            relay
-
-
-Using MeTA1 as Backup MX Server
-
-The previous section showed how to specify valid remote addresses if all
-of them are known. However, for systems that act as backup MX servers it
-might not be simple to always keep such a list up to date. In that case, a
-default entry for a domain should be made, e.g.,
-
-to:user1@other.domain       relay
-
-to:user2@other.domain       relay
-
-to:postmaster@other.domain  relay
-
-to:@other.domain            error:451 4.3.3 Try main MX server
-
-cltaddr:10.12               quick:relay
-
-cltaddr:127.0.0.1           quick:relay
-
-The last two entries allow local systems to send mail to any user at
-other.domain; without those entries mail to unlisted users will be
-(temporarily) rejected and hence cannot be delivered via this system.
-
-Note about Backup MX Servers
-
-It is not a good idea to run a backup MX server B for a host A that has
-stronger anti-spam measures; if mails are sent to A via B, then B may
-accept them for delivery, but A may reject them and hence B has to sent
-bounces, which, in case of spam, are most likely to forged addresses,
-hence those bounces will only cause additional problems. The opposite case
-(B has stronger anti-spam measures than A) can cause the rejection of mail
-that A actually wanted to receive. Hence B and A should have the same
-anti-spam measures; i.e., a system that acts as backup MX server for
-another one should perform the same anti-spam checks as the main MX server
-(s).
-
-
-Miscellaneous Programs
-
-
-Do not run programs as root User
-
-Almost all MeTA1 programs (except for MCP) refuse to run with root
-privileges. To run a program as a different user the utility misc/runas
-can be used, e.g., after installation in /usr/local/bin/
-
-# /usr/local/bin/runas meta1q mailq -V
-
-(specify -h to see the usage).
-
-
-Displaying Content of Mail Queues
-
-The program mailq displays the content of the mail queues (defedb and
-ibdb). Currently its output is in a similar format as the sendmail 8
-version. The option -h shows how to use the program; see the previous
-section about using runas for mailq. A simple shell script wrapper
-mailq.sh is available that invokes mailq via runas. Note: the output of
-this program might not be accurate due to internal buffering by QMGR.
-Moreover, this program reads DEFEDB in such a way that only entries that
-have been checkpointed (see Section 8.2 about options for checkpoints) are
-shown. This is done to avoid interference with the operation of QMGR.
-
-
-Interacting with QMGR
-
-The program qmgrctl allows to interact with the QMGR via the control
-socket (see Section 3.8, item 3). Invoke qmgrctl -h to see the available
-options. By default the program will show the current status of QMGR. If
-QMGR has been compiled with the option QMGR_STATS (see Section 12.1) then
-additional statistics is available, e.g., the number of transactions and
-recipients that has been handled.
-
-Enhancement to this program are welcome to provide more functionality.
-
-
-Reloading Maps
-
-Maps (for SMAR and QMGR) can be reloaded by moving the old db file out of
-the way, creating a new file and then sending a USR1 signal to the
-appropriate process to reopen the map.
-
-# mv $MAP.db $MAP.old.db
-# /usr/local/bin/runas meta1q createmap -F $MAP.db < $MAP
-# kill -USR1 $PID
-
-Note: for QMGR it is also possible to use qmgrctl -r instead, see Section
-4.6.3.
-
-
-Logging
-
-Logging is done via syslog(3) (see Section 3.5, 1) or to stdout/stderr,
-which is redirected by the default MCP configuration to PROG.log. The
-logging format is not yet completely consistent across programs. Moreover,
-the logging entries might not be easy to understand because they contain
-some details which are not interesting to a potential postmaster, but to
-developers. Nevertheless, the logging entries should show the flow of mail
-through the system. See Section 10.3 for an explanation of the format of
-logfile entries.
-
-Note: logfiles must exist with the proper owner and permissions to be
-used. Neither MCP nor the modules will currently create logfiles. This is
-done by make install, i.e., misc/sm.setup.sh, which parses meta1.conf to
-extract the section titles/names and user entries to create the logfiles
-with the correct name and owner. This does not (yet) properly work if
-unique logfile names are created, see Section 8.2, 3.
-
-Logfile Rotation
-
-Unless syslog(3) is used (see Section 3.5, 1), logfile rotation can be
-achieved by copying the existing logfile to a backup file, e.g.,
-
-# cp qmgr.log qmgr.log.0
-
-and sending a USR2 signal which will cause the processes to rewind the
-logfile. Note: the author is aware that this is not an optimal solution,
-however, using syslog(3) will usually provide a better way.
-
-
-Regular Checks
-
-There are at least two things that should be done regularly:
-
- 1. Check the logfile for errors^4.3:
-
-    $ egrep 'sev=(ALERT|CRIT|ERR|FAIL)|\<assertion\>' $LOGFILE
-
- 2. Keep track of the size of the processes, e.g,
-
-    $ date >> $MTAPROCS
-    $ ps axuww | grep '^meta1' | sort >> $MTAPROCS
-
-    If one of the processes continuously grows then MeTA1 should be
-    compiled with -DSM_HEAP_CHECK (see Section 12.1.5) and a heap dump
-    should be taken regularly by sending the USR1 signal to the process.
-    By comparing subsequent heap dumps it should be possible to locate a
-    possible memory leak.
-
-Please report problems that cannot be resolved locally, see Section 1.4.1.
-
-
-Dealing with Errors
-
-
-Resource Problems
-
-Resource problems in certain parts of the code can lead to a stop of the
-involved program. In such a case it will be restarted automatically but if
-the resource problem has not been taken care of the MTA may stop again. In
-that case manual interaction is required. The simple solution to a
-resource problem is of course to add more resources (RAM/disk) or to free
-up some resources, e.g., stopping programs that do not need to run or
-deleting unused files. There are also ways to control resource usage
-within MeTA1:
-
-  * memory shortage: the memory usage of MeTA1 can be controlled by
-    restricting the size of various data structures, see Section 3.8,
-    e.g., AQ_max_entries, IQDB, and OCC_max_entries. However, setting
-    these values too low will result in a very slow MTA that may operate
-    in a degraded state which is not acceptable.
-  * disk shortage: MeTA1 has options that let it decide how much free disk
-    space is needed for operation, see Section 3.8: ok_disk_space and
-    min_disk_space. However, if there is not enough space to store the
-    envelope databases (DEFEDB and IBDB) then the system cannot work,
-    hence sufficiently free disk space is essential for proper operation.
-
-
-Database Problems
-
-See Section 7.1 for some background information about the usage of the
-various databases before trying to fix any possible problems.
-
-If the deferred database is corrupted then the Berkeley DB utilities to
-deal with such situations should be tried [Sleb], e.g., db_recover.
-
-Currently messages stored in CDB have the transaction identifier (ss_ta,
-see Section 10.3) as filename. In the worst case, i.e., if IBDB or DEFEDB
-are destroyed, this allows to reconstruct the envelope data together with
-the logfile entries. See the script misc/rcvrenvfromlog.sh for an example,
-here is a description of its operation. First, check which messages are
-still in CDB: in the CDB directory (3.4: CDB_base_directory) issue:
-
-# ls -1 [0-9A-F]/S*
-
-Then search for each of those transaction ids ($TAID) in the logfile
-($LOG):
-
-$ egrep "ss_ta=$TAID, (mail|rcpt)=" $LOG | \
-  sed -e 's;^.*\(mail=<.*>\), .*;\1;' -e 's;^.*\(rcpt=<.*>\), .*;\1;'
-
-will show the sender (mail=) and the recipients (rcpt=). Based on this
-data it is possible to resend the messages.
-
-Note: contributions in this area are welcome, e.g., better scripts that
-perform more checks and maybe allow for completely automatic recovery.
-
-
-Writing Core Dumps
-
-By default, all MeTA1 processes are executed in the main queue directory.
-As those processes are running with different user and group ids not all
-of them can write a core dump into that directory if a fatal error occurs.
-Some operating systems have commands (e.g., coreadm(1M) on SunOS 5.x) to
-specify a different directory in which a core dump is written. On
-operating systems where such a command is not available, the option
-working_directory can be used (see Section 8.2, item 4).
-
-Replacements for Features available in other MTAs
-
-MeTA1 does currently not offer some of the features that are available in
-other MTAs. This section describes replacements or workarounds for some of
-those features.
-
- 1. Address Masquerading: The best way to use the correct e-mail addresses
-    is to properly configure your MUA. Some MUAs offer more flexibility
-    for this than the default masquerading features of sendmail 8, e.g.,
-    mutt [mut] allows to select sender addresses based on recipient
-    addresses.
-
-    Alternatively a mail submission program (MSP) can be used which offers
-    address rewriting capabilities, e.g., the MSP from sendmail 8.
-
- 2. .forward: procmail can be used as LDA (see Section 4.3.1) and its
-    configuration file .procmailrc allows to implement the same
-    functionality as a .forward from sendmail 8 and some other MTAs.
-
- 3. Sending mail to programs: see previous item 2: this can be done with
-    the help of procmail.
-
- 4. Appending mails to files: see item 2: this can be done with the help
-    of procmail.
-
-
-Policy Milter
-
-
-Policy Milter Overview
-
-MeTA1 has support for a policy milter which is similar to a milter in
-sendmail 8. The API is slightly different, however, it should be possible
-to write an compatibility layer to emulate the sendmail 8 API. Another
-difference is that MeTA1 itself only talks to a single pmilter. Support
-for multiple pmilters should be implemented in a multiplexor that connects
-to multiple pmilters and coordinates their responses.
-
-
-Native Policy Milter API
-
-Note: this API may evolve over time.
-
-Naming conventions: A policy milter (also called pmilter) is a program
-that uses the API provided by libpmilter. The latter interacts with the
-SMTP servers via an internal protocol, i.e., this protocol can be changed
-without changing the visible API and should not directly be accessed by a
-user application.
-
-
-Data Structures
-
-libpmilter itself uses three context structures all of which must be
-treated by a milter as opaque.
-
- 1. pmg_ctx: ``global'' libpmilter context (only one per process).
- 2. pmss_ctx: libpmilter context per SMTP server that connects to this
-    instance. There can be multiple SMTP servers connecting to one
-    libpmilter instance.
- 3. pmse_ctx: libpmilter context per SMTP session.
-
-Any of the libpmilter functions takes one of these contexts as parameter;
-e.g., all SMTP session oriented functions have a parameter of type
-pmse_ctx_P.
-
-A milter can have its own contexts for each of these three environments,
-see Section 5.2.5.
-
-
-Start and Stop
-
-The functions in this section return SM_SUCCESS (0) on success and a
-negative value in case of an error.
-
-First libpmilter must be initialized; a pmilter must specify a variable
-pmg_ctx_P pmg_ctx; which is passed per reference to the initialization
-function:
-
-sm_ret_T sm_pmfi_init(pmg_ctx_P *pmg_ctx)
-
-The pmilter global context must be treated as opaque data structure, it is
-passed to subsequent libpmilter function calls.
-
-Next pmilter starts libpmilter by handing control over to the library; the
-pmilter passes a description of its requirements and functionality:
-
-sm_ret_T sm_pmfi_start(pmg_ctx_P pmg_ctx, pmilter_P pmilter)
-
-A milter can stop by calling:
-
-sm_ret_T sm_pmfi_stop(pmg_ctx_P pmg_ctx)
-
-There are various functions to set some options which can be called after
-libpmilter is initialized but before it is started. To set the path of the
-Unix domain socket over which the SMTP servers (see Section 3.10, item 17)
-and libpmilter communicate:
-
-sm_ret_T sm_pmfi_setconn(pmg_ctx_P pmg_ctx, const char *path)
-
-The backlog parameter of the listen(2) function can be set:
-
-sm_ret_T sm_pmfi_setbacklog(pmg_ctx_P pmg_ctx, int backlog)
-
-The debug level of libpmilter might be set via (this requires knowledge of
-the internals of the library which can be acquired by looking at the
-source code):
-
-sm_ret_T sm_pmfi_setdbg(pmg_ctx_P pmg_ctx, int debuglevel)
-
-To set the communication timeout:
-
-sm_ret_T sm_pmfi_settimeout(pmg_ctx_P pmg_ctx, int timeout)
-
-
-New SMTP Server
-
-Whenever an SMTP server connects to a milter an option negotiation is
-performed (similar to ESMTP itself). A pmilter can check whether server
-capabilities are acceptable and return the options that it wants:
-
-sm_ret_T pmfi_negotiate(pmss_ctx_P pmss_ctx, uint32_t srv_cap, uint32_t
-srv_fct, uint32_t srv_feat, uint32_t srv_misc, uint32_t *pm_cap, uint32_t
-*pm_fct, uint32_t *pm_feat, uint32_t *pm_misc)
-
-Currently only the capabilities field is used: srv_cap is set by the SMTP
-server to a list (implemented as bit field) of phases of the ESMTP
-dialogue that can be passed to a pmilter. In turn the pmilter must set
-*pm_cap to includes those phases of the ESMTP dialogue that it wants to
-receive. For details, see include/sm/pmilter.h. For each of those phases a
-callback is invoked (see Section 5.2.4) which must be set by the pmilter
-in its description structure struct pmilter_S (see include/sm/pmfapi.h).
-
-
-SMTP Session and Transaction
-
-The protocol steps from ESMTP are forwarded to the policy milter which can
-decide to accept or reject them.
-
-  * New SMTP session:
-
-    sfsistat_T pmfi_connect(pmse_ctx_P pmse_ctx, const char *hostname,
-    sm_sock_addr_T *hostaddr)
-
-    hostname: host name, as determined by a reverse lookup on the host IP
-    address; hostaddr: host address, as determined by a getpeername(2)
-    call on the SMTP socket.
-
-  * SMTP HELO/EHLO command:
-
-    sfsistat_T pmfi_helo(pmse_ctx_P pmse_ctx, const char *helohost, bool
-    ehlo)
-
-    helohost: Value passed to HELO/EHLO command, which should be the
-    domain name of the sending host. ehlo: true iff EHLO was used.
-
-  * MAIL (envelope sender):
-
-    sfsistat_T pmfi_mail(pmse_ctx_P pmse_ctx, const char *mail, char
-    **argv)
-
-    mail: envelope mail address; argv: null-terminated MAIL command
-    arguments.
-
-  * RCPT (envelope recipient):
-
-    sfsistat_T pmfi_rcpt(pmse_ctx_P pmse_ctx, const char *rcpt, char
-    **argv)
-
-    rcpt: envelope recipient address; argv: null-terminated RCPT command
-    arguments.
-
-  * DATA:
-
-    sfsistat_T pmfi_data(pmse_ctx_P pmse_ctx)
-
-  * unknown/not implemented SMTP command:
-
-    sfsistat_T pmfi_unknown(pmse_ctx_P pmse_ctx, const char *cmd)
-
-    cmd: SMTP command. Note: this is not yet implemented.
-
-  * For each chunk of a message:
-
-    sfsistat_T pmfi_msg(pmse_ctx_P pmse_ctx, unsigned char *msgp, size_t
-    msglen)
-
-    msgp: pointer to message data; msglen: length of message data. There
-    may be multiple message chunks passed to the filter. End-of-lines are
-    represented as received from SMTP (normally Carriage-Return/Line-Feed;
-    CRLF). Notes:
-      + the last message chunk contains the final dot of the SMTP
-        transmission, i.e., ``CRLF.CRLF''
-      + the message is not modified in any form, i.e., dots at the begin
-        of a line are duplicated (by the SMTP client) as specified in
-        section 4.5.2 of RFC 2821 [Kle01] which must be undone by the
-        application if so desired.
-      + the message is streamed while being received. That is, the mail is
-        not first stored on disk and then sent to the filter, but each
-        part received from the client is sent directly to the filter (at
-        the same speed as received from the network which might be slow).
-        This may mean that the filter does not receive the entire message
-        as the transmission may get interrupted or the SMTP server may
-        decide to skip the rest of the message because it exceeds the
-        maximum size.
-      + the return code is ignored unless SM_SCAP_PM_MSG_RC is set, see
-        Section 5.2.11, item 2.
-
-  * End of message (final dot of message has been received):
-
-    sfsistat_T pmfi_eom(pmse_ctx_P pmse_ctx)
-
-  * Message is aborted outside of the control of the filter, for example,
-    if the SMTP client issues an RSET command.
-
-    sm_ret_T pmfi_abort(pmse_ctx_P pmse_ctx)
-
-  * QUIT (end of an SMTP session):
-
-    sm_ret_T pmfi_close(pmse_ctx_P pmse_ctx)
-
-    This is called when an SMTP session ends.
-
-
-Set and Get pmilter Contexts
-
-As explained in Section 5.2.1 a milter can have a ``global'' context
-pmilter_g_ctx, a context per SMTP server pmilter_ss_ctx, and a context per
-SMTP session pmilter_se_ctx. The following functions are provided to set
-and get these contexts.
-
-Set the ``global'' context pmilter_g_ctx:
-
-sm_ret_T sm_pmfi_set_ctx_g(pmg_ctx_P pmg_ctx, void *pmilter_g_ctx).
-
-This must be done after libpmilter has been initialized but before control
-is transferred to it.
-
-To retrieve the ``global'' context invoke:
-
-void *sm_pmfi_get_ctx_g(pmg_ctx_P pmg_ctx)
-
-Note: this requires the ``global'' libpmilter context which is not usually
-passed to pmilter functions in callbacks. See below how to access the
-``global'' context pmilter_g_ctx from other places.
-
-To set the pmilter context per SMTP server pmilter_ss_ctx use:
-
-sm_ret_T sm_pmfi_set_ctx_ss(pmss_ctx_P pmss_ctx, void *pmilter_ss_ctx);
-
-to retrieve it call:
-
-void *sm_pmfi_get_ctx_ss(pmss_ctx_P pmss_ctx)
-
-The ``global'' pmilter context pmilter_g_ctx can be retrieved from the
-libpmilter context per SMTP server:
-
-void *sm_pmfi_get_ctx_g_ss(pmss_ctx_P pmss_ctx)
-
-At the lowest level a context per SMTP session pmilter_se_ctx can be set
-via:
-
-sm_ret_T sm_pmfi_set_ctx_se(pmse_ctx_P pmse_ctx, void *pmilter_se_ctx)
-
-and retrieved by:
-
-void *sm_pmfi_get_ctx_se(pmse_ctx_P pmse_ctx).
-
-Just as before there is a function to retrieve the pmilter context per
-SMTP server pmilter_ss_ctx from the libpmilter context per SMTP session:
-
-void *sm_pmfi_get_ctx_ss_se(pmse_ctx_P pmse_ctx)
-
-Note: if a pmilter uses these contexts, then it is useful that each
-``lower level'' context contains a link to its ``higher level'' context.
-That is, each pmilter context per SMTP session pmilter_se_ctx should have
-a pointer to its pmilter context per SMTP server pmilter_ss_ctx which in
-turn should have a pointer to the ``global'' pmilter context
-pmilter_g_ctx. This allows access from a function that is specific to a
-SMTP session to each relevant context.
-
-
-Accessing MTA Symbols
-
-A pmilter can set a list of symbols it wants to receive from the MTA by
-calling
-
-sm_pmfi_setmaclist(pmss_ctx_P pmss_ctx, uint where, ...)
-
-during the option negotiation, i.e., in pmfi_negotiate(). The parameter
-where denotes the stage of the ESMTP dialogue when the value of the symbol
-should be sent. It must be one of
-
-PM_SMST_CONNECT  Session start
-
-PM_SMST_EHLO     EHLO or HELO command
-
-PM_SMST_MAIL     MAIL command
-
-PM_SMST_RCPT     RCPT command
-
-PM_SMST_DATA     DATA command
-
-PM_SMST_DOT      Final dot of mail body
-
-A sequence of up to PM_MAX_MACROS macros can be requested which must end
-with PMM_END. Valid values are:
-
- 1. PMM_SRVHOSTNAME hostname of SMTP server.
- 2. PMM_SEID session id.
- 3. PMM_CLIENT_RESOLVE result of client lookups.
- 4. PMM_MAIL_TAID transaction id.
- 5. PMM_DOT_MSGID Message-Id.
- 6. PMM_TLS_VERSION TLS/SSL version used.
- 7. PMM_TLS_CIPHER_SUITE cipher suite used.
- 8. PMM_TLS_CIPHER_BITS effective key length of the symmetric encryption
-    algorithm.
- 9. PMM_TLS_ALG_BITS maximum key length of the symmetric encryption
-    algorithm. This may be less than the effective key length for export
-    controlled algorithms.
-10. PMM_TLS_VRFY the result of the verification of the presented cert.
-11. PMM_TLS_CERT_SUBJECT the DN (distinguished name) of the presented
-    certificate.
-12. PMM_TLS_CERT_ISSUER the DN (distinguished name) of the CA (certifcate
-    authority) that signed the presented certificate (the cert issuer).
-13. PMM_TLS_CN_SUBJECT the CN (common name) of the presented certificate.
-14. PMM_TLS_CN_ISSUER the CN (common name) of the CA that signed the
-    presented certificate.
-
-Notes:
-
-  * PMM_MAIL_TAID cannot be requested before PM_SMST_MAIL and
-    PMM_DOT_MSGID can only be requested at stage PM_SMST_DOT.
-  * All macros beginning with PMM_TLS are only valid after a STARTTLS
-    command.
-
-To retrieve the value of a symbol the function
-
-sm_pmfi_getmac(pmse_ctx_P pmse_ctx, uint32_t macro, char **pvalue)
-
-can be used in the various callback functions of the ESMTP dialogue. If
-the macro was not in the request list, an error will be returned. If the
-macro has not yet been received, *pvalue will be NULL. Otherwise *pvalue
-will point to the value of the macro. Note: the string to which *pvalue
-points must not be changed.
-
-
-Sender Modification
-
-The sender address (MAIL) can be replaced:
-
-sm_ret_T sm_pmfi_mail_rplc(pmse_ctx_P pmse_ctx, const char *mail_pa, char
-**argv)
-
-This function must only be called during pmfi_eom(). The address mail_pa
-must be in RFC 2821 format. The argument argv can be used to specify SMTP
-parameters for the sender address, however, this is currently not
-implemented, hence it must be set to NULL for now.
-
-
-Recipient Modifications
-
-Recipients can be added:
-
-sm_ret_T sm_pmfi_rcpt_add(pmse_ctx_P pmse_ctx, const char *rcpt_pa, char
-**argv)
-
-or deleted:
-
-sm_ret_T sm_pmfi_rcpt_del(pmse_ctx_P pmse_ctx, const char *rcpt_pa,
-rcpt_idx_T rcpt_idx)
-
-These functions must only be called during pmfi_eom(). The addresses
-rcpt_pa must be in RFC 2821 format. The argument argv can be used to
-specify SMTP parameters for the recipient address, however, this is
-currently not implemented, hence it must be set to NULL for now. As the
-MTA does not remove identical recipient addresses, the address itself is
-not sufficient to identify one RCPT, but its index must be specified too.
-This index can be retrieved during a RCPT command (pmfi_rcpt()) using
-
-sm_ret_T sm_pmfi_getrcpt_idx(pmse_ctx_P pmse_ctx, rcpt_idx_T *prcpt_idx)
-
-Note: it is invalid to remove all recipients of a transaction. To discard
-a transaction, return SMTP_R_DISCARD as a result of one of the transaction
-oriented callbacks, e.g., pmfi_eom().
-
-
-Header Modifications
-
-To request modifications of the header of a mail being sent, the function
-
-sm_pmfi_hdr_mod(pmse_ctx_P pmse_ctx, uint type, uint pos, const unsigned
-char *header)
-
-can be used. This function must only be called during pmfi_eom(). The
-argument type specifies which kind of modification is requested,
-legitimate values are defined in include/sm/hdrmoddef.h; these are:
-SM_HDRMOD_T_PREPEND, SM_HDRMOD_T_INSERT, SM_HDRMOD_T_REPLACE,
-SM_HDRMOD_T_REMOVE, and SM_HDRMOD_T_APPEND.
-
-The argument header must be a complete header line including the proper
-line ending (CRLF). The argument pos specifies the position for the types
-SM_HDRMOD_T_INSERT, SM_HDRMOD_T_REPLACE, and SM_HDRMOD_T_REMOVE. The first
-header of the original mail has position one; zero is the Received: header
-added by the SMTP server.
-
-
-Message Replacement
-
-If a pmilter wants to replace the entire message, the function pmfi_eom()
-must return the value SMTP_R_RPLCMSG. This will cause the invocation of
-the callback
-
-sfsistat_T pmfi_msg_rplc(pmse_ctx_P pmse_ctx, const unsigned char
-**pmsgchunk, size_t *pmsglen)
-
-which then must set a pointer to a message chunk and its length. Multiple
-chunks can be sent by returning SMTP_R_CONT as result of the callback. For
-the last chunk, SMTP_R_OK should be returned. The size of each chunk
-(pmsglen) must be less than PMILTER_CHUNK_SIZE as defined in include/sm/
-pmfapi.h.
-
-libpmilter will thereafter invoke the callback
-
-sfsistat_T pmfi_msg_rplc_stat(pmse_ctx_P pmse_ctx, sm_ret_T status)
-
-to give the pmilter a chance to clean up after the transaction, and to let
-it know whether the message replacement was successful.
-
-Notes:
-
-  * as the entire message is replaced and by default only the data that is
-    received from the SMTP client is sent to a pmilter, the Received:
-    header field that smtps generates is lost. To avoid this, a pmilter
-    can request to receive that header field by setting
-    SM_SCAP_PM_SND_RCVD and sending it as first chunk of the message
-    replacement.
-  * the message must be in SMTP format, i.e., lines must end in CRLF and
-    the final chunk should have the usual SMTP end of message indication:
-    CRLF dot CRLF (\r\n.\r\n), however, it can also just end in CRLF.
-  * if pmfi_msg_rplc() encounters an error, e.g., due to an API violation
-    or due to a communication error with smtps, then it will invoke
-    pmfi_msg_rplc_stat() directly without waiting for the entire message
-    even if it consists of more chunks.
-
-
-Further Capabilities
-
-In addition to selecting which SMTP commands to send to pmilter (see
-Section 5.2.3), there are some more capabilities available:
-
- 1. SM_SCAP_PM_RCPT_ST causes the MTA to send RCPT information even if the
-    command has been rejected, e.g., because the recipient is unknown, the
-    recipient has been rejected due to access map checks, or relaying has
-    been denied. Note: RCPT commands that are rejected for other reasons,
-    e.g., because the address is syntactically invalid, or some limit
-    (maximum number of recipients) is exceeded, will not be sent to
-    pmilter.
-
-    The function
-
-    sm_ret_T sm_pmfi_getstatus(pmse_ctx_P pmse_ctx, sfsistat_T *pstatus)
-
-    should be used in that case to access the current SMTP reply code for
-    the command. This functionality is useful for a pmilter that wants to
-    keep track of all recipients, not just those which are accepted, e.g.,
-    to deal with dictionary attacks.
-
- 2. SM_SCAP_PM_MSG_RC allows a pmilter to return a reply code as specified
-    in 5.2.13 from pmfi_msg(). This is useful if a pmilter can make a
-    decision about the mail without having to read the entire message. If
-    this capability is turned on, pmfi_msg() must return SMTP_R_CONT for
-    each message chunk by default to receive subsequent parts. Otherwise
-    pmfi_eom() will not be called but the return code from pmfi_msg() will
-    be used at the end of the message (in response to the final dot).
-
-
-Miscellaneous Functions
-
-To set a reply text in an SMTP session or transaction oriented callback in
-addition to the reply code use:
-
-sm_ret_T sm_pmfi_setreply(pmse_ctx_P pmse_ctx, const char *reply)
-
-Note: the reply string must contain the full SMTP reply, i.e., it must be
-of the form
-
-XYZ D.S.N text\r\n
-
-where XYZ is a valid SMTP reply code (see RFC 2821 [Kle01]) which must
-match the return code of the function from which sm_pmfi_setreply() is
-called, D.S.N is an enhanced status code as defined in RFC 3463 [Vau03]
-and the rest is an explanation of the status including CRLF (\r\n). The
-text can be a multi-line reply in the form:
-
-XYZ-D.S.N text1
-XYZ-D.S.N text2
-XYZ D.S.N text3
-
-which must be specified in the format required by SMTP:
-
-XYZ-D.S.N text1\r\nXYZ-D.S.N text2\r\nXYZ D.S.N text3\r\n
-
-To set reply codes for commands that need multiple reply values the
-function:
-
-sm_ret_T sm_pmfi_setreplies(pmse_ctx_P pmse_ctx, uint nreplies, int
-*rcodes, const char **rtexts)
-
-must be used. Currently this function makes only sense if PRDR is
-available in the SMTP server and actually used by the client. A pmilter
-can determine the latter by parsing the arguments of the MAIL command (see
-pmfi_mail()). Note: currently the argument rtexts is ignored, only the
-array of reply codes (rcodes) is used. The size of this array must be
-nreplies which must match the number of valid RCPTs for this transaction.
-The reply codes in that array must be in the same order in which the RCPTs
-have been received.
-
-Return version number of libpmilter:
-
-sm_ret_T sm_pmfi_version(pmg_ctx_P pmg_ctx, uint32_t *major, uint32_t
-*minor, uint32_t *patchlevel)
-
-This can be used to compare the version number of the library against
-which pmilter is linked with the version number against which pmilter is
-compiled. The major version numbers must match otherwise the program will
-not run.
-
-Signal handler callback:
-
-sm_ret_T pmfi_signal(pmg_ctx_P pmg_ctx, int sig)
-
-This function will be called when a USR1 or USR2 signal is received; it is
-not called within a signal handler, i.e., the code does not have to be
-signal-safe. Note: this is not yet implemented.
-
-
-Return Values
-
-SMTP Session and transaction oriented functions use sfsistat_T as return
-type. Allowed values for this type are (as defined in include/sm/
-smreplycodes.h):
-
-  * SMTP_R_OK: accept command.
-  * SMTP_R_ACCEPT: accept entire transaction or session depending on where
-    this value is returned. Note: this is just a shortcut for
-    SMTP_R_SET_QUICK(SMTP_R_OK).
-  * SMTP_R_DISCARD: discard effect of command.
-  * SMTP_R_CONT: continue other checks.
-  * SMTP_R_SSD: shut down SMTP session.
-  * SMTP_R_TEMP: reject command with a temporary error.
-  * SMTP_R_SYNTAX: syntax error.
-  * SMTP_R_PERM: reject command with a permanent error.
-  * other valid SMTP reply codes [Kle01].
-
-Additionally return values can be modified by using SMTP_R_SET_QUICK
-(returnvalue). See Section 3.9.3 for the effects of this.
-
-For functions that use sm_ret_T as return type a successful call returns
-SM_SUCCESS (0) and a negative value in case of an error.
-
-
-Implementation Notes
-
-As libpmilter currently does not keep track of the status of a transaction
-or session, the functions pmfi_abort() and pmfi_close() may be called even
-if no transaction or session is currently active. This can happen if an
-SMTP server unexpectedly aborts the connection to a policy milter. An
-application must be aware of this and keep track of its state properly.
-
-
-Policy Milter Examples
-
-The program libpmilter/example-pmilter-0.c is a simple example how to
-write a policy milter. It might be useful as a template for other milters.
-
-Also available is a policy milter contrib/milter-spamd.c that offers an
-interface to spamd(1) which is a daemonized version of spamassassin(1).
-milter-spamd.c is written by Daniel Hartmeier [Harc] (see the file itself
-for the Copyright) for sendmail 8 and modified to work with the policy
-milter API of MeTA1.
-
-Miscellaneous
-
-
-Troubleshooting
-
-If something goes wrong then the component which fails usually logs an
-error message. Depending on the configuration, an error is either logged
-via syslog(3) or printed into a logfile (as explained in Section 4.8).
-Note: even if the system is configured to use syslog(3) (Section 3.4, item
-1) errors at startup are printed to the logfile if those errors occur
-before the configuration is read, hence those files need to be checked
-too.
-
-
-Startup Problems
-
-If MeTA1 fails to start properly the reason should be logged as explained
-before. Some possible reasons are
-
- 1. invalid configuration file: use misc/smconf to check the syntax before
-    deploying a new configuration file.
-
- 2. wrong permissions: check the permissions as explained in Section 2.4:
-
-    $ ./misc/sm.check.sh
-
- 3. missing or invalid maps: make sure maps are created properly with
-    createmap(8).
-
-
-Logfile Entries
-
-Most logfile entries should be self-explaining. However, some are more
-subtle and indicate only indirectly what might be wrong. Example:
-
-smtps: ... client_name=Hostname_Not_Determined
-
-indicates that the access map (Section 3.10, 3b) is not used which might
-point to a misconfiguration.
-
-Caveats
-
-The following problems exist in this version of MeTA1:
-
-  * If the system runs out of memory then the MTA may not act gracefully
-    in all cases, see Section 4.10.1.
-
-  * If a disk that is used for one of the queues becomes full, some errors
-    may not be handled gracefully, see Section 4.10.1. To avoid this,
-    MeTA1 has some limits for the amount of available disk space that is
-    required to accept mail (see Section 3.8).
-
-Checks in SMTP Server
-
-The SMTP server has some builtin checks which are explained in the
-following.
-
-
-Strict RFC Compliance
-
-The SMTP server currently enforces fairly strict RFC 2821 compliance. For
-example, a MAIL command must be given in the following format
-
-MAIL From:<user@some.domain>
-
-i.e., the angle brackets are required, there must be no space after ":",
-etc. This has the useful side effect of catching some spam programs:
-
-5.5.0 Syntax error., input=MAIL FROM: <blafwhoyqjywvu@asia.com>
-
-Moreover, the server requires that lines end in CRLF (\r\n), it will not
-accept command input without the correct line ending, i.e., trying to do
-that will cause a read error.
-
-Another requirement is that MX records must point to hostnames, not IP
-addresses [Moc87]. This applies to receiving mail - a MAIL address using a
-domain whose MX record points to an IP address will be rejected (553 5.1.8
-Sender address does not exist) - as well as to sending mail - a RCPT
-address with a domain whose MX record points to an IP address is not
-resolved by SMAR.
-
-Various Checks
-
-The EHLO parameter is checked against the local hostname unless the
-connection comes from localhost (IP address 127.0.0.1) or the access map
-returned quick:ok or quick:relay, see Section 3.9.3. Violations will be
-logged with a status text of Identity_Theft.
-
-The SMTP server checks for ``illegal pipelining'', i.e., whether a client
-sends commands before it is allowed to do so. Moreover, it also checks
-whether the client sends a command before the initial greeting. Note:
-according to RFC 2821 the client SHOULD wait for the greeting, but this is
-not (yet) a requirement. To turn this off, use allow_data_before_greeting
-(Section 3.10, item 3k.)
-
-Security Checks
-
-There are currently no additional security checks when creating/accessing
-files or directories besides those provided by the operating system. This
-could be a problem if MCP is misconfigured because it runs as root. Hence
-it will simply overwrite existing files if those are specified in the
-configuration file. The other modules run as non-privileged users, hence
-the OS provides sufficient access checks - unless the system is
-misconfigured and the MeTA1 accounts are misused for other purposes too.
-
-Restrictions
-
-Besides the obviously missing functionality there are some other things
-that may restrict the use of MeTA1 in certain environments. Here is an
-incomplete list:
-
-  * DNS lookups currently use only UDP by default, hence answers that
-    exceed the UDP packet size will cause problems. However, such DNS
-    packets are really rare (because they cause operational problems in
-    various places, e.g., some firewalls may block TCP for port 53). A
-    possible workaround might be to force TCP (see Section 3.9.2, item 1
-    (a)i), the correct way is a change in the DNS library to retry with
-    TCP, but this has not yet been implemented.
-
-  * Map lookups convert keys to lower case before checking an entry. In
-    general this is not a problem unless local addresses rely on
-    preserving the case of the local parts of addresses. That is, local
-    addresses which require upper case characters do not work.
-
-  * Multi-line replies from an SMTP server are currently neither stored
-    (for a possible DSN) nor logged, instead just the last line is used
-    for that purpose.
-
-Everything that is not described in the documentation does either not
-exist in the current version of MeTA1, or is unlikely to work. However,
-there may be omissions in the documentation, please inform the author of
-such bugs.
-
-Code Review, Enhancements, Patches
-
-Source code inspection as well as patches and suggestions are very
-welcome.
-
-Enhancements and extensions are very welcome too, especially to extend the
-basic functionality of the current MeTA1 release.
-
-Porting
-
-Porting to currently unsupported platforms including non-Unix systems is
-encouraged. Note that the destination system must support statethreads [
-SGI01] and Berkeley DB 4.x. It might be necessary to port those first.
-
-
-Version Naming
-
-Each MeTA1 version has a name in the following format:
-
-MeTA1-major.minor.[qualifier]qualifier-version.patchlevel
-
-The major number changes between releases when new features are introduced
-(major changes, but see below about the development phases). The minor
-number changes when no new features are introduced, but bugfixes and
-(portability) enhancements are made. That is, no configuration changes are
-needed when going from one minor version to the next. The patchlevel
-number is used for intermediate patches between releases, e.g., if
-something is broken but it is not important enough for a new release
-because it is barely used or encountered.
-
-There are several different qualifiers:
-
- 1. PreAlpha: This means the software is not feature complete and hence
-    might be missing some functionality that is considered important by
-    different users. Additionally, there is most likely no compatibility
-    in data structures stored on disk between different pre-alpha
-    versions, e.g., when upgrading from PreAlpha16 to PreAlpha17 the main
-    queue format may have changed without checks in the software for this.
-    Hence old queues must be drained before upgrading. Moreover, the
-    protocols used for communication between MeTA1 modules may have
-    changed without providing backward compatibility, therefore modules
-    from different releases must not be used together. Such
-    incompatibilities are usually stated in the list of changes ChangeLog.
-
-    Do not run this on a production server unless you are aware of the
-    possible consequences. The software is still under development and not
-    fully functional. Moreover, it may not be sufficiently tested.
-
- 2. Alpha: In this state the software is ready for public testing but its
-    features may still change.
-
- 3. Beta: Feature changes are unlikely, but still possible if required.
-    Usually only bugfixes occur between beta versions.
-
- 4. Gamma: This is a release candidate. Usually only critical bugfixes
-    occur between gamma versions. There might be no gamma versions at all
-    if beta testing was considered successful and sufficient.
-
- 5. A release version does not have an explicit qualifier.
-
-The qualifier-version is used to distinguish between different version of
-the same qualifier, e.g., PreAlpha16 and PreAlpha17. It is 0 for a release
-version.
-
-Examples for version names: MeTA1-0.0.PreAlpha19.0, MeTA1-1.0.0.0.
-
-See the file include/sm/version.h how the version string is converted into
-a 32 bit number that denotes the version number.
-
-Snapshots
-
-From time to time snapshots may be made available. Those are marked with a
-date in the distribution file name, e.g., meta1-0.0.16.0-20040928.tar.gz.
-The name indicates that it is a snapshot of what will become version
-meta1-0.0.16.0, i.e., the next release will have the given version number
-(without the date). The only other indication in the distribution is the
-inclusion of an s in the version number that is shown in the version
-output of the main components. A snapshot did not go through the usual
-release cycle and is made available as technology preview.
-
-Data Flow in MeTA1
-
-
-Data Flow in MeTA1
-
-This Section explains how MeTA1 stores information about messages that are
-transferred. It gives some background information which is useful for
-troubleshooting. Details about the operation of MeTA1 can be found in [
-Assmb].
-
-MeTA1 uses two different databases on disk to store envelope information
-(sender and recipients): IBDB: incoming backup database, DEFEDB: deferred
-envelope database, and one database to store message contents: CDB:
-content database. See Section 2.4.1 about the location and layout of these
-databases^7.1. The queue manager additionally uses two internal envelope
-databases: IQDB (Incoming Queue DataBase) and AQ (Active Queue).
-
-Incoming mails are accepted by the SMTP servers which store the content in
-the CDB (complete messages including headers in the format as received).
-The envelope information, i.e., sender (MAIL) and recipients (RCPT), is
-stored by the queue manager in IQDB and written to IBDB which is just a
-log of envelope data and what happened to it. That is, the files in IBDB
-are written sequentially and are continuously growing. If a file reaches
-its size limit (see Section 3.8: IBDB), then it is closed and a new file
-is opened. For a delivery, the envelope information must be transferred
-into AQ. For incoming mail this happens as soon as a transaction is
-accepted, in which case the data is moved from IQDB to AQ. A transaction
-is only accepted if the message is safely written to CDB and the envelope
-information has been committed to IBDB, i.e., all information is committed
-to persistent storage^7.2.
-
-The scheduler in QMGR takes recipient envelopes from AQ and creates
-transactions which are given to the SMTP clients for delivery. An SMTP
-client takes the transaction information and tries to send a message whose
-content is read from CDB. After a successful delivery attempt a record is
-written to IBDB that logs this information. A cleanup task removes
-periodically old IBDB files which contain only data that is no longer
-referenced.
-
-The deferred envelope database is only used if a message cannot be
-delivered during the first attempt. In that case the appropriate envelope
-data is added to DEFEDB and a record is written to IBDB stating that the
-data has been transferred to DEFEDB. Entries in DEFEDB contain a timestamp
-called next-time-to-try at which QMGR reads them from the database into AQ
-and the scheduler tries another delivery attempt. If that succeeds, the
-entries are removed from DEFEDB, otherwise they are either requeued with a
-new next-time-to-try (in case of a temporary error) or a DSN (bounce
-message) is generated (in case of a permanent error).
-
-Advanced Configuration Options
-
-
-Overview
-
-Some configuration options are only needed in special situations and may
-require background knowledge of the involved systems. Those advanced
-configuration options are explained in the subsequent sections.
-
-
-Flags
-
-Usually flags are not set and hence a configuration file only needs to
-turn on flags (if required). However, in some cases flags are set by
-default and under some rare circumstances need to be disabled. To achieve
-this, the name of the flag can be prefixed with one of not_, dont_, no_,
--, !, or ~, e.g., ~remove_unused_logfiles or dont_remove_unused_logfiles.
-
-
-Advanced Configuration for MCP
-
- 1. max_processes: maximum number of processes to start [default: 1].
- 2. min_processes: minimum number of processes to start [default: 1].
- 3. use_id_in_logfile_name: if more than one process can be started then
-    it might be useful to have unique logfiles unless the processes use
-    syslog(3). If set, this (boolean) option causes MCP to include a
-    unique identifier (the same as for pass_id, which must be used too) in
-    the logfile name. By default the logfile has the name of the section
-    (or the section keyword if no section name is given), preceeded by the
-    log directory (option -L for MCP), and .log appended. If
-    use_id_in_logfile_name is turned on, then the numeric id is added
-    before the extension, e.g., /var/log/meta1/mailer0.log for -L /var/log
-    /meta1/ and a section with the name mailer.
- 4. working_directory: perform a chdir(2) to the specified directory
-    before executing the process. Note: this option essentially requires
-    that all relevant pathnames in the configuration file are absolute,
-    otherwise it is very easy to misconfigure some pathnames, especially
-    those shared between different processes.
-
-Note: the number of processes for almost all MeTA1 modules should be 1. It
-must be 1 for QMGR and SMAR, it can be larger than 1 for SMTPC. For SMTPS
-it should be 1 in the default setup as the file descriptor to which MCP
-binds on behalf of SMTPS can be passed to only one process.
-
-
-Advanced Configuration for QMGR
-
- 1. connection_control_hash_table_size: size of the hash table used for
-    connection control, i.e., number of incoming connections and
-    connection rate (see Section 3.8, 18a and 18b)
- 2. debug_level: debug level (only if compiled with QMGR_DEBUG).
-
- 3. subsection DEFEDB: Note: The Berkeley DB documentation [Sleb] should
-    be consulted before modifying any of these options.
-     1. page_size: DB page size (this can only be set when the DB is
-        initially created).
-     2. cache_size: DB cache size.
-     3. KBytes_written_for_checkpointing: If non-zero, a checkpoint will
-        be done if more than the amount of KBytes of log data have been
-        written since the last checkpoint (unit: KB).
-     4. delay_between_2_checkpoints: Minimum delay between two checkpoints
-        (unit: s).
-     5. flags: flags for DEFEDB:
-         i. remove_unused_logfiles: this is on by default, hence to turn
-            it off one of the forms explained in Section 8.1.1, e.g.,
-            dont_remove_unused_logfiles, can be used. This should only be
-            done if the Berkeley DB logfiles are removed some other way,
-            e.g., after archiving.
-
- 4. delivery_timeout: timeout for a single delivery attempt (unit: s).
-    This value should be large enough that even big mails can be delivered
-    over a slow link before the QMGR considers the delivery attempt a
-    failure because the delivery agent did not return a result yet.
-
- 5. flags: configuration flags:
-     a. reuse_connection: try to reuse open SMTP connections for delivery.
-        Note: this feature is still experimental.
-
- 6. max_fds: maximum number of file descriptors. This sets an upper limit
-    on the number of clients that can connect to QMGR.
-
- 7. max_threads: maximum number of threads.
- 8. min_threads: minimum number of threads.
-
- 9. scheduler_timeout: as a safety measure against unforseen problems an
-    item is removed from AQ after the specified timeout. This timeout must
-    be large enough to allow for scheduling delays if all delivery agents
-    are busy which can happen if deliveries are slow or if there are fewer
-    delivery agents available than entries in the active queue.
-
-10. SMAR_timeout: timeout in address resolver, i.e., how long to wait for
-    a result from SMAR (unit: s). Note: this value must be larger than the
-    total DNS timeout and it must take alias expansion into account.
-
-11. subsection smtps:
-     a. connection_control_cache_size: size of connection control hash
-        table.
-
-12. tests: testing only (available if QMGR is compiled with -DQMGR_TEST).
-    See the source code for details.
-
-
-Advanced Configuration for SMAR
-
- 1. DNS: this subsection contains DNS related options.
-     1. flags: valid flags are:
-         1. use_TCP: use TCP instead of UDP for connections to a
-            nameserver. Note: currently the DNS resolver does not
-            automatically fall back to a TCP connection if the reply was
-            too big. This may be added in a later version.
-         2. use_connect: use connect(2) even if using UDP. This is
-            required on systems like FreeBSD jail(8).
-
- 2. max_fds: maximum number of file descriptors. This sets an upper limit
-    on the number of clients that can connect to SMAR.
-
- 3. max_threads: maximum number of threads.
- 4. min_threads: minimum number of threads.
-
-
-Advanced Configuration for SMTP Server
-
- 1. daemon_address: address for daemon to listen on; this should not be
-    used in normal operation. Current (preliminary) format is: host:port,
-    :port (listen on 0.0.0.0) host (port defaults to 8000). Up to 16
-    addresses^8.1can be specified. See the notes below.
-
- 2. flags:
-     1. background: fork(2) after start; this should not be used in normal
-        operation.
-     2. serialize_accept: serialize accept(2) calls, see the statethreads
-        documentation [SGI01] for details.
-
- 3. listen_queue: length of listen(2) queue; this must not be used in
-    normal operation, i.e., if MCP is used.
-
- 4. max_wait_threads: maximum number of waiting threads.
- 5. min_wait_threads: minimum number of waiting threads.
-
- 6. module_timeout: timeout for communication with other modules.
-
- 7. processes: number of processes to start.
-
- 8. tls:
-     1. DSA_cert_file: file with DSA certificate in PEM format.
-     2. DSA_key_file: file with private key for DSA certificate in PEM
-        format.
-
- 9. wait_for_smar: maximum amount of time to wait for a reply from SMAR.
-
-Notes: only one of daemon_address and pass_fd_socket must be specified. In
-normal operation it is almost always pass_fd_socket because the SMTP
-server cannot bind to privileged ports, hence the file descriptor must be
-passed from MCP.
-
-
-Advanced Configuration for SMTP Client
-
- 1. connect_only_to: Specify an IP address to which all outgoing mail is
-    sent. This can be used for testing with otherwise real data, i.e.,
-    addresses, by running an SMTP sink^8.2on a computer and specifying its
-    IP address. Then all mails that should be sent via SMTP will go to
-    that host instead of the addresses determined by SMAR. Note: it is
-    nevertheless a good idea to use firewall rules to prevent mail going
-    out to the internet, i.e., prohibit connections to port 25 to external
-    hosts.
-
- 2. debug_level: debug level (only if compiled with SMTPC_DEBUG).
-
- 3. flags:
-     1. read_QUIT_reply: read the reply to the QUIT command instead of
-        just closing the connection after sending it.
-     2. separate_final_dot_and_QUIT: send the final dot of a message and
-        the QUIT command in different TCP packages even if PIPELINING is
-        offered. This can avoid problems with some broken servers or
-        firewalls.
-     3. talk_to_myself: do not check whether server greets with the
-        hostname of the machine on which smtpc runs.
-
- 4. max_wait_threads: maximum number of waiting threads.
- 5. min_wait_threads: minimum number of waiting threads.
-
- 6. module_timeout: timeout for communication with QMGR.
-
- 7. remote_port: port to which connections should be made. Note: if
-    multiple SMTP clients are specified, all of them must use the same
-    value for remote_port. Currently the scheduler requires that all SMTP
-    clients behave the same. If different ports are required, then those
-    must be listed in mailertable entries.
-
- 8. tls:
-     1. DSA_cert_file: file with DSA certificate in PEM format.
-     2. DSA_key_file: file with private key for DSA certificate in PEM
-        format.
-
-
-Tuning
-
-
-Size of Queues, Caches, and Databases
-
-All data structures in QMGR have some maximum size. This is not just done
-to avoid resource exhaustion in high load situations but also to provide a
-feedback loop between SMTP servers (producers) and SMTP clients
-(consumers). This feedback loop helps to avoid flooding the system with
-mails that it cannot deliver fast enough. The incoming queue (IQDB) and
-the active queue (AQ) implement this feedback loop. As explained in
-Section 7.1 the data from the SMTP servers is stored in the incoming queue
-first which has a fixed size. If more data is produced than taken out (by
-the scheduler into the active queue) the queue will fill up and the QMGR
-will throttle the SMTP servers by dynamically reducing the number of
-available threads. Throttling the SMTP servers is done based on various
-resources, e.g., IQDB, AQ, available disk space, and much more. Hence by
-limiting the size of IQDB (see Section 3.8, item 8a) and of course the
-maximum number of threads in the SMTP servers the incoming flow of
-messages can be controlled. The size of IQDB should be greater than the
-maximum number of threads in the SMTP servers multiplied by the average
-number of recipients, otherwise transaction will be rejected before all
-threads are busy.
-
-The active queue should be large enough to provide enough work for all
-SMTP clients (threads) and it must be larger than the largest number of
-recipients accepted by a single transaction (see Section 3.8, item 1).
-
-
-Disk I/O
-
-In most MTAs disk I/O is the limiting factor unless special hardware is
-used which employs battery backed RAM cache to achieve high I/O rates
-(IOP: I/O operations). If multiple disks are available, they can be used
-to spread the load. Disk files (see Section 2.4.1) are used for:
-
- 1. IBDB: the directory can be linked to a different disk.
- 2. DEFEDB: the base directory can be changed via an option (Section 3.8,
-    item 4a), as well as the directory for logfiles (Section 3.8, item 4b
-    ).
- 3. CDB: the base directory can be changed via an option (see Section 3.4,
-    item 2). Individual subdirectories (see Section 2.4.1) can be linked
-    to different disks.
-
-
-Processes and Threads
-
-The main MeTA1 processes are multi-threaded. However, two different
-threading implementations are used: POSIX threads (pthreads) for QMGR and
-SMAR and statethreads [SGI01] for SMTP server and client. Statethreads
-only switch between threads on network I/O operations as it is a threading
-implementation in user space without kernel support. Hence operations that
-can take a long time, e.g., computations for asymmetric cryptography (as
-required during the STARTTLS handshake) or in some cases even synchronous
-disk I/O, will not just stop a single thread but the entire process. If
-this happens it is possible to start multiple SMTP servers, see Section
-8.5, item 7. If it becomes necessary to start multiple SMTP clients, then
-the MCP can be instructed to do so, see Section 8.2, item 1.
-
-Format Specifications
-
-
-Socket Map
-
-The socket map uses a simple request/reply protocol over TCP or UNIX
-domain sockets to query an external server. Both requests and replies are
-text based and encoded as netstrings, i.e., a string ``hello there''
-becomes:
-
-11:hello there,
-
-Note: neither requests nor replies end with CRLF.
-
-The request consists of the database map name and the lookup key separated
-by a space character:
-
-mapname ' ' key
-
-The server responds with a status indicator and the result (if any):
-
-status ' ' result
-
-The status indicator is one of the following upper case words:
-
-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
-
-In case of errors (status TEMP, TIMEOUT or PERM) the result field may
-contain an explanatory message.
-
-Example replies:
-
-31:OK resolved.address@example.com,
-
-in case of a successful lookup, or:
-
-8:NOTFOUND,
-
-in case the key was not found, or:
-
-55:TEMP this text explains that we had a temporary failure,
-
-in case of a failure.
-
-
-Format of Session/Transaction Identifiers
-
-The format of session and transaction identifiers is specified in include/
-sm/mta.h. For the SMTP server it consists of a leading 'S', a 64 bit
-counter and an 8 bit ``process'' identifier, both of which are printed in
-hexadecimal format. For the SMTP client it consists of a leading 'C', an 8
-bit ``process'' identifier, a 32 bit counter, and a 32 bit thread index,
-all of which are printed in hexadecimal format.
-
-Examples: S00000000407CE49200, C010000137D00000000.
-
-SMTP server session/transaction identifiers are unique until the 64 bit
-counter wraps around, SMTP client session/transaction identifiers are
-unique only within a single invocation of QMGR.
-
-Note: the format may change between different release of MeTA1, hence the
-identifiers should be considered opaque.
-
-
-Logfile Format
-
-The general format of entries in a logfile is a sequence of named fields
-which are separated by commas. Each field consists of a name, an equal
-sign, and a value. If the value is a text field that is received from an
-external (untrusted) source, then all non-printable characters, commas,
-and percent signs are shown as their two digit hexadecimal ASCII
-representation with a leading percent sign. For example, the text
-
-550 5.7.1 no, not now, 99% usage
-
-is encoded as
-
-550 5.7.1 no%2C not now%2C 99%25 usage
-
-This encoding allows a logfile analyzer to use the comma symbol as a
-delimiter of fields without having to perform complicated parsing, e.g,
-the Unix awk utility can be used with comma as field separator. Note:
-suggestions for a better encoding or different solution for the problem
-are welcome (more details can be found in [Assmb]).
-
-Logfiles use the identifiers described earlier such that transactions and
-sessions can be easily recognized. For the following examples logfile
-entries have been slightly edited and line breaks have been inserted.
-
-Here is one example of a session in an SMTP server:
-
-ss_sess=S00000000407EAE3800, client_ipv4=127.0.0.1,
-  client_name=localhost.endmail.org.
-ss_sess=S00000000407EAE3800, where=connection, starttls=successful
-ss_sess=S00000000407EAE3800, ss_ta=S00000000407EAE4E00,
-  mail=<SENDER@meta1.org>, stat=0
-ss_sess=S00000000407EAE3800, ss_ta=S00000000407EAE4E00,
-  rcpt=<RECIPIENT@meta1.org>, idx=0, stat=0
-ss_sess=S00000000407EAE3800, ss_ta=S00000000407EAE4E00,
-  rcpt=<SOMEONE@SOME.DOMAIN>, idx=1, stat=0
-ss_sess=S00000000407EAE3800, ss_ta=S00000000407EAE4E00,
-  msgid=<20040916050457.GG54961@endmail.org>, size=1177, stat=0
-
-The first entry shows a successful session creation including the IPv4
-address and the hostname of the client. The second entry indicates that
-STARTTLS has been used. A new transaction is shown in the third entry and
-two recipients are given thereafter (along with the index idx). The last
-entry shows that the transaction was successful (status=0; 0 is used
-instead of 250 or other SMTP reply codes that indicate success) and the
-size of the received mail (in bytes) as well as its Message-Id.
-
-Here is one example of a session in an SMTP client:
-
-da_sess=C01000006C800000002, status=connected, port=25, addr=64.81.247.36
-da_sess=C01000006C800000002, where=connection, starttls=successful
-da_sess=C01000006C800000002, da_ta=C01000006C900000002,
-  ss_ta=S00000000407EAE4E00, mail=<SENDER@meta1.org>, stat=0,
-  reply=250 2.5.0 MAIL command succeeded
-da_sess=C01000006C800000002, da_ta=C01000006C900000002,
-  ss_ta=S00000000407EAE4E00, rcpt=<RECIPIENT@meta1.org>, stat=0,
-  reply=250 2.1.5 RCPT ok
-da_sess=C01000006C800000002, da_ta=C01000006C900000002,
-  ss_ta=S00000000407EAE4E00, where=final_dot, size=1177, stat=0
-
-This is very similar to the format of the entries entries in the SMTP
-server and should not require an explanation. In addition to the delivery
-agent session and transaction ids (da_sess and da_ta) the SMTP server
-transaction id (ss_ta) is logged too. This makes it simple to track a
-message through the MTA. Obviously ss_ta can be used for multiple outgoing
-messages if the incoming message has been sent to multiple recipients
-(maybe indirectly via an alias), hence this is not a unique identifier in
-the SMTP client log.
-
-QMGR can also log the delay time for each recipient, e.g.,
-
-func=q_upd_rcpt_ok, rcpt_id=S00000000407EAE4E00-000000,
-  rcpt=<RECIPIENT@meta1.org>, xdelay=0, delay=1
-
-where xdelay is the time for this delivery attempt, and delay is the total
-delivery time.
-
-Format of Received Header
-
-The format of the Received: header added by the SMTP server is specified
-in smtps/smtps.c.
-
-Received: from EHLO-NAME (CLIENT-NAME [CLIENT-ADDR])
-        by HOST-NAME (SM-X-VERSION) with PROTOCOL
-        id SMTP-TA-ID; DATE
-
-where PROTOCOL is one of ESMTP, ESMTPS, ESMTPA, ESMTPSA, or SMTP [New04].
-If STARTTLS is active, then (TLS=TLSVERSION, cipher=CIPHERSUITE, bits=
-CIPHERBITS, verify=VERIFYRESULT) is placed before id, where TLSVERSION is
-the TLS protocol version, e.g., TLSv1, SSLv3, SSLv2; CIPHERSUITE is the
-cipher suite that was in use, e.g., AES256-SHA, EDH-DSS-DES-CBC3-SHA,
-EDH-RSA-DES-CBC-SHA, CIPHERBITS denotes the effective keylength (in bits)
-of the symmetric encryption algorithm of the TLS connection, and
-VERIFYRESULT is one of the following:
-
-OK    verification succeeded.
-
-NO    no cert presented.
-
-NOT   no cert requested.
-
-FAIL  cert presented but could not be verified, e.g., the signing CA cert
-      is missing.
-
-Note: the name of the client is only shown if the access map feature is
-activated (see Section 3.10, 3b), otherwise the time-consuming DNS lookups
-(PTR and A records) are not performed.
-
-Format of DSNs
-
-DSNs (bounces) are currently not compliant to RFC 1891ff, however, a
-configuration option (Section 3.8, item 5(b)ii) can be set to send DSNs in
-MIME format, i.e., Content-Type: multipart/mixed with Content-Type:
-message/rfc822 for the original message. The format looks like this:
-
-From: Mailer-Daemon@HOST.NAME
-Subject: Undeliverable mail
-
-A mail from you could not be delivered. See below for details.
-
-and then a list of recipients and the reasons for the failure, e.g.,
-
-Recipient:
-<user@example.com>
-Remote-MTA:
-10.2.3.4
-Reason:
-550 5.7.1 <user@example.com>... Access denied
-during RCPT
-
-Setup for STARTTLS
-
-
-Certificates for STARTTLS
-
-When acting as a server, MeTA1 requires X.509 certificates to support
-STARTTLS: one as certificate for the server, at least one root CA
-(CAcert_file), i.e., a certificate that is used to sign other
-certificates, and a path to a directory which contains certs of other CAs
-(CAcert_directory). The file specified via CAcert_file can contain several
-certificates of CAs. 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; e.g.,
-
-error:14094417:SSL routines:SSL3_READ_BYTES:
-sslv3 alert illegal parameter:s3_pkt.c:964:SSL alert number 47
-
-You should probably put only the CA cert into that file that signed your
-own cert(s), or at least only those you trust. The directory specified via
-CAcert_directory must contain the hashes of each CA certificate as
-filenames (or as links to them). Symbolic links can be generated with the
-following two (Bourne) shell commands:
-
-C=FileName_of_CA_Certificate
-ln -s $C `openssl x509 -noout -hash < $C`.0
-
-An X.509 certificate is also required for authentication in client mode,
-however, MeTA1 will always use STARTTLS when offered by a server. The
-client and server certificates can be identical. Certificates can be
-obtained from a certificate authority or created with the help of OpenSSL.
-The required format for certificates and private keys is PEM. To allow for
-automatic startup of MeTA1, private keys must be stored unencrypted. The
-keys are only protected by the permissions of the file system, hence they
-should not be readable by anyone but the owner. If server and client share
-the same key it is ok to make the key group readable however. Never make a
-private key available to a third party.
-
--r--r--r--  1 root     wheel       CAcert.pem
--r--r--r--  1 meta1s   meta1c      smcert.pem
--r--r-----  1 meta1s   meta1c      smkey.pem
-drwxr-xr-x  2 root     wheel       certs/
-
-More About Configuration, Compilation, Debugging, and Testing
-
-
-Compile Time Options
-
-There are several compile time parameters which might be useful in some
-situations that are listed below. Compile time options to turn on
-additional debugging are listed in section 12.1.5.
-
-
-Generic
-
-To further restrict the length of syslog(3) messages the compile time
-options MTA_LOG_LEN and MTA_LOG_LEN_MAX can be used (see libmta/log.c for
-the defaults). The macro MTA_LOG_LEN_MAX sets the maximum length of a
-syslog(3) message, MTA_LOG_LEN needs only be set if MTA_LOG_LEN_MAX is
-less than the default value of MTA_LOG_LEN.
-
-
-QMGR
-
-To enable QMGR statistics, e.g., number of transactions and recipients
-that have been handled, set QMGR_STATS.
-
-
-SMAR
-
-The address resolver imposes limits on the number of MX and A records that
-it accepts when it does routing lookups. These macros are:
-
-  * MTA_DNS_MX_MAX: maximum number of MX records for a domain,
-  * MTA_DNS_A_PER_MX_MAX: maximum number of A records for one MX record,
-  * MTA_DNS_A_MAX: maximum number of A records for a domain (after
-    performing MX lookups).
-
-
-SMTPS
-
-  * SS_EHLO_ACCESS_CHK enables lookups of the EHLO/HELO argument in the
-    access map (Section 3.10, 3b). This must be enabled at runtime via the
-    flag check_ehlo.
-
-
-Debugging Compile Time Options
-
-There are several compile time parameters to support debugging. An option
-that applies to all modules (as they use the same libraries) is
-MTA_HEAP_CHECK which turns on various heap checks and keep track of memory
-usage.
-
-Other options are specific to a module and can be used to turn on
-debugging output. Since currently no logging abstraction is in use, the
-output is done on a per-module basis (whatever is simplest for the
-individual module). These compile time options are:
-
-SC_DEBUG          SMTPC debugging
-
-SSQ_DEBUG         SMTPS - QMGR communication debugging
-
-SS_DATA_DEBUG     SMTPS DATA stage debugging
-
-QMGR_DEBUG        QMGR debugging
-
-SMAR_DEBUG        SMAR debugging
-
-MTA_LIBDNS_DEBUG  libdns debugging
-
-For details see the source code.
-
-Note: it is possible to set different debug levels for different debug
-categories in QMGR. For a list of categories see include/sm/qmgrdbg.h. To
-set a debug level n for a category c use the option -xc.n. The general
-syntax for the parameters is:
-
-debugoptions  ::=  debugoption [ "," debugoptions ]
-
-debugoption   ::=  range [ "." level ]
-
-range         ::=  first [ "-" last ]
-
-If level is omitted, it defaults to 1. Example: -x1-3.4,5.3,9-11
-
-A simple way to set compile time options is to use:
-
-$ CFLAGS="-DSM_HEAP_CHECK" $PATHTO/meta1-$VERSION/configure
-
-A more complicated example is:
-
-$ CFLAGS="-O -g -DSM_HEAP_CHECK -I/usr/local/include" \
- LDFLAGS="-L/usr/local/lib" \
- $PATHTO/meta1-$VERSION/configure
-
-Hint: it is useful to write the command line into a local file that can be
-reused for subsequent builds and versions.
-
-Note: if configure has problems with OpenSSL because you do not have
-KerberosV installed, add
-
-$ CPPFLAGS="-DOPENSSL_NO_KRB5"
-
-Possible Compilation Problems or Warnings
-
- 1. If gcc is used as C compiler and full checking is turned on warnings
-    like these are produced:
-
-    warning: unknown conversion type character `N' in format
-    warning: unsigned int format, sm_str_P arg (arg 3)
-    warning: too many arguments for format
-
-    Unfortunately gcc cannot be told about additional format specifiers
-    and hence the misleading warning might be generated.
-
- 2. On some systems the following warning is generated by the compiler:
-
-    `sys_nerr' is deprecated; use `strerror' or `strerror_r' instead
-
-    sys_nerr is used to determine whether it makes sense to invoke
-    strerror(3) at all. The systems that generate this error do not
-    provide an alternative way to perform this check. Just ignore the
-    warning or ask the authors of that warning for an alternative way to
-    determine the range of defined error codes.
-
-
-More About Test Programs
-
-
-More Environment Variables used by Test Programs
-
-  * MTA_NAMESERVER: can be used to set a specific nameserver (IPv4
-    address) in case the simple script which extracts the first line
-    beginning with nameserver from the file /etc/resolv.conf does not give
-    the desired result.
-
-  * MTA_PMILTER_REGEX_TEST: can be used to enable the tests (make check in
-    chkmts/) for the policy milter milter-regex provided it is enabled and
-    compiled. Notes:
-      + this requires that make check is executed in contrib/ before make
-        check in chkmts/.
-      + make check in contrib/ may fail due to a compilation error for
-        milter-regex.c. If your OS has yacc(1) (or bison(1) installed then
-        remove that file (milter-regex.c) and try again. You may have to
-        tell configure to use yacc(1), e.g.,
-
-        YACC=yacc ./configure ...
-
-  * Some test programs use SMTP servers and sinks listening on an INET
-    port. The default values for these ports are specified in chkmts/
-    common.sh. If one of the default ports is used by another program,
-    then the corresponding environment variable must be set as otherwise
-    all related test programs will fail.
-
-      + MTA_SNKPORT: set the port on which the SMTP sink is listening.
-
-      + MTA_SRVPORT: set the port on which the SMTP test server is
-        listening.
-
-
-Other Potential Problems with Test Programs
-
-Some of the test programs may generate warnings, e.g., most of the tree
-related programs cause compilers on 32 bit systems to emit a warning
-integer constant too large which can be ignored.
-
-
-Known Test Program Problems specific to an OS/setup
-
-FreeBSD systems when running in a jail(8) exhibit the following problems:
-
-  * The test programs for SMAR which perform DNS lookups can fail because
-    UDP does not work in a jail(8) as expected. A workaround for this is
-    to use the -U option for smar which can be achieved by setting the
-    environment variable SMAROPTS to that value.
-
-  * Connections from localhost to the SMTP server do not have 127.0.0.1 as
-    source IP address, but the IP address of a NIC. Hence relaying must be
-    allowed for it by setting the environment variable MTA_SERVER_OPTIONS
-    to the option -C and the IP address, e.g., -C 10.2.3.4. Moreover,
-    because the tests chkmts/t-mts-icr.sh and chkmts/t-mts-ocr.sh rely on
-    connections coming from 127.0.0.1 they will fail too.
-
-MacOS 10.3.4 has a problem with sigwait(3), see Apple's bug 3675391; hence
-MeTA1 does not work on this OS (and other versions that have the same
-bug).
-
-Licenses
-
-The main licenses for MeTA1 can be found in the file LICENSE and in the
-directory license/. Additionally, MeTA1 contains code from other projects
-whose licenses can be either found in the respective source files or in
-statethreads/README for the statethreads library and db-4.3.28.NC/LICENSE
-for Berkeley DB. Some source code is licensed under a BSD license which
-can be found at the begin of those files.
-
-Bibliography
-
-
-Assma
-    Claus Assmann.
-    Sendmail X.
-    http://www.sendmail.org/%7Eca/email/sm-9-rfh.html.
-
-Assmb
-    Claus Assmann.
-    Sendmail X: Requirements, Architecture, Functional Specification,
-    Implementation, and Performance.
-    http://www.sendmail.org/%7Eca/email/sm-X/.
-
-Ber97
-    Dan Bernstein.
-    VERP: Variable Envelope Return Paths, 1997.
-    http://cr.yp.to/proto/verp.txt.
-
-Cyr Project Cyrus.
-    http://asg.web.cmu.edu/cyrus/, http://asg.web.cmu.edu/sasl/.
-
-Fre00
-    N. Freed.
-    SMTP service extension for command pipelining.
-    RFC 2920, Internet Engineering Task Force, 2000.
-
-Gnu GnuPG.
-    GNU Privacy Guard.
-    http://www.gnupg.org/.
-
-Hal07
-    Eric A. Hall.
-    Smtp service extension for per-recipient data responses (prdr).
-    Draft, Internet Engineering Task Force, 2007.
-
-Hara
-    Evan Harris.
-    The next step in the spam control war: Greylisting.
-    http://greylisting.org/articles/whitepaper.shtml.
-
-Harb
-    Evan Harris.
-    Whitelisting.
-    http://greylisting.org/whitelisting.shtml.
-
-Harc
-    Daniel Hartmeier.
-    benzedrine.cx - milter-spamd.
-    http://www.benzedrine.cx/milter-spamd.html.
-
-Hof99
-    P. Hoffman.
-    SMTP service extension for secure SMTP over TLS.
-    RFC 2487, Internet Engineering Task Force, 1999.
-
-Kle01
-    Simple mail transfer protocol.
-    RFC 2821, Internet Engineering Task Force, 2001.
-
-MeT PGP keys.
-    http://www.MeTA1.org/security/PGPKEYS.
-
-Moc87
-    P.V. Mockapetris.
-    Domain names - implementation and specification.
-    RFC 1035, Internet Engineering Task Force, 1987.
-
-mut mutt.
-    http://www.mutt.org/.
-
-MV03
-    K. Moore and G. Vaudreuil.
-    An Extensible Message Format for Delivery Status Notifications.
-    RFC 3464, Internet Engineering Task Force, 2003.
-
-Mye96
-    John Myers.
-    Local mail transfer protocol.
-    RFC 2033, Internet Engineering Task Force, 1996.
-
-Mye99
-    J. Myers.
-    SMTP service extension for authentication.
-    RFC 2554, Internet Engineering Task Force, 1999.
-
-New04
-    Chris Newman.
-    ESMTP and LMTP Transmission Types Registration.
-    RFC 3848, Internet Engineering Task Force, 2004.
-
-Ope OpenSSL.
-    http://www.openssl.org/.
-
-PGP PGP.
-    http://www.pgp.com/.
-
-Posa
-    Jef Poskanzer.
-    graymilter - simple graylist mail filter module.
-    http://www.acme.com/software/graymilter/.
-
-Posb
-    Jef Poskanzer.
-    mini_sendmail - accept email on behalf of real sendmail.
-    http://www.acme.com/software/mini_sendmail/.
-
-SGI01
-    SGI.
-    State threads for internet applications, 2001.
-    http://state-threads.sourceforge.net/.
-
-Slea
-    Berkeley DB 4.4.XX Change Log.
-    http://www.sleepycat.com/update/4.4.XX/if.4.4.XX.html.
-
-Sleb
-    Berkeley DB Tutorial and Reference Guide, version 4.3.28.
-    http://www.sleepycat.com/docs/.
-
-Tok Michael Tokarev.
-    tinycdb: A package for maintenance of constant databases.
-    ftp://ftp.corpit.ru/pub/tinycdb/.
-
-Vau03
-    G. Vaudreuil.
-    Enhanced mail system status codes.
-    RFC 3463, Internet Engineering Task Force, 2003.
-
-vdBG
-    S.R. van den Berg and Philip Guenther.
-    procmail.
-    http://www.procmail.org/.
-
-
-Index
-
-8bitmime
-    Configuration for SMTP Server
-abort
-    Configuration for SMTP Server
-accept_but_reconnect
-    Configuration for SMTP Server
-access
-    Configuration for SMTP Server
-access_map
-    Configuration Options for SMAR
-address
-    Configuration for MCP | Declaring Maps for SMAR | Configuration for
-    SMTP Server
-address_delimiter
-    Configuration Options for SMAR
-aliases
-    Configuration Options for SMAR
-all_domains
-    Configuration Options for SMAR
-allow_by
-    Configuration for SMTP Server
-allow_data_before_greeting
-    Configuration for SMTP Server
-allow_relaying_if_verified
-    Configuration for SMTP Server
-AQ_max_entries
-    Configuration for QMGR
-arguments
-    Configuration for MCP
-auth
-    Configuration for SMTP Server
-background
-    Advanced Configuration for SMTP
-base_directory
-    Configuration for QMGR
-CAcert_directory
-    Configuration for SMTP Server | Configuration for SMTP Client
-CAcert_file
-    Configuration for SMTP Server | Configuration for SMTP Client
-cache_size
-    Configuration for SMTP Server | Advanced Configuration for QMGR
-cache_timeout
-    Configuration for SMTP Server
-CDB_base_directory
-    Common Global Configuration
-CDB_gid
-    Configuration for SMTP Server
-cert_file
-    Configuration for SMTP Server | Configuration for SMTP Client
-check_access_map_for_relaying
-    Configuration for SMTP Server
-client_ip
-    Configuration for SMTP Server
-conf
-    Configuration for QMGR
-connect_only_to
-    Advanced Configuration for SMTP
-connection_control_cache_size
-    Advanced Configuration for QMGR
-connection_control_hash_table_size
-    Advanced Configuration for QMGR
-control_socket
-    Configuration for QMGR
-daemon_address
-    Advanced Configuration for SMTP
-debug_level
-    Advanced Configuration for QMGR | Advanced Configuration for SMTP
-delay_between_2_checkpoints
-    Advanced Configuration for QMGR
-delay_checks
-    Configuration for SMTP Server
-delay_greylisting_error_until_DATA
-    Configuration for SMTP Server
-delivery_timeout
-    Advanced Configuration for QMGR
-DNS Configuration Options for SMAR | Advanced Configuration for SMAR
-dnsbl
-    Configuration Options for SMAR
-domain
-    Configuration Options for SMAR
-double_bounce_address
-    Configuration for QMGR
-DSA_cert_file
-    Advanced Configuration for SMTP | Advanced Configuration for SMTP
-DSA_key_file
-    Advanced Configuration for SMTP | Advanced Configuration for SMTP
-expire_limit
-    Configuration Options for SMAR
-facility
-    Common Configuration Options
-file
-    Declaring Maps for SMAR | Configuration Options for SMAR |
-    Configuration Options for SMAR | Configuration Options for SMAR
-flags
-    Configuration for QMGR | Configuration for QMGR | Configuration
-    Options for SMAR | Configuration Options for SMAR | Configuration
-    Options for SMAR | Configuration Options for SMAR | Configuration for
-    SMTP Server | Configuration for SMTP Server | Configuration for SMTP
-    Server | Advanced Configuration for QMGR | Advanced Configuration for
-    QMGR | Advanced Configuration for SMAR | Advanced Configuration for
-    SMTP | Advanced Configuration for SMTP
-generic_lookup
-    Configuration for SMTP Server
-grey_expire
-    Configuration Options for SMAR
-grey_wait
-    Configuration Options for SMAR
-greylisting
-    Configuration Options for SMAR | Configuration for SMTP Server
-group
-    Configuration for MCP | Configuration for MCP
-hash_table_entries
-    Configuration for QMGR
-header_only
-    Configuration for QMGR
-hostname
-    Common Global Configuration
-id  Configuration for SMTP Server
-ident
-    Common Configuration Options
-implicitly_match_detail
-    Configuration Options for SMAR | Configuration Options for SMAR |
-    Configuration for SMTP Server
-initial_connections
-    Configuration for QMGR
-io_timeout
-    Configuration for SMTP Server | Configuration for SMTP Client
-KBytes_written_for_checkpointing
-    Advanced Configuration for QMGR
-key_file
-    Configuration for SMTP Server | Configuration for SMTP Client
-listen_queue
-    Advanced Configuration for SMTP
-listen_socket
-    Configuration for MCP
-lmtp_does_not_imply_relaying
-    Configuration for SMTP Server
-lmtp_max_rcpts_per_transaction
-    Configuration for QMGR
-LMTP_socket
-    Configuration for SMTP Client
-local_domains
-    Configuration Options for SMAR
-local_user_map
-    Configuration Options for SMAR
-localpart
-    Configuration Options for SMAR
-log Common Configuration Options
-log_directory
-    Configuration for QMGR
-log_level
-    Configuration for QMGR | Configuration Options for SMAR |
-    Configuration for SMTP Client
-lookup_rcpt_conf
-    Configuration for QMGR
-lookup_session_conf
-    Configuration for QMGR | Configuration for SMTP Server
-mailertable
-    Configuration Options for SMAR
-main_DB_name
-    Configuration Options for SMAR
-mapname
-    Declaring Maps for SMAR
-maps
-    Declaring Maps for SMAR
-match_type
-    Configuration for SMTP Server
-max_bad_commands_per_session
-    Configuration for SMTP Server
-max_bad_commands_per_transaction
-    Configuration for SMTP Server
-max_cache_entries
-    Configuration for QMGR
-max_commit_delay
-    Configuration for QMGR
-max_connection_rate
-    Configuration for QMGR
-max_connections
-    Configuration for QMGR | Configuration for QMGR
-max_errors_per_DSN
-    Configuration for QMGR
-max_fds
-    Advanced Configuration for QMGR | Advanced Configuration for SMAR
-max_hops
-    Configuration for SMTP Server
-max_invalid_addresses_per_session
-    Configuration for SMTP Server
-max_invalid_addresses_per_transaction
-    Configuration for SMTP Server
-max_message_size
-    Configuration for SMTP Server
-max_nop_commands_between_transactions
-    Configuration for SMTP Server
-max_nop_commands_in_transaction
-    Configuration for SMTP Server
-max_open_TAs
-    Configuration for QMGR
-max_processes
-    Advanced Configuration for MCP
-max_recipients_per_session
-    Configuration for SMTP Server
-max_recipients_per_transaction
-    Configuration for SMTP Server
-max_threads
-    Configuration for SMTP Server | Advanced Configuration for QMGR |
-    Advanced Configuration for SMAR
-max_transactions
-    Configuration for SMTP Server
-max_wait_threads
-    Advanced Configuration for SMTP | Advanced Configuration for SMTP
-merge_delay_max
-    Configuration for QMGR
-MIME_Format
-    Configuration for QMGR
-min_disk_space
-    Configuration for QMGR
-min_processes
-    Advanced Configuration for MCP
-min_threads
-    Advanced Configuration for QMGR | Advanced Configuration for SMAR
-min_wait_threads
-    Advanced Configuration for SMTP | Advanced Configuration for SMTP
-module_timeout
-    Advanced Configuration for SMTP | Advanced Configuration for SMTP
-MTA Installing MeTA1
-MTA_DNS_TIMEOUT
-    Environment Variables used by
-MTA_NAMESERVER
-    More Environment Variables used
-MTA_NO_DNS_TEST
-    Environment Variables used by
-MTA_NO_LOG_TEST
-    Environment Variables used by
-MTA_NO_SLOW_TEST
-    Environment Variables used by
-MTA_PMILTER_REGEX_TEST
-    More Environment Variables used
-MTA_SNKPORT
-    More Environment Variables used
-MTA_SRVPORT
-    More Environment Variables used
-MTA_STOPONERROR
-    Environment Variables used by
-MTA_TEST_DNS_TIMING
-    Environment Variables used by
-MTA_TIMING
-    Environment Variables used by
-MTAC
-    Installing MeTA1
-MTACONFDIR
-    Installing MeTA1
-MTALG
-    Installing MeTA1
-MTALOGDIR
-    Installing MeTA1
-MTAM
-    Installing MeTA1
-MTAQ
-    Installing MeTA1
-MTAQDIR
-    Installing MeTA1
-MTAS
-    Installing MeTA1
-name
-    Configuration Options for SMAR | Configuration Options for SMAR |
-    Configuration Options for SMAR | Configuration Options for SMAR
-nameservers
-    Configuration Options for SMAR
-netmask
-    Configuration Options for SMAR
-OCC_max_entries
-    Configuration for QMGR
-ok_disk_space
-    Configuration for QMGR
-options
-    Common Configuration Options
-page_size
-    Advanced Configuration for QMGR
-pass_fd_socket
-    Configuration for MCP
-pass_id
-    Configuration for MCP
-path
-    Configuration for MCP | Configuration for MCP | Declaring Maps for
-    SMAR | Configuration for SMTP Server
-policy_milter
-    Configuration for SMTP Server
-port
-    Configuration for MCP | Declaring Maps for SMAR | Configuration for
-    SMTP Server
-prdr
-    Configuration for SMTP Server
-preserve_domain
-    Configuration Options for SMAR
-processes
-    Configuration for SMTP Server | Advanced Configuration for SMTP
-protected_recipients
-    Configuration for SMTP Server
-queue_delay_timeout
-    Configuration for QMGR
-queue_return_timeout
-    Configuration for QMGR
-rcpt_conf_lookup_flags
-    Configuration for QMGR
-read_QUIT_reply
-    Advanced Configuration for SMTP
-remote_port
-    Advanced Configuration for SMTP
-remove_unused_logfiles
-    Advanced Configuration for QMGR
-replace_macros
-    Configuration Options for SMAR
-require_EHLO_before_MAIL
-    Configuration for SMTP Server
-requirements_violation
-    Configuration for SMTP Server
-restart_dependencies
-    Configuration for MCP
-retries
-    Configuration Options for SMAR
-retry_max_delay
-    Configuration for QMGR
-retry_min_delay
-    Configuration for QMGR
-reuse_connection
-    Advanced Configuration for QMGR
-scheduler_timeout
-    Advanced Configuration for QMGR
-secondary_DB_name
-    Configuration Options for SMAR
-sender
-    Configuration for SMTP Server
-separate_final_dot_and_QUIT
-    Advanced Configuration for SMTP
-serialize_accept
-    Advanced Configuration for SMTP
-session_features
-    Configuration for SMTP Server
-size
-    Configuration for QMGR
-SMAR_socket
-    Common Global Configuration
-SMAR_timeout
-    Advanced Configuration for QMGR
-smtp_max_rcpts_per_transaction
-    Configuration for QMGR
-SMTPC_socket
-    Common Global Configuration
-SMTPS_socket
-    Common Global Configuration
-socket
-    Configuration for SMTP Server
-soft_bounce
-    Configuration for SMTP Server
-start_action
-    Configuration for MCP
-strict_EHLO_checks
-    Configuration for SMTP Server
-tag Configuration Options for SMAR
-talk_to_myself
-    Advanced Configuration for SMTP
-tests
-    Advanced Configuration for QMGR
-timeout
-    Configuration Options for SMAR | Configuration for SMTP Server
-tls Configuration for SMTP Server | Configuration for SMTP Client |
-    Advanced Configuration for SMTP | Advanced Configuration for SMTP
-trusted_mechanisms
-    Configuration for SMTP Server
-type
-    Declaring Maps for SMAR
-umask
-    Configuration for MCP
-use_connect
-    Advanced Configuration for SMAR
-use_id_in_logfile_name
-    Advanced Configuration for MCP
-use_resolvconf
-    Configuration Options for SMAR
-use_TCP
-    Advanced Configuration for SMAR
-user
-    Configuration for MCP | Configuration for MCP
-wait_for_client
-    Configuration for QMGR
-wait_for_server
-    Configuration for QMGR | Configuration for SMTP Client
-wait_for_smar
-    Advanced Configuration for SMTP
-white_expire
-    Configuration Options for SMAR
-white_timeout
-    Configuration Options for SMAR
-working_directory
-    Advanced Configuration for MCP
-xverp
-    Configuration for SMTP Server
-
-
---------------------------------------------------------------------------
-
-Footnotes
-
-... databases^1.1
-    the term database is used loosely here
-... to^1.2
-    Sorry for the obfuscation, replace (at) with @ and remove the spaces,
-    but not the plus sign.
-... commands^2.1
-    using script(1) or redirecting it to some file.
-... configurations^2.2
-    ``Private database environments on 64-bit machines no longer drop core
-    because of 64-bit address truncation. [11983]'' [Slea]
-...passwd(5)^2.3
-    On some systems the man page is in another section, e.g., 4.
-... comma^3.1
-    A trailing comma is allowed to make writing of lists simpler.
-... addresses^3.2
-    4 is the default value for the compile time option MTA_DNS_MAX_TSKS
-... answer^3.3
-    This needs to be enhanced in a later version, a patch is welcome!
-... blacklist^3.4
-    This option is modelled after dnsblaccess written by Neil Rickert for
-    sendmail 8.
-... times^3.5
-    Compile time option MTA_MAX_DNSBL: currently set to 8.
-... lmtp:^4.1
-    currently internally encoded as 127.0.0.255
-... patch^4.2
-    if the patch fails to apply, make sure you use a working patch(1)
-    program, e.g., most SunOS 5.x versions ship with a broken program
-... errors^4.3
-    See egrep(1) for the correct syntax for word delimiters on your OS.
-... databases^7.1
-    the term database is used loosely here, only DEFEDB is a real
-    database, the others are just ways to store some information and
-    access them in some way.
-... storage^7.2
-    If non-persistent storage is used for these databases mail can of
-    course be lost.
-... addresses^8.1
-    Compile time option SS_MAX_BIND_ADDRS
-... sink^8.2
-    For example, statethreads/examples/smtps2
-
-
---------------------------------------------------------------------------
-
-Claus Assmann 2008-02-04
diff --git a/include/sm/map.h b/include/sm/map.h
index c764fbc..23590d3 100644
--- a/include/sm/map.h
+++ b/include/sm/map.h
@@ -6,7 +6,7 @@
  * forth in the LICENSE file which can be found at the top level of
  * the sendmail distribution.
  *
- *	$Id: map.h,v 1.64 2008/02/04 15:44:11 ca Exp $
+ *	$Id: map.h,v 1.66 2009/08/15 15:34:31 ca Exp $
  */
 
 #ifndef SM_MAP_H
@@ -43,17 +43,21 @@ typedef void	*(*sm_map_data_alloc_F)(size_t size, void *app_ctx);
 typedef void	 (*sm_map_data_free_F)(void *ptr, void *app_ctx);
 #endif /* 0 */
 
+/* an entry in a map: map(key) = value */
 struct sm_map_entry_S
 {
 	sm_map_key_T	 sm_map_entry_key;
 	sm_map_data_T	 sm_map_entry_data;
 };
 
+#if 0
+/* a cursor in a map (currently unused?) */
 struct sm_map_cursor_S
 {
 	uint32_t	 sm_map_cursor_state;
 	void		*sm_map_cursor_val;
 };
+#endif
 
 /* XXX should one of these be 0 (to act as default)? */
 #define SMAP_MODE_RDONLY	0x01
@@ -92,6 +96,9 @@ struct sm_map_cursor_S
 
 #define SMPO_INIT_CB	(0x0200|SMPO_PTR) /* init cb function (hash map) */
 
+#define SMPO_SET_FLAGS	(0x0300|SMPO_INT)
+#define SMPO_CLR_FLAGS	(0x0400|SMPO_INT)
+
 #define SMPO_TYPE_MASK	0x0000F
 #define SMPO_GET_TYPE(opt)	((opt) & SMPO_TYPE_MASK)
 
diff --git a/include/sm/mapc.h b/include/sm/mapc.h
index bebb586..ff1eb18 100644
--- a/include/sm/mapc.h
+++ b/include/sm/mapc.h
@@ -6,7 +6,7 @@
  * forth in the LICENSE file which can be found at the top level of
  * the sendmail distribution.
  *
- *	$Id: mapc.h,v 1.21 2008/02/04 15:44:11 ca Exp $
+ *	$Id: mapc.h,v 1.22 2009/06/26 03:48:39 ca Exp $
  */
 
 #ifndef SM_MAPC_H
@@ -43,7 +43,7 @@ typedef sm_ret_T (*sm_map_getopt_F)(sm_map_P _map, int _what, void *_valp);
 	(add), (rm), (alloc), (free), (lookup), (locate), (first), (next) }
 #endif /* 0 */
 
-
+/* a map class: description of a map implementation */
 struct sm_mapc_S
 {
 #if SM_MAP_CHECK
diff --git a/include/sm/mapcnf.h b/include/sm/mapcnf.h
index b0a774c..6b3a0ab 100644
--- a/include/sm/mapcnf.h
+++ b/include/sm/mapcnf.h
@@ -6,7 +6,7 @@
  * forth in the LICENSE file which can be found at the top level of
  * the sendmail distribution.
  *
- *	$Id: mapcnf.h,v 1.14 2006/10/05 04:27:35 ca Exp $
+ *	$Id: mapcnf.h,v 1.15 2009/06/26 03:49:06 ca Exp $
  */
 
 #ifndef SM_MAPCNF_H
@@ -17,6 +17,15 @@
 #include "sm/map.h"
 
 /*
+**  Map configuration: description of a map per libconf
+**  Note: this is separate from the maps (classes, system) themselves,
+**  i.e., these are just the configuration options of maps described
+**  by a user; not the internal map definitions that are used for
+**  map operations.  That is, the map system exists independently of
+**  the map configuration.
+**  The interface to the map system is currently sm_mapconfopen() which
+**  takes a list of map configurations and creates the corresponding maps.
+**
 **  Problem: different maps need different parameters for open:
 **  socketmap: use sockcnfdef?
 **  sequence map: array of names?
diff --git a/include/sm/mapconf.h b/include/sm/mapconf.h
index 7098a78..28787b5 100644
--- a/include/sm/mapconf.h
+++ b/include/sm/mapconf.h
@@ -6,7 +6,7 @@
  * forth in the LICENSE file which can be found at the top level of
  * the sendmail distribution.
  *
- *	$Id: mapconf.h,v 1.3 2008/02/04 15:44:11 ca Exp $
+ *	$Id: mapconf.h,v 1.4 2009/07/03 04:47:37 ca Exp $
  */
 
 #ifndef SM_MAPCONF_H
@@ -16,6 +16,8 @@
 #include "sm/map-str.h"
 #include "sm/mapcnf.h"
 
-sm_ret_T sm_mapconfopen(map_decl_P mapdef, sm_maps_P maps, const char *_confdir);
+sm_ret_T sm_mapconfopen(map_decl_P _mapdef, sm_maps_P _maps, const char *_confdir);
+sm_ret_T sm_mapcnfopen(map_decl_P _mapdef, sm_maps_P _maps, const char *_confdir, mapspec_P _md_maps);
+mapspec_P sm_mapconffind(map_decl_P _mapdef, const char *_map_name);
 
 #endif /* SM_MAPCONF_H */
diff --git a/include/sm/maps.h b/include/sm/maps.h
index a067855..9e33d5b 100644
--- a/include/sm/maps.h
+++ b/include/sm/maps.h
@@ -6,7 +6,7 @@
  * forth in the LICENSE file which can be found at the top level of
  * the sendmail distribution.
  *
- *	$Id: maps.h,v 1.8 2008/02/04 15:44:11 ca Exp $
+ *	$Id: maps.h,v 1.9 2009/06/26 03:48:28 ca Exp $
  */
 
 #ifndef SM_MAPS_H
@@ -18,6 +18,7 @@
 #include "sm/cstr.h"
 #include "sm/map-str.h"
 
+/* "list" of all maps: classes and actual map instances */
 struct sm_maps_S
 {
 #if SM_MAPS_CHECK
diff --git a/include/sm/pmfapi.h b/include/sm/pmfapi.h
index 4e7a86b..cfa4ff3 100644
--- a/include/sm/pmfapi.h
+++ b/include/sm/pmfapi.h
@@ -6,7 +6,7 @@
  * forth in the LICENSE file which can be found at the top level of
  * the sendmail distribution.
  *
- *	$Id: pmfapi.h,v 1.38 2008/10/30 04:52:59 ca Exp $
+ *	$Id: pmfapi.h,v 1.39 2009/06/08 02:44:08 ca Exp $
  */
 
 /*
@@ -313,7 +313,11 @@ struct pmilter_S
 
 	pmfi_msg_rplc_stat_F	 pmfi_msg_rplc_stat;
 
-	char		 pmfi_unused[64];
+	uint32_t	 pmfi_thrmax_s;
+	uint32_t	 pmfi_thrmax_h;
+	uint32_t	 pmfi_fdmax;
+	
+	char		 pmfi_unused[52];
 };
 
 LIBMILTER_API sm_ret_T sm_pmfi_init(pmg_ctx_P *_pmg_ctx);
diff --git a/include/sm/sm-conf-byte.h b/include/sm/sm-conf-byte.h
index a0ce0c1..80ab58d 100644
--- a/include/sm/sm-conf-byte.h
+++ b/include/sm/sm-conf-byte.h
@@ -6,7 +6,7 @@
  * forth in the LICENSE file which can be found at the top level of
  * the sendmail distribution.
  *
- *	$Id: sm-conf-byte.h,v 1.5 2005/06/20 19:03:16 ca Exp $
+ *	$Id: sm-conf-byte.h,v 1.6 2009/06/21 23:43:53 ca Exp $
  */
 
 #ifndef SM_CONF_BYTE_H
@@ -28,13 +28,13 @@ sm_conf_definition_T const sm_conf_byte_suffixes[]
 =
 {
 { SM_CONF_DEF_MAGIC, "B",  sm_conf_type_u32_suffix, 1,
-	1024, NULL, 0, NULL, NULL, NULL, "" },
+	1024, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 { SM_CONF_DEF_MAGIC, "KB", sm_conf_type_u32_suffix, 1024,
-	1024, NULL, 0, NULL, NULL, NULL, "" },
+	1024, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 { SM_CONF_DEF_MAGIC, "MB", sm_conf_type_u32_suffix, 1024 * 1024,
-	1024, NULL, 0, NULL, NULL, NULL, "" },
+	1024, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 { SM_CONF_DEF_MAGIC, "GB", sm_conf_type_u32_suffix, 1024 * 1024 * 1024,
-	0, NULL, 0, NULL, NULL, NULL, "" },
+	0, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 
 /*
 **  Hack to be able to read initialization data that uses
@@ -42,14 +42,14 @@ sm_conf_definition_T const sm_conf_byte_suffixes[]
 */
 
 { SM_CONF_DEF_MAGIC, "*1024", sm_conf_type_u32_suffix, 1024,
-	0, NULL, 0, NULL, NULL, NULL, "" },
+	0, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 { SM_CONF_DEF_MAGIC, "*1024*1024", sm_conf_type_u32_suffix, 1024 * 1024,
-	0, NULL, 0, NULL, NULL, NULL, "" },
+	0, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 { SM_CONF_DEF_MAGIC, "*1024*1024*1024", sm_conf_type_u32_suffix, 1024 * 1024 * 1024,
-	0, NULL, 0, NULL, NULL, NULL, "" },
+	0, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 
 /* Sentinel */
-{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL },
+{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 }
 #endif /* SM_CONF_BYTE_DEF */
 ;
@@ -60,11 +60,11 @@ sm_conf_definition_T const sm_conf_Kbyte_suffixes[]
 =
 {
 { SM_CONF_DEF_MAGIC, "KB", sm_conf_type_u32_suffix, 1,
-	1024, NULL, 0, NULL, NULL, NULL, "" },
+	1024, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 { SM_CONF_DEF_MAGIC, "MB", sm_conf_type_u32_suffix, 1024,
-	1024, NULL, 0, NULL, NULL, NULL, "" },
+	1024, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 { SM_CONF_DEF_MAGIC, "GB", sm_conf_type_u32_suffix, 1024 * 1024,
-	0, NULL, 0, NULL, NULL, NULL, "" },
+	0, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 
 /*
 **  Hack to be able to read initialization data that uses
@@ -72,12 +72,12 @@ sm_conf_definition_T const sm_conf_Kbyte_suffixes[]
 */
 
 { SM_CONF_DEF_MAGIC, "*1024", sm_conf_type_u32_suffix, 1024,
-	0, NULL, 0, NULL, NULL, NULL, "" },
+	0, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 { SM_CONF_DEF_MAGIC, "*1024*1024", sm_conf_type_u32_suffix, 1024 * 1024,
-	0, NULL, 0, NULL, NULL, NULL, "" },
+	0, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 
 /* Sentinel */
-	{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL },
+	{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 }
 #endif /* SM_CONF_KBYTE_DEF */
 ;
diff --git a/include/sm/sm-conf-time.h b/include/sm/sm-conf-time.h
index d5e2743..b2fded5 100644
--- a/include/sm/sm-conf-time.h
+++ b/include/sm/sm-conf-time.h
@@ -6,7 +6,7 @@
  * forth in the LICENSE file which can be found at the top level of
  * the sendmail distribution.
  *
- *	$Id: sm-conf-time.h,v 1.5 2005/06/20 19:03:16 ca Exp $
+ *	$Id: sm-conf-time.h,v 1.6 2009/06/21 23:44:03 ca Exp $
  */
 
 #ifndef SM_CONF_TIME_H
@@ -28,18 +28,18 @@ sm_conf_definition_T const sm_conf_time_suffixes[]
 =
 {
 	{ SM_CONF_DEF_MAGIC, "s", sm_conf_type_u32_suffix, 1,
-	60, NULL, 0, NULL, NULL, NULL, "" },
+	60, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 	{ SM_CONF_DEF_MAGIC, "m", sm_conf_type_u32_suffix, 60,
-	60, NULL, 0, NULL, NULL, NULL, "" },
+	60, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 	{ SM_CONF_DEF_MAGIC, "h", sm_conf_type_u32_suffix, 60 * 60,
-	24, NULL, 0, NULL, NULL, NULL, "" },
+	24, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 	{ SM_CONF_DEF_MAGIC, "d", sm_conf_type_u32_suffix, 60 * 60 * 24,
-	7, NULL, 0, NULL, NULL, NULL, "" },
+	7, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 	{ SM_CONF_DEF_MAGIC, "w", sm_conf_type_u32_suffix, 60 * 60 * 24 * 7,
-	0, NULL, 0, NULL, NULL, NULL, "" },
+	0, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 #if 0
 	{ SM_CONF_DEF_MAGIC, "y", sm_conf_type_u32_suffix, 60 * 60 * 24 * 365,
-	0, NULL, 0, NULL, NULL, NULL, "" },
+	0, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 #endif
 
 	/*
@@ -49,19 +49,19 @@ sm_conf_definition_T const sm_conf_time_suffixes[]
 
 	{ SM_CONF_DEF_MAGIC,
 	"*60",	sm_conf_type_u32_suffix, 60,
-	0, NULL, 0, NULL, NULL, NULL, "" },
+	0, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 	{ SM_CONF_DEF_MAGIC,
 	"*60*60",	sm_conf_type_u32_suffix, 60 * 60,
-	0, NULL, 0, NULL, NULL, NULL, "" },
+	0, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 	{ SM_CONF_DEF_MAGIC,
 	"*60*60*24",	sm_conf_type_u32_suffix, 60 * 60 * 24,
-	0, NULL, 0, NULL, NULL, NULL, "" },
+	0, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 	{ SM_CONF_DEF_MAGIC,
 	"*60*60*24*7",	sm_conf_type_u32_suffix, 60 * 60 * 24 * 7,
-	0, NULL, 0, NULL, NULL, NULL, "" },
+	0, NULL, 0, NULL, NULL, NULL, "" SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 
 	/* Sentinel */
-	{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL },
+	{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 }
 #endif /* SM_CONF_TIME_DEF */
 ;
diff --git a/include/sm/sscnf.h b/include/sm/sscnf.h
index ecaa028..1118191 100644
--- a/include/sm/sscnf.h
+++ b/include/sm/sscnf.h
@@ -6,7 +6,7 @@
  * forth in the LICENSE file which can be found at the top level of
  * the sendmail distribution.
  *
- * $Id: sscnf.h,v 1.47 2008/02/04 15:44:12 ca Exp $
+ * $Id: sscnf.h,v 1.48 2009/06/24 03:52:22 ca Exp $
  */
 
 #ifndef SSCNF_H
@@ -66,6 +66,7 @@ struct ss_cnf_S
 	const char	*ss_cnf_fd_socket_abs;
 	char		*ss_cnf_fd_socket_alloc;
 	char		*ss_cnf_hostname;
+	char		*ss_cnf_greeting;
 
 	char		*ss_cnf_relay_to;
 	char		*ss_cnf_relay_from;
diff --git a/include/sm/sscnfdef.h b/include/sm/sscnfdef.h
index db6e5ca..718ff19 100644
--- a/include/sm/sscnfdef.h
+++ b/include/sm/sscnfdef.h
@@ -6,7 +6,7 @@
  * forth in the LICENSE file which can be found at the top level of
  * the sendmail distribution.
  *
- * $Id: sscnfdef.h,v 1.111 2008/07/05 01:21:54 ca Exp $
+ * $Id: sscnfdef.h,v 1.112 2009/06/24 03:52:22 ca Exp $
  */
 
 #ifndef SM_SSCNFDEF_H
@@ -615,7 +615,7 @@ ss_tls_defs[]
 	NULL,	0,	NULL,	NULL,	NULL,
 	"size of TLS session cache"
 	SM_LC_NO_ISSET
-	},
+	SM_LC_SET_MAGIC(0) },
 
 { SM_CONF_DEF_MAGIC, "cache_timeout",		sm_conf_type_u32,
 	offsetof(ss_cnf_T, ss_cnf_tls.tlscnf_cache_tmout),	sizeof(uint),
@@ -1058,6 +1058,12 @@ ss_defs[]
 	MCP_SRV_DEFS(ss_cnf_T, ss_cnf),
 	MCP_DEFS(ss_cnf_T, ss_cnf)
 
+{ SM_CONF_DEF_MAGIC, "greeting",	sm_conf_type_string,
+	offsetof(ss_cnf_T, ss_cnf_greeting),	0,
+	NULL, 	0,	NULL, NULL, NULL,
+	"Initial 220 greeting text"
+	SM_LC_NO_ISSET	SM_LC_SET_MAGIC(SM_SS_CNF_MAGIC) },
+
 #if SS_TEST
 { SM_CONF_DEF_MAGIC, "tests",		sm_conf_type_u32,
 	offsetof(ss_cnf_T, ss_cnf_tests),	sizeof(uint),
diff --git a/include/sm/tls.h b/include/sm/tls.h
index dcccba7..7ee71e1 100644
--- a/include/sm/tls.h
+++ b/include/sm/tls.h
@@ -6,7 +6,7 @@
  * forth in the LICENSE file which can be found at the top level of
  * the sendmail distribution.
  *
- *	$Id: tls.h,v 1.23 2006/10/05 04:27:36 ca Exp $
+ *	$Id: tls.h,v 1.24 2009/08/09 00:55:53 ca Exp $
  */
 
 #ifndef SM_TLS_H
@@ -26,6 +26,8 @@
 # include <openssl/rand.h>
 #endif
 
+#define SM_X509_MAXNAME	256
+
 typedef struct tlsl_ctx_S tlsl_ctx_T, *tlsl_ctx_P;
 
 struct tlsl_ctx_S
@@ -146,6 +148,7 @@ void	 tls_set_verify(SSL_CTX *_ctx, SSL *_ssl, bool _vrfy);
 #define TLS_F_CERT_REQ	0x02	/* cert has been requested */
 
 sm_ret_T tls_get_info(tlsl_ctx_P _tlsl_ctx, SSL *_ssl, uint _flags, char *_host, tlsi_ctx_P _tlsi_ctx);
+sm_ret_T sm_tls_get_cn(X509_NAME *_x509_name, int _nid, sm_str_P _str);
 int	 endtls(tlsl_ctx_P _tlsl_ctx, SSL *_ssl, char *_side);
 
 sm_ret_T sm_set_tls_log(tlsl_ctx_P _tlsl_ctx, sm_file_T *_fp, int _fd, int _loglevel);
@@ -181,6 +184,18 @@ sm_ret_T tlsi_clr(tlsi_ctx_P _tlsi_ctx);
 		enomem);	\
 	} while (0)
 
+#define TLS_SET_XSTR(s, str) do {	\
+		if ((s) != NULL) {					\
+			r = strlen(s);					\
+			if ((str) == NULL)				\
+				(str) = sm_str_new(NULL, r + 2, r * 3);	\
+			else						\
+				sm_str_clr(str);			\
+			if ((str) != NULL)				\
+				(void) xtextify((s), "<>\")", str);	\
+		}							\
+	} while (0)
+
 #endif /* MTA_USE_TLS */
 
 #endif /* SM_TLS_H */
diff --git a/include/stamp-h.in b/include/stamp-h.in
index 9788f70..e69de29 100644
--- a/include/stamp-h.in
+++ b/include/stamp-h.in
@@ -1 +0,0 @@
-timestamp
diff --git a/libcdb/cdbbf.c b/libcdb/cdbbf.c
index 1be0683..f35742f 100644
--- a/libcdb/cdbbf.c
+++ b/libcdb/cdbbf.c
@@ -1,6 +1,6 @@
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: cdbbf.c,v 1.3 2006/07/18 02:43:18 ca Exp $")
+SM_RCSID("@(#)$Id: cdbbf.c,v 1.4 2009/06/21 23:41:22 ca Exp $")
 #include "sm/error.h"
 #include "sm/fcntl.h"
 #include "sm/memops.h"
@@ -340,14 +340,14 @@ sm_cdbf_abort(sm_file_T *fp)
 **
 **	Parameters:
 **		fp -- file pointer to get info commit
-**		sync -- invoke fsync(2)?
+**		syncit -- invoke fsync(2)?
 **
 **	Returns:
 **		usual sm_error code
 */
 
 static sm_ret_T
-sm_cdbf_commit(sm_file_T *fp, bool sync)
+sm_cdbf_commit(sm_file_T *fp, bool syncit)
 {
 	sm_cdbf_P sm_cdbf;
 	sm_ret_T ret;
@@ -361,7 +361,7 @@ sm_cdbf_commit(sm_file_T *fp, bool sync)
 		if (sm_is_err(ret))
 			return ret;
 	}
-	if (sync)
+	if (syncit)
 	{
 		if (!is_valid_fd(f_fd(*fp)))
 			return sm_error_perm(SM_EM_CDB, EINVAL);
diff --git a/libconf/sm-conf-prtcnf.c b/libconf/sm-conf-prtcnf.c
index 5251f42..7c53603 100644
--- a/libconf/sm-conf-prtcnf.c
+++ b/libconf/sm-conf-prtcnf.c
@@ -8,7 +8,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: sm-conf-prtcnf.c,v 1.25 2006/04/21 17:52:02 ca Exp $")
+SM_RCSID("@(#)$Id: sm-conf-prtcnf.c,v 1.26 2009/06/21 23:44:30 ca Exp $")
 
 #include "sm/string.h"
 #include "sm/sm-conf.h"
@@ -262,28 +262,27 @@ sm_conf_prt_cnf(const sm_conf_definition_T *def, const void *cnf, ptrdiff_t offs
 	{
 		if (prefix != NULL)
 		{
-			sm_ret_T ret;
+			sm_ret_T rc;
 			size_t oldlen;
 
 			PRT_COMMENT(fp);
 			oldlen = sm_str_getlen(prefix);
-			ret = sm_str_scat(prefix, def->scd_name);
-			if (sm_is_err(ret))
-				return ret;
+			rc = sm_str_scat(prefix, def->scd_name);
+			if (sm_is_err(rc))
+				return rc;
 
 #if 0
 			if (def->scn_section.scns_keyword != NULL)
 			{
-				ret = sm_str_scat0(prefix,
-						def->scd_name);
-				if (sm_is_err(ret))
-					return ret;
+				rc = sm_str_scat0(prefix, def->scd_name);
+				if (sm_is_err(rc))
+					return rc;
 			}
 #endif /* 0 */
 
-			ret = sm_str_put(prefix, SM_C_DELIM);
-			if (sm_is_err(ret))
-				return ret;
+			rc = sm_str_put(prefix, SM_C_DELIM);
+			if (sm_is_err(rc))
+				return rc;
 			sm_conf_prt_cnfs(def->scd_contents, cnf,
 				off, fp, indent + 2, prefix, text);
 			SM_STR_SETLEN(prefix, oldlen);
diff --git a/libdns/dnstsk.c b/libdns/dnstsk.c
index a950129..251068a 100644
--- a/libdns/dnstsk.c
+++ b/libdns/dnstsk.c
@@ -8,7 +8,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: dnstsk.c,v 1.89 2007/11/27 04:14:26 ca Exp $")
+SM_RCSID("@(#)$Id: dnstsk.c,v 1.90 2009/06/21 23:42:30 ca Exp $")
 #include "sm/ctype.h"
 #include "sm/io.h"	/* sm_fd_nonblock() */
 #include "sm/dns.h"
@@ -616,14 +616,14 @@ dns_req_add(dns_mgr_ctx_P dns_mgr_ctx, sm_cstr_P query, dns_type_T type, uint ti
 		(void) dns_tsk_select(dns_mgr_ctx, now, true, NULL,
 				 THR_LOCK_UNLOCK|THR_LOCK_UNLOCK_S1);
 	if (sm_is_success(ret) && dns_mgr_ctx->dnsmgr_cleanup != NULL) {
-		timeval_T slpt, nowt, newt;
+		timeval_T slpt, nowt2, newt;
 
 		/* set timeout for cleanup task */
 		(void) evthr_timeval(dns_mgr_ctx->dnsmgr_cleanup->evthr_t_ctx,
-				&nowt);
+				&nowt2);
 		slpt.tv_usec = 0;
 		slpt.tv_sec = dns_mgr_ctx->dnsmgr_timeout;
-		timeradd(&nowt, &slpt, &newt);
+		timeradd(&nowt2, &slpt, &newt);
 		(void) evthr_new_sl(dns_mgr_ctx->dnsmgr_cleanup, newt, false);
 	}
 #endif /* MTA_USE_PTHREADS */
diff --git a/libmta/Makefile.am b/libmta/Makefile.am
index 6e23f8d..9f9bd75 100644
--- a/libmta/Makefile.am
+++ b/libmta/Makefile.am
@@ -1,5 +1,5 @@
 ## Makefile.am -- Process this file with automake to produce Makefile.in
-# $Id: Makefile.am,v 1.279 2008/11/04 04:33:38 ca Exp $
+# $Id: Makefile.am,v 1.281 2009/08/10 17:54:34 ca Exp $
 
 MAINTAINERCLEANFILES	= Makefile.in
 
@@ -341,6 +341,7 @@ LIBSMCTL_SRCS	= \
 ##	strtemplate.c
 
 LIBSMTLS_SRCS	= tlsbio.c \
+		smcert.c \
 		smtls.c \
 		smtlsi.c \
 		smtlsversion.c
@@ -484,13 +485,15 @@ TESTC = t-extracthdr \
 	t-greycnf-0 \
 	t-greyrm \
 	t-chkpidfile \
+	t-cert \
 	t-verpify
 # run only
 TESTSH = t-extracthdr-0.sh \
 	t-chkpidfile.sh \
-	t-verpify-0.sh
+	t-verpify-0.sh \
+	t-cert-0.sh
 # do not run at all...
-TESTDATA = 
+TESTDATA = badcert.pem
 
 # list programs to compile here
 check_PROGRAMS 		= $(TESTP) $(TESTC)
@@ -595,6 +598,9 @@ t_chkpidfile_LDADD	= $(LDMISC) $(LDADD) $(LDREPL)
 t_verpify_SOURCES	= t-verpify.c
 t_verpify_LDADD		= $(LDADD) $(LDCHK) $(LDREPL)
 
+t_cert_SOURCES	= t-cert.c
+t_cert_LDADD		= libsmtls.a $(LDADD) $(MTA_TLS_LIB) $(LDCHK) $(LDREPL)
+
 t_parsesockstr_SOURCES	= t-parsesockstr.c
 t_parsesockstr_LDADD	= $(LDMISC) $(LDADD) $(LDCHK) $(LDREPL)
 
diff --git a/libmta/badcert.pem b/libmta/badcert.pem
new file mode 100644
index 0000000..87ea72b
--- /dev/null
+++ b/libmta/badcert.pem
@@ -0,0 +1,54 @@
+-----BEGIN CERTIFICATE-----
+MIIGNDCCBZ2gAwIBAgIDExDuMA0GCSqGSIb3DQEBBQUAMIIBEjELMAkGA1UEBhMC
+RVMxEjAQBgNVBAgTCUJhcmNlbG9uYTESMBAGA1UEBxMJQmFyY2Vsb25hMSkwJwYD
+VQQKEyBJUFMgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgcy5sLjEuMCwGA1UEChQl
+Z2VuZXJhbEBpcHNjYS5jb20gQy5JLkYuICBCLUI2MjIxMDY5NTEuMCwGA1UECxMl
+aXBzQ0EgQ0xBU0VBMSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEuMCwGA1UEAxMl
+aXBzQ0EgQ0xBU0VBMSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEgMB4GCSqGSIb3
+DQEJARYRZ2VuZXJhbEBpcHNjYS5jb20wHhcNMDkwNjE0MjEwOTEwWhcNMTAwNjE0
+MjEwOTEwWjCBhDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExFjAU
+BgNVBAcTDVNhbiBGcmFuY2lzY28xETAPBgNVBAoTCFNlY3VyaXR5MRQwEgYDVQQL
+EwtTZWN1cmUgVW5pdDEfMB0GA1UEAxQWKgAuc2VjdXJlY29ubmVjdGlvbi5jYzCB
+nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5ObHoeL7Q2/edAUR9xiZ9ChGZXw4
+UUdE1wn/UJASS5ODz0dJycyF7pO7cDsGBcH6aWlt6NZsEt+stThrYNK4J7BqNDgB
+Oc3zJMG92xBhdVj2BPu2o3KbITRH0TwVJsxAudbYVIXX/JAmNGDMei4RK9NxCMvc
+EzTPd8tfe2vgjJ0CAwEAAaOCAyEwggMdMAkGA1UdEwQCMAAwEQYJYIZIAYb4QgEB
+BAQDAgZAMAsGA1UdDwQEAwID+DATBgNVHSUEDDAKBggrBgEFBQcDATAdBgNVHQ4E
+FgQU1nPwwuKS2Y2miVXV3FVHarslgX8wHwYDVR0jBBgwFoAUDgdg1DnJG1tdkHsj
+yNI0nUqaRjkwCQYDVR0RBAIwADAcBgNVHRIEFTATgRFnZW5lcmFsQGlwc2NhLmNv
+bTByBglghkgBhvhCAQ0EZRZjT3JnYW5pemF0aW9uIEluZm9ybWF0aW9uIE5PVCBW
+QUxJREFURUQuIENMQVNFQTEgU2VydmVyIENlcnRpZmljYXRlIGlzc3VlZCBieSBo
+dHRwczovL3d3dy5pcHNjYS5jb20vMC8GCWCGSAGG+EIBAgQiFiBodHRwczovL3d3
+dy5pcHNjYS5jb20vaXBzY2EyMDAyLzBDBglghkgBhvhCAQQENhY0aHR0cHM6Ly93
+d3cuaXBzY2EuY29tL2lwc2NhMjAwMi9pcHNjYTIwMDJDTEFTRUExLmNybDBGBglg
+hkgBhvhCAQMEORY3aHR0cHM6Ly93d3cuaXBzY2EuY29tL2lwc2NhMjAwMi9yZXZv
+Y2F0aW9uQ0xBU0VBMS5odG1sPzBDBglghkgBhvhCAQcENhY0aHR0cHM6Ly93d3cu
+aXBzY2EuY29tL2lwc2NhMjAwMi9yZW5ld2FsQ0xBU0VBMS5odG1sPzBBBglghkgB
+hvhCAQgENBYyaHR0cHM6Ly93d3cuaXBzY2EuY29tL2lwc2NhMjAwMi9wb2xpY3lD
+TEFTRUExLmh0bWwwgYMGA1UdHwR8MHowOaA3oDWGM2h0dHA6Ly93d3cuaXBzY2Eu
+Y29tL2lwc2NhMjAwMi9pcHNjYTIwMDJDTEFTRUExLmNybDA9oDugOYY3aHR0cDov
+L3d3d2JhY2suaXBzY2EuY29tL2lwc2NhMjAwMi9pcHNjYTIwMDJDTEFTRUExLmNy
+bDAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLmlwc2Nh
+LmNvbS8wDQYJKoZIhvcNAQEFBQADgYEAkFcav//+W4iYCxHL854nyrxao6IDI2al
+4zysL41FgmS5QEafPyjG5G9JwoxcCiv2vnC1ciK2GqBFxL7tqjFf7mXGI7u1fr4Q
+2S1NcGMlcTpNHmkmOdMsL9127aflL85IuTuuVSEVhgRshzxRcxrN42GVPu7vAtGI
+yH1Runs6hNA=
+-----END CERTIFICATE-----
+
+
+-----BEGIN RSA PRIVATE KEY-----
+MIICXQIBAAKBgQDk5seh4vtDb950BRH3GJn0KEZlfDhRR0TXCf9QkBJLk4PPR0nJ
+zIXuk7twOwYFwfppaW3o1mwS36y1OGtg0rgnsGo0OAE5zfMkwb3bEGF1WPYE+7aj
+cpshNEfRPBUmzEC51thUhdf8kCY0YMx6LhEr03EIy9wTNM93y197a+CMnQIDAQAB
+AoGBAI3UDLfa6zLCuwQKLDJ9dM7asZuqFz8NOLNBB4hEbIGVemNRWYAHEKldshL9
+D2M76MutvqM5UKd1Hg7/UVEh32XTsYeUJeXYYCQXeMQoMziqCxF/TASP+UGOi/hK
+ElYSNxTXFDI/BCI70u/FwyjGYueVRXyOqXYhx6wL3rCQlkMFAkEA/9Rrb7lbJ9wq
+PSSuBRqDXepEUsu7vVb189wAGncLL23uyVVAqJT7IHPjiGvFSzJOCKvkC7iocgzM
+aI1jKB4ibwJBAOUNxd8s0WBeyC/GQrS4+pWaxooa5p+wDTgTw+4Ge0Io7C/1as5W
+RSOIaDraEv5sKmHdlibkfQ3vPGN3I7Lxl7MCQAhMjcesDab3X29oVzTXLVfIl7rP
+3SFBRu1IP8CcCALb4Bkr6NMPMi5VVBZC2L2dviZN3TH8JYq9m4vwujy87YUCQQDb
+nRz/IgWOFNJzm/ARPtpj3oZFnA1LRo0mGy1cZrJ/eKUcRn4lX+nia8Mjyjsz3Zm1
+Q7PXjnOojJyl8XE0/RapAkB+gMLNulmPEWqCzo1cZiajAZg8s70LT8LR0mnpYvUL
+yntdxj+FS7C9lNm2cW70SSosRHWs7PVGkI+U6QPl9DV6
+-----END RSA PRIVATE KEY-----
+
diff --git a/libmta/bf.c b/libmta/bf.c
index 3f76a0c..fef4219 100644
--- a/libmta/bf.c
+++ b/libmta/bf.c
@@ -11,7 +11,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: bf.c,v 1.22 2006/07/16 02:07:39 ca Exp $")
+SM_RCSID("@(#)$Id: bf.c,v 1.23 2009/06/21 23:41:44 ca Exp $")
 
 #include "sm/types.h"
 #include "sm/stat.h"
@@ -519,7 +519,7 @@ bfrewind(sm_file_T *fp)
 **
 **	Parameters:
 **		fp -- sm_file_T * to commit to disk
-**		sync -- invoke fsync()?
+**		syncit -- invoke fsync()?
 **
 **	Returns:
 **		usual sm_error code
@@ -531,7 +531,7 @@ bfrewind(sm_file_T *fp)
 */
 
 static sm_ret_T
-sm_bfcommit(sm_file_T *fp, bool sync)
+sm_bfcommit(sm_file_T *fp, bool syncit)
 {
 	struct bf *bfp;
 	int retval;
@@ -590,7 +590,7 @@ sm_bfcommit(sm_file_T *fp, bool sync)
 	bfp->bf_committed = true;
 	ret = SM_SUCCESS;
 
-	if (sync)
+	if (syncit)
 	{
 		SM_ASSERT(is_valid_fd(bfp->bf_disk_fd));
 		if (fsync(bfp->bf_disk_fd) == -1)
diff --git a/libmta/bhtable.c b/libmta/bhtable.c
index 381122a..4cf2a39 100644
--- a/libmta/bhtable.c
+++ b/libmta/bhtable.c
@@ -8,7 +8,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: bhtable.c,v 1.49 2006/05/02 17:13:40 ca Exp $")
+SM_RCSID("@(#)$Id: bhtable.c,v 1.50 2009/06/21 23:43:21 ca Exp $")
 
 #include "sm/assert.h"
 #include "sm/error.h"
@@ -133,13 +133,13 @@ bht_hash(const char *key, uint len, uint htsize)
 
 #define BHT2_LINK(table, elem) do				\
 	{							\
-		sm_bht_entry_P *h = table->bht_data2 +		\
+		sm_bht_entry_P *_h = table->bht_data2 +		\
 				bht_hash(elem->bhe_key2,	\
 					elem->bhe_len2, table->bht_size);\
 		elem->bhe_prev2 = NULL;				\
-		if ((elem->bhe_next2 = *h) != NULL)		\
-			(*h)->bhe_prev2 = elem;			\
-		*h = elem;					\
+		if ((elem->bhe_next2 = *_h) != NULL)		\
+			(*_h)->bhe_prev2 = elem;			\
+		*_h = elem;					\
 	} while (0)
 #endif /* SM_TWO_KEYS */
 
diff --git a/libmta/fclose.c b/libmta/fclose.c
index 228dceb..b4099bb 100644
--- a/libmta/fclose.c
+++ b/libmta/fclose.c
@@ -13,7 +13,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: fclose.c,v 1.15 2006/07/18 02:44:21 ca Exp $")
+SM_RCSID("@(#)$Id: fclose.c,v 1.16 2009/07/26 03:38:18 ca Exp $")
 #include "sm/error.h"
 #include "sm/time.h"
 #include "sm/io.h"
@@ -28,7 +28,7 @@ SM_RCSID("@(#)$Id: fclose.c,v 1.15 2006/07/18 02:44:21 ca Exp $")
 **
 **	Parameters:
 **		fp -- file pointer to be closed
-**		flags -- ignored
+**		flags -- close flags (SM_IO_CF_*)
 **
 **	Returns:
 **		usual sm_error code
diff --git a/libmta/log.c b/libmta/log.c
index 6647e8a..c8cb8c2 100644
--- a/libmta/log.c
+++ b/libmta/log.c
@@ -8,7 +8,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: log.c,v 1.42 2008/05/13 13:21:44 ca Exp $")
+SM_RCSID("@(#)$Id: log.c,v 1.43 2009/06/21 23:42:53 ca Exp $")
 #include "sm/assert.h"
 #include "sm/error.h"
 #include "sm/time.h"
@@ -568,18 +568,18 @@ sm_log_write(sm_log_ctx_P lctx, sm_logcategory_P category, sm_logmodule_P module
 
 	/* Allow NULL context, necessary for emergency logging */
 	if (NULL == lctx) {
-		int r, save_errno;
-		char *log;
+		int rc, save_errno;
+		char *logstr;
 
-		log = NULL;
+		logstr = NULL;
 		va_start(va, format);
-		r = sm_vasprintf(&log, format, va);
+		rc = sm_vasprintf(&logstr, format, va);
 		save_errno = errno;
-		if (r != -1)
-			syslog(priority, "%.*s", LOG_LEN_MAX, log);
+		if (rc != -1)
+			syslog(priority, "%.*s", LOG_LEN_MAX, logstr);
 		va_end(va);
-		SM_FREE(log);
-		return (r != -1) ? SM_SUCCESS
+		SM_FREE(logstr);
+		return (rc != -1) ? SM_SUCCESS
 				: sm_error_perm(SM_EM_LOG, save_errno);
 	}
 
@@ -658,16 +658,16 @@ sm_log_vwrite(sm_log_ctx_P lctx, sm_logcategory_P category, sm_logmodule_P modul
 
 	/* HACK: this doesn't really work, see begin of file */
 	if (NULL == lctx) {
-		int r, save_errno;
-		char *log;
+		int rc, save_errno;
+		char *logstr;
 
-		log = NULL;
-		r = sm_vasprintf(&log, format, args);
+		logstr = NULL;
+		rc = sm_vasprintf(&logstr, format, args);
 		save_errno = errno;
-		if (r != -1)
-			syslog(priority, "%.*s", LOG_LEN_MAX, log);
-		SM_FREE(log);
-		return (r != -1) ? SM_SUCCESS
+		if (rc != -1)
+			syslog(priority, "%.*s", LOG_LEN_MAX, logstr);
+		SM_FREE(logstr);
+		return (rc != -1) ? SM_SUCCESS
 				: sm_error_perm(SM_EM_LOG, save_errno);
 	}
 
diff --git a/libmta/smcert.c b/libmta/smcert.c
new file mode 100644
index 0000000..d642a28
--- /dev/null
+++ b/libmta/smcert.c
@@ -0,0 +1,46 @@
+/*
+ */
+
+#include "sm/generic.h"
+SM_RCSID("@(#)$Id: smcert.c,v 1.1 2009/08/09 00:54:07 ca Exp $")
+#include "sm/error.h"
+#include "sm/assert.h"
+#include "sm/io.h"
+#include "sm/tls.h"
+
+#if MTA_USE_TLS
+
+/*
+**  SM_TLS_GET_CN -- extract CN from an X509 name
+**
+**	Parameters:
+**		x509_name -- X509 name
+**		nid -- index
+**		str -- where to write result (output)
+**
+**	Returns:
+**		usual error code
+*/
+
+sm_ret_T
+sm_tls_get_cn(X509_NAME *x509_name, int nid, sm_str_P str)
+{
+	int r;
+	char buf[SM_X509_MAXNAME];
+
+#define CHECK_X509_NAME	do {	\
+		if (r == -1)	\
+			strlcpy(buf, "BadCert:Unknown", sizeof(buf));	\
+		else if ((size_t)r >= sizeof(buf) - 1)	\
+			strlcpy(buf, "BadCert:TooLong", sizeof(buf));	\
+		else if ((size_t)r > strlen(buf))	\
+			strlcpy(buf, "BadCert:ContainsNUL", sizeof(buf));	\
+	} while (0)
+
+	r = X509_NAME_get_text_by_NID(x509_name, nid, buf, sizeof buf);
+	CHECK_X509_NAME;
+	TLS_SET_XSTR(buf, str);
+
+	return SM_SUCCESS;
+}
+#endif /* MTA_USE_TLS */
diff --git a/libmta/smtls.c b/libmta/smtls.c
index f13c731..d9244b6 100644
--- a/libmta/smtls.c
+++ b/libmta/smtls.c
@@ -14,7 +14,7 @@
 */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: smtls.c,v 1.45 2009/01/09 03:40:46 ca Exp $")
+SM_RCSID("@(#)$Id: smtls.c,v 1.50 2009/08/09 01:12:01 ca Exp $")
 #include "sm/error.h"
 #include "sm/assert.h"
 #include "sm/io.h"
@@ -45,14 +45,12 @@ static int	tls_verify_cb(X509_STORE_CTX *, void *);
 # define CONST097 const
 #endif
 
-#define MAXNAME	256
 #define bitset(bit, word)	(((bit) & (word)) != 0)
 
 #if !NO_DH
 static DH *get_dh512(void);
 
-static uchar dh512_p[] =
-{
+static uchar dh512_p[] = {
 	0xDA,0x58,0x3C,0x16,0xD9,0x85,0x22,0x89,0xD0,0xE4,0xAF,0x75,
 	0x6F,0x4C,0xCA,0x92,0xDD,0x4B,0xE5,0x33,0xB8,0x04,0xFB,0x0F,
 	0xED,0x94,0xEF,0x9C,0x8A,0x44,0x03,0xED,0x57,0x46,0x50,0xD3,
@@ -60,8 +58,7 @@ static uchar dh512_p[] =
 	0xE2,0x18,0xF4,0xDD,0x1E,0x08,0x4C,0xF6,0xD8,0x00,0x3E,0x7C,
 	0x47,0x74,0xE8,0x33
 };
-static uchar dh512_g[] =
-{
+static uchar dh512_g[] = {
 	0x02
 };
 
@@ -314,10 +311,8 @@ sm_tls_init(tlsl_ctx_P tlsl_ctx, SSL_CTX **ctx, ulong req, bool srv, tls_cnf_P t
 	**  default is: 1024 for server, 512 for client (OK? XXX)
 	*/
 
-	if (bitset(TLS_I_TRY_DH, req))
-	{
-		if (dhparam != NULL)
-		{
+	if (bitset(TLS_I_TRY_DH, req)) {
+		if (dhparam != NULL) {
 			char c;
 
 			c = *dhparam;
@@ -325,8 +320,7 @@ sm_tls_init(tlsl_ctx_P tlsl_ctx, SSL_CTX **ctx, ulong req, bool srv, tls_cnf_P t
 				req |= TLS_I_DH1024;
 			else if (c == '5')
 				req |= TLS_I_DH512;
-			else if (c != 'n' && c != 'N' && c != '/')
-			{
+			else if (c != 'n' && c != 'N' && c != '/') {
 				sm_log_write(tlsl_ctx->tlsl_lctx,
 					TL_LCAT_INIT, TL_LMOD_CONF,
 					SM_LOG_WARN, 12,
@@ -335,13 +329,11 @@ sm_tls_init(tlsl_ctx_P tlsl_ctx, SSL_CTX **ctx, ulong req, bool srv, tls_cnf_P t
 				dhparam = NULL;
 			}
 		}
-		if (dhparam == NULL)
-		{
+		if (dhparam == NULL) {
 			dhparam = srv ? "1" : "5";
 			req |= srv ? TLS_I_DH1024 : TLS_I_DH512;
 		}
-		else if (*dhparam == '/')
-		{
+		else if (*dhparam == '/') {
 #if 0
 			TLS_OK_F(dhparam, "DHParameters",
 				 bitset(TLS_I_DHPAR_EX, req),
@@ -411,9 +403,7 @@ sm_tls_init(tlsl_ctx_P tlsl_ctx, SSL_CTX **ctx, ulong req, bool srv, tls_cnf_P t
 	*/
 
 	if (bitset(TLS_I_RSA_TMP, req) &&
-	    (rsa_tmp = RSA_generate_key(RSA_KEYLENGTH, RSA_F4, NULL, NULL))
-		== NULL
-	   )
+	    (rsa_tmp = RSA_generate_key(RSA_KEYLENGTH, RSA_F4, NULL, NULL)) == NULL)
 	{
 		sm_log_write(tlsl_ctx->tlsl_lctx,
 			TL_LCAT_INIT, TL_LMOD_CONF,
@@ -527,8 +517,7 @@ sm_tls_init(tlsl_ctx_P tlsl_ctx, SSL_CTX **ctx, ulong req, bool srv, tls_cnf_P t
 	*/
 
 	rt_version = SSLeay();
-	if (rt_version >= 0x00908000L && rt_version <= 0x0090802fL)
-	{
+	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;
@@ -538,18 +527,14 @@ sm_tls_init(tlsl_ctx_P tlsl_ctx, SSL_CTX **ctx, ulong req, bool srv, tls_cnf_P t
 
 #if !NO_DH
 	/* Diffie-Hellman initialization */
-	if (bitset(TLS_I_TRY_DH, req))
-	{
-		if (bitset(TLS_S_DHPAR_OK, status))
-		{
+	if (bitset(TLS_I_TRY_DH, req)) {
+		if (bitset(TLS_S_DHPAR_OK, status)) {
 			BIO *bio;
 
-			if ((bio = BIO_new_file(dhparam, "r")) != NULL)
-			{
+			if ((bio = BIO_new_file(dhparam, "r")) != NULL) {
 				dh = PEM_read_bio_DHparams(bio, NULL, NULL, NULL);
 				BIO_free(bio);
-				if (dh == NULL)
-				{
+				if (dh == NULL) {
 					ulong err;
 
 					err = ERR_get_error();
@@ -562,8 +547,7 @@ sm_tls_init(tlsl_ctx_P tlsl_ctx, SSL_CTX **ctx, ulong req, bool srv, tls_cnf_P t
 					tlslogerr(tlsl_ctx, who);
 				}
 			}
-			else
-			{
+			else {
 				sm_log_write(tlsl_ctx->tlsl_lctx,
 					TL_LCAT_INIT, TL_LMOD_CONF,
 					SM_LOG_WARN, 5,
@@ -572,8 +556,7 @@ sm_tls_init(tlsl_ctx_P tlsl_ctx, SSL_CTX **ctx, ulong req, bool srv, tls_cnf_P t
 				tlslogerr(tlsl_ctx, who);
 			}
 		}
-		if (dh == NULL && bitset(TLS_I_DH1024, req))
-		{
+		if (dh == NULL && bitset(TLS_I_DH1024, req)) {
 			DSA *dsa;
 
 			/* this takes a while! (7-130s on a 450MHz AMD K6-2) */
@@ -586,8 +569,7 @@ sm_tls_init(tlsl_ctx_P tlsl_ctx, SSL_CTX **ctx, ulong req, bool srv, tls_cnf_P t
 		if (dh == NULL && bitset(TLS_I_DH512, req))
 			dh = get_dh512();
 
-		if (dh == NULL)
-		{
+		if (dh == NULL) {
 			ulong err;
 
 			err = ERR_get_error();
@@ -599,8 +581,7 @@ sm_tls_init(tlsl_ctx_P tlsl_ctx, SSL_CTX **ctx, ulong req, bool srv, tls_cnf_P t
 			if (bitset(TLS_I_REQ_DH, req))
 				return sm_error_perm(SM_EM_TLS, EINVAL);
 		}
-		else
-		{
+		else {
 			SSL_CTX_set_tmp_dh(*ctx, dh);
 
 			/* important to avoid small subgroup attacks */
@@ -616,16 +597,14 @@ sm_tls_init(tlsl_ctx_P tlsl_ctx, SSL_CTX **ctx, ulong req, bool srv, tls_cnf_P t
 #endif /* !NO_DH */
 
 	/* do we need this cache here?? */
-	if (bitset(TLS_I_CACHE, req) && tls_cnf->tlscnf_cache_size > 0)
-	{
+	if (bitset(TLS_I_CACHE, req) && tls_cnf->tlscnf_cache_size > 0) {
 		r = SSL_CTX_sess_set_cache_size(*ctx,
 				tls_cnf->tlscnf_cache_size);
 		r = SSL_CTX_set_timeout(*ctx, tls_cnf->tlscnf_cache_tmout);
 		r = SSL_CTX_set_session_id_context(*ctx,
 			(const unsigned char *) &server_session_id_context,
 			sizeof(server_session_id_context));
-		if (r != 1)
-		{
+		if (r != 1) {
 			sm_log_write(tlsl_ctx->tlsl_lctx,
 				TL_LCAT_INIT, TL_LMOD_CONF,
 				SM_LOG_ERR, 6,
@@ -638,16 +617,11 @@ sm_tls_init(tlsl_ctx_P tlsl_ctx, SSL_CTX **ctx, ulong req, bool srv, tls_cnf_P t
 	else
 		r = 0;
 	if (r != 1)
-	{
-		(void) SSL_CTX_set_session_cache_mode(*ctx,
-				SSL_SESS_CACHE_OFF);
-	}
+		(void) SSL_CTX_set_session_cache_mode(*ctx, SSL_SESS_CACHE_OFF);
 
 	/* load certificate locations and default CA paths */
-	if (bitset(TLS_S_CERTP_EX, status) && bitset(TLS_S_CERTF_EX, status))
-	{
-		if ((r = SSL_CTX_load_verify_locations(*ctx,
-				tls_cnf->tlscnf_cacertfile,
+	if (bitset(TLS_S_CERTP_EX, status) && bitset(TLS_S_CERTF_EX, status)) {
+		if ((r = SSL_CTX_load_verify_locations(*ctx, tls_cnf->tlscnf_cacertfile,
 				tls_cnf->tlscnf_cacertpath)) == 1)
 		{
 #if !TLS_NO_RSA
@@ -679,11 +653,9 @@ sm_tls_init(tlsl_ctx_P tlsl_ctx, SSL_CTX **ctx, ulong req, bool srv, tls_cnf_P t
 			SSL_CTX_set_cert_verify_callback(*ctx, tls_verify_cb,
 							 (char *) tlsl_ctx);
 			SSL_CTX_set_client_CA_list(*ctx,
-				SSL_load_client_CA_file(
-						tls_cnf->tlscnf_cacertfile));
+				SSL_load_client_CA_file(tls_cnf->tlscnf_cacertfile));
 		}
-		else
-		{
+		else {
 			/*
 			**  can't load CA data; do we care?
 			**  the data is necessary to authenticate the client,
@@ -711,10 +683,8 @@ sm_tls_init(tlsl_ctx_P tlsl_ctx, SSL_CTX **ctx, ulong req, bool srv, tls_cnf_P t
 
 #if _FFR_TLS_1
 	/* install our own cipher list */
-	if (CipherList != NULL && *CipherList != '\0')
-	{
-		if (SSL_CTX_set_cipher_list(*ctx, CipherList) <= 0)
-		{
+	if (CipherList != NULL && *CipherList != '\0') {
+		if (SSL_CTX_set_cipher_list(*ctx, CipherList) <= 0) {
 			sm_log_write(tlsl_ctx->tlsl_lctx,
 				TL_LCAT_INIT, TL_LMOD_CONF,
 				SM_LOG_WARN, 7,
@@ -763,11 +733,8 @@ tls_get_info(tlsl_ctx_P tlsl_ctx, SSL *ssl, uint flags, char *host, tlsi_ctx_P t
 #define TLS_IS_SRV	(SM_IS_FLAG(flags, TLS_F_SRV))
 #define TLS_CERT_REQ	(SM_IS_FLAG(flags, TLS_F_CERT_REQ))
 
-#define TLS_SET_STR(s, str)						\
-	do								\
-	{								\
-		if ((s) != NULL)					\
-		{							\
+#define TLS_SET_STR(s, str) do {		\
+		if ((s) != NULL) {					\
 			r = strlen(s);					\
 			if ((str) == NULL)				\
 				(str) = sm_str_new(NULL, r + 1, r + 2);	\
@@ -776,21 +743,6 @@ tls_get_info(tlsl_ctx_P tlsl_ctx, SSL *ssl, uint flags, char *host, tlsi_ctx_P t
 		}							\
 	} while (0)
 
-#define TLS_SET_XSTR(s, str)						\
-	do								\
-	{								\
-		if ((s) != NULL)					\
-		{							\
-			r = strlen(s);					\
-			if ((str) == NULL)				\
-				(str) = sm_str_new(NULL, r + 2, r * 3);	\
-			else						\
-				sm_str_clr(str);			\
-			if ((str) != NULL)				\
-				(void) xtextify((s), "<>\")", str);	\
-		}							\
-	} while (0)
-
 	s = (char *) SSL_CIPHER_get_name(c);
 	TLS_SET_STR(s, tlsi_ctx->tlsi_cipher);
 
@@ -811,25 +763,23 @@ tls_get_info(tlsl_ctx_P tlsl_ctx, SSL *ssl, uint flags, char *host, tlsi_ctx_P t
 		uint n;
 		uchar md[EVP_MAX_MD_SIZE];
 #endif
-		char buf[MAXNAME];
+		X509_NAME *subj, *issuer;
+		char buf[SM_X509_MAXNAME];
 
-		X509_NAME_oneline(X509_get_subject_name(cert),
-				  buf, sizeof buf);
+		subj = X509_get_subject_name(cert);
+		issuer = X509_get_issuer_name(cert);
+
+		X509_NAME_oneline(subj, buf, sizeof buf);
 		TLS_SET_XSTR(buf, tlsi_ctx->tlsi_cert_subject);
-		X509_NAME_oneline(X509_get_issuer_name(cert),
-				  buf, sizeof buf);
+		X509_NAME_oneline(issuer, buf, sizeof buf);
 		TLS_SET_XSTR(buf, tlsi_ctx->tlsi_cert_issuer);
-		X509_NAME_get_text_by_NID(X509_get_subject_name(cert),
-					  NID_commonName, buf, sizeof buf);
-		TLS_SET_XSTR(buf, tlsi_ctx->tlsi_cn_subject);
-		X509_NAME_get_text_by_NID(X509_get_issuer_name(cert),
-					  NID_commonName, buf, sizeof buf);
-		TLS_SET_XSTR(buf, tlsi_ctx->tlsi_cn_issuer);
+
+		(void) sm_tls_get_cn(subj, NID_commonName, tlsi_ctx->tlsi_cn_subject);
+		(void) sm_tls_get_cn(issuer, NID_commonName, tlsi_ctx->tlsi_cn_issuer);
 
 #if SM_TLSI_CERT_MD5
 		n = 0;
-		if (X509_digest(cert, EVP_md5(), md, &n) != 0 && n > 0)
-		{
+		if (X509_digest(cert, EVP_md5(), md, &n) != 0 && n > 0) {
 			sm_str_P str;
 			static const char hexcodes[] = "0123456789ABCDEF";
 
@@ -838,15 +788,11 @@ tls_get_info(tlsl_ctx_P tlsl_ctx, SSL *ssl, uint flags, char *host, tlsi_ctx_P t
 				tlsi_ctx->tlsi_cert_md5 = sm_str_new(NULL,
 								r, r + 2);
 			str = tlsi_ctx->tlsi_cert_md5;
-			if (str != NULL)
-			{
+			if (str != NULL) {
 				sm_str_clr(str);
-				for (r = 0; r < (int) n; r++)
-				{
-					(void) sm_str_put(str,
-						hexcodes[(md[r] & 0xf0) >> 4]);
-					(void) sm_str_put(str,
-						hexcodes[(md[r] & 0x0f)]);
+				for (r = 0; r < (int) n; r++) {
+					(void) sm_str_put(str, hexcodes[(md[r] & 0xf0) >> 4]);
+					(void) sm_str_put(str, hexcodes[(md[r] & 0x0f)]);
 					(void) sm_str_put(str, ':');
 				}
 				(void) sm_str_term(str);
@@ -856,8 +802,7 @@ tls_get_info(tlsl_ctx_P tlsl_ctx, SSL *ssl, uint flags, char *host, tlsi_ctx_P t
 			TLS_SET_STR("", tlsi_ctx->tlsi_cert_md5);
 #endif /* SM_TLSI_CERT_MD5 */
 	}
-	else
-	{
+	else {
 		TLS_SET_STR("", tlsi_ctx->tlsi_cert_subject);
 		TLS_SET_STR("", tlsi_ctx->tlsi_cert_issuer);
 		TLS_SET_STR("", tlsi_ctx->tlsi_cn_subject);
@@ -867,8 +812,7 @@ tls_get_info(tlsl_ctx_P tlsl_ctx, SSL *ssl, uint flags, char *host, tlsi_ctx_P t
 #endif
 	}
 
-	switch (SSL_get_verify_result(ssl))
-	{
+	switch (SSL_get_verify_result(ssl)) {
 	  case X509_V_OK:
 		if (cert != NULL)
 			r = TLS_VRFY_OK;
@@ -912,12 +856,10 @@ endtls(tlsl_ctx_P tlsl_ctx, SSL *ssl, char *side)
 {
 	int ret = SM_SUCCESS;
 
-	if (ssl != NULL)
-	{
+	if (ssl != NULL) {
 		int r;
 
-		if ((r = SSL_shutdown(ssl)) < 0)
-		{
+		if ((r = SSL_shutdown(ssl)) < 0) {
 			sm_log_write(tlsl_ctx->tlsl_lctx,
 				TL_LCAT_INIT, TL_LMOD_CONF,
 				SM_LOG_WARN, 10,
@@ -964,8 +906,7 @@ endtls(tlsl_ctx_P tlsl_ctx, SSL *ssl, char *side)
 		**  For now the recommondation is to ignore the error message.
 		*/
 
-		else if (r == 0)
-		{
+		else if (r == 0) {
 			sm_log_write(tlsl_ctx->tlsl_lctx,
 				TL_LCAT_INIT, TL_LMOD_CONF,
 				SM_LOG_WARN, 15,
diff --git a/libmta/t-cert-0.sh b/libmta/t-cert-0.sh
new file mode 100755
index 0000000..d8b675c
--- /dev/null
+++ b/libmta/t-cert-0.sh
@@ -0,0 +1,38 @@
+#!/bin/sh
+# $Id: t-cert-0.sh,v 1.3 2009/08/09 01:13:14 ca Exp $
+#
+#
+test -s stop && exit 1
+#
+
+SD=`dirname $0`
+if test "${SD}" = "."
+then
+   SD=../libmta
+fi
+CERTD=${SD}/../chkmts
+
+ERRORS=0
+PRG=./t-cert
+
+while read A B C D
+do
+  OPTS=""
+  [ X"${B}" != "X-" ] && OPTS="${OPTS} -s ${B}"
+  [ X"${C}" != "X-" ] && OPTS="${OPTS} -i ${C}"
+  [ X"${D}" != "X-" ] && OPTS="${OPTS} -d ${D}"
+
+  if ${PRG} ${OPTS} "${A}"
+  then
+    :
+  else
+    ERRORS=`expr ${ERRORS} + 1 `
+    break
+  fi
+
+done <<EOF
+${CERTD}/smcert.pem	host.example.org	CA	-
+${SD}/badcert.pem	BadCert:ContainsNUL ipsCA+20CLASEA1+20Certification+20Authority	/C=US/ST=California/L=San+20Francisco/O=Security/OU=Secure+20Unit/CN=*+5Cx00.secureconnection.cc
+EOF
+
+exit ${ERRORS}
diff --git a/libmta/t-cert.c b/libmta/t-cert.c
new file mode 100644
index 0000000..763b514
--- /dev/null
+++ b/libmta/t-cert.c
@@ -0,0 +1,150 @@
+/*
+ */
+
+#include "sm/generic.h"
+SM_RCSID("@(#)$Id: t-cert.c,v 1.5 2009/08/09 16:11:41 ca Exp $")
+
+#include "sm/error.h"
+#include "sm/sysexits.h"
+#include "sm/io.h"
+#include "sm/tls.h"
+#include "sm/test.h"
+
+static int Verbose = 0;
+
+#if MTA_USE_TLS
+/* based on openssl/apps/apps.c, simplified for testing purposes */
+static X509 *
+load_cert(BIO *err, const char *file)
+{
+	X509 *x;
+	BIO *cert;
+
+	x = NULL;
+	cert = BIO_new(BIO_s_file());
+	if (cert == NULL) {
+		ERR_print_errors(err);
+		goto end;
+	}
+
+	if (BIO_read_filename(cert,file) <= 0) {
+		BIO_printf(err, "Error opening %s\n", file);
+		ERR_print_errors(err);
+		goto end;
+	}
+
+	x = PEM_read_bio_X509_AUX(cert,NULL, (pem_password_cb *)NULL, NULL);
+end:
+	if (x == NULL) {
+		BIO_printf(err,"unable to load certificate\n");
+		ERR_print_errors(err);
+	}
+	if (cert != NULL)
+		BIO_free(cert);
+	return x;
+}
+
+#define MAXN 	256
+
+static void
+t_cert_x509(const char *infile, const char *cn_subject, const char *cn_issuer, const char *dn_subject)
+{
+	sm_ret_T ret;
+	X509_STORE *ctx;
+	X509 *x509_cert=NULL;
+	BIO *bio_err = NULL;
+	X509_NAME *subj, *issuer;
+	sm_str_P str;
+
+	ctx = X509_STORE_new();
+	SM_TEST_E(ctx != NULL);
+	str = sm_str_new(NULL, MAXN, MAXN * 2);
+	SM_TEST_E(str != NULL);
+
+	ERR_load_crypto_strings();
+	bio_err=BIO_new_fp(stderr,BIO_NOCLOSE);
+	SM_TEST_E(bio_err != NULL);
+
+	x509_cert = load_cert(bio_err, infile);
+	SM_TEST_E(x509_cert != NULL);
+	subj = X509_get_subject_name(x509_cert);
+	SM_TEST_E(subj != NULL);
+	issuer = X509_get_issuer_name(x509_cert);
+	SM_TEST_E(issuer != NULL);
+
+	sm_str_clr(str);
+	ret = sm_tls_get_cn(subj, NID_commonName, str);
+	SM_TEST(sm_is_success(ret));
+	SM_TEST(strcmp(sm_str_getdata(str), cn_subject) == 0);
+	if (Verbose > 1)
+		sm_io_fprintf(smioerr, "cn_subject=%S, expected=%s\n", str, cn_subject);
+
+	sm_str_clr(str);
+	ret = sm_tls_get_cn(issuer, NID_commonName, str);
+	SM_TEST(sm_is_success(ret));
+	SM_TEST(strcmp(sm_str_getdata(str), cn_issuer) == 0);
+	if (Verbose > 1)
+		sm_io_fprintf(smioerr, "cn_issuer=%S, expected=%s\n", str, cn_issuer);
+
+	if (dn_subject != NULL) {
+		int r;
+		char buf[SM_X509_MAXNAME];
+
+		X509_NAME_oneline(subj, buf, sizeof buf);
+		TLS_SET_XSTR(buf, str);
+		SM_TEST(strcmp(sm_str_getdata(str), dn_subject) == 0);
+		if (Verbose > 1)
+			sm_io_fprintf(smioerr, "dn_subject=%S, expected=%s\n",
+				str, dn_subject);
+	}
+
+  error:
+	return;
+}
+#endif /* MTA_USE_TLS */
+
+extern int optind;
+
+int
+main(int argc, char *argv[])
+{
+	int c;
+	bool interactive;
+	char *infile, *cn_s, *cn_i, *dn_s;
+
+	infile = "cert.pem";
+	cn_s = "host.example.org";
+	cn_i = "CA";
+	dn_s = NULL;
+	interactive = false;
+	while ((c = getopt(argc, argv, "d:i:s:V")) != -1)
+	{
+		switch (c)
+		{
+		  case 'd':
+			dn_s = strdup(optarg);
+			break;
+		  case 'i':
+			cn_i = strdup(optarg);
+			break;
+		  case 's':
+			cn_s = strdup(optarg);
+			break;
+		  case 'V':
+			++Verbose;
+			break;
+		  default:
+			return EX_USAGE;
+		}
+	}
+	sm_test_begin(argc, argv, "test cert X509 names");
+	argc -= optind;
+	argv += optind;
+	if (argc > 0)
+		infile = argv[0];
+
+#if MTA_USE_TLS
+	t_cert_x509(infile, cn_s, cn_i, dn_s);
+#endif
+	return sm_test_end();
+}
diff --git a/libmta/vfprintf.c b/libmta/vfprintf.c
index d4ee1b1..7c81298 100644
--- a/libmta/vfprintf.c
+++ b/libmta/vfprintf.c
@@ -13,7 +13,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: vfprintf.c,v 1.58 2007/11/18 05:37:01 ca Exp $")
+SM_RCSID("@(#)$Id: vfprintf.c,v 1.59 2009/07/26 03:41:00 ca Exp $")
 #include "sm/varargs.h"
 #include "sm/assert.h"
 #include "sm/io.h"
@@ -516,8 +516,7 @@ reswitch:	switch (ch)
 				if (argtable == NULL)
 				{
 					argtable = statargtable;
-					sm_find_arguments(fmt0, orgap,
-					    &argtable);
+					sm_find_arguments(fmt0, orgap, &argtable);
 				}
 				goto rflag;
 			}
@@ -547,8 +546,7 @@ reswitch:	switch (ch)
 				if (argtable == NULL)
 				{
 					argtable = statargtable;
-					sm_find_arguments(fmt0, orgap,
-					    &argtable);
+					sm_find_arguments(fmt0, orgap, &argtable);
 				}
 				goto rflag;
 			}
@@ -1242,6 +1240,7 @@ number:			if ((dprec = prec) >= 0)
 done:
 	FLUSH();
 error:
+	va_end(orgap);
 	if ((argtable != NULL) && (argtable != statargtable))
 		sm_free(argtable);
 	return sm_error(fp) ? SM_IO_EOF : ret;
diff --git a/libpmilter/pmilter_init.c b/libpmilter/pmilter_init.c
index 47322b0..20b9dfe 100644
--- a/libpmilter/pmilter_init.c
+++ b/libpmilter/pmilter_init.c
@@ -8,11 +8,12 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: pmilter_init.c,v 1.14 2006/10/05 04:27:38 ca Exp $")
+SM_RCSID("@(#)$Id: pmilter_init.c,v 1.15 2009/06/08 02:44:09 ca Exp $")
 #include "sm/error.h"
 #include "sm/assert.h"
 #include "sm/memops.h"
 #include "sm/evthr.h"
+#include "sm/pmfapi.h"
 #include "pmilter.h"
 
 #if MTA_USE_PMILTER
@@ -108,49 +109,47 @@ sm_pmilt_init1(pmg_ctx_P pmg_ctx)
 
 	/* initialize pthreads */
 	ret = thr_init();
-	if (sm_is_err(ret))
-	{
+	if (sm_is_err(ret)) {
 		sm_io_fprintf(smioerr,
 			"sev=ERROR, func=sm_pmilt_init, thr_init=%x\n", ret);
 		goto error;
 	}
 
 	i = pthread_mutex_init(&pmg_ctx->pmg_mutex, SM_PTHREAD_MUTEXATTR);
-	if (i != 0)
-	{
+	if (i != 0) {
 		ret = sm_error_perm(SM_EM_Q, i);
 		sm_io_fprintf(smioerr,
-			"sev=ERROR, func=sm_pmilt_init, mutex_init=%x\n", i);
+			"sev=ERROR, func=sm_pmilt_init, mutex_init=%m\n", i);
 		goto error;
 	}
 
-	/* initialize event threads system; CONF */
-	ret = evthr_init(&pmg_ctx->pmg_ev_ctx, 2, 6, 10);
-	if (sm_is_err(ret))
-	{
+	/* initialize event threads system */
+#define SM_PMFI_DEF_VAL(val, dfl) (((val) > 0) ? (val) : dfl)
+	ret = evthr_init(&pmg_ctx->pmg_ev_ctx,
+		     SM_PMFI_DEF_VAL(pmg_ctx->pmg_pmilter->pmfi_thrmax_s, 2),
+		     SM_PMFI_DEF_VAL(pmg_ctx->pmg_pmilter->pmfi_thrmax_h, 6),
+		     SM_PMFI_DEF_VAL(pmg_ctx->pmg_pmilter->pmfi_fdmax, 10));
+	if (sm_is_err(ret)) {
 		sm_io_fprintf(smioerr,
-			"sev=ERROR, func=sm_pmilt_init, evthr_init=%x\n", ret);
+			"sev=ERROR, func=sm_pmilt_init, evthr_init=%m\n", ret);
 		goto error;
 	}
 
 #if 0
 	ret = sm_log_setdebuglevel(pmg_ctx->pmg_lctx,
 				pmg_ctx->pmg_cnf.q_cnf_loglevel);
-	if (sm_is_err(ret))
-	{
+	if (sm_is_err(ret)) {
 		sm_io_fprintf(smioerr,
-			"sev=ERROR, func=sm_pmilt_init, sm_log_setdebuglevel=%x\n",
+			"sev=ERROR, func=sm_pmilt_init, sm_log_setdebuglevel=%m\n",
 			ret);
 		goto error;
 	}
 #endif /* 0 */
 
 	/* create pmilter contexts */
-	for (u = 0; u < SM_ARRAY_SIZE(pmg_ctx->pmg_sctx); u++)
-	{
+	for (u = 0; u < SM_ARRAY_SIZE(pmg_ctx->pmg_sctx); u++) {
 		ret = sm_pmss_new(pmg_ctx, &pmg_ctx->pmg_sctx[u]);
-		if (sm_is_err(ret))
-		{
+		if (sm_is_err(ret)) {
 			sm_io_fprintf(smioerr,
 				"sev=ERROR, func=sm_pmilt_init, sm_pmss_new=%m, u=%u\n",
 				ret, u);
diff --git a/libsmmap/Makefile.am b/libsmmap/Makefile.am
index c270076..a7efaaa 100644
--- a/libsmmap/Makefile.am
+++ b/libsmmap/Makefile.am
@@ -1,5 +1,5 @@
 ## Makefile.am -- Process this file with automake to produce Makefile.in
-# $Id: Makefile.am,v 1.55 2008/01/09 05:28:00 ca Exp $
+# $Id: Makefile.am,v 1.62 2009/07/06 03:10:24 ca Exp $
 
 MAINTAINERCLEANFILES	= Makefile.in
 
@@ -35,6 +35,8 @@ LIBSMMAP_SRCS	= maps.c mapc.c map.c \
 		lookupdomain.c \
 		lookupaddr.c \
 		mapconfopen.c \
+		mapcnfopen.c \
+		mapconffind.c \
 		sequence.c \
 		bdb.c bdbversion.c \
 		bht.c \
@@ -76,9 +78,8 @@ TESTP=	t-mapr-0 \
 	t-bhtr-0 \
 	t-bhtr-1 \
 	t-passwdr-0 \
-	t-seqr-0 \
 	t-seqr-1 \
-	t-seqr-2
+	t-map-reopenr-1
 # compile only, do not run
 ## TESTC= t-mapipr-0 t-mapdomr-0 t-mapip-0 t-mapdom-0
 TESTC=	t-mm \
@@ -105,7 +106,7 @@ TESTSH= t-db-0.sh \
 	t-conf-1.sh \
 	t-mm-fail-0.sh
 # do not run at all...
-TESTDATA = t-sockmapsrv.pl
+TESTDATA = t-sockmapsrv.pl t-seq-common.c
 
 EXTRA_DIST 	= $(TESTSH) $(TESTDATA)
 
@@ -156,6 +157,12 @@ t_map_reopenr_0_LDADD	= $(LDSMMAPSR) $(LDCSTRR) $(LDBDB) $(LDCDBMAP) $(LDADDR) $
 t_map_reopenr_0_CFLAGS=-DMTA_USE_PTHREADS $(PTHREAD_CFLAGS)
 t_map_reopenr_0_LDFLAGS=$(PTHREAD_CFLAGS)
 
+t_map_reopenr_1_CC	= $(PTHREAD_CC)
+t_map_reopenr_1_SOURCES	= t-map-reopen-1.c
+t_map_reopenr_1_LDADD	= $(LDSMMAPSR) $(LDCSTRR) $(LDBDB) $(LDCDBMAP) $(LDADDR) $(LDCHK) $(PTHREAD_LIBS) $(LDREPL)
+t_map_reopenr_1_CFLAGS=-DMTA_USE_PTHREADS $(PTHREAD_CFLAGS)
+t_map_reopenr_1_LDFLAGS=$(PTHREAD_CFLAGS)
+
 t_bdbr_0_CC		= $(PTHREAD_CC)
 t_bdbr_0_SOURCES	= t-bdb-0.c
 t_bdbr_0_LDADD		= $(LDSMMAPSR) $(LDCSTRR) $(LDBDB) $(LDCDBMAP) $(LDADDR) $(LDCHK) $(PTHREAD_LIBS) $(LDREPL)
@@ -216,24 +223,12 @@ t_sockmapr_0_LDADD	= $(LDSMMAPSR) $(LDCSTRR) $(LDADDR) $(LDCHK) $(PTHREAD_LIBS)
 t_sockmapr_0_CFLAGS=-DMTA_USE_PTHREADS $(PTHREAD_CFLAGS)
 t_sockmapr_0_LDFLAGS=$(PTHREAD_CFLAGS)
 
-t_seqr_0_CC		= $(PTHREAD_CC)
-t_seqr_0_SOURCES	= t-seq-0.c
-t_seqr_0_LDADD		= $(LDSMMAPSR) $(LDCSTRR) $(LDADDR) $(LDCHK) $(PTHREAD_LIBS) $(LDREPL)
-t_seqr_0_CFLAGS=-DMTA_USE_PTHREADS $(PTHREAD_CFLAGS)
-t_seqr_0_LDFLAGS=$(PTHREAD_CFLAGS)
-
 t_seqr_1_CC		= $(PTHREAD_CC)
 t_seqr_1_SOURCES	= t-seq-1.c
 t_seqr_1_LDADD		= $(LDSMMAPSR) $(LDCSTRR) $(LDBDB) $(LDCDBMAP) $(LDADDR) $(LDCHK) $(PTHREAD_LIBS) $(LDREPL)
 t_seqr_1_CFLAGS=-DMTA_USE_PTHREADS $(PTHREAD_CFLAGS)
 t_seqr_1_LDFLAGS=$(PTHREAD_CFLAGS)
 
-t_seqr_2_CC		= $(PTHREAD_CC)
-t_seqr_2_SOURCES	= t-seq-2.c
-t_seqr_2_LDADD		= $(LDSMMAPSR) $(LDCSTRR) $(LDBDB) $(LDCDBMAP) $(LDADDR) $(LDCHK) $(PTHREAD_LIBS) $(LDREPL)
-t_seqr_2_CFLAGS=-DMTA_USE_PTHREADS $(PTHREAD_CFLAGS)
-t_seqr_2_LDFLAGS=$(PTHREAD_CFLAGS)
-
 t_confr_0_CC		= $(PTHREAD_CC)
 t_confr_0_SOURCES	= t-conf-0.c
 t_confr_0_LDADD		= $(LDSMMAPSR) $(LDCSTRR) $(LDCONF) $(LDBDB) $(LDCDBMAP) $(LDMISCR) $(LDADDR) $(LDCHK) $(PTHREAD_LIBS) $(LDREPL)
diff --git a/libsmmap/lookupaddr.c b/libsmmap/lookupaddr.c
index 1b9d74d..2b6903e 100644
--- a/libsmmap/lookupaddr.c
+++ b/libsmmap/lookupaddr.c
@@ -8,7 +8,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: lookupaddr.c,v 1.28 2007/01/22 17:24:06 ca Exp $")
+SM_RCSID("@(#)$Id: lookupaddr.c,v 1.29 2009/07/05 21:06:14 ca Exp $")
 
 #include "sm/assert.h"
 #include "sm/error.h"
@@ -391,6 +391,10 @@ sm_map_lookup_addr(sm_map_P map, sm_str_P user, sm_str_P detail, sm_str_P domain
 				}
 				goto done;
 			}
+			if (sm_error_perm(SM_EM_MAP, SM_E_NOMORE) == ret) {
+				ret = sm_error_perm(SM_EM_MAP, SM_E_NOTFOUND);
+				goto done;
+			}
 		}
 
 		/* lookup with ++ (tag user delim + @ domain) */
@@ -431,6 +435,10 @@ sm_map_lookup_addr(sm_map_P map, sm_str_P user, sm_str_P detail, sm_str_P domain
 				}
 				goto done;
 			}
+			if (sm_error_perm(SM_EM_MAP, SM_E_NOMORE) == ret) {
+				ret = sm_error_perm(SM_EM_MAP, SM_E_NOTFOUND);
+				goto done;
+			}
 		}
 
 		/* lookup with +* (tag user delim * @ domain) */
@@ -471,6 +479,10 @@ sm_map_lookup_addr(sm_map_P map, sm_str_P user, sm_str_P detail, sm_str_P domain
 				}
 				goto done;
 			}
+			if (sm_error_perm(SM_EM_MAP, SM_E_NOMORE) == ret) {
+				ret = sm_error_perm(SM_EM_MAP, SM_E_NOTFOUND);
+				goto done;
+			}
 		}
 
 		/* lookup with * (tag user * @ domain) */
@@ -510,6 +522,10 @@ sm_map_lookup_addr(sm_map_P map, sm_str_P user, sm_str_P detail, sm_str_P domain
 				}
 				goto done;
 			}
+			if (sm_error_perm(SM_EM_MAP, SM_E_NOMORE) == ret) {
+				ret = sm_error_perm(SM_EM_MAP, SM_E_NOTFOUND);
+				goto done;
+			}
 		}
 
 		/*
@@ -561,6 +577,10 @@ sm_map_lookup_addr(sm_map_P map, sm_str_P user, sm_str_P detail, sm_str_P domain
 				}
 				goto done;
 			}
+			if (sm_error_perm(SM_EM_MAP, SM_E_NOMORE) == ret) {
+				ret = sm_error_perm(SM_EM_MAP, SM_E_NOTFOUND);
+				goto done;
+			}
 		}
 
 /*
@@ -608,6 +628,10 @@ sm_map_lookup_addr(sm_map_P map, sm_str_P user, sm_str_P detail, sm_str_P domain
 				}
 				goto done;
 			}
+			if (sm_error_perm(SM_EM_MAP, SM_E_NOMORE) == ret) {
+				ret = sm_error_perm(SM_EM_MAP, SM_E_NOTFOUND);
+				goto done;
+			}
 		}
 
 		if (domain != NULL && SMMAP_IS_LFL(flags, SMMAP_LFL_DOTSUBDOM)) {
@@ -656,6 +680,10 @@ sm_map_lookup_addr(sm_map_P map, sm_str_P user, sm_str_P detail, sm_str_P domain
 				goto done;
 			if (SM_SUCCESS == ret)
 				goto done;
+			if (sm_error_perm(SM_EM_MAP, SM_E_NOMORE) == ret) {
+				ret = sm_error_perm(SM_EM_MAP, SM_E_NOTFOUND);
+				goto done;
+			}
 		}
 
 		/* lookup with ++ (tag user delim +)*/
@@ -692,6 +720,10 @@ sm_map_lookup_addr(sm_map_P map, sm_str_P user, sm_str_P detail, sm_str_P domain
 				}
 				goto done;
 			}
+			if (sm_error_perm(SM_EM_MAP, SM_E_NOMORE) == ret) {
+				ret = sm_error_perm(SM_EM_MAP, SM_E_NOTFOUND);
+				goto done;
+			}
 		}
 
 		/* lookup with +* (tag user delim *) */
@@ -727,6 +759,10 @@ sm_map_lookup_addr(sm_map_P map, sm_str_P user, sm_str_P detail, sm_str_P domain
 				}
 				goto done;
 			}
+			if (sm_error_perm(SM_EM_MAP, SM_E_NOMORE) == ret) {
+				ret = sm_error_perm(SM_EM_MAP, SM_E_NOTFOUND);
+				goto done;
+			}
 		}
 
 		/* lookup with * (tag user *) */
@@ -762,6 +798,10 @@ sm_map_lookup_addr(sm_map_P map, sm_str_P user, sm_str_P detail, sm_str_P domain
 				}
 				goto done;
 			}
+			if (sm_error_perm(SM_EM_MAP, SM_E_NOMORE) == ret) {
+				ret = sm_error_perm(SM_EM_MAP, SM_E_NOTFOUND);
+				goto done;
+			}
 		}
 
 
@@ -803,6 +843,10 @@ sm_map_lookup_addr(sm_map_P map, sm_str_P user, sm_str_P detail, sm_str_P domain
 				}
 				goto done;
 			}
+			if (sm_error_perm(SM_EM_MAP, SM_E_NOMORE) == ret) {
+				ret = sm_error_perm(SM_EM_MAP, SM_E_NOTFOUND);
+				goto done;
+			}
 		}
 	}
 
diff --git a/libsmmap/mapcnfopen.c b/libsmmap/mapcnfopen.c
new file mode 100644
index 0000000..b57221d
--- /dev/null
+++ b/libsmmap/mapcnfopen.c
@@ -0,0 +1,134 @@
+/*
+ */
+
+#include "sm/generic.h"
+SM_RCSID("@(#)$Id: mapcnfopen.c,v 1.1 2009/07/03 04:47:35 ca Exp $")
+
+#include "sm/error.h"
+#include "sm/string.h"
+#include "sm/net.h"
+#include "sm/memops.h"
+#include "sm/maps.h"
+#include "sm/mapc.h"
+#include "sm/map.h"
+#include "map.h"
+#include "sm/sm-conf.h"
+#include "sm/mapcnf.h"
+#include "sm/mapconf.h"
+#include "sm/confsetpath.h"
+
+/*
+**  SM_MAPCNFOPEN -- open a map
+**
+**	Parameters:
+**		mapdef -- map configuration
+**		maps -- map system context
+**		confdir -- directory of configuration file (for relative paths)
+**		md_maps -- map declaration
+**
+**	Returns:
+**		usual sm_error code
+*/
+
+sm_ret_T
+sm_mapcnfopen(map_decl_P mapdef, sm_maps_P maps, const char *confdir, mapspec_P md_maps)
+{
+	uint i;
+	sm_ret_T ret;
+	sm_map_P map;
+	sm_cstr_P mtype, mname, sname;
+
+	SM_REQUIRE(mapdef != NULL);
+	SM_REQUIRE(maps != NULL);
+	mtype = mname = sname = NULL;
+	mtype = sm_cstr_scpyn0((const uchar *)md_maps->mst_type,
+			strlen(md_maps->mst_type));
+	ret = sm_error_temp(SM_EM_MAP, ENOMEM);
+	if (NULL == mtype)
+		goto error;
+	mname = sm_cstr_scpyn0((const uchar *)md_maps->mst_name,
+			strlen(md_maps->mst_name));
+	if (NULL == mname)
+		goto error;
+	map = NULL;
+	ret = sm_map_create(maps, mtype, 0, &map);
+	if (sm_is_err(ret))
+		goto error;
+
+	switch (md_maps->mst_kind) {
+	  case MST_HASH:
+		if (md_maps->mst_hash.mst_hash_fn == NULL ||
+		    *md_maps->mst_hash.mst_hash_fn == '\0')
+		{
+			ret = sm_error_temp(SM_EM_MAP, EINVAL);
+			goto error;
+		}
+		else {
+			const char *mpath;
+
+			SM_GEN_MAP_PATH(mpath,
+				md_maps->mst_hash.mst_hash_path,
+				confdir, md_maps->mst_hash.mst_hash_fn,
+				NULL, error);
+			ret = sm_map_open(maps, mname, mtype, 0, mpath,
+				SMAP_MODE_RDONLY, &map, SMPO_END);
+		}
+		break;
+
+	  case MST_PASSWD:
+		ret = sm_map_open(maps, mname, mtype, 0, NULL,
+			SMAP_MODE_RDONLY, &map, SMPO_END);
+		break;
+
+	  case MST_SOCKET:
+		ret = sm_map_open(maps, mname, mtype, 0,
+			md_maps->mst_socket.mst_socket_mapname,
+			SMAP_MODE_RDONLY, &map,
+			SMPO_SOCKPATH, md_maps->mst_socket.mst_socket_path,
+			SMPO_PORT, md_maps->mst_socket.mst_socket_port,
+			SMPO_IPV4, md_maps->mst_socket.mst_socket_ipv4,
+			SMPO_END);
+		break;
+
+	  case MST_SEQUENCE:
+		ret = SM_SUCCESS;
+		for (i = 0;
+		     md_maps->mst_seq.mst_seq_maps[i] != NULL && ret == SM_SUCCESS;
+		     i++)
+		{
+			char *mn;
+
+			mn = md_maps->mst_seq.mst_seq_maps[i];
+			sname = sm_cstr_scpyn0((const uchar *)mn, strlen(mn));
+			if (NULL == sname) {
+				ret = sm_error_temp(SM_EM_MAP, ENOMEM);
+				goto error;
+			}
+			ret = sm_map_setopt(map, SMPO_MAPNAME, sname, SMPO_END);
+			SM_CSTR_FREE(sname);
+		}
+		if (sm_is_err(ret))
+			break;
+		ret = sm_map_open(maps, mname, mtype, 0, NULL, SMAP_MODE_RDONLY,
+				&map, SMPO_END);
+		break;
+
+	  default:
+		ret = sm_error_perm(SM_EM_MAP, EINVAL);
+		break;
+	}
+	if (sm_is_err(ret))
+		goto error;
+	SM_CSTR_FREE(mtype);
+	SM_CSTR_FREE(mname);
+	ret = sm_mapname_add(maps, map);
+	if (sm_is_err(ret))
+		goto error;
+	return SM_SUCCESS;
+
+  error:
+	SM_CSTR_FREE(mtype);
+	SM_CSTR_FREE(mname);
+	SM_CSTR_FREE(sname);
+	return ret;
+}
diff --git a/libsmmap/mapconffind.c b/libsmmap/mapconffind.c
new file mode 100644
index 0000000..d86b0fb
--- /dev/null
+++ b/libsmmap/mapconffind.c
@@ -0,0 +1,44 @@
+/*
+ */
+
+#include "sm/generic.h"
+SM_RCSID("@(#)$Id: mapconffind.c,v 1.1 2009/07/03 04:47:35 ca Exp $")
+
+#include "sm/error.h"
+#include "sm/string.h"
+#include "sm/net.h"
+#include "sm/maps.h"
+#include "sm/mapc.h"
+#include "sm/map.h"
+#include "map.h"
+#include "sm/sm-conf.h"
+#include "sm/mapcnf.h"
+#include "sm/mapconf.h"
+
+/*
+**  SM_MAPCONFFIND -- find a map by name (in list of map declarations)
+**
+**	Parameters:
+**		mapdef -- map configuration
+**		map_name -- name of map
+**
+**	Returns:
+**		pointer to map specification
+*/
+
+mapspec_P
+sm_mapconffind(map_decl_P mapdef, const char *map_name)
+{
+	uint n;
+	mapspec_P md_maps;
+
+	SM_REQUIRE(mapdef != NULL);
+	for (n = 0; n < mapdef->mapdecl_n; n++) {
+		md_maps = mapdef->mapdecl_maps + n;
+		if (NULL == md_maps)
+			continue;
+		if (strcmp(md_maps->mst_name, map_name) == 0)
+			return md_maps;
+	}
+	return NULL;
+}
diff --git a/libsmmap/mapconfopen.c b/libsmmap/mapconfopen.c
index 9f7cbf9..8216a68 100644
--- a/libsmmap/mapconfopen.c
+++ b/libsmmap/mapconfopen.c
@@ -8,7 +8,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: mapconfopen.c,v 1.12 2007/01/11 17:51:20 ca Exp $")
+SM_RCSID("@(#)$Id: mapconfopen.c,v 1.13 2009/07/03 04:47:35 ca Exp $")
 
 #include "sm/error.h"
 #include "sm/string.h"
@@ -38,111 +38,22 @@ SM_RCSID("@(#)$Id: mapconfopen.c,v 1.12 2007/01/11 17:51:20 ca Exp $")
 sm_ret_T
 sm_mapconfopen(map_decl_P mapdef, sm_maps_P maps, const char *confdir)
 {
-	uint n, i;
+	uint n;
 	sm_ret_T ret;
 	mapspec_P md_maps;
-	sm_map_P map;
-	sm_cstr_P mtype, mname, sname;
 
 	SM_REQUIRE(mapdef != NULL);
 	SM_REQUIRE(maps != NULL);
-	mtype = mname = sname = NULL;
 	for (n = 0; n < mapdef->mapdecl_n; n++) {
 		md_maps = mapdef->mapdecl_maps + n;
 		if (NULL == md_maps)
 			continue;
-		mname = NULL;
-		mtype = sm_cstr_scpyn0((const uchar *)md_maps->mst_type,
-				strlen(md_maps->mst_type));
-		ret = sm_error_temp(SM_EM_MAP, ENOMEM);
-		if (NULL == mtype)
-			goto error;
-		mname = sm_cstr_scpyn0((const uchar *)md_maps->mst_name,
-				strlen(md_maps->mst_name));
-		if (NULL == mname)
-			goto error;
-		map = NULL;
-		ret = sm_map_create(maps, mtype, 0, &map);
-		if (sm_is_err(ret))
-			goto error;
-
-		switch (md_maps->mst_kind) {
-		  case MST_HASH:
-			if (md_maps->mst_hash.mst_hash_fn == NULL ||
-			    *md_maps->mst_hash.mst_hash_fn == '\0')
-			{
-				ret = sm_error_temp(SM_EM_MAP, EINVAL);
-				goto error;
-			}
-			else {
-				const char *mpath;
-
-				SM_GEN_MAP_PATH(mpath,
-					md_maps->mst_hash.mst_hash_path,
-					confdir, md_maps->mst_hash.mst_hash_fn,
-					NULL, error);
-				ret = sm_map_open(maps, mname, mtype, 0, mpath,
-					SMAP_MODE_RDONLY, &map, SMPO_END);
-			}
-			break;
-
-		  case MST_PASSWD:
-			ret = sm_map_open(maps, mname, mtype, 0, NULL,
-				SMAP_MODE_RDONLY, &map, SMPO_END);
-			break;
-
-		  case MST_SOCKET:
-			ret = sm_map_open(maps, mname, mtype, 0,
-				md_maps->mst_socket.mst_socket_mapname,
-				SMAP_MODE_RDONLY, &map,
-				SMPO_SOCKPATH,
-					md_maps->mst_socket.mst_socket_path,
-				SMPO_PORT, md_maps->mst_socket.mst_socket_port,
-				SMPO_IPV4, md_maps->mst_socket.mst_socket_ipv4,
-				SMPO_END);
-			break;
-
-		  case MST_SEQUENCE:
-			ret = SM_SUCCESS;
-			for (i = 0;
-			     md_maps->mst_seq.mst_seq_maps[i] != NULL && ret == SM_SUCCESS;
-			     i++)
-			{
-				char *mn;
-
-				mn = md_maps->mst_seq.mst_seq_maps[i];
-				sname = sm_cstr_scpyn0((const uchar *)mn,
-						strlen(mn));
-				if (NULL == sname) {
-					ret = sm_error_temp(SM_EM_MAP, ENOMEM);
-					goto error;
-				}
-				ret = sm_map_setopt(map, SMPO_MAPNAME, sname, SMPO_END);
-				SM_CSTR_FREE(sname);
-			}
-			if (sm_is_err(ret))
-				break;
-			ret = sm_map_open(maps, mname, mtype, 0, NULL, SMAP_MODE_RDONLY,
-					&map, SMPO_END);
-			break;
-
-		  default:
-			ret = sm_error_perm(SM_EM_MAP, EINVAL);
-			break;
-		}
-		if (sm_is_err(ret))
-			goto error;
-		SM_CSTR_FREE(mtype);
-		SM_CSTR_FREE(mname);
-		ret = sm_mapname_add(maps, map);
+		ret = sm_mapcnfopen(mapdef, maps, confdir, md_maps);
 		if (sm_is_err(ret))
 			goto error;
 	}
 	return SM_SUCCESS;
 
   error:
-	SM_CSTR_FREE(mtype);
-	SM_CSTR_FREE(mname);
-	SM_CSTR_FREE(sname);
 	return ret;
 }
diff --git a/libsmmap/mapopt.c b/libsmmap/mapopt.c
index db918b7..3acaf6f 100644
--- a/libsmmap/mapopt.c
+++ b/libsmmap/mapopt.c
@@ -8,7 +8,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: mapopt.c,v 1.10 2006/05/02 17:13:41 ca Exp $")
+SM_RCSID("@(#)$Id: mapopt.c,v 1.12 2009/08/15 15:29:20 ca Exp $")
 
 #include "sm/assert.h"
 #include "sm/error.h"
@@ -41,33 +41,39 @@ sm_map_setopt(sm_map_P map, ...)
 	SM_IS_MAPC(mapc);
 	sm_memzero(&map->sm_map_opts, sizeof(map->sm_map_opts));
 	va_start(ap, map);
-	for (i = 0; i < SM_MAP_MAX_OPT; i++)
-	{
+	i = 0;
+	while (i < SM_MAP_MAX_OPT) {
 		opttype = va_arg(ap, int);
-		map->sm_map_opts[i].sm_map_opt_type = opttype;
 		if (opttype == SMPO_END)
 			break;
-		switch (SMPO_GET_TYPE(opttype))
-		{
+		if (SMPO_SET_FLAGS == opttype) {
+			mapc->sm_mapc_flags |= va_arg(ap, int);
+			continue;
+		}
+		if (SMPO_CLR_FLAGS == opttype) {
+			mapc->sm_mapc_flags &= ~(va_arg(ap, int));
+			continue;
+		}
+		map->sm_map_opts[i].sm_map_opt_type = opttype;
+		switch (SMPO_GET_TYPE(opttype)) {
 		  case SMPO_INT:
 			map->sm_map_opts[i].sm_map_opt_int = va_arg(ap, int);
 			break;
 		  case SMPO_PTR:
-			map->sm_map_opts[i].sm_map_opt_ptr = va_arg(ap,
-								void *);
+			map->sm_map_opts[i].sm_map_opt_ptr = va_arg(ap, void *);
 			break;
 		  default:
 			/* crash and burn */
 			SM_ASSERT(opttype == SMPO_END);
 			break;
 		}
+		++i;
 	}
 	va_end(ap);
 	if (i >= SM_MAP_MAX_OPT)
 		return sm_error_perm(SM_EM_MAP, SM_E_FULL);
 
-	if (mapc->sm_mapc_setoptf != NULL)
-	{
+	if (mapc->sm_mapc_setoptf != NULL) {
 		va_start(ap, map);
 		ret = mapc->sm_mapc_setoptf(map, ap);
 		va_end(ap);
@@ -98,8 +104,7 @@ sm_map_setoneopt(sm_map_P map, ...)
 	SM_IS_MAP(map);
 	mapc = map->sm_map_class;
 	SM_IS_MAPC(mapc);
-	if (mapc->sm_mapc_setoptf != NULL)
-	{
+	if (mapc->sm_mapc_setoptf != NULL) {
 		va_start(ap, map);
 		ret = mapc->sm_mapc_setoptf(map, ap);
 		va_end(ap);
@@ -130,10 +135,8 @@ sm_map_setopts(sm_map_P map)
 	mapc = map->sm_map_class;
 	SM_IS_MAPC(mapc);
 	ret = SM_SUCCESS;
-	if (mapc->sm_mapc_setoptf != NULL)
-	{
-		for (i = 0; i < SM_MAP_MAX_OPT; i++)
-		{
+	if (mapc->sm_mapc_setoptf != NULL) {
+		for (i = 0; i < SM_MAP_MAX_OPT; i++) {
 			opttype = map->sm_map_opts[i].sm_map_opt_type;
 			if (opttype == SMPO_END)
 				break;
@@ -183,7 +186,11 @@ sm_map_getopt(sm_map_P map, int which, void *valp)
 	SM_IS_MAP(map);
 	mapc = map->sm_map_class;
 	SM_IS_MAPC(mapc);
-	if (mapc->sm_mapc_getoptf != NULL)
+	if (SMPO_SET_FLAGS == which) {
+			*((int *)valp) = mapc->sm_mapc_flags;
+			ret = SM_SUCCESS;
+	}
+	else if (mapc->sm_mapc_getoptf != NULL)
 		ret = mapc->sm_mapc_getoptf(map, which, valp);
 	else
 		ret = sm_error_perm(SM_EM_MAP, EINVAL);	/* XXX */
diff --git a/libsmmap/sequence.c b/libsmmap/sequence.c
index 3f7abf8..1ce890c 100644
--- a/libsmmap/sequence.c
+++ b/libsmmap/sequence.c
@@ -8,7 +8,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: sequence.c,v 1.16 2007/01/22 17:25:06 ca Exp $")
+SM_RCSID("@(#)$Id: sequence.c,v 1.20 2009/07/05 21:06:14 ca Exp $")
 
 #include "sm/assert.h"
 #include "sm/error.h"
@@ -29,6 +29,7 @@ struct sm_seqmap_S
 	char		*seqmap_name;
 	uint		 seqmap_nmaps;
 	sm_map_P	 seqmap_maps[SEQMAP_MAX];
+	sm_cstr_P	 seqmap_mapname[SEQMAP_MAX];
 };
 
 /* static sm_map_open_F	 sm_seq_open; */
@@ -116,35 +117,28 @@ sm_seq_setopt(sm_map_P map, va_list ap)
 		if (SMPO_END == k)
 			break;
 
-		switch (k) {
-		  case SMPO_MAP:
-			if (db->seqmap_nmaps >= SM_ARRAY_SIZE(db->seqmap_maps)) {
-				ret = sm_error_perm(SM_EM_MAP, E2BIG);
-				goto error;
-			}
-			maph = va_arg(ap, sm_map_P);
-			SM_IS_MAP(maph);
-			db->seqmap_maps[db->seqmap_nmaps++] = maph;
+		/* silently ignore bogus options? */
+		if (k != SMPO_MAP && k != SMPO_MAPNAME)
 			break;
 
-		  case SMPO_MAPNAME:
-			if (db->seqmap_nmaps >= SM_ARRAY_SIZE(db->seqmap_maps)) {
-				ret = sm_error_perm(SM_EM_MAP, E2BIG);
-				goto error;
-			}
+		if (db->seqmap_nmaps >= SM_ARRAY_SIZE(db->seqmap_maps)) {
+			ret = sm_error_perm(SM_EM_MAP, E2BIG);
+			goto error;
+		}
+
+		if (SMPO_MAPNAME == k) {
 			map_name = va_arg(ap, sm_cstr_P);
-			ret = sm_mapname_find(mapc->sm_mapc_maps, map_name,
-					&maph);
+			ret = sm_mapname_find(mapc->sm_mapc_maps, map_name, &maph);
 			if (sm_is_err(ret))
 				goto error;
+		}
+		else {
+			maph = va_arg(ap, sm_map_P);
 			SM_IS_MAP(maph);
-			db->seqmap_maps[db->seqmap_nmaps++] = maph;
-			break;
-
-		  default:
-			/* silently ignore bogus options? */
-			break;
+			map_name = NULL;
 		}
+		db->seqmap_mapname[db->seqmap_nmaps] = map_name;
+		db->seqmap_maps[db->seqmap_nmaps++] = maph;
 	}
 
   error:
@@ -164,6 +158,7 @@ sm_seq_setopt(sm_map_P map, va_list ap)
 **		usual sm_error code
 */
 
+/* ARGSUSED1 */
 static sm_ret_T
 sm_seq_getopt(sm_map_P map, int which, void *valp)
 {
@@ -192,6 +187,7 @@ sm_seq_getopt(sm_map_P map, int which, void *valp)
 **		usual sm_error code
 */
 
+/* ARGSUSED1 */
 static sm_ret_T
 sm_seq_close(sm_map_P map, uint32_t flags)
 {
@@ -228,6 +224,7 @@ sm_seq_close(sm_map_P map, uint32_t flags)
 **		usual sm_error code
 */
 
+/* ARGSUSED1 */
 static sm_ret_T
 sm_seq_destroy(sm_map_P map, uint32_t flags)
 {
@@ -287,7 +284,6 @@ sm_seq_create(sm_mapc_P mapc, const sm_cstr_P type, uint32_t flags, sm_map_P map
 
 /*
 **  SM_SEQ_OPEN -- open map
-**	Note: this currently requires that all maps are already open!
 **
 **	Parameters:
 **		mapc -- map context
@@ -302,6 +298,7 @@ sm_seq_create(sm_mapc_P mapc, const sm_cstr_P type, uint32_t flags, sm_map_P map
 **		usual sm_error code
 */
 
+/* ARGSUSED1 */
 static sm_ret_T
 sm_seq_open(sm_mapc_P mapc, const sm_cstr_P type, uint32_t flags, const char *path, int mode, sm_map_P map, va_list ap)
 {
@@ -325,23 +322,82 @@ sm_seq_open(sm_mapc_P mapc, const sm_cstr_P type, uint32_t flags, const char *pa
 		if (db->seqmap_maps[i] == NULL)
 			return sm_error_perm(SM_EM_MAP, EINVAL);
 		/* other checks? */
+
 #if 0
-		ret = sm_map_open(maps, NULL, NULL, 0, NULL, mode,
-				&db->seqmap_maps[i]);
-#endif /* 0 */
+	mapspec_P md_maps;
+
+	md_maps = sm_mapconffind(&s, db->seqmap_mapname[db->seqmap_nmaps]);
+	if (md_maps != NULL) {
+
+	/*
+	 * need to create map, set options, and then open it
+	 * do we have all that information?
+	 * see sm_mapconfopen(): extract the inner loop into a function
+	 * and invoke that?
+	 */
+ret = sm_map_create(maps, mtype, 0, &map);
+ret = sm_map_setopt(map, SMPO_HASH_NELEM, 23, SMPO_MAX_ELEM, 51, SMPO_END);
+ret = sm_map_open(maps, mname, mtype, 0, NULL, SMAP_MODE_RDWR, &map, SMPO_END);
+
+		ret = sm_map_open(mapc->sm_mapc_maps, NULL, NULL, 0, NULL, mode,
+					&db->seqmap_maps[i]);
+		if (sm_is_err(ret))
+			goto error;
+#endif
 	}
 	return ret;
 
 #if 0
   error:
-	if (db != NULL) {
-		(void) db->close(db, 0);
-		db = NULL;
+	/* cleanup? */
+	return ret;
+#endif
+}
+
+/*
+**  SM_SEQ_REOPEN -- reopen map
+**
+**	Parameters:
+**		map -- map
+**		flags -- flags for map
+**
+**	Returns:
+**		usual sm_error code
+*/
+
+static sm_ret_T
+sm_seq_reopen(sm_map_P map, uint32_t flags)
+{
+	sm_ret_T ret;
+	sm_seqmap_P db;
+	uint i;
+
+	SM_REQUIRE(map != NULL);
+	ret = SM_SUCCESS;
+
+	db = map->sm_map_db;
+	if (NULL == db)
+		return sm_error_perm(SM_EM_MAP, ENOENT);
+
+	if (db->seqmap_nmaps <= 0)
+		return sm_error_perm(SM_EM_MAP, EINVAL);
+
+	/* reopen all maps ... */
+	for (i = 0; i < db->seqmap_nmaps; i++) {
+		if (db->seqmap_maps[i] == NULL)
+			return sm_error_perm(SM_EM_MAP, EINVAL);
+		ret = sm_map_reopen(db->seqmap_maps[i], flags, SMPO_END); 
+		if (sm_is_err(ret))
+			goto error;
 	}
 	return ret;
-#endif /* 0 */
+
+  error:
+	/* cleanup? */
+	return ret;
 }
 
+
 /*
 **  SM_SEQ_LOOKUP -- lookup a key in SEQ, return data if found
 **
@@ -386,8 +442,8 @@ sm_seq_lookup(sm_map_P map, uint32_t flags, sm_map_key_P key, sm_map_data_P data
 		if (NULL == maph)
 			return sm_error_perm(SM_EM_MAP, EINVAL);
 		ret = sm_map_lookup(maph, flags, key, data);
-		if (SM_SUCCESS == ret)
-			break;
+		if (SM_SUCCESS == ret || SM_E_NOMORE == ret) 
+			return ret;
 		if (sm_is_err(ret) && sm_is_temp_err(ret))
 			tempfail = ret;
 	}
@@ -464,7 +520,7 @@ sm_seq_rm(sm_map_P map, sm_map_key_P key)
 	if (NULL == db)
 		return sm_error_perm(SM_EM_MAP, ENOENT);	/* XXX */
 
-	/* XXX add to which map? one? first writable? all? */
+	/* XXX remove from which map? one? first writable? all? */
 
 	return ret;
 }
@@ -498,12 +554,12 @@ sm_seq_class_create(sm_maps_P maps)
 	ret = sm_mapc_create(maps, type,
 			/* locking flags??? */
 			SMMAPC_FL_ALLOC_K|SMMAPC_FL_ALLOC_D|
-			SMMAPC_FL_FREE_K| SMMAPC_FL_FREE_D|
-			SMMAPC_FL_GEN_REOPEN,
+			SMMAPC_FL_FREE_K| SMMAPC_FL_FREE_D
+			/*|SMMAPC_FL_GEN_REOPEN*/,
 			sm_seq_create,
 			sm_seq_open,
 			sm_seq_close,
-			NULL,
+			sm_seq_reopen,
 			sm_seq_destroy,
 			NULL /*sm_seq_add*/,
 			NULL /*sm_seq_rm*/,
diff --git a/libsmmap/sockmapimpl.c b/libsmmap/sockmapimpl.c
index 38ee1a0..8aef41f 100644
--- a/libsmmap/sockmapimpl.c
+++ b/libsmmap/sockmapimpl.c
@@ -8,7 +8,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: sockmapimpl.c,v 1.15 2008/02/10 04:54:39 ca Exp $")
+SM_RCSID("@(#)$Id: sockmapimpl.c,v 1.16 2009/07/05 21:06:14 ca Exp $")
 
 #include "sm/assert.h"
 #include "sm/error.h"
@@ -270,6 +270,9 @@ sockmap_lookup(sm_sockmap_P map, sm_str_P key, sm_str_P data)
 	else if (sm_streq(status, "NOTFOUND")) {
 		return sm_error_perm(SM_EM_MAP, SM_E_NOTFOUND);
 	}
+	else if (sm_streq(status, "NOMORE")) {
+		return sm_error_perm(SM_EM_MAP, SM_E_NOMORE);
+	} 
 	else {
 		if (sm_streq(status, "TEMP") || sm_streq(status, "TIMEOUT"))
 			ret = sm_error_temp(SM_EM_MAP, SM_E_TEMPMAP);
diff --git a/libsmmap/t-conf-0.c b/libsmmap/t-conf-0.c
index df680a8..d9b3125 100644
--- a/libsmmap/t-conf-0.c
+++ b/libsmmap/t-conf-0.c
@@ -8,7 +8,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: t-conf-0.c,v 1.14 2005/07/11 02:42:02 ca Exp $")
+SM_RCSID("@(#)$Id: t-conf-0.c,v 1.17 2009/06/26 04:31:41 ca Exp $")
 
 #include "sm/error.h"
 #include "sm/sysexits.h"
@@ -31,7 +31,6 @@ SM_RCSID("@(#)$Id: t-conf-0.c,v 1.14 2005/07/11 02:42:02 ca Exp $")
 **  test program: maps and libconf.
 */
 
-
 static sm_ret_T
 mapsetup(map_decl_P mapdef, sm_maps_P *pmaps)
 {
@@ -98,8 +97,7 @@ maplookup(FILE *fp, sm_maps_P maps, const char *mapname, const char *lookup, sm_
 					flags, rhs);
 	else
 		ret = sm_map_lookup(map, SMMAP_FL_NONE, lhs, rhs);
-	if (sm_is_err(ret))
-	{
+	if (sm_is_err(ret)) {
 		if (ret == sm_error_perm(SM_EM_MAP, SM_E_NOTFOUND))
 			fprintf(fp, "notfound\n");
 		goto error;
@@ -120,22 +118,16 @@ mapprtcnf(FILE *fp, map_decl_P mapdef)
 	mapspec_P	md_maps;
 	uint	n, i;
 
-	if (mapdef == NULL)
-	{
+	if (mapdef == NULL) {
 		fprintf(fp, "map == NULL\n");
 		return -1;
 	}
-	for (n = 0; n < mapdef->mapdecl_n; n++)
-	{
+	for (n = 0; n < mapdef->mapdecl_n; n++) {
 		md_maps = mapdef->mapdecl_maps + n;
-		if (md_maps == NULL)
-		{
+		if (md_maps == NULL) {
 			fprintf(fp, "mapdef[%d] == NULL\n", n);
 			continue;
 		}
-#if 0
-		fprintf(fp, "map = %p\n", md_maps);
-#endif
 		fprintf(fp, "map = %u\n", n);
 		fprintf(fp, "kind= %d\n", md_maps->mst_kind);
 		fprintf(fp, "type= %s\n", md_maps->mst_type);
@@ -149,13 +141,10 @@ mapprtcnf(FILE *fp, map_decl_P mapdef)
 		  case MST_SOCKET:
 			fprintf(fp, "mapname= %s\n",
 				md_maps->mst_socket.mst_socket_mapname);
-			if (md_maps->mst_socket.mst_socket_path != NULL)
-			{
-				fprintf(fp, "path= %s\n",
-					md_maps->mst_socket.mst_socket_path);
+			if (md_maps->mst_socket.mst_socket_path != NULL) {
+				fprintf(fp, "path= %s\n", md_maps->mst_socket.mst_socket_path);
 			}
-			else
-			{
+			else {
 				fprintf(fp, "ipv4= %x\n",
 					(int) htonl(md_maps->mst_socket.mst_socket_ipv4));
 				fprintf(fp, "port= %d\n",
@@ -163,8 +152,7 @@ mapprtcnf(FILE *fp, map_decl_P mapdef)
 			}
 			break;
 		  case MST_SEQUENCE:
-			for (i = 0; md_maps->mst_seq.mst_seq_maps[i] != NULL; i++)
-			{
+			for (i = 0; md_maps->mst_seq.mst_seq_maps[i] != NULL; i++) {
 				fprintf(fp, "maps[%u]= %s\n", i,
 					md_maps->mst_seq.mst_seq_maps[i]);
 			}
@@ -178,30 +166,22 @@ mapprtcnf(FILE *fp, map_decl_P mapdef)
 }
 
 static int
-process(char const *name, FILE *fp, int show, const char *mapname, const char *lookup, sm_str_P detail, uchar delim, uint32_t flags)
+process(char const *name, FILE *fp, const char *mapname, const char *lookup, sm_str_P detail, uchar delim, uint32_t flags)
 {
 	sm_conf_T		*stream;
 	int			err;
 	sm_ret_T ret;
-#if 0
-	char const *service_name;
-	size_t service_name_n;
-	sm_conf_iterator_T service_iter;
-#endif /* 0 */
 	char const *e = NULL;
 	sm_maps_P maps;
 	map_decl_T s;
 	char buf[SM_CONF_ERROR_BUFFER_SIZE];
 
-	if (((stream = sm_conf_new(name ? name : "*stdin*"))) == NULL)
-	{
+	if (((stream = sm_conf_new(name ? name : "*stdin*"))) == NULL) {
 		fprintf(stderr, "error -- sm_conf_new() returns NULL!\n");
 		return 1;
 	}
-	if ((err = sm_conf_read_FILE(stream, name, fp)) != 0)
-	{
-		fprintf(stderr, "%s: %s\n",
-			name ? name : "*stdin*",
+	if ((err = sm_conf_read_FILE(stream, name, fp)) != 0) {
+		fprintf(stderr, "%s: %s\n", name ? name : "*stdin*",
 			sm_conf_strerror(err, buf, sizeof buf));
 
 		while ((e = sm_conf_syntax_error(stream, e)) != NULL)
@@ -212,8 +192,7 @@ process(char const *name, FILE *fp, int show, const char *mapname, const char *l
 	}
 
 	sm_memzero(&s, sizeof(s));
-	if ((err = sm_conf_scan(stream, maps_spec_defs, 0, &s)) != 0)
-	{
+	if ((err = sm_conf_scan(stream, maps_spec_defs, 0, &s)) != 0) {
 
 		fprintf(stderr, "(while scanning) %s: %s\n",
 			name ? name : "*stdin*",
@@ -226,26 +205,38 @@ process(char const *name, FILE *fp, int show, const char *mapname, const char *l
 		return 3;
 	}
 
-	if (lookup == NULL || mapname == NULL)
+	if (lookup == NULL && mapname != NULL) {
+		mapspec_P md_maps;
+
+		maps = NULL;
+		ret = mapsetup(&s, &maps);
+		if (sm_is_err(ret))
+			goto error;
+		if (maps == NULL)
+			goto error;
+		md_maps = sm_mapconffind(&s, mapname);
+		if (md_maps != NULL) {
+			fprintf(stdout, "kind= %d\n", md_maps->mst_kind);
+			fprintf(stdout, "type= %s\n", md_maps->mst_type);
+			fprintf(stdout, "name= %s\n", md_maps->mst_name);
+		}
+		else
+			goto error;
+	}
+	else if (lookup == NULL || mapname == NULL)
 		mapprtcnf(stdout, &s);
-	else
-	{
+	else {
 		maps = NULL;
 		ret = mapsetup(&s, &maps);
 		if (sm_is_err(ret))
 			goto error;
 		if (maps == NULL)
 			goto error;
-		ret = maplookup(stdout, maps, mapname, lookup, detail, delim,
-				flags);
+		ret = maplookup(stdout, maps, mapname, lookup, detail, delim, flags);
 		if (sm_is_err(ret))
 			goto error;
 	}
 
-#if 0
-	sm_conf_destroy(stream);
-#endif /* 0 */
-
 	return 0;
 
   error:
@@ -280,10 +271,8 @@ main(int argc, char **argv)
 	detail = NULL;
 	delim = '+';
 	flags = 0;
-	while ((c = getopt(argc, argv, "?D:d:F:f:hl:m:")) != -1)
-	{
-		switch (c)
-		{
+	while ((c = getopt(argc, argv, "?D:d:F:f:hl:m:")) != -1) {
+		switch (c) {
 		  case 'D':
 			detail = sm_str_scpy0(NULL, optarg, 64);
 			break;
@@ -294,8 +283,7 @@ main(int argc, char **argv)
 			flags = strtoul(optarg, NULL, 0);
 			break;
 		  case 'f':
-			ret = process(optarg, NULL, 0, mapname, lookup,
-				detail, delim, flags);
+			ret = process(optarg, NULL, mapname, lookup, detail, delim, flags);
 			if (ret != 0)
 				return ret;
 			break;
@@ -320,17 +308,14 @@ main(int argc, char **argv)
 	argv += optind;
 
 	if (argc == 0)
-		return process("*stdin*", stdin, 1, mapname, lookup,
-				detail, delim, flags);
+		return process("*stdin*", stdin, mapname, lookup, detail, delim, flags);
 
-	for (ai = 0; ai < argc; ai++)
-	{
-		int ret;
+	for (ai = 0; ai < argc; ai++) {
+		int rv;
 
-		ret = process(argv[ai], NULL, 1, mapname, lookup,
-				detail, delim, flags);
-		if (ret != 0)
-			return ret;
+		rv = process(argv[ai], NULL, mapname, lookup, detail, delim, flags);
+		if (rv != 0)
+			return rv;
 	}
 	return 0;
 }
diff --git a/libsmmap/t-conf-0.sh b/libsmmap/t-conf-0.sh
index 53af05d..a5bddd5 100755
--- a/libsmmap/t-conf-0.sh
+++ b/libsmmap/t-conf-0.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# $Id: t-conf-0.sh,v 1.13 2006/10/05 01:40:12 ca Exp $
+# $Id: t-conf-0.sh,v 1.14 2009/07/03 04:47:35 ca Exp $
 # Copyright (c) 2004 Sendmail, Inc. and its suppliers.
 #	All rights reserved.
 #
@@ -72,6 +72,26 @@ else
   test X"${MTA_STOPONERROR}" != X && exit ${ERRS}
 fi
 
+# set +x
+# cat > ${OK} <<EOF
+# kind= 1
+# type= hash
+# name= hash1
+# EOF
+# if ${PRG} -m hash1 ${CNF} >${OUT}
+# then
+#   if diff ${OK} ${OUT}
+#   then
+#     :
+#   else
+#     ERRS=`expr ${ERRS} + 1 `
+#     test X"${MTA_STOPONERROR}" != X && exit ${ERRS}
+#   fi
+# else
+#   ERRS=`expr ${ERRS} + 1 `
+#   test X"${MTA_STOPONERROR}" != X && exit ${ERRS}
+# fi
+
 # ----------------------------------------
 cat > ${CNF} <<EOF
 map hash1 { type = hash; file= access.db; }
diff --git a/libsmmap/t-map-reopen-0.c b/libsmmap/t-map-reopen-0.c
index d517ba0..f34e0db 100644
--- a/libsmmap/t-map-reopen-0.c
+++ b/libsmmap/t-map-reopen-0.c
@@ -9,7 +9,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: t-map-reopen-0.c,v 1.13 2005/09/26 23:32:18 ca Exp $")
+SM_RCSID("@(#)$Id: t-map-reopen-0.c,v 1.15 2009/06/15 02:58:38 ca Exp $")
 
 #include "sm/error.h"
 #include "sm/heap.h"
@@ -48,7 +48,6 @@ the latter will be rename()d to the former.
 #define MAPC_FILE	"./bdbr0.db"
 #define MAPC_FILER	"./bdbrr0.db"
 #define MAPC_FILEB	"./bdbrb0.db"
-#define MAPC_FILEF	"./bdbrf0.db"
 #define KEY1	"left1"
 #define KEY2	"left2"
 #define KEY3	"left3"
@@ -74,29 +73,21 @@ testh(bool fail)
 
 	ret = sm_maps_init(&maps);
 	SM_TEST(maps != NULL);
-	if (maps == NULL)
+	if (NULL == maps)
 		return;
 	SM_TEST(sm_is_success(ret));
 
 	mtype = sm_cstr_scpyn0((const uchar *)MAPC_TYPE, strlen(MAPC_TYPE));
-	SM_TEST(mtype != NULL);
-	if (mtype == NULL)
-		goto error;
+	SM_TEST_E(mtype != NULL);
 
 	mname = sm_cstr_scpyn0((const uchar *)MAPC_NAME, strlen(MAPC_NAME));
-	SM_TEST(mname != NULL);
-	if (mname == NULL)
-		goto error;
+	SM_TEST_E(mname != NULL);
 
 	lhs = sm_str_new(NULL, 256, 1024);
-	SM_TEST(lhs != NULL);
-	if (lhs == NULL)
-		goto error;
+	SM_TEST_E(lhs != NULL);
 
 	rhs = sm_str_new(NULL, 256, 1024);
-	SM_TEST(rhs != NULL);
-	if (rhs == NULL)
-		goto error;
+	SM_TEST_E(rhs != NULL);
 
 	ret = sm_bdb_class_create(maps);
 	SM_TEST(sm_is_success(ret));
@@ -106,9 +97,7 @@ testh(bool fail)
 			&map, SMPO_END);
 	SM_CSTR_FREE(mtype);
 	SM_CSTR_FREE(mname);
-	SM_TEST(sm_is_success(ret));
-	if (!sm_is_success(ret))
-		goto error;
+	SM_TEST_E(sm_is_success(ret));
 
 	/* perform some operations ... */
 
@@ -165,9 +154,7 @@ testh(bool fail)
 	ret = sm_map_reopen(map, 0, SMPO_END);
 	if (fail)
 	{
-		SM_TEST(sm_is_err(ret));
-		if (!sm_is_err(ret))
-			goto error;
+		SM_TEST_E(sm_is_err(ret));
 
 		sm_str_clr(lhs);
 		sm_str_clr(rhs);
@@ -182,9 +169,7 @@ testh(bool fail)
 		ret = sm_map_reopen(map, 0, SMPO_END);
 	}
 
-	SM_TEST(sm_is_success(ret));
-	if (!sm_is_success(ret))
-		goto error;
+	SM_TEST_E(sm_is_success(ret));
 
 	/* perform some operations ... */
 
diff --git a/libsmmap/t-map-reopen-1.c b/libsmmap/t-map-reopen-1.c
new file mode 100644
index 0000000..fd5a8a2
--- /dev/null
+++ b/libsmmap/t-map-reopen-1.c
@@ -0,0 +1,222 @@
+/*
+ *  test reopening sequence map
+ *  See comments below about reopen.
+ */
+
+#include "sm/generic.h"
+SM_RCSID("@(#)$Id: t-map-reopen-1.c,v 1.7 2009/07/03 04:47:35 ca Exp $")
+
+#include "sm/error.h"
+#include "sm/heap.h"
+#include "sm/memops.h"
+#include "sm/test.h"
+#include "sm/maps.h"
+#include "sm/mapc.h"
+#include "sm/map.h"
+#include "sm/mapclasses.h"
+#include "sm/bdb.h"
+
+#include "sm/io.h"
+
+int Verbose = 0;
+
+#include "t-seq-common.c"
+
+#define MAPC_TYPE2R	"hash"
+#define MAPC_NAME2R	"bdbr"
+#define MAPC_FILE2R	"./bdbrr0.db"
+#define MAPC_FILEB	"./bdbrb0.db"
+#define DATAR1	"reopen1"
+#define DATAR2	"reopen2"
+
+static void
+testh(bool fail)
+{
+	sm_ret_T ret;
+	sm_maps_P maps;
+	sm_map_P map1, map2, map2r, map3;
+	sm_cstr_P mtype, mname;
+	sm_cstr_P mname1, mname2;
+	sm_str_P lhs, rhs;
+	sm_str_T key, data;
+	int i;
+
+	maps = NULL;
+	mtype = mname = NULL;
+	mname1 = mname2 = NULL;
+	lhs = rhs = NULL;
+
+	ret = sm_maps_init(&maps);
+	SM_TEST(maps != NULL);
+	if (NULL == maps)
+		return;
+	SM_TEST(sm_is_success(ret));
+	ret = sm_bht_class_create(maps);
+	SM_TEST_E(sm_is_success(ret));
+	ret = sm_seq_class_create(maps);
+	SM_TEST_E(sm_is_success(ret));
+
+	ret = crt_map(maps, &map1, MAPC_NAME1, MAPC_TYPE1);
+	SM_TEST_E(sm_is_success(ret));
+	ret = crt_bdb_map(maps, &map2, MAPC_NAME2, MAPC_TYPE2, MAPC_FILE2);
+	SM_TEST_E(sm_is_success(ret));
+	ret = crt_bdb_map(maps, &map2r, MAPC_NAME2R, MAPC_TYPE2R, MAPC_FILE2R);
+	SM_TEST_E(sm_is_success(ret));
+
+	SM_POP_MAP1;
+	SM_POP_MAP2;
+	SM_POP_BDB2;
+
+	/* need to close maps so they are written to disk. can we have a "sync" function? */
+	ret = sm_map_close(map2, 0);
+	SM_TEST_E(sm_is_success(ret));
+	ret = sm_map_close(map2r, 0);
+	SM_TEST_E(sm_is_success(ret));
+
+	mtype = sm_cstr_scpyn0((const uchar *)MAPC_TYPE2, strlen(MAPC_TYPE2));
+	SM_TEST_E(mtype != NULL);
+	lhs = sm_str_new(NULL, 256, 1024);
+	SM_TEST_E(lhs != NULL);
+	rhs = sm_str_new(NULL, 256, 1024);
+	SM_TEST_E(rhs != NULL);
+	ret = sm_bdb_class_create(maps);
+	SM_TEST(sm_is_success(ret));
+	mname1 = sm_cstr_scpyn0((const uchar *)MAPC_NAME1, strlen(MAPC_NAME1));
+	ret = sm_error_temp(SM_EM_MAP, ENOMEM);
+	SM_TEST_E(mname1 != NULL);
+	mname2 = sm_cstr_scpyn0((const uchar *)MAPC_NAME2, strlen(MAPC_NAME2));
+	ret = sm_error_temp(SM_EM_MAP, ENOMEM);
+	SM_TEST_E(mname2 != NULL);
+	mname = sm_cstr_scpyn0((const uchar *)MAPC_NAME2R, strlen(MAPC_NAME2R));
+	SM_TEST_E(mname != NULL);
+
+	map2 = NULL;
+	ret = sm_map_open(maps, mname2, mtype, SMAP_MODE_RDONLY, MAPC_FILE2,
+			SMAP_MODE_RDONLY, &map2, SMPO_END);
+	SM_TEST_E(sm_is_success(ret));
+	map2r = NULL;
+	ret = sm_map_open(maps, mname, mtype, SMAP_MODE_RDONLY, MAPC_FILE2R,
+			SMAP_MODE_RDONLY, &map2r, SMPO_END);
+	SM_TEST_E(sm_is_success(ret));
+
+	/* create sequence map */
+	mtype = mname = NULL;
+	mtype = sm_cstr_scpyn0((const uchar *)MAPC_TYPE3, strlen(MAPC_TYPE3));
+	ret = sm_error_temp(SM_EM_MAP, ENOMEM);
+	SM_TEST_E(mtype != NULL);
+	mname = sm_cstr_scpyn0((const uchar *)MAPC_NAME3, strlen(MAPC_NAME3));
+	SM_TEST_E(mname != NULL);
+	map3 = NULL;
+	ret = sm_map_create(maps, mtype, 0, &map3);
+	SM_TEST_E(sm_is_success(ret));
+	ret = sm_map_setopt(map3,
+			SMPO_MAP, map1,
+			SMPO_MAP, map2,
+			SMPO_END);
+	SM_TEST_E(sm_is_success(ret));
+	ret = sm_map_open(maps, mname, mtype, 0, NULL, SMAP_MODE_RDWR, &map3,
+			SMPO_END);
+	SM_TEST_E(sm_is_success(ret));
+	SM_CSTR_FREE(mtype);
+	SM_CSTR_FREE(mname);
+
+	/* perform some operations ... */
+	SM_LOOKUP_TEST(map3, KEY1_1, KEY1_2, KEY1_3);
+
+	SM_REWRITE_TEST(map3, KEY1_1, DATA1_1);
+	SM_REWRITE_TEST(map3, KEY1_2, DATA1_2);
+	SM_REWRITE_TEST(map3, KEY2_1, DATA2_1);
+	SM_REWRITE_TEST(map3, KEY2_2, DATA2_2);
+
+	SM_REWRITE_TEST(map2r, KEY2_1, DATAR1);
+	SM_REWRITE_TEST(map2r, KEY2_2, DATAR2);
+
+	i = rename(MAPC_FILE2, MAPC_FILEB);
+	SM_TEST(i == 0);
+
+	if (fail)
+	{
+		/* shouldn't exist anymore */
+		(void) unlink(MAPC_FILE2);
+	}
+	else
+	{
+		i = rename(MAPC_FILE2R, MAPC_FILE2);
+		SM_TEST(i == 0);
+	}
+
+	/* should a sequence map reopen all of its components? */
+	ret = sm_map_reopen(map3, 0, SMPO_END);
+	if (fail)
+	{
+		SM_TEST_E(sm_is_err(ret));
+
+		sm_str_clr(lhs);
+		sm_str_clr(rhs);
+		ret = sm_str_scat(lhs, KEY1_1);
+		SM_TEST(sm_is_success(ret));
+		ret = sm_map_rewrite(map3, SMMAP_FL_NONE, lhs, rhs);
+		SM_TEST(sm_is_err(ret));
+
+		i = rename(MAPC_FILE2R, MAPC_FILE2);
+		SM_TEST(i == 0);
+
+		ret = sm_map_reopen(map3, 0, SMPO_END);
+	}
+
+	SM_TEST_E(sm_is_success(ret));
+
+#if 0
+	ret = sm_map_reopen(map2, 0, SMPO_END);
+	SM_TEST_E(sm_is_success(ret));
+#endif
+
+	/* perform some operations ... */
+	SM_REWRITE_TEST(map3, KEY1_1, DATA1_1);
+	SM_REWRITE_TEST(map3, KEY1_2, DATA1_2);
+	SM_REWRITE_TEST(map3, KEY2_1, DATAR1);
+	SM_REWRITE_TEST(map3, KEY2_2, DATAR2);
+
+	sm_str_clr(lhs);
+	sm_str_clr(rhs);
+	ret = sm_str_scat(lhs, KEY1_3);
+	SM_TEST(sm_is_success(ret));
+	ret = sm_map_lookup(map3, SMMAP_FL_NONE, lhs, rhs);
+	SM_TEST(sm_is_err(ret));
+
+	ret = sm_map_close(map3, 0);
+	SM_TEST(sm_is_success(ret));
+
+	ret = sm_maps_term(maps);
+	SM_TEST(sm_is_success(ret));
+	SM_STR_FREE(lhs);
+	SM_STR_FREE(rhs);
+	return;
+
+  error:
+	sm_maps_term(maps);
+}
+
+
+int
+main(int argc, char *argv[])
+{
+	int c;
+	bool fail;
+
+	fail = false;
+	while ((c = getopt(argc, argv, "f")) != -1)
+	{
+		switch (c)
+		{
+		  case 'f':
+			fail = true;
+			break;
+		  default:
+			return 1;
+		}
+	}
+	sm_test_begin(argc, argv, "test map reopen 1");
+	testh(fail);
+	return sm_test_end();
+}
diff --git a/libsmmap/t-mapaddr-0.c b/libsmmap/t-mapaddr-0.c
index 2ba2ece..404920f 100644
--- a/libsmmap/t-mapaddr-0.c
+++ b/libsmmap/t-mapaddr-0.c
@@ -9,7 +9,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: t-mapaddr-0.c,v 1.21 2006/10/05 04:27:38 ca Exp $")
+SM_RCSID("@(#)$Id: t-mapaddr-0.c,v 1.23 2009/06/16 03:37:57 ca Exp $")
 
 #include "sm/error.h"
 #include "sm/heap.h"
@@ -53,10 +53,7 @@ stripcr(char *buf)
 
 	n = strlen(buf);
 	while (n > 0 && buf[n - 1] == '\n')
-	{
-	    buf[n - 1] = '\0';
-	   --n;
-	}
+		buf[--n] = '\0';
 	return n;
 }
 
@@ -256,17 +253,17 @@ main(int argc, char *argv[])
 
 	if (list_mapc >= 0)
 	{
-		sm_ret_T ret;
-		sm_maps_P maps;
+		sm_ret_T rv;
+		sm_maps_P maps2;
 
-		maps = NULL;
-		ret = sm_maps_init(&maps);
-		if (NULL == maps)
+		maps2 = NULL;
+		rv = sm_maps_init(&maps2);
+		if (NULL == maps2)
 			exit(EX_OSERR);
-		ret = init_mapc_test(maps);
-		if (sm_is_err(ret))
+		rv = init_mapc_test(maps2);
+		if (sm_is_err(rv))
 			exit(EX_OSERR);
-		c = sm_mapc_list(smioout, maps, list_mapc, 0);
+		c = sm_mapc_list(smioout, maps2, list_mapc, 0);
 		return 0;
 	}
 
diff --git a/libsmmap/t-mapdom-0.c b/libsmmap/t-mapdom-0.c
index 8d99b2f..9fe1ba5 100644
--- a/libsmmap/t-mapdom-0.c
+++ b/libsmmap/t-mapdom-0.c
@@ -9,7 +9,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: t-mapdom-0.c,v 1.23 2007/02/16 02:39:30 ca Exp $")
+SM_RCSID("@(#)$Id: t-mapdom-0.c,v 1.24 2009/07/04 18:13:28 ca Exp $")
 
 #include "sm/error.h"
 #include "sm/sysexits.h"
@@ -121,10 +121,10 @@ main(int argc, char *argv[])
 
 	if (list_mapc >= 0)
 	{
-		sm_ret_T ret;
+		sm_ret_T rc;
 
-		ret = init_mapc_test(&maps);
-		if (sm_is_err(ret))
+		rc = init_mapc_test(&maps);
+		if (sm_is_err(rc))
 			exit(EX_OSERR);
 		c = sm_mapc_list(smioout, maps, list_mapc, 0);
 		return 0;
diff --git a/libsmmap/t-mapip-0.c b/libsmmap/t-mapip-0.c
index 9b65c15..e10e4a0 100644
--- a/libsmmap/t-mapip-0.c
+++ b/libsmmap/t-mapip-0.c
@@ -9,7 +9,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: t-mapip-0.c,v 1.17 2006/11/13 00:42:07 ca Exp $")
+SM_RCSID("@(#)$Id: t-mapip-0.c,v 1.18 2009/07/04 18:14:26 ca Exp $")
 
 #include "sm/error.h"
 #include "sm/sysexits.h"
@@ -102,10 +102,10 @@ main(int argc, char *argv[])
 
 	if (list_mapc >= 0)
 	{
-		sm_ret_T ret;
+		sm_ret_T rc;
 
-		ret = init_mapc_test(&maps);
-		if (sm_is_err(ret))
+		rc = init_mapc_test(&maps);
+		if (sm_is_err(rc))
 			exit(EX_OSERR);
 		c = sm_mapc_list(smioout, maps, list_mapc, 0);
 		return 0;
diff --git a/libsmmap/t-seq-1.c b/libsmmap/t-seq-1.c
index f7373d3..98ce96f 100644
--- a/libsmmap/t-seq-1.c
+++ b/libsmmap/t-seq-1.c
@@ -9,7 +9,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: t-seq-1.c,v 1.7 2005/10/12 18:08:24 ca Exp $")
+SM_RCSID("@(#)$Id: t-seq-1.c,v 1.14 2009/06/17 05:03:50 ca Exp $")
 
 #include "sm/error.h"
 #include "sm/heap.h"
@@ -25,121 +25,15 @@ SM_RCSID("@(#)$Id: t-seq-1.c,v 1.7 2005/10/12 18:08:24 ca Exp $")
 
 int Verbose = 0;
 
-#define MAPC_TYPE1	"bhtable"
-#define MAPC_NAME1	"bht1"
-#define KEY1_1	"left1_1"
-#define KEY1_2	"left1_2"
-#define KEY1_3	"left1_3"
-#define DATA1_1	"right1_1"
-#define DATA1_2	"right1_2"
+#include "t-seq-common.c"
 
-#define MAPC_TYPE2	"hash"
-#define MAPC_NAME2	"bdb2"
-#define MAPC_FILE2	"./bdb2.db"
-#define KEY2_1	"left2_1"
-#define KEY2_2	"left2_2"
-#define KEY2_3	"left2_3"
-#define DATA2_1	"right2_1"
-#define DATA2_2	"right2_2"
-
-#define MAPC_TYPE3	"sequence"
-#define MAPC_NAME3	"seq1"
-
-static sm_ret_T
-crt_bdb_map(sm_maps_P maps, sm_map_P *pmap, const char *name, const char *type)
-{
-	sm_ret_T ret;
-	sm_map_P map;
-	sm_cstr_P mtype, mname;
-
-	SM_REQUIRE(maps != NULL);
-	SM_REQUIRE(pmap != NULL);
-	SM_REQUIRE(name != NULL);
-	SM_REQUIRE(type != NULL);
-
-	mtype = mname = NULL;
-	mtype = sm_cstr_scpyn0((const uchar *)type, strlen(type));
-	ret = sm_error_temp(SM_EM_MAP, ENOMEM);
-	SM_TEST(mtype != NULL);
-	if (mtype == NULL)
-		goto error;
-	mname = sm_cstr_scpyn0((const uchar *)name, strlen(name));
-	SM_TEST(mname != NULL);
-	if (mname == NULL)
-		goto error;
-	ret = sm_bdb_class_create(maps);
-	SM_TEST(sm_is_success(ret));
-	(void) unlink(MAPC_FILE2);
-
-	map = NULL;
-	ret = sm_map_open(maps, mname, mtype, SMAP_MODE_CREATE, MAPC_FILE2,
-			SMAP_MODE_RDWR, &map, SMPO_END);
-	SM_TEST(sm_is_success(ret));
-	if (!sm_is_success(ret))
-		goto error;
-
-	*pmap = map;
-	return ret;
-
-  error:
-	return ret;
-}
-
-static sm_ret_T
-crt_map(sm_maps_P maps, sm_map_P *pmap, const char *name, const char *type)
-{
-	sm_ret_T ret;
-	sm_cstr_P mtype, mname;
-	sm_map_P map;
-
-	SM_REQUIRE(maps != NULL);
-	SM_REQUIRE(pmap != NULL);
-	SM_REQUIRE(name != NULL);
-	SM_REQUIRE(type != NULL);
-
-	mtype = mname = NULL;
-	mtype = sm_cstr_scpyn0((const uchar *)type, strlen(type));
-	ret = sm_error_temp(SM_EM_MAP, ENOMEM);
-	SM_TEST(mtype != NULL);
-	if (mtype == NULL)
-		goto error;
-	mname = sm_cstr_scpyn0((const uchar *)name, strlen(name));
-	SM_TEST(mname != NULL);
-	if (mname == NULL)
-		goto error;
-	map = NULL;
-	ret = sm_map_create(maps, mtype, 0, &map);
-	SM_TEST(sm_is_success(ret));
-	if (!sm_is_success(ret))
-		goto error;
-	ret = sm_map_setopt(map, SMPO_HASH_NELEM, 23, SMPO_MAX_ELEM, 51,
-			SMPO_END);
-	SM_TEST(sm_is_success(ret));
-	if (!sm_is_success(ret))
-		goto error;
-	ret = sm_map_open(maps, mname, mtype, 0, NULL, SMAP_MODE_RDWR, &map,
-			SMPO_END);
-	SM_TEST(sm_is_success(ret));
-	if (!sm_is_success(ret))
-		goto error;
-	SM_CSTR_FREE(mtype);
-	SM_CSTR_FREE(mname);
-
-	*pmap = map;
-	return SM_SUCCESS;
-
-  error:
-	*pmap = NULL;
-	return ret;
-}
-
-
-static void
-testh(void)
+static bool
+testh(bool usename, bool usebht)
 {
 	sm_ret_T ret;
 	sm_maps_P maps;
 	sm_map_P map1, map2, map3;
+	sm_cstr_P mname1, mname2;
 	sm_cstr_P mtype, mname;
 	sm_str_P lhs, rhs;
 	sm_str_T key, data;
@@ -147,196 +41,105 @@ testh(void)
 	maps = NULL;
 	mtype = mname = NULL;
 	lhs = rhs = NULL;
+	mname1 = mname2 = NULL;
 
 	ret = sm_maps_init(&maps);
 	SM_TEST(maps != NULL);
 	if (maps == NULL)
-		return;
+		return false;
 	SM_TEST(sm_is_success(ret));
 
 	lhs = sm_str_new(NULL, 256, 1024);
-	SM_TEST(lhs != NULL);
-	if (lhs == NULL)
-		goto error;
+	SM_TEST_E(lhs != NULL);
 	rhs = sm_str_new(NULL, 256, 1024);
-	SM_TEST(rhs != NULL);
-	if (rhs == NULL)
-		goto error;
+	SM_TEST_E(rhs != NULL);
 	ret = sm_bht_class_create(maps);
-	SM_TEST(sm_is_success(ret));
-	if (!sm_is_success(ret))
-		goto error;
+	SM_TEST_E(sm_is_success(ret));
 	ret = sm_seq_class_create(maps);
-	SM_TEST(sm_is_success(ret));
-	if (!sm_is_success(ret))
-		goto error;
+	SM_TEST_E(sm_is_success(ret));
 
 	ret = crt_map(maps, &map1, MAPC_NAME1, MAPC_TYPE1);
-	SM_TEST(sm_is_success(ret));
-	if (!sm_is_success(ret))
-		goto error;
-
-	ret = crt_bdb_map(maps, &map2, MAPC_NAME2, MAPC_TYPE2);
-	SM_TEST(sm_is_success(ret));
-	if (!sm_is_success(ret))
-		goto error;
-
-	/* populate map */
-	sm_str_assign(key, NULL, (uchar *)KEY1_1, strlen(KEY1_1),
-			strlen(KEY1_1));
-	sm_str_assign(data, NULL, (uchar *)DATA1_1, strlen(DATA1_1),
-			strlen(DATA1_1));
-	ret = sm_map_add(map1, &key, &data, SMMAP_AFL_NONE);
-	SM_TEST(sm_is_success(ret));
-	sm_str_assign(key, NULL, (uchar *)KEY1_2, strlen(KEY1_2),
-			strlen(KEY1_2));
-	sm_str_assign(data, NULL, (uchar *)DATA1_2, strlen(DATA1_2),
-			strlen(DATA1_2));
-	ret = sm_map_add(map1, &key, &data, SMMAP_AFL_NONE);
-	SM_TEST(sm_is_success(ret));
+	SM_TEST_E(sm_is_success(ret));
+	mname1 = sm_cstr_scpyn0((const uchar *)MAPC_NAME1, strlen(MAPC_NAME1));
+	ret = sm_error_temp(SM_EM_MAP, ENOMEM);
+	SM_TEST_E(mname1 != NULL);
+
+#define MAPC_TYPEBHT     "bhtable"
+#define MAPC_NAMEBHT     "bht2"
+
+	if (usebht) {
+		ret = crt_map(maps, &map2, MAPC_NAMEBHT, MAPC_TYPEBHT);
+		SM_TEST_E(sm_is_success(ret));
+		mname2 = sm_cstr_scpyn0((const uchar *)MAPC_NAMEBHT, strlen(MAPC_NAMEBHT));
+	} else {
+		ret = crt_bdb_map(maps, &map2, MAPC_NAME2, MAPC_TYPE2, MAPC_FILE2);
+		SM_TEST_E(sm_is_success(ret));
+		mname2 = sm_cstr_scpyn0((const uchar *)MAPC_NAME2, strlen(MAPC_NAME2));
+	}
+	ret = sm_error_temp(SM_EM_MAP, ENOMEM);
+	SM_TEST_E(mname2 != NULL);
 
-	/* populate map */
-	sm_str_assign(key, NULL, (uchar *)KEY2_1, strlen(KEY2_1),
-			strlen(KEY2_1));
-	sm_str_assign(data, NULL, (uchar *)DATA2_1, strlen(DATA2_1),
-			strlen(DATA2_1));
-	ret = sm_map_add(map2, &key, &data, SMMAP_AFL_NONE);
-	SM_TEST(sm_is_success(ret));
-	sm_str_assign(key, NULL, (uchar *)KEY2_2, strlen(KEY2_2),
-			strlen(KEY2_2));
-	sm_str_assign(data, NULL, (uchar *)DATA2_2, strlen(DATA2_2),
-			strlen(DATA2_2));
-	ret = sm_map_add(map2, &key, &data, SMMAP_AFL_NONE);
-	SM_TEST(sm_is_success(ret));
+	/* populate BTH map */
+	SM_POP_MAP1;
 
+	/* populate BDB map */
+	SM_POP_MAP2;
 
 	/* perform some operations ... */
-	sm_str_clr(rhs);
-	sm_str_assign(key, NULL, (uchar *)KEY1_1, strlen(KEY1_1),
-			strlen(KEY1_1));
-	ret = sm_map_lookup(map1, SMMAP_FL_NONE, &key, rhs);
-	SM_TEST(sm_is_success(ret));
-	sm_str_assign(key, NULL, (uchar *)KEY1_2, strlen(KEY1_2),
-			strlen(KEY1_2));
-	ret = sm_map_lookup(map1, SMMAP_FL_NONE, &key, rhs);
-	SM_TEST(sm_is_success(ret));
-	sm_str_assign(key, NULL, (uchar *)KEY1_3, strlen(KEY1_3),
-			strlen(KEY1_3));
-	ret = sm_map_lookup(map1, SMMAP_FL_NONE, &key, rhs);
-	SM_TEST(!sm_is_success(ret));
+	SM_LOOKUP_TEST(map1, KEY1_1, KEY1_2, KEY1_3);
 
 	/* perform some operations ... */
-	sm_str_clr(rhs);
-	sm_str_assign(key, NULL, (uchar *)KEY2_1, strlen(KEY2_1),
-			strlen(KEY2_1));
-	ret = sm_map_lookup(map2, SMMAP_FL_NONE, &key, rhs);
-	SM_TEST(sm_is_success(ret));
-	sm_str_assign(key, NULL, (uchar *)KEY2_2, strlen(KEY2_2),
-			strlen(KEY2_2));
-	ret = sm_map_lookup(map2, SMMAP_FL_NONE, &key, rhs);
-	SM_TEST(sm_is_success(ret));
-	sm_str_assign(key, NULL, (uchar *)KEY2_3, strlen(KEY2_3),
-			strlen(KEY2_3));
-	ret = sm_map_lookup(map2, SMMAP_FL_NONE, &key, rhs);
-	SM_TEST(!sm_is_success(ret));
-
-
-	sm_str_clr(lhs);
-	sm_str_clr(rhs);
-	ret = sm_str_scat(lhs, KEY1_1);
-	SM_TEST(sm_is_success(ret));
-	ret = sm_map_rewrite(map1, SMMAP_FL_NONE, lhs, rhs);
-	SM_TEST(sm_is_success(ret));
-	SM_TEST(strncmp(DATA1_1, (char *) sm_str_data(rhs), sm_str_getlen(rhs))
-		== 0);
-	sm_str_clr(lhs);
-	sm_str_clr(rhs);
-	ret = sm_str_scat(lhs, KEY1_2);
-	SM_TEST(sm_is_success(ret));
-	ret = sm_map_rewrite(map1, SMMAP_FL_NONE, lhs, rhs);
-	SM_TEST(sm_is_success(ret));
-	SM_TEST(strncmp(DATA1_2, (char *) sm_str_data(rhs), sm_str_getlen(rhs))
-		== 0);
+	SM_LOOKUP_TEST(map2, KEY2_1, KEY2_2, KEY2_3);
 
+	SM_REWRITE_TEST(map1, KEY1_1, DATA1_1);
+	SM_REWRITE_TEST(map1, KEY1_2, DATA1_2);
 
 	/* create sequence map */
 	mtype = mname = NULL;
 	mtype = sm_cstr_scpyn0((const uchar *)MAPC_TYPE3, strlen(MAPC_TYPE3));
 	ret = sm_error_temp(SM_EM_MAP, ENOMEM);
-	SM_TEST(mtype != NULL);
-	if (mtype == NULL)
-		goto error;
+	SM_TEST_E(mtype != NULL);
 	mname = sm_cstr_scpyn0((const uchar *)MAPC_NAME3, strlen(MAPC_NAME3));
-	SM_TEST(mname != NULL);
-	if (mname == NULL)
-		goto error;
+	SM_TEST_E(mname != NULL);
 	map3 = NULL;
 	ret = sm_map_create(maps, mtype, 0, &map3);
-	SM_TEST(sm_is_success(ret));
-	if (!sm_is_success(ret))
-		goto error;
-	ret = sm_map_setopt(map3,
-			SMPO_MAP, map1,
-			SMPO_MAP, map2,
-			SMPO_END);
-	SM_TEST(sm_is_success(ret));
-	if (!sm_is_success(ret))
-		goto error;
+	SM_TEST_E(sm_is_success(ret));
+	if (usename) {
+		ret = sm_map_setopt(map3,
+				SMPO_MAPNAME, mname1,
+				SMPO_MAPNAME, mname2,
+				SMPO_END);
+	}
+	else {
+		ret = sm_map_setopt(map3,
+				SMPO_MAP, map1,
+				SMPO_MAP, map2,
+				SMPO_END);
+	}
+	SM_TEST_E(sm_is_success(ret));
 	ret = sm_map_open(maps, mname, mtype, 0, NULL, SMAP_MODE_RDWR, &map3,
 			SMPO_END);
-	SM_TEST(sm_is_success(ret));
-	if (!sm_is_success(ret))
-		goto error;
+	SM_TEST_E(sm_is_success(ret));
 	SM_CSTR_FREE(mtype);
 	SM_CSTR_FREE(mname);
 
-
 	/* perform some operations ... */
-	sm_str_clr(rhs);
-	sm_str_assign(key, NULL, (uchar *)KEY1_1, strlen(KEY1_1),
-			strlen(KEY1_1));
-	ret = sm_map_lookup(map3, SMMAP_FL_NONE, &key, rhs);
-	SM_TEST(sm_is_success(ret));
-	sm_str_assign(key, NULL, (uchar *)KEY1_2, strlen(KEY1_2),
-			strlen(KEY1_2));
-	ret = sm_map_lookup(map3, SMMAP_FL_NONE, &key, rhs);
-	SM_TEST(sm_is_success(ret));
-	sm_str_assign(key, NULL, (uchar *)KEY1_3, strlen(KEY1_3),
-			strlen(KEY1_3));
-	ret = sm_map_lookup(map3, SMMAP_FL_NONE, &key, rhs);
-	SM_TEST(!sm_is_success(ret));
+	SM_LOOKUP_TEST(map3, KEY1_1, KEY1_2, KEY1_3);
+	SM_LOOKUP_TEST(map3, KEY2_1, KEY2_2, KEY2_3);
+	SM_REWRITE_TEST(map3, KEY1_1, DATA1_1);
+	SM_REWRITE_TEST(map3, KEY1_2, DATA1_2);
 
-	/* perform some operations ... */
-	sm_str_clr(rhs);
-	sm_str_assign(key, NULL, (uchar *)KEY2_1, strlen(KEY2_1),
-			strlen(KEY2_1));
-	ret = sm_map_lookup(map3, SMMAP_FL_NONE, &key, rhs);
-	SM_TEST(sm_is_success(ret));
-	sm_str_assign(key, NULL, (uchar *)KEY2_2, strlen(KEY2_2),
-			strlen(KEY2_2));
-	ret = sm_map_lookup(map3, SMMAP_FL_NONE, &key, rhs);
-	SM_TEST(sm_is_success(ret));
-	sm_str_assign(key, NULL, (uchar *)KEY2_3, strlen(KEY2_3),
-			strlen(KEY2_3));
-	ret = sm_map_lookup(map3, SMMAP_FL_NONE, &key, rhs);
-	SM_TEST(!sm_is_success(ret));
-
-
-	ret = sm_map_close(map3, 0);
-	SM_TEST(sm_is_success(ret));
-	ret = sm_map_close(map2, 0);
-	SM_TEST(sm_is_success(ret));
-	ret = sm_map_close(map1, 0);
-	SM_TEST(sm_is_success(ret));
+	SM_CLOSE_MAPS;
 
 	ret = sm_maps_term(maps);
 	SM_TEST(sm_is_success(ret));
 	SM_STR_FREE(lhs);
 	SM_STR_FREE(rhs);
-	return;
+	return true;
 
   error:
 	sm_maps_term(maps);
+	return false;
 }
 
 
@@ -353,7 +156,12 @@ main(int argc, char *argv[])
 			return 1;
 		}
 	}
-	sm_test_begin(argc, argv, "test sequence map 0");
-	testh();
+	sm_test_begin(argc, argv, "test sequence map 1");
+	if (!testh(false, false)) goto end;
+	if (!testh(false, true)) goto end;
+	if (!testh(true, false)) goto end;
+	if (!testh(true, true)) goto end;
+
+  end:
 	return sm_test_end();
 }
diff --git a/libsmmap/t-seq-common.c b/libsmmap/t-seq-common.c
new file mode 100644
index 0000000..752735f
--- /dev/null
+++ b/libsmmap/t-seq-common.c
@@ -0,0 +1,153 @@
+
+#define MAPC_TYPE1	"bhtable"
+#define MAPC_NAME1	"bht1"
+#define KEY1_1	"left1_1"
+#define KEY1_2	"left1_2"
+#define KEY1_3	"left1_3"
+#define DATA1_1	"right1_1"
+#define DATA1_2	"right1_2"
+
+#define MAPC_TYPE2	"hash"
+#define MAPC_NAME2	"bdb2"
+#define MAPC_FILE2	"./bdb2.db"
+#define KEY2_1	"left2_1"
+#define KEY2_2	"left2_2"
+#define KEY2_3	"left2_3"
+#define DATA2_1	"right2_1"
+#define DATA2_2	"right2_2"
+
+#define MAPC_TYPE3	"sequence"
+#define MAPC_NAME3	"seq1"
+
+#if !T_SEQ_COMMON_NOBDB
+static sm_ret_T
+crt_bdb_map(sm_maps_P maps, sm_map_P *pmap, const char *name, const char *type, const char *filename)
+{
+	sm_ret_T ret;
+	sm_map_P map;
+	sm_cstr_P mtype, mname;
+
+	SM_REQUIRE(maps != NULL);
+	SM_REQUIRE(pmap != NULL);
+	SM_REQUIRE(name != NULL);
+	SM_REQUIRE(type != NULL);
+
+	mtype = mname = NULL;
+	mtype = sm_cstr_scpyn0((const uchar *)type, strlen(type));
+	ret = sm_error_temp(SM_EM_MAP, ENOMEM);
+	SM_TEST_E(mtype != NULL);
+	mname = sm_cstr_scpyn0((const uchar *)name, strlen(name));
+	SM_TEST_E(mname != NULL);
+	ret = sm_bdb_class_create(maps);
+	SM_TEST(sm_is_success(ret));
+	(void) unlink(filename);
+
+	map = NULL;
+	ret = sm_map_open(maps, mname, mtype, SMAP_MODE_CREATE, filename,
+			SMAP_MODE_RDWR, &map, SMPO_END);
+	SM_TEST_E(sm_is_success(ret));
+
+	*pmap = map;
+	return ret;
+
+  error:
+	return ret;
+}
+#endif /* !T_SEQ_COMMON_NOBDB */
+
+static sm_ret_T
+crt_map(sm_maps_P maps, sm_map_P *pmap, const char *name, const char *type)
+{
+	sm_ret_T ret;
+	sm_cstr_P mtype, mname;
+	sm_map_P map;
+
+	SM_REQUIRE(maps != NULL);
+	SM_REQUIRE(pmap != NULL);
+	SM_REQUIRE(name != NULL);
+	SM_REQUIRE(type != NULL);
+
+	mtype = mname = NULL;
+	mtype = sm_cstr_scpyn0((const uchar *)type, strlen(type));
+	ret = sm_error_temp(SM_EM_MAP, ENOMEM);
+	SM_TEST_E(mtype != NULL);
+	mname = sm_cstr_scpyn0((const uchar *)name, strlen(name));
+	SM_TEST_E(mname != NULL);
+	map = NULL;
+	ret = sm_map_create(maps, mtype, 0, &map);
+	SM_TEST_E(sm_is_success(ret));
+	ret = sm_map_setopt(map, SMPO_HASH_NELEM, 23, SMPO_MAX_ELEM, 51,
+			SMPO_END);
+	SM_TEST_E(sm_is_success(ret));
+	ret = sm_map_open(maps, mname, mtype, 0, NULL, SMAP_MODE_RDWR, &map,
+			SMPO_END);
+	SM_TEST_E(sm_is_success(ret));
+	SM_CSTR_FREE(mtype);
+	SM_CSTR_FREE(mname);
+
+	*pmap = map;
+	return SM_SUCCESS;
+
+  error:
+	*pmap = NULL;
+	return ret;
+}
+
+#define SM_STR_CRT(var, value)	\
+	do {	\
+		sm_str_assign((var), NULL, (uchar *)(value), strlen((value)),	\
+			strlen((value)));	\
+	} while (0)
+
+#define SM_POP_DB(map, Key, Data)	\
+	do {	\
+	SM_STR_CRT(key, (Key));	\
+	SM_STR_CRT(data, (Data));	\
+	ret = sm_map_add((map), &key, &data, SMMAP_AFL_NONE);	\
+	SM_TEST(sm_is_success(ret));	\
+	} while (0)
+
+#define SM_POP_MAP1	\
+	SM_POP_DB(map1, KEY1_1, DATA1_1);	\
+	SM_POP_DB(map1, KEY1_2, DATA1_2);
+
+#define SM_POP_MAP2	\
+	SM_POP_DB(map2, KEY2_1, DATA2_1);	\
+	SM_POP_DB(map2, KEY2_2, DATA2_2);
+
+#define SM_POP_BDB2	\
+	SM_POP_DB(map2r, KEY2_1, DATAR1);	\
+	SM_POP_DB(map2r, KEY2_2, DATAR2);
+
+#define SM_LOOKUP_TEST(map, Key1, Key2, Key3)	\
+	do {	\
+	sm_str_clr(rhs);	\
+	SM_STR_CRT(key, Key1);	\
+	ret = sm_map_lookup(map, SMMAP_FL_NONE, &key, rhs);	\
+	SM_TEST(sm_is_success(ret));	\
+	SM_STR_CRT(key, Key2);	\
+	ret = sm_map_lookup(map, SMMAP_FL_NONE, &key, rhs);	\
+	SM_TEST(sm_is_success(ret));	\
+	SM_STR_CRT(key, Key3);	\
+	ret = sm_map_lookup(map, SMMAP_FL_NONE, &key, rhs);	\
+	SM_TEST(!sm_is_success(ret));	\
+	} while (0)
+
+#define SM_REWRITE_TEST(map, Key, Data)	\
+	do {	\
+	sm_str_clr(lhs);	\
+	sm_str_clr(rhs);	\
+	ret = sm_str_scat(lhs, (Key));	\
+	SM_TEST(sm_is_success(ret));	\
+	ret = sm_map_rewrite((map), SMMAP_FL_NONE, lhs, rhs);	\
+	SM_TEST(sm_is_success(ret));	\
+	SM_TEST(strncmp((Data), (char *) sm_str_data(rhs), sm_str_getlen(rhs)) == 0);\
+	} while (0)
+
+#define SM_CLOSE_MAPS	\
+	ret = sm_map_close(map3, 0);	\
+	SM_TEST(sm_is_success(ret));	\
+	ret = sm_map_close(map2, 0);	\
+	SM_TEST(sm_is_success(ret));	\
+	ret = sm_map_close(map1, 0);	\
+	SM_TEST(sm_is_success(ret))
diff --git a/libsmmap/t-sockmap-0.c b/libsmmap/t-sockmap-0.c
index 600e03b..afb4f72 100644
--- a/libsmmap/t-sockmap-0.c
+++ b/libsmmap/t-sockmap-0.c
@@ -9,7 +9,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: t-sockmap-0.c,v 1.10 2008/02/10 06:17:29 ca Exp $")
+SM_RCSID("@(#)$Id: t-sockmap-0.c,v 1.11 2009/07/05 21:06:14 ca Exp $")
 
 #include "sm/error.h"
 #include "sm/heap.h"
@@ -69,6 +69,30 @@ testh(const char *name, const char *path, ipv4_T ipv4, short port)
 		SMPO_END);
 	SM_TEST_E(sm_is_success(ret));
 
+	if (strcmp(name, "nomore") == 0) {
+		sm_str_P user;
+
+		user = sm_str_new(NULL, 64, 256);
+		SM_TEST_E(user != NULL);
+
+		sm_str_clr(rhs);
+		sm_str_clr(lhs);
+		sm_str_scat(lhs, (const char *)"bar.net");
+		sm_str_scat(user, (const char *)"foo");
+		ret = sm_map_lookup_addr(map, user, NULL, lhs, NULL, '+',
+				SMMAP_LFL_ALIAS, rhs);
+		SM_TEST(sm_is_err(ret));
+		SM_TEST(SM_MAP_NOTFOUND == ret);
+
+		sm_str_clr(rhs);
+		sm_str_clr(lhs);
+		ret = sm_map_lookup_addr(map, user, NULL, NULL, NULL, '+',
+				SMMAP_LFL_ALIAS, rhs);
+		SM_TEST(sm_is_success(ret));
+
+		SM_STR_FREE(user);
+	}
+	else {
 	sm_str_clr(rhs);
 	sm_str_clr(lhs);
 	sm_str_scat(lhs, (const char *)"bastiaan.bakker@example.com");
@@ -105,6 +129,7 @@ testh(const char *name, const char *path, ipv4_T ipv4, short port)
 	sm_str_scat(lhs, (const char *)"bastiaan.bakker@example.com");
 	ret = sm_map_lookup(map, SMMAP_FL_NONE, lhs, rhs);
 	SM_TEST(sm_is_success(ret));
+	}
 
 	ret = sm_map_close(map, 0);
 	SM_TEST(sm_is_success(ret));
diff --git a/libsmmap/t-sockmap-0.sh b/libsmmap/t-sockmap-0.sh
index c9adaa3..8080c9f 100755
--- a/libsmmap/t-sockmap-0.sh
+++ b/libsmmap/t-sockmap-0.sh
@@ -1,5 +1,5 @@
 #!/bin/sh
-# $Id: t-sockmap-0.sh,v 1.3 2004/12/29 20:53:14 ca Exp $
+# $Id: t-sockmap-0.sh,v 1.5 2009/07/27 03:19:51 ca Exp $
 # Copyright (c) 2004 Sendmail, Inc. and its suppliers.
 #	All rights reserved.
 #
@@ -11,7 +11,7 @@
 # Test for socketmap.
 # Uses
 # perl (how to find that?)
-# contrib/socketmapServer.pl
+# t-sockmapsrv.pl
 # t-sockmapr-0
 # ----------------------------------------
 #
@@ -25,9 +25,31 @@ then
 fi
 
 ERRS=0
-
 SOCKSRV=${SD}/t-sockmapsrv.pl
 PIDS=pids
+PRG=./t-sockmapr-0
+V=""
+
+# works only with ksh on OSF/1
+if test X"`uname`" != "XOSF1"
+then
+while getopts v FLAG
+do
+  case "${FLAG}" in
+    v) VERBOSE=true
+	V="-v"
+	;;
+    ?)
+       echo "$0: unknown option ${FLAG}"
+       echo "usage: $0 [options]"
+       echo "$0: options:"
+       echo "-v     verbose"
+       exit 1
+       ;;
+  esac
+done
+shift `expr ${OPTIND} - 1`
+fi
 
 killit()
 {
@@ -43,11 +65,21 @@ trap killit 2 15
 
 if test -x ${SOCKSRV}
 then
-  perl ${SOCKSRV} tcp:127.0.0.1:1289 &
+  # XREF: port in ${PRG}
+  perl ${SOCKSRV} $V tcp:127.0.0.1:1289 &
   echo $! > ${PIDS}
   sleep 3
 
-  ./t-sockmapr-0 || ERRS=`expr ${ERRS} + 1`
+  for args in "" "-N nomore"
+  do
+    if ${PRG} ${args}
+    then
+      :
+    else
+      $VERBOSE && echo "$0: ${PRG} ${args} failed"
+      ERRS=`expr ${ERRS} + 1`
+    fi
+  done
 
   for i in `cat ${PIDS}`
   do
diff --git a/libsmmap/t-sockmapsrv.pl b/libsmmap/t-sockmapsrv.pl
index 49d3c80..cee4bda 100755
--- a/libsmmap/t-sockmapsrv.pl
+++ b/libsmmap/t-sockmapsrv.pl
@@ -8,12 +8,18 @@
 # Test server for socketmap.
 # ----------------------------------------
 #
-# $Id: t-sockmapsrv.pl,v 1.3 2006/04/19 16:54:32 ca Exp $
+# $Id: t-sockmapsrv.pl,v 1.7 2009/07/31 04:05:16 ca Exp $
 
 use strict;
+use Getopt::Std;
 use IO::Socket;
 
-die "usage: $0 <connection>" if (@ARGV < 1);
+my $USAGE="usage: $0 [-V] <connection>";
+die $USAGE if (@ARGV < 1);
+
+my %opts;
+getopts('V', \%opts) or die $USAGE;
+my $Verbose = defined($opts{'V'});
 my $connection = shift @ARGV;
 my $sock;
 
@@ -60,11 +66,19 @@ sub handleConnection {
 	    my $request = netstringRead($client);	    
 	    my ($mapName, $key) = split(' ', $request);
 	    if ($key =~ /^TIMEOUT/) {
-	      print STDERR "timeout\n";
+	      if ($Verbose) {print STDERR "srv: timeout\n"; }
 	    }
 	    else {
+	      if ($key =~ /^SLOW/) {
+	        if ($Verbose) {print STDERR "srv: slow\n"; }
+	        $key = substr $key,4;
+	        sleep(1);
+	      }
 	      my $value = mapLookup($mapName, $key);
-	      my $result = (defined($value)) ? "OK $value" : "NOTFOUND";
+	      my $result = (defined($value)) ?
+			(($value =~ /^NOMORE/) ? "NOMORE" : "OK $value")
+			: "NOTFOUND";
+	      if ($Verbose) { print STDERR "srv: $key->$result\n"; }
 	      netstringWrite($client, $result);
 	    }
 	};
@@ -89,6 +103,11 @@ sub mapLookup {
 		, 'list2' =>	'<user1@local.dom> <user2@local.dom> <alias0@local.dom>'
 		, 'user3' =>	'<ext3@other.dom>'
 		);
+    my %nmapping = (
+	 'foo@bar.net' => 'NOMORE'
+	,'foo*@bar.net' => 'local:'
+	,'foo' => 'local:'
+	);
     my $mapName = shift;
     my $key = shift;
     my $value = undef;
@@ -96,6 +115,8 @@ sub mapLookup {
        $value = $mapping{$key};
     } elsif ($mapName eq "aliases") {
        $value = $amapping{$key};
+    } elsif ($mapName eq "nomore") {
+       $value = $nmapping{$key};
     }
 # print STDERR "map=", $mapName, ", key=", $key, ", value=", $value, "\n";
     return $value;
diff --git a/mcp/inetd.c b/mcp/inetd.c
index 6cb664c..687e0a5 100644
--- a/mcp/inetd.c
+++ b/mcp/inetd.c
@@ -50,7 +50,7 @@ static char sccsid[] = "@(#)from: inetd.c	8.4 (Berkeley) 4/13/94";
 #endif /* not lint */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: inetd.c,v 1.86 2007/12/21 05:31:52 ca Exp $")
+SM_RCSID("@(#)$Id: inetd.c,v 1.87 2009/06/21 23:43:07 ca Exp $")
 
 /*
  * MCP - Master Control Program
@@ -929,12 +929,12 @@ se_startproc(mcp_ctx_P mcp_ctx, servtab_P sep, int fd, struct sigaction *sapipe)
 		(void) gettimeofday(&sep->se_time, (struct timezone *) NULL);
 	else if (sep->se_count >= Toomany)
 	{
-		struct timeval  now;
+		struct timeval nowtv;
 
-		(void) gettimeofday(&now, (struct timezone *) NULL);
-		if (now.tv_sec - sep->se_time.tv_sec > CNT_INTVL)
+		(void) gettimeofday(&nowtv, (struct timezone *) NULL);
+		if (nowtv.tv_sec - sep->se_time.tv_sec > CNT_INTVL)
 		{
-			sep->se_time = now;
+			sep->se_time = nowtv;
 			sep->se_count = 1;
 		}
 		else
diff --git a/misc/Makefile.am b/misc/Makefile.am
index ced938f..62d6666 100644
--- a/misc/Makefile.am
+++ b/misc/Makefile.am
@@ -1,12 +1,12 @@
 ## Makefile.am -- Process this file with automake to produce Makefile.in
-# $Id: Makefile.am,v 1.43 2008/02/03 17:36:20 ca Exp $
+# $Id: Makefile.am,v 1.44 2009/06/05 03:54:17 ca Exp $
 
 MAINTAINERCLEANFILES	= Makefile.in
 
 INCLUDES		= -I$(top_builddir) -I$(top_builddir)/include -I$(top_srcdir) -I$(top_srcdir)/include
 
-bin_PROGRAMS	= runas smconf mailq qmgrctl log2time
-bin_SCRIPTS	= rcvrenvfromlog.sh mailq.sh qmgrctl.sh
+bin_PROGRAMS	= runas smconf mailq qmgrctl log2time metaconf
+bin_SCRIPTS	= rcvrenvfromlog.sh mailq.sh qmgrctl.sh metaqueue
 noinst_PROGRAMS	= t-unixcl
 
 LDADD		= ../libmta/libmta.a
@@ -32,6 +32,9 @@ runas_SOURCES	= runas.c
 qmgrctl_SOURCES	= qmgrctl.c
 qmgrctl_LDADD	= $(LDRCB) $(LDADD) $(LDMISC) $(LDREPL)
 
+metaconf_SOURCES= metaconf.c
+metaconf_LDADD  = $(LDRCB) $(LDCONF) $(LDADD) $(LDMISC) $(LDREPL)
+
 mailq_SOURCES	= mailq.c
 mailq_LDADD	= $(LDQMGR) $(LDACTDB) $(LDEDB) $(LDIBDB) $(LDCSTRR) $(LDRCB) $(LDADDR) $(LDCSTRR) $(LDMISCR) $(LDBDB) $(PTHREAD_LIBS) $(LDREPLR)
 mailq_CC	=$(PTHREAD_CC)
@@ -70,7 +73,8 @@ EXTRA_DIST 	= $(TESTSH) $(TESTDATA) \
 		mailq.sh.in \
 		getns.sh \
 		sm8.submit.mc \
-		rcvrenvfromlog.sh
+		rcvrenvfromlog.sh \
+		metaqueue.in 
 ## inline in sm.setup.sh.in:	meta1.conf.in
 ## not yet:			meta1-all.conf
 
diff --git a/misc/metaconf.c b/misc/metaconf.c
new file mode 100644
index 0000000..a3379cb
--- /dev/null
+++ b/misc/metaconf.c
@@ -0,0 +1,351 @@
+#include "sm/generic.h"
+SM_RCSID("@(#)$Id: metaconf.c,v 1.1 2009/06/05 04:23:39 ca Exp $")
+#include "sm/common.h"
+#include "sm/assert.h"
+#include "sm/error.h"
+#include "sm/memops.h"
+#undef MTA_USE_SASL
+#include "sm/sysexits.h"
+#include "sm/sscnfdef.h"
+#include "sm/sm-conf.h"
+#include "sm/sm-conf-prt.h"
+
+const char *progname;
+const char *conf_name = "/etc/meta1/meta1.conf";
+
+static void
+usage(void)
+{
+	sm_io_fprintf(smioout, "%s: Extract values from MeTA1 configuration file\n",
+	       progname);
+	sm_io_fprintf(smioout, "Usage: %s [-heinsq] [-f FILE] [-S CHAR] VAR [VAR...]\n\n",
+	       progname);
+	sm_io_fprintf(smioout, "VAR is a fully qualified name of a configuration variable\n"
+		      "e.g. smtps.policy_milter.socket.address\n\n");
+	sm_io_fprintf(smioout, "Options are:\n");
+	sm_io_fprintf(smioout, "  -h        Display this help summary\n"
+	       "  -e        Exit with code 1 if any of VARs is not defined\n"
+	       "  -i        Display variable indexes\n"
+	       "  -n        Display variable names\n"
+	       "  -S CHAR   Use CHAR as a separator\n"
+	       "  -s        Skip undefined variables\n"
+	       "  -q        Quote values on output\n"
+	       "  -f FILE   Use FILE instead of %s\n",
+	       conf_name);
+
+	exit(0);
+}
+
+static void
+usage_error(const char *fmt, ...)
+{
+	va_list ap;
+	va_start(ap, fmt);
+	sm_io_fprintf(smioerr, "%s: ", progname);
+	sm_io_vfprintf(smioerr, fmt, ap);
+	sm_io_fprintf(smioerr, "Try %s -h for more information\n", progname);
+	va_end(ap);
+	exit(EX_USAGE);
+}
+
+static void *
+emalloc(size_t size)
+{
+	void *p = malloc(size);
+	if (!p) {
+		sm_io_fprintf(smioerr, "%m", ENOMEM);
+		exit(EX_SOFTWARE);
+	}
+	return p;
+}
+
+static void *
+ecalloc(size_t count, size_t size)
+{
+	void *p = calloc(count, size);
+	if (!p) {
+		sm_io_fprintf(smioerr, "%m", ENOMEM);
+		exit(EX_SOFTWARE);
+	}
+	return p;
+}
+
+/* Return length of the shortest prefix in STR.  Prefixes are delimited
+   by dots. */
+static int
+conf_prefix_len(const char *str)
+{
+	return strcspn(str, ".");
+}
+
+/* Find longest matching prefix in A and B.  If found, return 0 and store
+   prefix length in *PLEN.  Otherwise, return lexical difference between
+   the two strings (as strcmp(3) does) */
+static int
+conf_prefix_cmp(const char *a, const char *b, size_t *plen)
+{
+	int i;
+	int diff;
+	for (i = 0; (diff = (unsigned char)a[i] - (unsigned char)b[i]) == 0;
+	     i++) {
+		if (a[i] == '.' || a[i] == 0) {
+			if (plen)
+				*plen = i;
+			return 0;
+		}
+	}
+	return diff;
+}
+
+/* Configuration lookup structure. */
+struct conf_lookup {
+	int idx;            /* Index in the array */
+	char *kw;           /* Keyword */
+	char *val;          /* Value */
+};
+
+/* Compare two struct conf_lookup by their keywords. */
+static int
+conf_lookup_kw_cmp(const void *a, const void *b)
+{
+	const char *sa = ((struct conf_lookup *)a)->kw;
+	const char *sb = ((struct conf_lookup *)b)->kw;
+	int rc;
+	size_t preflen;
+
+	while ((rc = conf_prefix_cmp(sa, sb, &preflen)) == 0) {
+		sa += preflen;
+		sb += preflen;
+		if (*sa == 0)
+			return 0;
+		sa++;
+		sb++;
+	}
+	return rc;
+}
+
+/* Compare two struct conf_lookup by their indexes. */
+static int
+conf_lookup_idx_cmp(const void *a, const void *b)
+{
+	return ((struct conf_lookup *)a)->idx -
+		((struct conf_lookup *)b)->idx;
+}
+
+/* Return the number of unique keyword prefixes in first LACNT elements
+   of the array LA.  Ignore first BASEPREFLEN characters of each keyword. */
+static size_t
+count_uniq_prefixes(struct conf_lookup *la, size_t lacnt,
+		    size_t basepreflen)
+{
+	size_t i;
+	size_t count = 1;
+	char *base_pref = la->kw;
+	char *pref = base_pref + basepreflen;
+	size_t preflen = conf_prefix_len(pref) + 1;
+
+	for (i = 1, la++; i < lacnt; i++, la++) {
+		char *kw = la->kw;
+		size_t kwlen = strlen(kw);
+
+		if (kwlen + 1 < basepreflen
+		    || memcmp(kw, base_pref, basepreflen))
+			break;
+		kw += basepreflen;
+		kwlen -= basepreflen;
+		if (kwlen + 1 < preflen || memcmp(kw, pref, preflen)) {
+			count++;
+			pref = kw;
+			preflen = conf_prefix_len(pref) + 1;
+		}
+	}
+	return count;
+}
+
+/* Create a configuration definition for LACNT lookup elements from
+   the array LOOKUP.  Ignore first PREFLEN characters of each keyword.
+   Use BASE to compute values of scd_offset member. */
+static sm_conf_definition_T *
+create_def(void *base,
+	   struct conf_lookup *lookup, size_t lacnt, size_t preflen)
+{
+	size_t i, j;
+	size_t num;
+	sm_conf_definition_T *def;
+
+	if (lacnt == 0)
+		return NULL;
+
+	num = count_uniq_prefixes(lookup, lacnt, preflen);
+	/*sm_io_fprintf(smioout, "%d: %d unique prefixes\n", lookup->idx, num);*/
+
+	def = ecalloc(num + 1, sizeof(def[0]));
+	for (i = j = 0; i < num; i++) {
+		size_t n;
+		size_t plen;
+		char *p;
+
+		def[i].sm_magic = SM_CONF_DEF_MAGIC;
+
+		plen = conf_prefix_len(lookup[j].kw + preflen);
+		for (n = 0; j + n < lacnt
+			     && conf_prefix_cmp(lookup[j].kw + preflen,
+						lookup[j + n].kw + preflen,
+						NULL) == 0;
+		     n++);
+
+		def[i].scd_name = p = emalloc(plen + 1);
+		memcpy(p, lookup[j].kw + preflen, plen);
+		p[plen] = 0;
+		if (!(n == 1 && lookup[j].kw[preflen + plen] == 0)) {
+			def[i].scd_type = sm_conf_type_section;
+			def[i].scd_flags = SM_CONF_FLAG_ALLOW_ANY;
+			def[i].scd_contents = create_def(base,
+							 lookup + j, n,
+							 preflen + plen + 1);
+		} else {
+			def[i].scd_type = sm_conf_type_string;
+			def[i].scd_offset = (char*)&lookup[j].val
+				            - (char*)base;
+		}
+
+		j += n;
+	}
+	def[i].scd_magic = SM_CONF_DEF_MAGIC;
+	return def;
+}
+
+/* Read and parse configuration from file `conf_name', using definition DEF
+   and data pointer DATA */
+static void
+read_conf(sm_conf_definition_T *def, void *data)
+{
+	sm_conf_T *smc;
+	int err;
+
+	smc = sm_conf_new(conf_name);
+	if (smc == NULL)
+	{
+		sm_io_fprintf(smioerr, "%s: sm_conf_new=NULL, errno=%d\n",
+	 		      conf_name, errno);
+		exit((errno == ENOENT || errno == EPERM) ?
+		     EX_USAGE : EX_SOFTWARE);
+	}
+	err = sm_conf_read_FILE(smc, conf_name, NULL);
+	if (err != 0)
+	{
+		sm_prt_conferr(conf_name, smc, err, smioerr);
+		exit(EX_USAGE);
+	}
+
+	err = sm_conf_scan(smc, def, SM_CONF_FLAG_ALLOW_ANY, data);
+	if (err != 0)
+	{
+		sm_prt_conferr(conf_name, smc, err, smioerr);
+		exit(EX_SOFTWARE);
+	}
+	sm_conf_destroy(smc);
+}
+
+/* Output flags */
+#define OF_INDEX       0x01   /* Print indexes */
+#define OF_NAME        0x02   /* Print names */
+#define OF_EMPTY_SKIP  0x04   /* Skip empty values */
+#define OF_EMPTY_ERROR 0x08   /* Exit with code 1 if any empty values found */
+#define OF_QUOTE       0x10   /* Quote values */
+
+int
+main(int argc, char **argv)
+{
+	int c, i;
+	int code = 0;
+	sm_conf_definition_T *def;
+	struct conf_lookup *lookup;
+	int flags = 0;
+	int sep = '\n';
+
+	progname = argv[0];
+	while ((c = getopt(argc, argv, "hf:einS:sq")) != EOF) {
+		switch (c) {
+		case 'h':
+			usage();
+
+		case 'f':
+			conf_name = optarg;
+			break;
+
+		case 'e':
+			flags |= OF_EMPTY_ERROR;
+			break;
+
+		case 'i':
+			flags |= OF_INDEX;
+			break;
+
+		case 'n':
+			flags |= OF_NAME;
+			break;
+
+		case 'S':
+			sep = optarg[0];
+			break;
+
+		case 's':
+			flags |= OF_EMPTY_SKIP;
+			break;
+
+		case 'q':
+			flags |= OF_QUOTE;
+			break;
+
+		default:
+			usage_error("unknown option: -%c\n", optopt);
+		}
+	}
+
+	argc -= optind;
+	argv += optind;
+
+	if (argc == 0)
+		usage_error("not enough arguments\n");
+
+	/* Initialize the lookup array */
+	lookup = ecalloc(argc, sizeof(lookup[0]));
+	for (i = 0; i < argc; i++) {
+		lookup[i].idx = i;
+		lookup[i].kw = argv[i];
+	}
+
+	/* Sort by kw */
+	qsort(lookup, argc, sizeof(lookup[0]), conf_lookup_kw_cmp);
+
+	/* Create configuration definition and parse the config file. */
+	def = create_def(lookup, lookup, argc, 0);
+	read_conf(def, lookup);
+
+	/* Restore original ordering of the entries. */
+	qsort(lookup, argc, sizeof(lookup[0]), conf_lookup_idx_cmp);
+
+	/* Output results. */
+	for (i = 0; i < argc; i++) {
+		if (!lookup[i].val) {
+			if (flags & OF_EMPTY_ERROR)
+				code = 1;
+			if (flags & OF_EMPTY_SKIP)
+				continue;
+		}
+		if (flags & OF_INDEX)
+			sm_io_fprintf(smioout, "%d ", i);
+		if (flags & OF_NAME)
+			sm_io_fprintf(smioout, "%s ", lookup[i].kw);
+		if (flags & OF_QUOTE)
+			sm_io_fprintf(smioout, "\"%s\"", lookup[i].val ? lookup[i].val : "");
+		else
+			sm_io_fprintf(smioout, "%s", lookup[i].val ? lookup[i].val : "");
+		putchar(sep);
+	}
+	/* Make sure output ends with a newline. */
+	if (i && sep != '\n')
+		putchar('\n');
+	exit(code);
+}
diff --git a/misc/smconf.c b/misc/smconf.c
index 8ff1411..8dff000 100644
--- a/misc/smconf.c
+++ b/misc/smconf.c
@@ -8,7 +8,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: smconf.c,v 1.31 2007/06/10 16:14:42 ca Exp $")
+SM_RCSID("@(#)$Id: smconf.c,v 1.32 2009/06/22 01:10:01 ca Exp $")
 #include "sm/error.h"
 #include "sm/assert.h"
 #include "sm/memops.h"
@@ -67,46 +67,46 @@ smx_defs[] =
 { SM_CONF_DEF_MAGIC, "SMTPC_socket",	sm_conf_type_string,
 	offsetof(sm_cnf_T, smc_smtpcsock),
 	0,	smsmtpcsock,
-	0, NULL, NULL, NULL, NULL },
+	0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 { SM_CONF_DEF_MAGIC, "SMTPS_socket",	sm_conf_type_string,
 	offsetof(sm_cnf_T, smc_smtpssock),
 	0,	smsmtpssock,
-	0, NULL, NULL, NULL, NULL },
+	0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 { SM_CONF_DEF_MAGIC, "SMAR_socket",	sm_conf_type_string,
 	offsetof(sm_cnf_T, smc_smarsock),
 	0,	smarsock,
-	0, NULL, NULL, NULL, NULL },
+	0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 { SM_CONF_DEF_MAGIC, "CDB_base_directory",	sm_conf_type_string,
 	offsetof(sm_cnf_T, smc_cdb_base),
 	0,	"",
-	0, NULL, NULL, NULL, NULL },
+	0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 { SM_CONF_DEF_MAGIC, "hostname",		sm_conf_type_string,
 	offsetof(sm_cnf_T, smc_hostname),	0,	NULL,
-	0, NULL, NULL, NULL, NULL },
+	0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 
 { SM_CONF_DEF_MAGIC, "smar", sm_conf_type_section,
 	offsetof(sm_cnf_T, smc_smar_cnf),
 	0, /* sizeof(smar_cnf_T), */
 	NULL, SM_CONF_FLAG_KEEP_DEFAULT, smar_defs,
-	NULL, NULL, NULL },
+	NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 { SM_CONF_DEF_MAGIC, "smtpc", sm_conf_type_section,
 	offsetof(sm_cnf_T, smc_sc_cnf),
 	0, /* sizeof(sc_cnf_T), */
 	NULL, SM_CONF_FLAG_KEEP_DEFAULT|SM_CONF_FLAG_MULTIPLE, sc_defs,
-	NULL, NULL, NULL },
+	NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 { SM_CONF_DEF_MAGIC, "smtps", sm_conf_type_section,
 	offsetof(sm_cnf_T, smc_ss_cnf),
 	0, /* sizeof(ss_cnf_T), */
 	NULL, SM_CONF_FLAG_KEEP_DEFAULT|SM_CONF_FLAG_MULTIPLE, ss_defs,
-	NULL, NULL, NULL },
+	NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 { SM_CONF_DEF_MAGIC, "qmgr", sm_conf_type_section,
 	offsetof(sm_cnf_T, smc_qmgr_cnf),
 	0, /* sizeof(qmgr_cnf_T), */
 	NULL, SM_CONF_FLAG_KEEP_DEFAULT, qmgr_defs,
-	NULL, NULL, NULL },
+	NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 
 /* Sentinel */
-{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL },
+{ SM_CONF_DEF_MAGIC, NULL, 0, 0, 0, NULL, 0, NULL, NULL, NULL, NULL SM_LC_NO_ISSET SM_LC_SET_MAGIC(0) },
 };
 
 #define SM_SHOWTREE	0x01
diff --git a/smar/smar_stop.c b/smar/smar_stop.c
index 82c7c50..6e103d5 100644
--- a/smar/smar_stop.c
+++ b/smar/smar_stop.c
@@ -8,7 +8,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: smar_stop.c,v 1.26 2006/04/02 06:34:20 ca Exp $")
+SM_RCSID("@(#)$Id: smar_stop.c,v 1.27 2009/03/10 03:14:30 ca Exp $")
 #include "sm/error.h"
 #include "sm/assert.h"
 #include "smar.h"
diff --git a/smtpc/smclt.c b/smtpc/smclt.c
index c717287..18db913 100644
--- a/smtpc/smclt.c
+++ b/smtpc/smclt.c
@@ -9,7 +9,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: smclt.c,v 1.249 2008/03/05 15:36:48 ca Exp $")
+SM_RCSID("@(#)$Id: smclt.c,v 1.250 2009/08/15 19:51:12 ca Exp $")
 #include "sm/assert.h"
 #include "sm/error.h"
 #include "sm/string.h"
@@ -176,6 +176,10 @@ sc_talkingtomyself(sc_sess_P sc_sess)
 	return SM_SUCCESS;
 }
 
+#define SC_SESS_ADDR(sc_sess)						\
+	((sc_sess->scse_rmt_addr.sa.sa_family == AF_INET) ?		\
+	 inet_ntoa(sc_sess->scse_rmt_addr.sin.sin_addr)			\
+	 : sc_sess->scse_rmt_addr.sunix.sun_path)
 /*
 **  SC_RD_REPLY -- read reply/replies from SMTP server
 **
@@ -411,11 +415,13 @@ sc_rd_reply(sc_t_ctx_P sc_t_ctx, int phase)
 			sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 				SC_LCAT_CLIENT, SC_LMOD_CLIENT,
 				SM_LOG_INFO, 8,
-				"sev=INFO, func=sc_rd_reply, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, mail=%@S, stat=%m, reply=%@S",
+				"sev=INFO, func=sc_rd_reply, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, mail=%@S, stat=%m, reply=%@S, server=%s",
 				thr_id, sc_sess->scse_id,
 				sc_ta->scta_id, sc_ta->scta_ssta_id,
 				sc_ta->scta_mail->scm_pa, ret,
-				sc_sess->scse_rd);
+				sc_sess->scse_str,
+				SC_SESS_ADDR(sc_sess));
+
 			if (ret != SMTP_OK) {
 				sc_ta->scta_mail->scm_reply = sm_str_dup(sc_ta->scta_rpool,
 							sc_sess->scse_rd);
@@ -480,11 +486,12 @@ sc_rd_reply(sc_t_ctx_P sc_t_ctx, int phase)
 				sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 					SC_LCAT_CLIENT, SC_LMOD_CLIENT,
 					SM_LOG_INFO, 8,
-					"sev=INFO, func=sc_rd_reply, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, rcpt=%@S, stat=%m, reply=%@S",
+					"sev=INFO, func=sc_rd_reply, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, rcpt=%@S, stat=%m, reply=%@S, server=%s",
 					thr_id, sc_sess->scse_id,
 					sc_ta->scta_id, sc_ta->scta_ssta_id,
 					sc_rcpt->scr_pa, ret,
-					sc_sess->scse_rd);
+					sc_sess->scse_rd,
+					SC_SESS_ADDR(sc_sess));
 				SCR_SET_FLAG(sc_rcpt, SCR_FL_LOGGED);
 			}
 
@@ -1645,10 +1652,11 @@ sc_data(sc_t_ctx_P sc_t_ctx)
 	sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 		SC_LCAT_CLIENT, SC_LMOD_CLIENT,
 		SM_LOG_INFO, 8,
-		"sev=INFO, func=sc_data, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, where=final_dot, size=%lu, stat=%m, reply=%@S",
+		"sev=INFO, func=sc_data, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, where=final_dot, size=%lu, stat=%m, reply=%@S, server=%s",
 		sc_t_ctx->sct_thr_id, sc_sess->scse_id,
 		sc_ta->scta_id, sc_ta->scta_ssta_id,
-		(ulong) total_size, ret, sc_sess->scse_str);
+		(ulong) total_size, ret, sc_sess->scse_str,
+		SC_SESS_ADDR(sc_sess));
 	return ret;
 
   error:
@@ -1985,10 +1993,11 @@ sc_one_ta(sc_t_ctx_P sc_t_ctx)
 		sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 			SC_LCAT_CLIENT, SC_LMOD_CLIENT,
 			SM_LOG_INFO, 8,
-			"sev=INFO, func=sc_one_ta, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, mail=%@S, stat=%m, reply=%@S",
+			"sev=INFO, func=sc_one_ta, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, mail=%@S, stat=%m, reply=%@S, server=%s",
 			thr_id, sc_sess->scse_id, sc_ta->scta_id,
 			sc_ta->scta_ssta_id, sc_ta->scta_mail->scm_pa, ret,
-			sc_sess->scse_str);
+			sc_sess->scse_str,
+			SC_SESS_ADDR(sc_sess));
 	}
 	if (!SMTPC_OK_REPLY(ret)) {
 		sc_ta->scta_mail->scm_reply = sm_str_dup(NULL, sc_sess->scse_rd);
@@ -2076,10 +2085,11 @@ sc_one_ta(sc_t_ctx_P sc_t_ctx)
 				sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 					SC_LCAT_CLIENT, SC_LMOD_CLIENT,
 					SM_LOG_INFO, 8,
-					"sev=INFO, func=sc_one_ta, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, rcpt=%@S, stat=%m, reply=%@S",
+					"sev=INFO, func=sc_one_ta, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, rcpt=%@S, stat=%m, reply=%@S, server=%s",
 					thr_id, sc_sess->scse_id, sc_ta->scta_id,
 					sc_ta->scta_ssta_id, sc_rcpt->scr_pa, ret,
-					sc_sess->scse_str);
+				        sc_sess->scse_str,
+				        SC_SESS_ADDR(sc_sess));
 				SCR_SET_FLAG(sc_rcpt, SCR_FL_LOGGED);
 			}
 		}
@@ -2148,12 +2158,13 @@ sc_one_ta(sc_t_ctx_P sc_t_ctx)
 		sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 			SC_LCAT_CLIENT, SC_LMOD_CLIENT,
 			SM_LOG_INFO, 8,
-			"sev=INFO, func=sc_one_ta, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, where=data, ret=%m, rcpts_ok=%d, state=%r, reply=%@S"
+			"sev=INFO, func=sc_one_ta, thread=%u, da_sess=%s, da_ta=%s, ss_ta=%s, where=data, ret=%m, rcpts_ok=%d, state=%r, reply=%@S, server=%s"
 			, thr_id, sc_sess->scse_id, sc_ta->scta_id
 			, sc_ta->scta_ssta_id, ret
 			, sc_ta->scta_rcpts_ok
 			, sc_ta->scta_state
-			, sc_sess->scse_str);
+			, sc_sess->scse_str
+			, SC_SESS_ADDR(sc_sess));
 		if (sc_ta->scta_err_state == DA_ERR_NONE ||
 		    (da_ta_err_cmd(sc_ta->scta_err_state) == DA_TA_ERR_RCPT &&
 		     sc_ta->scta_rcpts_ok > 0))
@@ -2365,13 +2376,11 @@ sc_sess_open(sc_t_ctx_P sc_t_ctx)
 		sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 			SC_LCAT_CLIENT, SC_LMOD_CLIENT,
 			SM_LOG_INFO, 8,
-			"sev=INFO, func=sc_sess_open, thread=%u, da_sess=%s, where=connect, port=%d, addr=%s, error=%s",
+			"sev=INFO, func=sc_sess_open, thread=%u, da_sess=%s, where=connect, port=%d, server=%s, error=%s",
 			thr_id, sc_sess->scse_id,
 			(sc_sess->scse_rmt_addr.sa.sa_family == AF_INET) ?
 				ntohs(sc_sess->scse_rmt_addr.sin.sin_port): -1,
-			(sc_sess->scse_rmt_addr.sa.sa_family == AF_INET) ?
-				inet_ntoa(sc_sess->scse_rmt_addr.sin.sin_addr) :
-				sc_sess->scse_rmt_addr.sunix.sun_path,
+			SC_SESS_ADDR(sc_sess),
 			strerror(r));
 		sm_str_scat(sc_sess->scse_str, strerror(r));
 		sc_sess->scse_err_st = DA_SE_ERR_OPEN_I;
@@ -2384,13 +2393,11 @@ sc_sess_open(sc_t_ctx_P sc_t_ctx)
 	sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 		SC_LCAT_CLIENT, SC_LMOD_CLIENT,
 		SM_LOG_INFO, 10,
-		"sev=INFO, func=sc_sess_open, thread=%u, da_sess=%s, status=connected, port=%d, addr=%s",
+		"sev=INFO, func=sc_sess_open, thread=%u, da_sess=%s, status=connected, port=%d, server=%s",
 		thr_id, sc_sess->scse_id,
 		(sc_sess->scse_rmt_addr.sa.sa_family == AF_INET) ?
 			ntohs(sc_sess->scse_rmt_addr.sin.sin_port): -1,
-		(sc_sess->scse_rmt_addr.sa.sa_family == AF_INET) ?
-			inet_ntoa(sc_sess->scse_rmt_addr.sin.sin_addr) :
-			sc_sess->scse_rmt_addr.sunix.sun_path);
+		SC_SESS_ADDR(sc_sess));
 
 	ret = sc_rd_reply(sc_t_ctx, SC_PHASE_INIT);
 	if (ret != SMTP_OK) {
@@ -2514,9 +2521,7 @@ sc_sess_open(sc_t_ctx_P sc_t_ctx)
 			(void) tls_get_info(sc_ctx->scc_tlsl_ctx,
 				sc_sess->scse_con,
 				TLS_F_SRV|TLS_F_CERT_REQ,
-				(sc_sess->scse_rmt_addr.sa.sa_family == AF_INET)
-				? inet_ntoa(sc_sess->scse_rmt_addr.sin.sin_addr)
-				: sc_sess->scse_rmt_addr.sunix.sun_path,
+				SC_SESS_ADDR(sc_sess),
 				sc_sess->scse_tlsi);
 			sm_log_write(sc_t_ctx->sct_sc_ctx->scc_lctx,
 				SC_LCAT_CLIENT, SC_LMOD_CLIENT,
diff --git a/smtps/smtpsrv.c b/smtps/smtpsrv.c
index 2bd6bc9..7334b32 100644
--- a/smtps/smtpsrv.c
+++ b/smtps/smtpsrv.c
@@ -8,7 +8,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: smtpsrv.c,v 1.221 2009/01/02 03:47:10 ca Exp $")
+SM_RCSID("@(#)$Id: smtpsrv.c,v 1.226 2009/06/25 04:47:52 ca Exp $")
 
 #include "sm/assert.h"
 #include "sm/error.h"
@@ -1522,7 +1522,7 @@ ss_mail_args(ss_sess_P ss_sess, size_t offset)
 }
 
 /*
-**  SS_MAIL -- MAIL command
+**  SS_MAIL_CMD -- MAIL command
 **
 **	Parameters:
 **		ss_sess -- SMTPS session
@@ -1532,13 +1532,13 @@ ss_mail_args(ss_sess_P ss_sess, size_t offset)
 */
 
 static sm_ret_T
-ss_mail(ss_sess_P ss_sess)
+ss_mail_cmd(ss_sess_P ss_sess)
 {
 	sm_ret_T ret;
 	uint flags, ltype, argoffset;
-	int log, logpriority;
+	int loglvl, logpriority;
 	ss_ta_P ss_ta;
-	ss_mail_P mail;
+	ss_mail_P ss_mail;
 	ss_ctx_P ss_ctx;
 #define MAILLEN	10	/* length of "MAIL FROM:" */
 
@@ -1547,8 +1547,8 @@ ss_mail(ss_sess_P ss_sess)
 	ss_ta = ss_sess->ssse_ta;
 	SM_IS_SS_TA(ss_ta);
 	ss_ctx = ss_sess->ssse_sctx;
-	mail = NULL;
-	log = SM_DONT_LOG;
+	ss_mail = NULL;
+	loglvl = SM_DONT_LOG;
 	logpriority = SM_LOG_INFO;
 	argoffset = 0;
 	sm_str_clr(ss_sess->ssse_wr);
@@ -1557,7 +1557,7 @@ ss_mail(ss_sess_P ss_sess)
 	    !(SSSE_ST_EHLO == ss_sess->ssse_state ||
 	      SSSE_ST_HELO == ss_sess->ssse_state))
 	{
-		log = 14;
+		loglvl = 14;
 		sm_str_scopy(ss_sess->ssse_wr, SS_R_EHLO_REQ);
 		goto cleanup;
 	}
@@ -1590,7 +1590,7 @@ ss_mail(ss_sess_P ss_sess)
 	}
 
 	if (ss_sess->ssse_ta_tot >= ss_ctx->ssc_cnf.ss_cnf_t_tot_lim) {
-		log = 10;
+		loglvl = 10;
 		sm_str_scopy(ss_sess->ssse_wr, "452 4.3.0 Too many transactions.\r\n");
 		goto cleanup;
 	}
@@ -1602,7 +1602,7 @@ ss_mail(ss_sess_P ss_sess)
 		if (sm_is_err(ret))
 			goto ssd;
 		if (IS_SMTP_REPLY(ret) && SMTP_IS_REPLY_ERROR(ret)) {
-			log = 8;
+			loglvl = 8;
 			logpriority = SM_LOG_WARN;
 
 			/* better/selectable error code? */
@@ -1624,20 +1624,20 @@ ss_mail(ss_sess_P ss_sess)
 	}
 #endif
 
-	ret = ssm_mail_new(ss_ta, true, &mail);
+	ret = ssm_mail_new(ss_ta, true, &ss_mail);
 	if (sm_is_err(ret))
 		goto ssd;
 
-	ret = t2821_scan((sm_rdstr_P) ss_sess->ssse_rd, &mail->ssm_a2821, MAILLEN);
+	ret = t2821_scan((sm_rdstr_P) ss_sess->ssse_rd, &ss_mail->ssm_a2821, MAILLEN);
 	if (sm_is_err(ret)) {
-		log = 14;
+		loglvl = 14;
 		sm_str_scopy(ss_sess->ssse_wr, SS_R_SYN_S_A);
 		goto cleanup;
 	}
 	if ((uint)ret < sm_str_getlen(ss_sess->ssse_rd) &&
 	    !ISSPACE(sm_str_rd_elem(ss_sess->ssse_rd, ret)))
 	{
-		log = 18;
+		loglvl = 18;
 		sm_str_scopy(ss_sess->ssse_wr, SS_R_SYN_PAR);
 		goto cleanup;
 	}
@@ -1646,21 +1646,21 @@ ss_mail(ss_sess_P ss_sess)
 		argoffset = ret;
 		ret = ss_mail_args(ss_sess, ret);
 		if (sm_is_err(ret)) {
-			log = 12;
+			loglvl = 12;
 			goto cleanup;
 		}
 	}
 
 	flags = R2821_CORRECT|R2821_EMPTY;
-	ret = t2821_parse(&mail->ssm_a2821, flags);
+	ret = t2821_parse(&ss_mail->ssm_a2821, flags);
 	if (sm_is_err(ret)) {
-		log = 13;
+		loglvl = 13;
 		sm_str_scopy(ss_sess->ssse_wr, SS_R_SYN_S_A);
 		goto cleanup;
 	}
 
 	sm_str_clr(ss_sess->ssse_str);
-	ret = t2821_str(&mail->ssm_a2821, ss_sess->ssse_str, 0);
+	ret = t2821_str(&ss_mail->ssm_a2821, ss_sess->ssse_str, 0);
 	if (sm_is_err(ret))
 		goto ssd;
 	sm_str_clr(ss_sess->ssse_wr);	/* clear reply string */
@@ -1668,8 +1668,8 @@ ss_mail(ss_sess_P ss_sess)
 	if (sm_str_getlen(ss_sess->ssse_str) == 2
 	    && sm_memeq(sm_str_data(ss_sess->ssse_str), "<>", 2))
 		SSTA_SET_FLAG(ss_ta, SSTA_FL_DSN);
-	sm_str_clr(mail->ssm_pa);
-	ret = sm_str_cpy(mail->ssm_pa, ss_sess->ssse_str);
+	sm_str_clr(ss_mail->ssm_pa);
+	ret = sm_str_cpy(ss_mail->ssm_pa, ss_sess->ssse_str);
 	if (sm_is_err(ret))
 		goto ssd;
 
@@ -1815,7 +1815,7 @@ ss_mail(ss_sess_P ss_sess)
 #endif
 
 	ss_ta->ssta_state = SSTA_ST_MAIL;
-	ss_ta->ssta_mail = mail;
+	ss_ta->ssta_mail = ss_mail;
 	SS_CONN_LOG(ss_sess, 2, "ss_mail");
 	sm_log_write(ss_ctx->ssc_lctx,
 		SS_LCAT_SERVER, SS_LMOD_SERVER, SM_LOG_INFO, 2,
@@ -1856,16 +1856,16 @@ ss_mail(ss_sess_P ss_sess)
 		}
 	}
   error:
-	if (log < SM_DONT_LOG && sm_str_getlen(ss_sess->ssse_wr) > 0) {
+	if (loglvl < SM_DONT_LOG && sm_str_getlen(ss_sess->ssse_wr) > 0) {
 		sm_log_write(ss_ctx->ssc_lctx,
 			SS_LCAT_SERVER, SS_LMOD_SERVER,
-			logpriority, log,
+			logpriority, loglvl,
 			"sev=%s, func=ss_mail, ss_sess=%s, ss_ta=%s, ret=%m, status=%@T, input=%@T"
 			, sm_log_sev2txt(logpriority)
 			, ss_sess->ssse_id, ss_ta->ssta_id, ret
 			, ss_sess->ssse_wr, ss_sess->ssse_rd);
 	}
-	ssm_mail_free(ss_ta, mail);
+	ssm_mail_free(ss_ta, ss_mail);
 	return ret;
 }
 
@@ -1885,7 +1885,7 @@ ss_mail(ss_sess_P ss_sess)
 	} while (0)
 
 /*
-**  SS_RCPT -- RCPT command
+**  SS_RCPT_CMD -- RCPT command
 **
 **	Parameters:
 **		ss_sess -- SMTPS session
@@ -1895,11 +1895,11 @@ ss_mail(ss_sess_P ss_sess)
 */
 
 static sm_ret_T
-ss_rcpt(ss_sess_P ss_sess)
+ss_rcpt_cmd(ss_sess_P ss_sess)
 {
 	uint flags, ltype;
 	uint fct_flags;
-	int log;
+	int loglvl;
 	sm_ret_T ret, res;
 	ss_ta_P ss_ta;
 	ss_rcpt_P ss_rcpt;
@@ -1919,20 +1919,20 @@ ss_rcpt(ss_sess_P ss_sess)
 			SSRF_FL_RELAY : 0;
 	ss_ctx = ss_sess->ssse_sctx;
 	ret = SM_SUCCESS;
-	log = SM_DONT_LOG;
+	loglvl = SM_DONT_LOG;
 
 	sm_str_clr(ss_sess->ssse_wr);
 	sm_str_clr(ss_sess->ssse_str);
 	if (ss_ta->ssta_state != SSTA_ST_MAIL && ss_ta->ssta_state != SSTA_ST_RCPT)
 	{
-		log = 20;
+		loglvl = 20;
 		sm_str_scopy(ss_sess->ssse_wr, SS_R_SEQ);
 		goto cleanup;
 	}
 	if (strncasecmp((char *) sm_str_getdata(ss_sess->ssse_rd), "rcpt to:",
 			RCPTLEN) != 0)
 	{
-		log = 14;
+		loglvl = 14;
 		sm_str_scopy(ss_sess->ssse_wr, SS_R_SYNE);
 		SM_SET_FLAG(fct_flags, SSRF_FL_BAD);
 		goto cleanup;
@@ -1943,13 +1943,13 @@ ss_rcpt(ss_sess_P ss_sess)
 	    || ss_ta->ssta_rcpts_tot >= ss_ctx->ssc_cnf.ss_cnf_r_tot_lim
 	   )
 	{
-		log = 14;
+		loglvl = 14;
 		sm_str_scopy(ss_sess->ssse_wr, "452 4.5.3 Too many recipients.\r\n");
 		SM_SET_FLAG(fct_flags, SSRF_FL_BAD);
 		goto cleanup;
 	}
 	if (ss_ta->ssta_rcpts_len >= QSS_RC_MAXSZ / 2) {
-		log = 14;
+		loglvl = 14;
 		sm_str_scopy(ss_sess->ssse_wr, "452 4.5.3 Too many recipients.\r\n");
 		SM_SET_FLAG(fct_flags, SSRF_FL_BAD);
 		goto cleanup;
@@ -1957,7 +1957,7 @@ ss_rcpt(ss_sess_P ss_sess)
 
 	ret = ssr_rcpts_new(ss_ta, &ss_ta->ssta_rcpts, &ss_rcpt);
 	if (sm_is_err(ret)) {
-		log = 12;
+		loglvl = 12;
 		sm_str_scopy(ss_sess->ssse_wr, SS_R_SSD);
 		goto error;
 	}
@@ -1981,7 +1981,7 @@ ss_rcpt(ss_sess_P ss_sess)
 	ret = t2821_scan((sm_rdstr_P) ss_sess->ssse_rd, &ss_rcpt->ssr_a2821,
 			RCPTLEN);
 	if (sm_is_err(ret)) {
-		log = 12;
+		loglvl = 12;
 		sm_str_scopy(ss_sess->ssse_wr, SS_R_SYN_R_A);
 		SM_SET_FLAG(fct_flags, SSRF_FL_BAD);
 		goto cleanup;
@@ -1989,7 +1989,7 @@ ss_rcpt(ss_sess_P ss_sess)
 	if ((uint)ret < sm_str_getlen(ss_sess->ssse_rd) &&
 	    !ISSPACE(sm_str_rd_elem(ss_sess->ssse_rd, ret)))
 	{
-		log = 12;
+		loglvl = 12;
 		sm_str_scopy(ss_sess->ssse_wr, SS_R_SYNE);
 		SM_SET_FLAG(fct_flags, SSRF_FL_BAD);
 		goto cleanup;
@@ -1997,7 +1997,7 @@ ss_rcpt(ss_sess_P ss_sess)
 
 	/* check args: none for now, fixme: misleading error if no address */
 	if ((uint)ret < sm_str_getlen(ss_sess->ssse_rd)) {
-		log = 14;
+		loglvl = 14;
 		sm_str_scopy(ss_sess->ssse_wr, SS_R_SYNE);
 			/* "555 5.5.5 Parameter unsupported.\r\n") */
 		SM_SET_FLAG(fct_flags, SSRF_FL_BAD);
@@ -2014,7 +2014,7 @@ ss_rcpt(ss_sess_P ss_sess)
 	/* further checks should be somewhere else, configurable */
 	ret = t2821_parse(&ss_rcpt->ssr_a2821, R2821_CORRECT);
 	if (sm_is_err(ret)) {
-		log = 12;
+		loglvl = 12;
 		sm_str_scopy(ss_sess->ssse_wr, SS_R_SYN_R_A);
 		SM_SET_FLAG(fct_flags, SSRF_FL_BAD);
 		goto cleanup;
@@ -2027,7 +2027,7 @@ ss_rcpt(ss_sess_P ss_sess)
 
 		ret = t2821_str(&ss_rcpt->ssr_a2821, ss_sess->ssse_wr, 0);
 		if (sm_is_err(ret)) {
-			log = 14;
+			loglvl = 14;
 			sm_str_scopy(ss_sess->ssse_wr, SS_R_SYN_R_A);
 			goto cleanup;
 		}
@@ -2058,7 +2058,7 @@ ss_rcpt(ss_sess_P ss_sess)
 	sm_str_clr(ss_sess->ssse_str);
 	ret = t2821_str(&ss_rcpt->ssr_a2821, ss_sess->ssse_str, 0);
 	if (sm_is_err(ret)) {
-		log = 12;
+		loglvl = 12;
 		sm_str_scopy(ss_sess->ssse_wr, SS_R_SSD);
 		goto error;
 	}
@@ -2312,7 +2312,7 @@ ss_rcpt(ss_sess_P ss_sess)
 		"sev=INFO, func=ss_rcpt, ss_sess=%s, ss_ta=%s, rcpt=%@T, stat=%d"
 		, ss_sess->ssse_id, ss_ta->ssta_id, ss_sess->ssse_str
 		, SMTP_R_DISCARD);
-	log = SM_DONT_LOG;
+	loglvl = SM_DONT_LOG;
 
   cleanup:
 
@@ -2323,9 +2323,9 @@ ss_rcpt(ss_sess_P ss_sess)
 
 	if (SM_SUCCESS == ret && IS_SMTP_REPLY_STR(ss_sess->ssse_wr, 0))
 		ret = SMTP_REPLY_STR2VAL(ss_sess->ssse_wr, 0);
-	if (log < SM_DONT_LOG && sm_str_getlen(ss_sess->ssse_wr) > 0) {
+	if (loglvl < SM_DONT_LOG && sm_str_getlen(ss_sess->ssse_wr) > 0) {
 		sm_log_write(ss_ctx->ssc_lctx,
-			SS_LCAT_SERVER, SS_LMOD_SERVER, SM_LOG_INFO, log,
+			SS_LCAT_SERVER, SS_LMOD_SERVER, SM_LOG_INFO, loglvl,
 			"sev=INFO, func=ss_rcpt, ss_sess=%s, ss_ta=%s, rcpt=%@T, error=%m, status=%@T"
 			, ss_sess->ssse_id, ss_ta->ssta_id, ss_sess->ssse_str
 			, ret, ss_sess->ssse_wr);
@@ -2343,11 +2343,11 @@ ss_rcpt(ss_sess_P ss_sess)
   error:
 	if (sm_str_getlen(ss_sess->ssse_wr) == 0)
 		sm_str_scopy(ss_sess->ssse_wr, SS_R_SSD);
-	if (ret != SM_SUCCESS && log < SM_DONT_LOG &&
+	if (ret != SM_SUCCESS && loglvl < SM_DONT_LOG &&
 	    sm_str_getlen(ss_sess->ssse_wr) > 0)
 	{
 		sm_log_write(ss_ctx->ssc_lctx,
-			SS_LCAT_SERVER, SS_LMOD_SERVER, SM_LOG_INFO, log,
+			SS_LCAT_SERVER, SS_LMOD_SERVER, SM_LOG_INFO, loglvl,
 			"sev=INFO, func=ss_rcpt, ss_sess=%s, ss_ta=%s, rcpt=%@T, error=%m, status=%@T"
 			, ss_sess->ssse_id, ss_ta->ssta_id, ss_sess->ssse_str
 			, ret, ss_sess->ssse_wr);
@@ -3337,6 +3337,56 @@ ss_ta_zero(ss_ta_P ss_ta)
 }
 
 /*
+**  SS_CREATE_GREETING -- format initial SMTP greeting.
+**
+**	Parameters:
+**		ss_sess -- SMTP server session context
+**
+**	Returns:
+**		nothing
+*/
+
+static void
+ss_create_greeting(ss_sess_P ss_sess)
+{
+	const char *greet;
+	ss_ctx_P ss_ctx;
+
+	SM_IS_SS_SESS(ss_sess);
+	ss_ctx = ss_sess->ssse_sctx;
+	SM_IS_SS_CTX(ss_ctx);
+	greet = ss_ctx->ssc_cnf.ss_cnf_greeting;
+
+	/* complete greeting? must end with \r\n */
+	if (greet != NULL && strncmp(greet, "220", 3) == 0) {
+		uint len;
+
+		sm_str_scopy(ss_sess->ssse_wr, greet);
+		len = sm_str_getlen(ss_sess->ssse_wr);
+		if (sm_str_rd_elem(ss_sess->ssse_wr, len - 2) == '\r' &&
+		    sm_str_rd_elem(ss_sess->ssse_wr, len - 1) == '\n')
+			return;
+	}
+
+	sm_str_scopy(ss_sess->ssse_wr, "220 ");
+	sm_str_cat(ss_sess->ssse_wr, ss_ctx->ssc_hostname);
+	if (greet != NULL) {
+		sm_ret_T ret;
+
+		ret = sm_str_put(ss_sess->ssse_wr, ' ');
+		if (!sm_is_err(ret))
+			ret = sm_str_scat(ss_sess->ssse_wr, greet);
+		if (!sm_is_err(ret))
+			ret = sm_str_scat(ss_sess->ssse_wr, "\r\n");
+		if (!sm_is_err(ret))
+			return;
+	}
+
+	/* "else": greet is NULL or too long */
+	sm_str_scat(ss_sess->ssse_wr, " ESMTP " MTA_GREETING "\r\n");
+}	
+
+/*
 **  SS_HDL_SESSION -- Session handling function stub.
 **
 **	Parameters:
@@ -3438,9 +3488,8 @@ ss_hdl_session(ss_sess_P ss_sess, sm_ret_T sessok)
 	}
 
 	/* create greeting */
-	sm_str_scopy(ss_sess->ssse_wr, "220 ");
-	sm_str_cat(ss_sess->ssse_wr, ss_ctx->ssc_hostname);
-	sm_str_scat(ss_sess->ssse_wr, " ESMTP " MTA_GREETING "\r\n");
+	ss_create_greeting(ss_sess);
+
 	ret = ss_reply(ss_sess, ss_sess->ssse_wr, ss_sess->ssse_fp, -1, true);
 	if (ret != SMTP_OK) {
 		sm_log_write(ss_ctx->ssc_lctx,
@@ -3573,12 +3622,12 @@ ss_hdl_session(ss_sess_P ss_sess, sm_ret_T sessok)
 		}
 #endif /* MTA_USE_SASL */
 		else if (strncasecmp(buf, "mail", 4) == 0) {
-			ret = ss_mail(ss_sess);
+			ret = ss_mail_cmd(ss_sess);
 			if (sm_is_err(ret))
 				goto errreply;
 		}
 		else if (strncasecmp(buf, "rcpt", 4) == 0) {
-			ret = ss_rcpt(ss_sess);
+			ret = ss_rcpt_cmd(ss_sess);
 			if (sm_is_err(ret))
 				goto errreply;
 		}
diff --git a/statethreads/examples/smtpc2.c b/statethreads/examples/smtpc2.c
index 0d3bcf4..f3834f3 100644
--- a/statethreads/examples/smtpc2.c
+++ b/statethreads/examples/smtpc2.c
@@ -5,7 +5,7 @@
  */
 
 #include "sm/generic.h"
-SM_RCSID("@(#)$Id: smtpc2.c,v 1.96 2009/05/03 02:02:35 ca Exp $")
+SM_RCSID("@(#)$Id: smtpc2.c,v 1.97 2009/06/12 00:34:31 ca Exp $")
 #include "sm/assert.h"
 #include "sm/error.h"
 #include "sm/str.h"
@@ -127,6 +127,12 @@ static unsigned long srv_max_sz_b = 0;
 /* 3 digits reply code plus ' ' or '-' */
 #define SMTP_REPLY_OFFSET	4
 
+#if SC_USE_DATE
+#define MAIL_HEADER "From: me@example.com\r\nTo: you@example.com\r\nSubject: test\r\nDate: today\r\n\r\n"
+#else
+#define MAIL_HEADER "From: me@example.com\r\nTo: you@example.com\r\nSubject: test\r\n\r\n"
+#endif
+
 /* server capabilities */
 #define SCSE_CAP_NONE		0x0000	/* guess	*/
 #define SCSE_CAP_ESMTP		0x0001	/* ESMTP	*/
@@ -215,6 +221,7 @@ sce_usage(const char *prg)
 {
 	sm_io_fprintf(smioerr,
 		"Usage: %s [options] -r host:port\n"
+		"-1 n        body length\n"
 		"-2          flush data before final dot\n"
 		"-8          try Deferred RCPT Reply\n"
 		"-9          try RCPT status after dot.\n"
@@ -485,7 +492,7 @@ main(int argc, char *argv[])
 
 	/* Parse arguments */
 	while ((opt = getopt(argc, argv,
-			"289Aa:B:b:C:c:D:d:Ee:F:f:Gg:hI:il:M:m:Nn:O:o:Pp:R:r:Ss:T:t:W:w:Q:q:xY:Z"))
+			"1:289Aa:B:b:C:c:D:d:Ee:F:f:Gg:hI:il:M:m:Nn:O:o:Pp:R:r:Ss:T:t:W:w:Q:q:xY:Z"))
 				!= -1)
 	{
 		switch (opt)
@@ -639,6 +646,9 @@ main(int argc, char *argv[])
 		  case 'm':
 			ta_total = (unsigned long) atol(optarg);
 			break;
+		  case '1':
+			datalen = (unsigned int) atoi(optarg) + strlen(MAIL_HEADER);
+			break;
 		  case 'l':
 			datalen = (unsigned int) atoi(optarg);
 			break;
@@ -800,11 +810,6 @@ main(int argc, char *argv[])
 
 	if (0 == bytesread)
 	{
-#if SC_USE_DATE
-#define MAIL_HEADER "From: me@example.com\r\nTo: you@example.com\r\nSubject: test\r\nDate: today\r\n\r\n"
-#else
-#define MAIL_HEADER "From: me@example.com\r\nTo: you@example.com\r\nSubject: test\r\n\r\n"
-#endif
 		j = strlcpy((char *)databuf, MAIL_HEADER, sizeof(databuf));
 		for (j = strlen(MAIL_HEADER); j < sizeof(databuf); j++)
 			databuf[j] = ' ' + (j % 64);
diff --git a/statethreads/stamp-h.in b/statethreads/stamp-h.in
index 9788f70..e69de29 100644
--- a/statethreads/stamp-h.in
+++ b/statethreads/stamp-h.in
@@ -1 +0,0 @@
-timestamp
-- 
1.6.0.3

