Things look quiet here. But I've been doing a lot of blogging at
dan.langille.org because I prefer WordPress now.
Not all my posts there are FreeBSD related.
I am in the midst of migrating The FreeBSD Diary over to WordPress
(and you can read about that here).
Once the migration is completed, I'll move the FreeBSD posts into the
new FreeBSD Diary website.
Creating a digest and archive for a majordomo mailing list6 November 1999
This article describes how I added a digest and an archive to a majordomo
mailing list. It will show you how to do this for a new list and how to add the
features to an existing list. I also have instructions on how to install and
been using DSL for almost two years now. I was part of a trial group which were the
first to get this great technology. As the trial went commercial, I created a
mailing list for the people involved. The list is open to everyone and includes both
users and people at the phone company and various ISPs. The list is good in that
it's independent of any supplier and we have direct lines to people within the
providers. Unfortunately, when I set up the list I did not start an archive and a
The list has grown considerably from when it started in April 1999 and now in November,
the time has come to provide an archive and digest. I first created a new test list
to establish the steps needed to utilize an archive and a digest. Then I used this
knowledge to reverse engineer the changes into an existing list.
What's an archive?
An archive contains messages which have been sent to the list. Users can request
these files using the majordomoget command. To see more
information on this command, send a message to majordomo at your domain with
"help" in the body of the message.
What's a digest?
You are probably familiar with the function of a mailing list. A person sends a
message to the list and a copy of that message is forwarded to each person on the
list. If ten messages are sent to the list, a subscriber will receive ten messages.
However, you can create a digest version of the list. If you subscribe to the
digest, you will receive a single message containing all ten message. Actually, the
digest defaults to sending out one message a day. That message contains all the
messages sent that day. There are also size considerations, but all of these options
are within the digest list configuration file.
To get a list of the digest and archives
available for a particular list, send a message to majordomo with "index
<listname>" in the body of the message, where <listname> is the name of
the list in question.
Now I'm going to divide this topic into two parts. The first example will show
how I added a brand new list and then implemented the digest and archive. The second
example will be the addition of a digest and archive to an existing list.
A new list
This example deals with the creation of a new list (newdumm) which uses both an
archive and a digest.
To test the list, I sent some large messages (about 7Kb) to the list. Then the
list owner (me) received the following messages:
MAJORDOMO ABORT (mj_digest)!!
No such file or directory
MAJORDOMO ABORT (archive)!!
shlock: '/usr/local/majordomo/lists/newdumm.archive' does not exist
That told me that the above directories had not been created. So I issued the
following commands as root:
This creates the respective directories, sets the owner to be majordomo (no
the above commands do not contain a typo; they use majordom), and modify the permission to
be 750. You should read the following sections from the majordomo FAQ:
Then sending messages to the list worked, and no errors or problems with the archive or
digest. If you look in the directories listed above, you should be able to see the
archive/digest as they are created.
OK! Now I was ready to modify my existing list. But first, see the steps I
took for testing a list.. If you have a list which
does provide a digest or archive, you need to modify the aliases to provide the missing
sections. See newdumm.aliases.txt for an
example of what is required for a digest/archive list. Then add what's missing to
As an aid, here's what I removed from /etc/aliases.majordomo:
# below this point is the
# original adsl mailing list
#adsl: "|/usr/local/majordomo/wrapper resend -l adsl -h
#adsl-request: "|/usr/local/majordomo/wrapper majordomo -l adsl"
And here's what I added:
# Mailing List with a digested form of the list and archiving
adsl: "|/usr/local/majordomo/wrapper resend -l adsl -h
# NOTE that I changed the definition of adsl-digest from the original.
# See below for the new version.
"|/usr/local/majordomo/wrapper archive -a -m -f
"|/usr/local/majordomo/wrapper digest -r -C -l adsl-digest
adsl-request: "|/usr/local/majordomo/wrapper majordomo -l adsl"
adsl-digest-request: "|/usr/local/majordomo/wrapper majordomo
# here is the newly defined version of the digest.
# it has been split into two lines for readability
adsl-digest: "|/usr/local/majordomo/wrapper resend -l adsl-digest
-h ns.freebsddiary.cx adsl-digest-outgoing"
The complete text of these example appear in samples/adsl-digest.aliases.txt
(it's easier to copy/paste or fetch). Remember to run newaliases after making
changes to /etc/aliases.majordomo.
Then you need to create the directories for the archive and the digest:
In the above examples, you created a digest. The next step is to give people
access to that digest. The easiest way to do this is to create another list. I called mine adsl-digest.
In the previous section, I showed you the commands for creating the directories for
When you are testing a new list, if things go wrong, nobody is affected. But if
you are testing an existing list, you can affect your users. And people get a bit
upset if you send too many test messages to the list. Here's how I avoided such
I shut down incoming mail by changing my firewall rules to refuse incoming connections
on port 25 (smtp).
I took a backup of the mailing list files including the configuration and subscription
Removed everyone from the mailing list and added a test address.
By shutting down incoming mail, I ensured that incoming mailing list requests would not
interfere with my testing and they would be queued up at the sending mail servers (don't
do this for very long). Then I also removed everyone from the list and put only my
name in the list file. This allowed me to test without affecting others.
After my testing finished, I did this:
Restored the subscription membership to the original subscribers.
Modified my firewall rules to allow incoming mail.
If you were testing digests, you might want to reset the digest volume numbers to what
they were before. Check your .config file in /usr/local/majordomo/lists:
# digest_volume [integer] (1) <digest>
# The current volume number
digest_volume = 1