For example, say you have set up the following mailing lists:
You can create an Umbrella List called, Threesomes and instead of email addresses of people, it will contain the email addresses of the list names above.
When you send a single email to Threesomes@mylists.com, a single copy of that message is sent out to each of the individual lists (Three_Blind_Mice@mylists.com, Three_Bears@mylists.com, Three_Men_In_aTub@mylists.com).
Each of these lists will then send out a copy of that message to the email address of each subscriber in that respective list.
The result is that a single message sent to the Umbrella list is on-sent to every subscriber in each of the sub-lists.
If a message is sent to an Umbrella list and a user is on multiple sub-lists under that Umbrella list, then they will receive multiple copies of the message - one for each of the sub-lists that they are on. In the example above, Little@pbs.org would receive two messages everytime someone sent an email to "Threesomes".
As a result it is also possible that mail loops may be created due to external mail alias configuration beyond the control of the list admin!
If your subscribers are likely to be subscribed to multiple sub-lists, then Umbrella lists should be avoided if possible. If your subsribers will not be subscribed to multiple sub-lists, then using a conventional Umbrella list is probably still a good option as admin is easy.
Parent Lists:
The alternative to using standard Umbrella lists is to setup a script that
builds a "Parent" list out of other "Children" (sub lists) on your
server. The result is the same as using an umbrella list but it
avoids some of the problems.
Using the above example, the subscription lists for Three_Blind_Mice, Three_Men_I_aTub, and Three_Bears would be processed and combined to form the membership list for a separaete list called "Threesomes". Three_Blind_Mice etc are NOT subsribed to the new list. Threesomes then becomes a "Parent"list, NOT an Umbrella list. Threesomes is an ordinary list in every way except its membership is taken from the children lists. Members subscribe or unsubscribe from the "Children" and this is automatically updated on the Parent list.
This is done to ensure that only a single copy of each unique message is sent out to each actual user, regardless of how many lists that user is on.
The easiest way to process and combine lists is if the sublists
share a common but unique key in their list name. In the above
example, this would would be the key "Three_" (each sub-list
contains the expression /Three_/).
The following script illustrates how a subscriber list is taken from a number of sub-lists which include the key "saas". The membership from the sub lists is processed and used to create a subscriber list for the parent "SAAS_All" list. Messages are sent to all subscribers by simply posting to "SAAS_All"! Messages can still be sent to individual sub-lists when appropriate, and members may subscribe/unsubscribe themselves from sub-lists in the usual manner.
Problems With Parent Lists
Subscription and automated removal of invalid (bounce) adresses
may need to be performed manually by the list administrator unless
subscribers are aware that they must subscribe / unsubscibe from respective
sub-lists, not the master!
Example script follows:
#!/bin/sh
#
# Process specified sub-lists and create a master subscriber list for parent
# SAAS_All@example.com mailing list
# The list includes everyone on a SAAS mailing list.
# - All the sub-lists we want start with the word: "saas"
# - Addresses for members of the Parent/Umbrella list itself must be EXcluded
# - (to avoid infinite loop)!
# Create an empty file...
#
# echo " " >/tmp/build_list
touch /tmp/build_list
# Dump out all lists names that contain the word "saas" (case insensitive)
# - BUT, DO NOT include the "_all" list, since that is the list that we
# - are re-creating with this script!!!
#
LISTS="`~mailman/bin/list_lists |grep -i saas | \
grep -vi _all| awk '{ print $1 }'`"
for i in "$LISTS"
do
# dump all user addresses from all saas lists to the file...
~mailman/bin/list_members $i >>/tmp/build_list
done
# Sort the list and remove duplicate entries
#
cat /tmp/parent_list |sort -u >/tmp/process_list
### the above step is really unnecessary as "sync_members" already
### does this automatically - still I like a clean orderly list...
# Feed the list of all saas users into the "_all" list
# - Note: You should turn off welcome messages for this list.
# - "saas-all" is the actual name of the mailman list
#
~mailman/bin/sync_members -f /tmp/process_list saas_all >/dev/null
# Clean up the mess...
rm /tmp/build_list
rm /tmp/process_list
# Have cron run this script hourly and the "saas_all" list
# will be updated automatically every hour.
# ==EOF==
Kudos to Mark Merlins, Jon Carnes, and Shane Beasley for the
above work-around.
Docs modified and updated Roger
Buck 25 JAN 01:37:17 2002
Removing Excessive Headers
The following is taken from
Bob's Unofficial Mailman Tips and Tricks.
Mailman conforms to all the latest RFCs regarding information that should be contained in the message headers... and there are plenty of them!
Despite the reassurance gained from being correct
, it can be annoying scrolling through a page and a half of headers: Here's how to remove them:
1. Find the file called CookHeaders.py.
This should be located in: /var/mailman/Mailman/Handlers
Make a copy of this file, and call it something like CookHeaders.py.orig So you have a backup if things don't work!).
Note: you'll also see a .pyc file. This is the compiled version of the file; but don't worry - when Python goes to run it, it will see the newer timestamp on your edited file, and re-compile it automatically.
2. Edit CookHeaders.py with your favorite
editor.
Somewhere around line 116 (in version 2.0 final, at least), you'll see where
the headers are added. Simply delete each line. Be careful not
to upset the formatting - the indentation is important.
You can safely remove: