3.5. What is an Umbrella list - and why doesn't it do what I want?
An Umbrella List is a list of other lists.
For example, you have the following lists running in Mailman:
ThreeBlindMice: Minnie@farm.org, Mighty@cartoon.net, Mickey@disney.com ThreeBears: Smokey@usda.gov, Little@pbs.org, Momma@mgoose.net ThreeMenNaTub: Rub@tub.org, Dub@tub.org, Little@pbs.org
You can create an Umbrella List called, "Threesomes" and instead of people, it will contain the above list names. When you send email to Threesomes, the message goes to each of the individual lists...
Threesomes: ThreeBlindMice@mylists.com, ThreeBears@mylists.com, ThreeMenNaTub@mylists.com
When mailman sends out a monthly password reminder, it sends an email to every person in its lists. If it did that for the Umbrella List "Threesomes", then it would treat "ThreeBlindMice" as an ordinary user. Mailman would send an email to "ThreeBlindMice" that contained the password for subscribing or unsubscribing it to the list "ThreeSomes". Everyone on the "ThreeBlindMice" list would receive that message with the password. Now that is fine in the case of Minnie and Mighty, but Mickey has been known to do a few silly things in his time...
You can keep Mickey from getting the password by telling Mailman to send this type of information to "ThreeBlindMice-owner" instead of to "ThreeBlindMice".
By making "Threesomes" into an Umbrella List, you can tell Mailman to add "-owner" to any notices, confirmations and passwords that it sends out to list members.
I would like to see Umbrella Lists do more than just that. IMO, they should only send one message out to each actual user, regardless of how many lists that user is on. Currently, 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".
The work-around for this is to setup a script that builds a Mega-list out of other lists on your server.
#!/bin/bash # Create and sync the Pasus_All@mydomain.com mailling list # The list includes everyone on a Pasus project mailling list. # All the Pasus mailing lists start with the word: pasus # # create an empty file echo " " >/tmp/pasus_list # # dump out all lists names that contain the word pasus, but # be sure to not include the "_all" list, since that is the list # that we are recreating with this script LISTS="`~mailman/bin/list_lists |grep -i pasus | \ grep -vi _all| awk '{ print $1 }'`" # for i in "$LISTS" do # dump all the user emails out to a file for all the pasus lists ~mailman/bin/list_members $i >>/tmp/pasus_list done # # this sorts the list and removes duplicate entries cat /tmp/pasus_list |sort -u >/tmp/pasus_all_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 pasus users into the "_all" list # Note: welcome messages are turned off for this list. ~mailman/bin/sync_members -f /tmp/pasus_all_list pasus_all >/dev/null # # Take only pictures, leave only foot prints... rm /tmp/pasus_list rm /tmp/pasus_all_list
# Have cron run this script hourly and the Pasus_all list will be # updated automatically every hour.
Thanks to Mark Merlins, Jon Carnes, and Shane Beasley for the above work around.
Note this workaround does not take into account per-member options, especially digest and plain delivery options, and the nomail option. A comprehensive script that does it all can be found at http://www.loowit.net/~james/gen-combined-list
Errata: I just had our sysadmin setup this script for us and he said that to make it actually work he had to remove the quotes from
for i in "$LISTS"
on line 15. Bill Leuze, systems(at)haven.ca
Also, the preceding lines
LISTS="`~mailman/bin/list_lists |grep -i pasus | \ grep -vi _all| awk '{ print $1 }'`"
can be simplified to
LISTS=`~mailman/bin/list_lists --bare | grep -i pasus | grep -vi _all`
With Mailman 2.1.10 or later, you can use the "sibling lists" feature as a better umbrella list as long as you are not concerned about digest members.
Using the above example, create the list "Threesomes" with no members, and in Threesomes' Non-digest options -> regular_include_lists put
ThreeBlindMice@mylists.com ThreeBears@mylists.com ThreeMenNaTub@mylists.com
Then, a post to "Threesomes" will be sent to the regular (nondigest) members of the above three lists without duplication. Note however, that through Mailman 2.1.13 bounce processing won't work in this case for messages sent to the Threesomes list, but starting in 2.1.14, it will.
cPanel
Sibling lists in general don't work well or at all in cPanel Mailman, but this special case will work if you use the cPanel internal list names, e.g. threeblindmice_mylists.com@mylists.com
Umbrella replacement caveat
regular_include_lists as a replacement for umbrella lists in general is limited to one level of inclusion. I.e., if lista's regular_include_lists contains listb@... which in turn contains listc@... in its regular_include_lists, a post to lista will be sent to the regular members of lista and additionally, the regular members of listb without duplication, and it will be included in the next digest sent to digest members of lista. It will not be included in a listb digest and it will not be sent to any members of listc unless they are also members of lista or regular members of listb.
List-Unsubscribe
In this configuration, all posts delivered to members of any of the lists actually come from the Threesomes list. Thus, the List-Unsubscribe: header will not reference the list(s) of which the recipient is actually a member. Also, any msg_header and/or msg_footer added to posts and possibly containing unsubscribe information will be from the Threesomes list, not the included lists.
This is one of many Frequently Asked Questions.