SmartList - Mailing List Software
Chapter 23
Smart List - Mailing List Software
The official SmartList web site is located at http://www.hartzler.net/smartlist/
.
1. Go to your Mail Manager (http://yourdomain.com/menu)
2. Create a list in Mail Manager by clicking on New List.
3. Add the name of the list. You'll get a message giving you instructions.
4. Click edit list.
5. Enter the maintainer, password, and max # e-mails archived.
The maintainer is the e-mail of the person in charge of the list.
The password is the list password.
Max # e-mails archived is the number of the most recent
"back-issues" to be saved, and sent when someone requests the most
recent e-mails sent to your mailing list.
From the Mail Manager, you have access to Mailing List Manager, also called Xcommand (from the name of the program in UNIX). This is a mailing list administration program.
It will take approximately 10 minutes for the server to install the software to your account.
Once the software is installed you create your lists from
inside the Mail Manager in your Control Panel. After you have installed the
software you will see a link inside your Mail Manager named "New
List", click it to create the list. See the following screenshot.
To access a detailed FAQ and instruction manual please see http://www.hartzler.net/smartlist/
. If you have SSH access Users can access the SmartList manual on the server in
an SSH session at: /home/$user/$domain-mail/.etc/Manual
General
- What does "uncomment"
mean?
- How do I make replies go to the
list instead of to the sender?
- How do I make the list
Open/Closed?
- How do I change the admin
password for my list?
- How can I restrict who can post
to my list?
- How can I make my list
moderated?
- How do I enable 'auto help'?
- Can I add comments to the
addresses in the dist file?
- How can I change the messages
that smartlist sends to people?
- How can I add "[listname]"
to all of the mailing list messages for easy filtering?
- How can I add a short message
file to the top of all of the mailing list messages?
- How can I add a short message
file to the bottom of all of the mailing list messages?
- How can I keep the
automatically added messages from multiplying
when people quote them all the time?
- How can I add a custom header
to all of the mailing list messages?
- How can I remove some headers
from all of the mailing list messages?
- How can I remove all of the X-
headers from all of the mailing list messages?
- Is there a smartlist mailing
list?
- Is there an easy way to remove
duplicates from the dist file?
- Is there an archive of the
mailing list?
Subscribing/Unsubscribing
- How do people subscribe/unsubscribe
to the list?
- How can I restrict who can
subscribe to my list?
- How can I automatically
subscribe people who post to the list?
- How can I automatically send
files to new subscribers?
- How can I prevent certain
people from automatic unsubscription?
- How can I disable automatic
unsubscription?
- How can I tell smartlist to
notify me when someone subscribes/unsubscribes?
Digests
- How do I turn a non-digest list into
a digest?
- How often do digests get sent
out?
- Can I force a digest to be sent
every day, even if it is small?
- How can I add a message to the
beginning of every digest?
Archive Servers
- How does someone access the archive
server?
- How can I restrict who can
access the archive server?
#moderated_flag
##moderated_flag= yes # uncomment this to make the list
# moderated (you must create a
# `moderators' file for this to work)
# set moderator_PASSWORD to get
# stricter checking
To turn your list into a moderated list, remove the two hash
marks from the line that says "moderated_flag = yes", so the section
now looks like this:
#moderated_flag
moderated_flag= yes # uncomment this to make the list
# moderated (you must create a
# `moderators' file for this to work)
# set moderator_PASSWORD to get
# stricter checking
How do I make replies go
to the list instead of to the sender?
In the rc.custom file, uncomment the line:
reply_to = $listaddr
and set it to something like this:
reply_to = "Reply-To: $listaddr"
Although for various reasons this is discouraged, many people want it this way
anyway (For more information on why this is discouraged, see http://www.unicom.com/pw/reply-to-harmful.html).
How do I make the list Open/Closed?
To make the list closed subscription (i.e. the maintainer has to
approve subscriptions), uncomment the auto_subscribe line in rc.custom, and set
it to read:
auto_subscribe = no
To make the list closed unsubscription, do the same thing with the
auto_unsubscribe line.
How do I change the admin password for my list?
The password is stored in the rc.custom file.
How can I restrict who can post to my list?
You can restrict submissions to people on the accept-list (the
`accept'-file). Mail from anyone else will be passed on to the maintainer
instead of being submitted. To enable this you have to uncomment the appropriate
"foreign_submit" line in rc.custom. By default the accept file is
hardlinked to the dist file (i.e. if submissions are restricted, only
subscribers can do so). If you want to allow only an even more select group,
delete the accept file, create a new one by the same name, and edit it to taste. If you'd like to have both the
dynamic accept file and a static one, create a new file "accept2", it
will be searched in addition to the regular accept file.
If, in addition to notifying the maintainer you want an automated reply to be
generated to the submitter which was not in the accept file, then you can
accomplish this by simply creating an accept.txt file. Its contents will (like
the contents of the help.txt file) be returned to the submitter.
How can I make my list moderated?
First create a file named "moderators", it should contain the
fully qualified mail addresses of all the moderators for this list (i.e. just
local usernames are not sufficient, at least include an @host or host! ). Then
uncomment the appropriate "moderated_flag" line in rc.custom.
From then on all mail that does not contain an "Approved:
the_address_of_one_of_the_moderators" field is forwarded to all the
moderators.
One of the moderators should then resend the mail to the list after adding an
"Approved: his_own_address" field to the header (and possible editing
the contents of the mail). It will be no problem if several moderators resubmit
the same submission concurrently, since the mailinglist will filter out
duplicates anyway (i.e. only the first one will go out and be archived).
How do I enable 'auto help'?
By uncommenting the appropriate "auto_help" line in the rc.custom
file the list will respond to every undecipherable request message as if it
requested help. Messages that will still get through to the maintainer are
those:
- that seem to come from a daemon.
- which look like a reply.
Can I add comments to the addresses in the dist file?
Yes, as long as the comments are one of the format:
Some sample entries:
(the preferred format):
joe@some.where
joe@some.where (some comment)
joe@some.where (some comment) (some more comments)
Depreciated, but allowed:
<joe@some.where>
<joe@some.where> some comment
<joe@some.where> (some comment)
Not allowed:
(some comment) joe@some.where
some comment <joe@some.where>
The email address must be the first thing on the line, and must be separated from the comments by a space.
How can I change the messages that smartlist sends to
people?
The messages that smartlist sends out are in the ~slist/listname directory,
and can be edited using any available file editor. The files that it sends and
their uses are:
|
help.txt |
Sent as a response to a help command, or if anything smartlist doesnt understand is sent to the listname-request address. |
|
subscribe.txt |
Sent to new subscribers. |
|
unsubscribe.txt |
Sent to someone who just unsubscribed. |
|
archive.txt |
A description of how to use the archive server, and the commands it understands. |
How can I add "[listname]" to
all of the mailing list messages for easy filtering?
In your rc.custom file, uncomment the line that reads
"RC_LOCAL_SUBMIT_10 = rc.local.s10", and make a file called
"rc.local.s10" in your list directory, in that file put this:
---- Cut Here ----
SUBJ=`formail -zx Subject:` # extract the subject
:0fw
* ! ^Subject:.*\[listname\]
* ! ^Subject:.Re: *
| formail -I "Subject: [listname] $SUBJ"
---- End Here ----
Be sure to replace "[listname]" with what you would
like to be at the beginning of the subject line. (Posted to SmartList@Informatik.RWTH-Aachen.DE
by Leigh Wolenczak
How can I add a short message file to the top of all of the
mailing list messages?
Uncomment the line "RC_LOCAL_SUBMIT_20 = rc.local.s20"
from your rc.custom file, and add the following to your rc.local.s20 file:
#
# Adding a disclaimer in front of every mail:
#
:0 fhw
| cat - header.txt
You will also need to create a file called header.txt, which contains the text to add to the message (this file can be empty though, so you can create the files, but only fill them in when you need to add something.)
How can I add a short message file to the bottom of all of
the mailing list messages?
Uncomment the line "RC_LOCAL_SUBMIT_20 = rc.local.s20"
from your rc.custom file, and add the following to your rc.local.s20 file:
#
# Appending a disclaimer to every outgoing mail:
#
:0 fbw
| cat - footer.txt
You will also need to create a file called footer.txt, which contains the text to add to the message (this file can be empty though, so you can create the files, but only fill them in when you need to add something.)
How can I keep the automatically added messages from
multiplying when people quote them all the time?
A small refinement here: if you add something like this:
#
# Appending a disclaimer to every outgoing mail:
#
:0 fbBw
* ! to unsubscribe
| cat - footer.txt
then (assuming that the phrase "to unsubscribe" appears in your footer.txt file), the footer won't be repeated if some bozo list member quotes an entire message without trimming the footer. (Answer submitted by Doug Landauer.)
How can I add a custom header to all of the mailing list
messages?
Uncomment the line "RC_LOCAL_SUBMIT_20 = rc.local.s20"
from your rc.custom file, and add the following to your rc.local.s20 file:
#
# Adding some custom headers (although it will work, this is not
# needed for Reply-To related headers, see the reply_to variable in
# rc.custom):
#
:0 fhw
| formail -i "X-Subliminal-Message: SmartList is great" \
-I "X-Mailer: procmail, which is great too :-)"
How can I remove some headers from all of the
mailing list messages?
Uncomment the line "RC_LOCAL_SUBMIT_20 = rc.local.s20"
from your rc.custom file, and add the following to your rc.local.s20 file:
#
# To get rid of some headers:
#
:0 fhw
| formail -I X-Mailing-List: -I X-Mailer:
How can I remove all of the X- headers from all of the
mailing list messages?
Uncomment the line "RC_LOCAL_SUBMIT_20 = rc.local.s20"
from your rc.custom file, and add the following to your rc.local.s20 file:
#
# To get rid of all X- fields:
#
:0 fhw
| formail -I X-
Is there a smartlist mailing list?
Yes, to subscribe send a message to smartlist-request@Informatik.RWTH-Aachen.DE
with the word "subscribe" in the body of the message. There is also a
digested version of the mailing list, which can be subscribed to by sending a
message to smartlist-d-request@Informatik.RWTH-Aachen.DE, with the word
"subscribe" in the body of the message.
Is there an easy way to remove duplicates
from the dist file?
This script was contributed to the SmartList mailing list by mark david
mcCreary, you can run this from your list directory (where the dist file is
located), and it will remove the duplicates and sort the entries that appear
below the "(Only addresses below this line can be automatically
removed)" line.
#! /bin/sh
:
#
# rc.dedup.list
#
# mdm 11/5/97 borrow code from David W. Tamkin, with additional
# suggestions from Martin Konold and Hal Wine
#
#
# This script will sort and remove duplicates from a Smartlist
# distribution file. Smartlist dist files contain a comment line
# that looks like this
#
# (Only addresses below this line can be automatically removed)
#
# Addresses above and including this line will not be sorted.
#
lockfile=lockfile # /usr/bin/lockfile
cat=cat # /bin/cat
rm=rm # /bin/rm
sed=sed # /bin/sed
# create lock file to discourage smartlist running a job
$lockfile -10 -l3600 -r11 -s30 rc.lock
$sed -e "1,/(Only addresses below this line can be automatically removed)/{
;w slabove.$$
;d;
}
" dist | sort -fu -o slbelow.$$
$cat sl?????.$$ > dist
$rm -f sl?????.$$
$rm -rf rc.lock
Is there an archive of the mailing list?
Yes, at http://www.cnr.berkeley.edu/~casterln/smartlist-arc/maillist.html
How do people subscribe/unsubscribe to the
list?
By sending a message to the listname-request address with the message
'susbscribe' or 'unsubscribe' in the body of the mail, if the list is open they
will be added to it, if it is a closed list the request will be forwarded to the
list maintainer.
How can I restrict who can subscribe to my list?
There are three ways in which you can restrict who can subscribe to a list:
- You can put the addresses of unwanted subscribers on the so-called reject-list
(the `reject'-file).
- You can create a program (e.g. a shell script) called "subscreen".
It must be executable and will receive the mail address of the prospective
subscriber as the first argument. If subscription for that address is allowed,
the program must return with exitcode zero. If subscription is disallowed,
simply return with exitcode one. A sample program is provided in the examples
directory.
- You can completely disable automatic subscription by uncommenting the
appropriate "auto_subscribe" line in rc.custom.
- You can completely disable automatic unsubscription by uncommenting the
appropriate "auto_unsubscribe" line in rc.custom.
How can I automatically subscribe people who post to the
list?
Instead of rejecting submissions by people not on the accept
(dist) list, you can enable "force_subscribe". This will cause people
submitting mails to the list to be autosubscribed to the list if they were not
in the dist file.
How can I automatically send files to new subscribers?
You can create a file named "subscribe.files". It can
contain any number of archive-server commands. The results (i.e. the files
requested) will be sent to the new subscriber.
How can I prevent certain people from automatic
unsubscription?
Everything in the dist file preceding the line containing: '(Only addresses
below this line can be automatically removed)' is write protected from changes
by multigram (i.e. these addresses can never be automatically/accidentally
unsubscribed).
How can I disable automatic
unsubscription?
By removing the line '(Only addresses below this line can be
automatically removed)' from the dist file, automatic unsubscription will be
disabled.
How can I tell smartlist to notify me when
someone subscribes/unsubscribes?
By setting the cc_requests or cc_unsubrequests variables in the rc.custom
file to yes (making sure to uncomment it).
How do I turn a non-digest list into a digest?
You can configure a list to send out digests of accumulated
submissions. In order to do so, simply uncomment the appropriate assignment to
digest_flag in rc.custom. Digests are then sent out every so often depending on
size and age of the accumulated messages.
How often do digests get sent out?
When it reaches a certain pre-set size limit (set in rc.custom),
or it ages beyond the maximum age (3 days).
Can I force a digest to be sent every day,
even if it is small?
Yes, by creating a file called .digest.force in your list
directory, a digest will be sent out the next time that flush_digests is run, no
matter how big it is (unless it is empty). You should have a crontab entry that
runs flush_digests every day (if you want to send out a digest every day), if
you want to force a digest every day, using .digest.force is not the way to go,
since the file is deleted every time that flush_digests is run, if you really
want digests every day, run flush_digests from cron with the -f (force) option.
How can I add a message to the beginning of
every digest?
If you create a file named digest.admin in either the main
directory of the digested list or in the archive/latest directory belonging to
it, it will be picked up by the next flush_digests and included up front to the
actual digest under the heading "Administrivia". The
archive/latest/digest.admin file digested list will be automatically removed
after the digest has been pushed out. The digest.admin file in the main
directory of the digested list will not be removed and is included in every
digest.
How does someone access the archive server?
By sending email to your listname-request address, with a subject of
'archive'.
How can I restrict who can access the archive server?
You can restrict archive access to people on the accept-lists (the `accept'
and `accept2'-file). Mail from anyone else will be passed on to the maintainer
instead of being passed to the archive server. To enable this you have to
uncomment the appropriate "restrict_archive" line in rc.custom.
Many of our clients have requested a web based script that they could use to allow their users to subscribe and unsubscribe from their mailing lists. We have a very simple cgi script that is very easy to implement. Please click here to download the Zipped CGI script. To use this cgi script please follow these directions:
1. Unzip the signup.zip file.
2. Upload the signup.pl file in ASCII mode to your cgi-bin.
3. CHMOD the file to 755
4. You must edit the 5th line of the script to match your username, domain and
mailing list. The line will look like:
my $file = '/home/$username/$domain-mail/$newsletter/dist';
Example: If you have a username of maxine, your domain is
great.com and your newsletter is called announce, the line would be changed to:
my $file = '/home/maxinee/great-mail/announce/dist';
You can call the script with a link from your site by using the
following code as your link in your web page:
<a href="#"
onClick="window.open('/cgi-bin/signup.pl','','height=155,width=275,status=no,scrollbars=no');">