Posting to a list while being a memeber form another list
I have the following situation:
List A is a generic, plain ML to which members can post
List B is an "announce" type list: only one person can post, members read only.
Members of B want to post to A without being members of A, but *have to* be members of B. In other words, they dont want the traffic from A but still need to post to it.
What set up should I use for this?
Thank you.
MGL
Maurice G. Lafleur +------------------------------------------------+
Teacher + Voice: +1(819).778.2270 X1412 +
Heritage College + Fax: +1(819).776.7364 +
325 Cite des Jeunes + mailto: mlafleur@cegep-heritage.qc.ca +
Hull. Qc. +------------------------------------------------+
Canada
J8Y 6T3
On Thu, Jan 31, 2002 at 08:44:36AM -0500, Lafleur Maurice wrote:
I have the following situation: List A is a generic, plain ML to which members can post List B is an "announce" type list: only one person can post, members read only. Members of B want to post to A without being members of A, but *have to* be members of B. In other words, they dont want the traffic from A but still need to post to it. What set up should I use for this? Thank you. MGL
Here is what I have done for a situation like this. I have
written a Perl script (sorry, my Python skills are
non-existent at this point) called "setup-posters". It
takes a list of mailing list names, flat files or email
addresses (or any combination thereof) and merges them all
together into a list of unique email addresses. It then sets
up the "posters" variable for a target list to be this list of
addresses.
I run it like this, from cron:
setup-posters.pl --source server --source siteops --target announce
this says to take the membership of the mailing lists "server"
and "siteops" and give them all posting privileges to the
"announce" list. I think in your case you'd use --source
announce --target list-a
The script is attached. Please let me know if you have any
questions about how to use it or how it works. I'm pasting it
below my sig in case this list strips MIME attachments like
mine :)
-- Caleb Epstein | bklyn . org | Politics is not the art of the possible. cae at | Brooklyn Dust | It consists in choosing between the disastrous bklyn dot org | Bunny Mfg. | and the unpalatable. | | -- John Kenneth Galbraith
#!/usr/bin/perl -w # # Setup the "posters" configuration for a "target" list based on a set # of "sources", which can be Mailmn list names, flat files of email # addresses, or email addresses passed on the command line. # # $Id$
use strict; use POSIX qw(tmpnam); use Getopt::Long; use File::Basename;
my $progname = basename $0; my @SOURCE; my $target; my $mailman = (getpwnam("mailman"))[5] || "/usr/local/mailman"; my $verbose = 0;
sub usage { print <<EOF $progname - Configure the 'posters' allowed on a Mailman list
Usage: $progname [options]
Options: -s | --source s Specify a source for the email addresses. May be an absolute path which file contains email addresses, an individual email address of the form user\@domain or a Mailman list name, whose members will be used. -t | --target t Must be a list known to Mailman. -m | --mailman m Specify root of Mailman install. It should be detected automatically, but if this fails, you will need to supply this option. -h | --help Generate this usage message and exit. -v | --verbose Print verbose progress messages.
You must specify one or more sources and one and only one target. EOF ; }
my $retval = GetOptions ("help!" => sub { usage; exit 0; }, "source=s@" => \@SOURCE, "target=s" => \$target, "verbose!" => \$verbose, "mailman=s" => \$mailman);
if ($retval == 0) { usage; exit 1; }
die "Could not find Mailman root directory.\n" unless -d $mailman and -d "$mailman/bin";
die "No sources specified.\n" unless scalar @SOURCE; die "No target specified.\n" unless defined $target; die "Target $target is not a valid Mailman list.\n" unless -d "$mailman/lists/$target";
my %MEMBERS;
sub get_members { my $spec = shift; my %M;
if (-f $spec) { print "Reading addresses from file $spec.\n" if $verbose; open (FILE, $spec) or warn "Couldn't open $spec: $!\n"; while (<FILE>) { chomp; next if /^\#/; $M{lc $_} = 1; } } elsif ($spec =~ m/^.+\@.+/) { $M{lc $spec} = 1; } elsif (-d "$mailman/lists/$spec") { print "Getting membership roster from Mailman list $spec.\n" if $verbose; open (MM, "$mailman/bin/list_members $spec|") or warn "Couldn't open pipe to $mailman/bin/list_members: $!\n"; while (<MM>) { chomp; next unless /^.+\@.+/; $M{lc $_} = 1; } } else { warn "Don't know how to turn '$spec' into a list of addresses.\n"; }
print "Found " . (scalar keys %M) . " addresses in $spec.\n" if $verbose and scalar keys %M;
sort keys %M; }
print "Processing source(s):\n" if $verbose;
foreach my $source (@SOURCE) { my @M = get_members ($source); map { $MEMBERS{lc $_} = 1 } @M; }
print "Found " . (scalar keys %MEMBERS) . " total unique addresses.\n" if $verbose;
die "No subscribers found in @SOURCE\n" unless scalar keys %MEMBERS;
my $tmpfile = tmpnam();
open (POSTERS, "> $tmpfile") or die "Couldn't open $tmpfile for writing: $!\n";
print POSTERS "posters = ['", join ("', '", sort keys %MEMBERS), "']\n";
close POSTERS;
my $cmd = "$mailman/bin/config_list -i $tmpfile $target";
print "Running $cmd\n" if $verbose;
$retval = system ("$mailman/bin/config_list -i $tmpfile $target");
unlink $tmpfile;
my $status = $retval >> 8;
if ($retval != 0 or $verbose) { my $signal = $retval & 127; my $cored = $retval & 128;
warn "Mailman config_list command exited with status $status" . ($signal ? " from signal $signal" : "") . ($cored ? ", dumped core" : "") . "\n"; }
exit $status;
Posting to a list while being a memeber form another listPiece of Cake...
Create a bogus user on List B and set them to "No Mail" Dump out the users from List A - ~mailman/bin/list_members Clone the dumped list into List B using the bogus user created earlier - ~mailman/bin/clone_member Set List B so that only members can post.
Viola - your users in List A can now post to List B. They are technically members of B, but they don't get any mail sent to B.
You can easily setup a script to automate the process on an on-going basis. If you do, may I suggest dumping the member lists of both lists into two tmp files and using "diff" to make your clone adds...
=== For a simple alternative, setup a user that can post to List B Send folks in List A the email address and let them setup their Email client to use that as one of their "personalities". I use several email clients and all of them allow folks to change (on the fly) who the email is from.
Good Luck - Jon Carnes ----- Original Message ----- From: Lafleur Maurice To: Mailman-Users@python.org Sent: Thursday, January 31, 2002 8:44 AM Subject: [Mailman-Users] Posting to a list while being a memeber form another list
I have the following situation:
List A is a generic, plain ML to which members can post
List B is an "announce" type list: only one person can post, members read only.
Members of B want to post to A without being members of A, but *have to* be members of B. In other words, they dont want the traffic from A but still need to post to it.
What set up should I use for this?
Thank you.
MGL
Maurice G. Lafleur +------------------------------------------------+ Teacher + Voice: +1(819).778.2270 X1412 + Heritage College + Fax: +1(819).776.7364 + 325 Cite des Jeunes + mailto: mlafleur@cegep-heritage.qc.ca + Hull. Qc. +------------------------------------------------+ Canada J8Y 6T3
participants (3)
-
Caleb Epstein -
Jon Carnes -
Lafleur Maurice