Since the time this pages were written a lot more contributions to ezmlm has been made. Especially the newer versions of ezmlm-idx completely cover all topics mentioned here. Also, there is a very good documentation available, which describes the procedure of creating a broad band of list types in detail. Please take a look at it. In the meantime, I will change the topic of this pages...
Written by Özgür Kesim
Consider this page as a HOWTO for setting up advanced mailing lists using ezmlm. This collects my experiences with ezmlm.
I assume, that you already read the ezmlm documentation. I will not explain the basic steps.
You must use qmail (v1.01) as your MTU and have ezmlm v0.53 installed.
Important: You will also need the ezmlm-issub
program and ezmlm-idx (v0.10) extension for ezmlm.
qmail is available at
ezmlm-idx-0.10 and ezmlm-issub are available at
I give an overview about the neccessary steps for running a whole family of
mailing lists. As an example, I'll explain the vim mailing list family I
created at babayaga.math.fu-berlin.de.
Note: I use fixed font for listnames, keywords, sripts,
filenames and directories.
The pattern /home/vim/{foo,bar} stands for the list
/home/vim/foo /home/vim/bar
At this point, we formulate the following conditions:
| /usr/local/bin/ezmlm/ezmlm-reject | /usr/local/bin/ezmlm/ezmlm-send '/home/vim/announce' | /usr/local/bin/ezmlm/ezmlm-warn '/home/vim/announce' || exit 0If we change this to
| /usr/local/bin/ezmlm/ezmlm-reject | /usr/local/bin/ezmlm/ezmlm-send '/home/vim/announce' | /usr/local/bin/ezmlm/ezmlm-send '/home/vim/dev' | /usr/local/bin/ezmlm/ezmlm-send '/home/vim/vim' | /usr/local/bin/ezmlm/ezmlm-warn '/home/vim/announce' || exit 0ezmlm automatically sends each mail sent to announce also to the other two.
We choose X-Secret-Code: 1234 as this header entry. Now we change /home/vim/announce/editor to
|grep "^X-Secret-Code: 1234" || ( echo "You are not allowed to post to this list"; exit 100 ) | /usr/local/bin/ezmlm/ezmlm-reject | /usr/local/bin/ezmlm/ezmlm-send '/home/vim/announce' | /usr/local/bin/ezmlm/ezmlm-send '/home/vim/dev' | /usr/local/bin/ezmlm/ezmlm-send '/home/vim/vim' | /usr/local/bin/ezmlm/ezmlm-warn '/home/vim/announce' || exit 0
Note:
Make sure, that your grep-command exits with the proper
exit-code.
Instead of the echo command, you may use a script which writes
a more detailed failure notice. But make shure, that you exit with code
100 in order to force ezmlm to stop further processing of the
editor-file and sending a error message back to the sender.
Since we don't want the "X-Secret-Code" send to all members, we have to remove this headerfield. This is done by edditing *every* headerremove file in the directories /home/vim/{vim,announce,dev} and adding x-secret-code in a separate line.
An other case would be, to allow members of the vim list to mail also to vim-dev and vice versa. This case is easy to reflect, if you understand the other case.
Note:
We only describe the steps for the vim list. You have to apply
the same changes to vim-dev, too (use the appropriate filename).
Here we need the ezmlm-issub command.
We put the following line as the first line into /home/vim/vim/editor
|/usr/local/bin/ezmlm/ezmlm-issub '/home/vim/vim' "$SENDER" || ( echo "You are not allowed to post to this list"; exit 100 )
Again, you may use a script for more detailed output, which exists with code 100
Let me explain the strategy:
You must know, that the vim list itself is responsable for
creating the digest. Such a digest can be requested by sending a email
to vim-dig.[COOKIE]. Therefore everyone who knows this
[COOKIE] can request a digest.
We use cron to execute weekly (or whenever you wish to send the digest) a job, which sends such an digest-request to the vim list. The sender will be the vim-digest list itself. Therefore, the digest will then be sent to the digest list and then be forwarded to all it members.
First, we must enable such requests and protect them with a [COOKIE]. For this, simply edit the /home/vim/vim/manager file and change the first line to
|/usr/local/bin/ezmlm/ezmlm-get '/home/vim/vim' [COOKIE]that is, simply add [COOKIE] to the first line.
To avoid others to be able to send mails to the digest list, we
declare vim-digest to be a sublist of vim by
executing the following command:
echo "vim@a.b.c" > /home/vim/vim-digest/sublist
This is for the following reasons:
Now, setup a crontab entry (for user vim), running crontab -e and write something like:
0 23 * * 7 echo -e "To: vim-dig.[COOKIE]@a.b.c\n" | /var/qmail/bin/qmail-inject -fvim-digest@a.b.cOn Sundays at 11pm, the digest will be created and then sent to the members of the digest list.