NAME
Mail::SimpleList - module for managing simple, temporary, easy mailing lists
SYNOPSIS
use Mail::SimpleList;
my $list = Mail::SimpleList->new( 'alias' );
$list->process();
DESCRIPTION
Sometimes, you just need a really simple mailing list to last for a few days. You want it to be easy to create and easy to use, and you want it to be easy to unsubscribe. It's not worth setting up a complex system with one of the existing mailing list managers, but it's nice not to worry about who does and doesn't want to participate.
Mail::SimpleList, Mail::SimpleList::Aliases, and Mail::SimpleList::Alias make it easy to create a temporary mailing list system.
USING LISTS
INSTALLING
Please see the README file in this distribution for installation and configuration instructions. You'll need to configure your mail server just a little bit, but you only need to do it once. The rest of these instructions assume you've installed Mail::SimpleList to use the address alias@example.com
.
CREATING A LIST
To create a list, send an e-mail to the address alias@example.com
. In the subject of the message, include the phrase *new*
. In the body of the message, include a list of e-mail addresses to be subscribed to the list. For example, you may create a list including Alice, Bob, and Charlie with an e-mail resembling:
From: you@example.com
To: alias@example.com
Subject: *new*
alice@example.com
bob@example.com
charlie@example.com
You will receive a response informing you that the list has been created. Alice, Bob, and Charlie will each receive a response indicating that you have subscribed them to the alias. Each message will include the alias-specific posting address. In this case, it might be alias+3abfeec@example.com
.
You can specify additional directives when creating a list. Please see Directives for more information.
POSTING TO A LIST
To post to a list, simply send an e-mail to the address provided in the subscription or creation message. It will be sent to everyone currently subscribed to the list. You do not need to use the Reply-All feature on your mailer; Mail::SimpleList sets the Reply-To
header automatically.
If you do include other e-mail addresses in the Cc
header, Mail::SimpleList will, by default, automatically subscribe them to the list, informing them of this action and sending them the current message. No one should receive duplicate messages, even if he is already subscribed.
UNSUBSCRIBING FROM A LIST
To unsubscribe from a list, send an e-mail to the address provided with a subject line of *unsubscribe*
. In Bob's case, this message might be:
From: bob@example.com
To: alias+3abfeec@example.com
Subject: *unsubscribe*
no body here; it doesn't matter
Bob will receive an e-mail confirming that he has been unsubscribed. He will not receive any more messages directed to this list unless he resubscribes.
CLONING A LIST
To clone a list, duplicating its subscribers but setting yourself as the owner and changing other attributes, send a message to the main address (in this case, alias@example.com
) with a subject containing the command *clone*
and the address of the list to clone. Alice could clone the list above by sending the message:
From: alice@example.com
To: alias@example.com
Subject: *clone* alias+3abfeec@example.com
doug@example.com
Alice will receive a list creation message and the members of the cloned list will each receive a message informing them that they have been added to the clone. Doug will also be added to this new list.
DIRECTIVES
Lists have five attributes. Two, the list owner and the list members, are set automatically when the list is created. You can specify the other attributes by including directives when you create or clone a list.
Directives go in the body of the creation or clone message, before the list of e-mail addresses to add. They take the form:
Directive: option
Closed
This directive governs whether or not the list is closed to non-subscribers. If so, only members of the list may send a message to the list. Everyone else will receive an error message indicating that the list is closed.
This attribute is false by default; anyone can post to a list. To enable it, use either directive form:
Closed: yes
Closed: 1
Expires
This directive governs how long the list will be available. After its expiration date has passed, no one may send a message to the list. Everyone will then receive an error message indicating that the list has expired.
This attribute is not set by default; lists do not expire. To enable it, use the directive form:
Expires: 7d2h
This directive will cause the list to expire in seven days and two hours. Valid time units are:
m
, for minute. This is sixty (60) seconds.h
, for hour. This is sixty (60) minutes.d
, for day. This is twenty-four (24) hours.w
, for week. This is seven (7) days.M
, for month. This is thirty (30) days.
This should suffice for most purposes.
Auto_add
This directive governs whether addresses found in the Cc
header will be added automatically to the list. By default, it is enabled. To disable it, use either directive form:
Auto_add: no
Auto_add: 0
METHODS
new( $alias_directory, [ $filehandle ] )
new()
takes one mandatory argument and one optional argument.$alias_directory
is the path to the directory where alias data is stored.$filehandle
is a filehandle (or a reference to a glob) from which to read an incoming message. By default, it will read fromSTDIN
, as that is how mail filters work.process()
Processes one incoming message.
AUTHOR
chromatic, chromatic@wgz.org
, with suggestions from various friends and family as well as the subset of the Portland Perl Mongers who do not appear in a previous category.
BUGS
No known bugs, though something odd happens when you send a message with an invalid command to the base address (in our example, alias@example.com
).
TODO
look for addable addresses in
To
header as wellallow the list owner to add people even if
Auto_add
is offexplore appropriate mailing-list and references headers
explicitly forbid loops (strip out all other alias addresses when sending)
allow list creation to be restricted to a set of users
show lists of which I am a member
COPYRIGHT
Copyright (c) 2003, chromatic. All rights reserved. This module is distributed under the same terms as Perl itself, in the hope that it is useful but certainly under no guarantee. Hey, it's free.