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