Like any other piece of software (and information generally), ezmlm-idx comes with NO WARRANTY. Things you have to decide before starting (assuming you've dealt with conf-bin and conf-man of ezmlm): 0. If your 'crontab' binary does not live in '/usr/bin' edit 'conf-cron' now to reflect the correct path. HOW TO INSTALL: 1. Copy the contents of the archive to your ezmlm-0.53 directory. % mv ezmlm-idx-0.301/* ezmlm-0.53/ 2. Patch the ezmlm-0.53 source: % cd ezmlm-0.53 % patch < idx.patch [ezmlm-issub and ezmlm-case are now part of this package. There is no need to apply them separately.] 3. Compile the programs and man pages: % make clean % make; make man 4. Copy binaries and man pages to the correct locations. # make setup (or copy manually). 5. The ezmlm-cron(1) program can be run SUID/SGID a special user with crond access. This allows your users to use ezmlm-cron to generate digest trigger messages, without being able to directly use crond. To enable this feature create a special user, e.g. "ezmlm". Then: # chown ezmlm /usr/local/bin/ezmlm-cron # chmod 4555 /usr/local/bin/ezmlm-cron and create ~ezmlm/ezcronrc as described in the ezmlm-crond(1) man page. You may need to modify the path in the commands above if you have installed ezmlm in a non-default location. ezmlm-cron refuses to run SUID root. Also, do not use a login user for this purpose: The user "ezmlm" in the above example can read ~ezmlm/crontab which contains all users digest codes. HOW TO TEST: I. SHORT VERSION (GET'S YOU GOING): 1. As a regular user, create a new list, and digest list, configured so that mail to list-owner goes to you, digests are sent every 24 hours at 04:13. Allowed to post are only senders that are subscribers of the list, digest list, or addresses that were added by you to a special subscriber database in ~/list/extra (add with 'ezmlm-sub ~/list/extra address'). All other posts are sent to the list owner for approval. The digest code is 'gaga'. Only subscribers of list or list-digest are allowed access to the list archive. % ezmlm-both ~/list ~/.qmail-list user-list host gaga youraddr@host This will trigger a digest with the message that results in more than 30 messages, more than 64 k message body, or more than 48 h since the latest digest. To get digests at 04:13 every day, add: % ezmlm-cron -i 48 -k 64 -t 04:13 list@host gaga If this command fails, you have not set up ezcronrc (see 5. above). 2. Add an address as a subscriber to both list and list-digest: % ezmlm-sub ~/list address@host % ezmlm-sub ~/list/digest address@host 3. Send a message from address@host to the list. You should get it back as a subscriber. 4. Send a message from otheraddress@host. youraddr@host should receive a message moderation request. If you accept it, it should go to the list subscribers, including address@host. If otheraddress@host should be allowed to post directly without being a subscriber (it may be an alias for a subscriber), just add the address to the extra database: % ezmlm-sub ~/list/extra otheraddress@host 5. Get message 1 & 2 from the archive by sending mail to list-get1_2@host from a subscriber address. 6. Wait until 04:13. You should get a digest of the first messages. II. LONGER VERSION (SHOWS YOU MORE ABOUT HOW EZMLM-IDX WORKS). A. Archive retrieval and digests 1. Create a new list with digest list: % ezmlm-make -d DIR dot-file list host alphanumeric_string Ex: % ezmlm-make -d ~joe/SOS ~joe/.qmail-sos joe-sos id.com gaga NOTE: If you created lists as a different userid than owns the list, e.g. as 'root' created lists owned by 'alias', remember to make everything owned by the user. For 'alias' do: # chown -R alias DIR # chgrp -R qmail DIR Ex: # chown -R joe ~joe/SOS # chgrp -R joe ~joe/SOS 2. Subscribe to the list: % echo "To: joe-sos-subscribe@id.com"|/var/qmail/bin/qmail-inject and reply to the confirmation request. 3. Send a message to the list. Reply to it to the list. Reply to the list again. Send a new post, and so on to get 10 messages or more, belonging to 2 threads or more, based on subject, into the list archive. 4. Alternatively (to 1-3), use ezmlm-make -e to edit the existing list: Use ezmlm-make with the arguments you used for creation of the list, optionally with a 'digestcode' argument to enable digests, and other switches to enable moderation, etc (see ezmlm-make.1). NOTE: Any manual customization you made to text files and DIR/editor, etc, will be lost. ezmlm-make -ed ~joe/SOS ~/.qmail-sos joe-sos id.com - Build a subject index for the archive: % ezmlm-idx DIR Ex: % ezmlm-idx ~joe/SOS 5. Test the action of list-get, list-index, list-thread, list-dig.digestcode by sending mail to: joe-sos-get1_5@id.com - sends messages 1-5 threaded. joe-sos-thread2@id.com - thread containing msg 2. joe-sos-index@id.com - subject idx of last 100 msgs. joe-sos-dig.digestcode1_10@id.com - digest of first 10 messages. 6. A digest is triggered as soon as more than 30 messages, 48 hours, or 64 kbytes of message body have passed since the last digest. To get the digest, subscribe to the digest by sending an empty message to joe-sos-digest-subscribe and reply to the confirmation request. To manually subscribe: % ezmlm-sub ~joe/SOS/digest address@host See FAQ.idx, ezmlm.5, ezmlm-get.1, ezmlm-tstdig.1, and ezmlm-cron for more digest info and on how to generate regular timed digests. To get daily digest at 03:12: % ezmlm-cron -t 03:12 -i24 joe-sos@id.com gaga where 'joe-sos@host' is the name of the main list for 'joe-sos-diges@host'and 'gaga' is the digest code. For this, 'gaga' has to be specified as the optional fifth command line argument: % ezmlm-make -ed ~joe/SOS ~joe/.qmail-sos joe-sos id.com gaga B. Message and subscription moderation. 7. Set up a list with moderation of messages (-m), subscriptions (-s), and remote administration (-r), i.e. subscription moderators are also remote administrators and can without user interaction (un)subscribe any address: % ezmlm-make -mrs ~/DIR ~/.qmail-list listname host.domain Ex: % ezmlm-make -mrs ~joe/play ~joe/.qmail-play joe-play id.com or to edit an exsisting list: % ezmlm-make -emrs ~joe/play ~joe/.qmail-play joe-play id.com 8. Add an E-mail address you control to moderators, and verify that the address was added: % ezmlm-sub DIR/mod moderator@host % ezmlm-list DIR/mod Ex: % ezmlm-sub ~joe/play/mod moddy@id.com % ezmlm-list ~joe/play/mod [ -> moddy@id.com ] and if you're setting up list controlled not by you, but by 'user' belonging to 'group': % chown -R user DIR % chgrp -R group DIR Ex: % chown -R joe ~joe/play % chgrp -R joe ~joe/play 9. Subscribe yourself (frodo@id.com) to the list: % /var/qmail/bin/qmail-inject \ joe-play-subscribe-frodo=id.com@id.com < /dev/null [ the '-frodo=id.com' part is not necessary if you're mailing from that address. ] 10. Reply to the confirmation request. A second confirmation request will be sent to zozo@id.com. Reply to it. A message stating that you are a subscriber will be sent to you at 'frodo@id.com'. 11. Verify that you're a subscriber: % ezmlm-list DIR Ex: % ezmlm-list ~joe/play [ -> frodo@id.com ] 12. Unsubscribe yourself. % qmail-inject list-unsubscribe@host < /dev/null Ex: % /var/qmail/bin/qmail-inject \ joe-play-frodo=id.com@id.com < /dev/null [ the '-frodo=id.com' part is not necessary if you're mailing from that address. ] 13. You should receive the confirmation number to 'me@host' (Ex: frodo@id.com). Reply to it. You should receive a message that you're unsubscribed. 14. From 'moderator@host' subscribe 'me@host': % qmail-inject list-subscribe-me=host@host < /dev/null Ex: % export QMAILUSER=moddy % /var/qmail/bin/inject list-subscribe-frodo=id.com@id.com < /dev/null You should receive a confirmation request to 'moderator@host' (Ex: moddy@id.com). Reply to it. A message that me@host (Ex: frodo@id.com) is a subscriber will be sent to 'me@host' (Ex: frodo@id.com). 15. Post a message to the list from 'me@host' (Ex: frodo@id.com). A moderation request should go to 'moderator@host' (Ex: moddy@id.com). 16. Reply to the 'reject' = 'From:' address. A rejection notice should go to 'me@host' (Ex: frodo@id.com). 17. Send a second post from 'me@host'. 18. From 'moderator@host' (Ex: moddy@id.com) reply to the moderation request's 'accept' = 'Reply-To:' address. The post should go to the list and thus to the subscriber 'me@host'. (ex: frodo@id.com). 19. Remove 'moderator@host' from the moderator list: % ezmlm-unsub DIR/mod moderator@host Ex: % ezmlm-unsub ~joe/play/mod moddy@id.com (correct ownership as under 7.). 20. Remove 'me@host' from the subscriber list: % ezmlm-unsub DIR me@host Ex: % ezmlm-unsub ~joe/play frodo@id.com Now you're ready to add the real moderators. Remember: After modifying anything (including adding a moderator), you have to correct ownership if the controlling user and your current UID/GID are not the same: % chown -R user DIR % chgrp -R group DIR See man pages for options, split or shared moderator databases, etc.: * To add remote admin to an existing (not manually edited) list: % ezmlm-make -er ~joe/SOS ~joe/.qmail-sos joe-sos id.com * If this list was created with ezmlm-make from ezmlm-idx-0.23: % ezmlm-make -er ~joe/SOS * To add message moderation, remote admin, subscription moderation and a few extras (trailer with unsubscribe info, subject line prefix, ...): % ezmlm-make -ersmft ~joe/SOS ~joe/.qmail-sos joe-sos id.com * If previously not indexed, do for both of these: % ezmlm-idx ~joe/SOS * To create similar lists de novo, just leave out the '-e' switch. That's it! To report success (helps to find platform-specific problems): % ( echo 'First M. Last'; cat `cat SYSDEPS` ) \ | mail cfl-src@id.wustl.edu Replace First M. Last with your name. Send bugs reports, ideally with patch to 'lindberg@id.wustl.edu'.