Installing Ezmlm & Ezmlm-idx


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'.