SnertSoft: We Serve Your Server

wimp 0.1.25
«Light-Weight Mailing List Manager»


Description & Usage ° Installation & Notes ° License & Support

Description

Private Wimp is a simple light-weight mailing list manager (MLM). It is far simpler to install and manage than for example Major Domo or Mailman. Private Wimp, by design, has fewer features than many other MLM; list creation is handled by the postmaster, typically using a command shell, while list management is handled remotely by email (or command shell if provide by the system administrator).

Usage

wimp [options ...][arguments ...]

Options can be expressed in four different ways. Boolean options are expressed as +option or -option to turn the option on or off respectively. Numeric, string, and list options are expressed as option=value to set the option or option+=value to append to a list. Note that the +option and -option syntax are equivalent to option=1 and option=0 respectively. String values containing white space must be quoted using single (') or double (") quotes. Option names are case insensitive.

Some options, like +help or -help, are treated as immediate actions or commands. Unknown options are ignored and not reported. The first command-line argument is that which does not adhere to the above option syntax. The special command-line argument, --, can be used to explicitly signal an end to the list of options.

The default options, as shown below, can be altered by specifying them on the command-line or within an option file, which simply contains command-line options one or more per line and/or on multiple lines. Comments are allowed and are denoted by a line starting with a hash (#) character. If the file option is defined and not empty, then it is parsed first, followed by the command line options.

Note that there may be additional options that are listed in the option summary given by +help or -help that are not described here.

Configuration Options

±create
Create and populate a new list-name directory under the list-root-dir. For example:
# wimp +create list-name=short-name

The short-name directory will contain a default config that will need to be editted and empty reviewers and users files. wimp will create additional files and directories as commands and posted articles are issued later.

At the time of +create command, additional options can be set on the command line so as to avoid the need to edit the config file any further. For example:

# wimp +create \
	list-name=short-name \
	list-subject-tag="[A List]" \
	list-summary="Blah blah burp!" \
	list-owner="fuzzy-bunny@example.org" \
	list-cookie-ttl=3d \
	-list-reply-to
file=
Read option file before command line options.
±help
help=filepath
Write the option summary to standard output and exit. The output is suitable for use as an option file. For Windows this option can be assigned a file path string to save the output to a file, eg. help=./config
±info
Write the configuration and compile time options to standard output and exit.
list-archive=
When defined, the posted messages will be archived and can be found via the given URL. This URL will appear in RFC 2369 message headers.
list-bounce-policy=forward
Bounce messages, ie. MAIL FROM:<> aka MAILER-DAEMON, can either be discarded, forwarded to the list-owner, or parsed to remove unknown user addresses. Specify one of discard, forward, or remove.
list-cookie-secret=
A secret phrase used to generate cookie tokens.
list-cookie-ttl=7d
How long before a cookie token will expire. It can be express in seconds or with a unit suffix (m)inute, (h)our, (d)ay, or (w)eeks.
list-id=
RFC 2919 List-ID
+list-keys-caseless
When true, all key lookups in key/value files are done case insensitive. This relaxes the RFC definition of an email address where normally the local-part before the at-sign is case sensitive. NOTE that in changing this, the sort order of the users, users-removed, reviewers, and reviewers-removed files must be changed.
list-name=
The short name for this list, which can consist of one or more alpha-numeric characters and/or the hyphen. This name corresponds to a directory found under list-root-dir containing the list configuration files and archive.
-list-one-re-only
Remove excessive Re: from Subject: header.
list-owner=
The mail address of the list owner. This address will appear in RFC 2369 message headers.
list-post=
The mail address used to post messages or send administration commands. It MUST be defined. This address will appear in RFC 2369 message headers.
list-posting-password=
When defined, this password can be used by list members to prefix the Subject: header to pre-approve the message without review by either the list owner or reviewers. The password is removed from the Subject: before distribution.
+list-reply-to
When set, the Reply-To: header specifies the list-post address.
list-root-dir=/var/wimp
Where to find list configuration files and archives.
list-subject-tag=
List name to appear in Subject: header.
list-summary=
One line summary description of mailing list.
list-type=closed-moderated
The list distribution type, which can be one of the following:

closed-announcement
Only the list owner and reviewers may post to members. The posts still must be moderated just to avoid accidental posts being made.
closed-trusted
Accept and distributed member posts, without review, to members.
closed-moderated
Accept member posts for review and approval by the list owner or reviewers before distribution to members.
open-moderated
Accept any member and non-member posts for review and approval by the list owner or reviewers before distribution to members.
+reject-attachments
When set, reject posts containing attachments.
+reject-html
When set, reject posts containing text/html.
smtp-auth-user=
SMTP AUTH user for authenticate session login.
smtp-auth-pass=
SMTP AUTH password for authenticate session login.
smtp-command-timeout=300
SMTP command timeout in seconds.
smtp-connect-timeout=30
SMTP client connection timeout in seconds.
smtp-rcpt-batch=50
Maximum number of recipients per message.
smtp-server=127.0.0.1:25
The host[:port] of where to send outbound mail.
-verbose
Verbose logging to maillog when set.
±version
Write the version information to standard error.

Mailing List Commands

Public Subject Commands

Subject: help
Request this subject command summary from server.
Subject: join [$address]
Subject: remove [$address]
Subject: subscribe [$address]
Subject: unsubscribe [$address]
Either the optional $address field, Reply-To:, or From: is used to send a comfirmation message to join or be removed from the mailing list. The mail address will be sent a confirmation message (see below), which the recipient must reply to complete the command.
Subject: confirm join $cookie
Subject: confirm remove $cookie
User replies to the confirmation message to join or be removed from the mailing list.
Subject: password $list-posting-password $subject-line
User posting with the list-posting-password can by-pass moderation by the reviewers.
Subject: $subject-line
When no command is found in the subject, then the message is posted to the mailing list, possibly being moderated first by one of the reviewers.

Reviewers Subject Commands

Subject: accept $article $cookie
Subject: reject $article $cookie
Reviewer replies to accept or reject a moderated post.
Subject: get-users
Subject: get-users-removed
Subject: get-reviewers
Subject: get-reviewers-removed
The list-owner and reviewers can request the list files.
Subject: users-join
Subject: users-remove
Reviewer specifies in the message body, one or more mail addresses, one per line. The reviewer will then be asked to reply to a confirmation message to act on the command.

List Owner Subject Commands

Subject: reviewers-join
Subject: reviewers-remove
List-owner specifies in the message body, one or more mail addresses, one per line. The list-owner will then be asked to reply to a confirmation message to act on the command.

List Directory Structure

$list-root-dir/$list-name/
  articles/last-article Last article number assigned.
  articles/$yyyy-$mm/$number Posted messages, where $yyyy is a year number, $mm the numerical month, and $number is an article number.
  articles/$number Message waiting approval, where $number is an article number.
  config Configuration generated by -help or +help.
  reviewers List of reviewer addresses, sorted, one per line.
  reviewers-removed List of reviewer addresses removed, sorted, one per line.
  users List of subscribed addresses, sorted, one per line.
  users-removed List of unsubscribed addresses, sorted, one per line.

Installation

  1. Download:

    wimp-0.1 md5sum Change Log
    LibSnert md5sum Change Log
  2. The build process for libsnert and wimp is pretty straight forward:

    $ cd (path to)/com/snert/src/lib
    $ ./configure
    $ make build
    $ cd ../wimp
    $ ./configure --enable-list-root=/var/wimp
    $ make build
    $ sudo make install
    

    The --enable-list-root is optional and only need be specified if you want the list-root-dir to use something different from /var/wimp. It is possible to override the configured default by specifying the list-root-dir option in the liast aliases, as defined below.

    The configure option --enable-run-user and --enable-run-group might be worth changing to match how your MTA invokes external programs. The default is daemon:daemon, though other MTAs or systems may use root:daemon, mail:mail, or root:mail when piping a message through a program.

    Both configuration scripts have options that allow you to override defaults. Those options are listed with:

    $ ./configure --help
    
  3. After installing wimp, the list-root-dir, defined by the configure script, will have been created along with an initial test list.

    To create a new mailing list use the +create command option to make the list directory, populate the directory, and ensure that initial files have the correct ownership and permissions. For example the initial test list was created with:

    # wimp +create \
    	list-name='test' \
    	list-subject-tag='[Test]' \
    	list-summary='Test Mailing List' \
    	list-cookie-secret=`date +%s`
    

    The list's config file will probably require further editing. wimp will create additional files and directories as commands and posted articles are issued later. (The use of a date stamp, as illustrated above, is probably not most secure means of generating a secret.)

  4. To configure Sendmail to use Private Wimp simply add an alias to /etc/mail/aliases. For example:

    # cd /etc/mail
    # cat <<'EOT' >>aliases
    test: "|/usr/local/sbin/wimp list-name=test"
    EOT
    # newaliases
    

    Optionally, configure Sendmail virtusertable to attribute a specific address to the alias. For example:

    # cd /etc/mail
    # cat <<'EOT' >>virtusertable
    test@example.com	test
    EOT
    # makemap hash virtusertable <virtusertable
    

    Postfix apparently supports a similar mechanism to direct messages to an alias that pipes messages through a program. This is an exercise left to the reader.

  5. It is now possible to send commands and posts to the test mailing list, eg.

    $ mail -s 'help' test@example.com
    .
    $
    

License Agreement 1.7

SNERTSOFT & CO. ARE WILLING TO LICENSE THE SOFTWARE IDENTIFIED ABOVE TO YOU ONLY UPON THE CONDITION THAT YOU ACCEPT ALL OF THE TERMS CONTAINED IN THIS LICENSE AGREEMENT. PLEASE READ THE AGREEMENT CAREFULLY. BY DOWNLOADING OR INSTALLING THIS SOFTWARE, YOU ACCEPT THE TERMS OF THE AGREEMENT.

  1. Definitions

    1. ``Package'' means the identified above in source and/or binary form, any other machine readable materials provided (including, but not limited to documentation, sample files, data files), any updates or error corrections, and its derivative works.

    2. ``Organisation'' means a legal entity or an individual.

    3. ``You'' (or ``Your'') means an Organisation exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, ``You'' includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition,``control'' means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.

    4. ``SnertSoft'' means Anthony C. Howe situated in Cannes, France (SIRET #489 259 937 00014).

    5. ``SnertSoft & Co.'' means SnertSoft and all authorised & licensed partners, such as value-added resellers or appliance manufacturers.

  2. Statement of Original Work

    1. The Package is an original work written by SnertSoft, with exception of following third party code:

      1. MD5 routines written by L. Peter Deutsch, based on RFC 1321;

      2. SQLite3 package is written by D. Richard Hipp of Hwaci and is in the public domain.

      3. strnatcmp.c is written by Martin Pool of sourcefrog.net and has a BSD style license.

  3. License To Use

    1. You may install and use this Package, without modifications, exclusively on machines for which You have purchased a license, provided You retain this notice, SnertSoft's copyright notice, any and all license control methods (see below), and any links within the Package back to the most current online versions of this License and Disclaimer.

    2. You may copy, share, distribute, modify, and create derivative works from the user manuals and any related documentation solely for Your internal business purposes, such as in-house documentation, training manuals, or reference material.

  4. Restrictions

    1. Redistribution, including but not limited to books, CDROMS, download mirrors, floppy diskettes, hard disks, hardcopy print outs, online archives, solid state disks, streaming tapes, or other current or future forms of storage or communication media of the Package, with or without modifications, including any and all derivative works such as source patches, binaries, binary patches, or similar is expressly forbidden without prior written permission in hardcopy (ie. letter or fax) signed and dated by SnertSoft.

    2. It is expressly forbidden for You to use the Package, in whole or in part, in any other software or appliance without prior written permission in hardcopy (ie. letter or fax) signed and dated by SnertSoft.

    3. It is expressly forbidden for You to use the Package to develop any software or other technology having the same primary function as the Package, including but not limited to using the Package in any development or test procedure that seeks to develop like software or other technology, or determine if such software or other technology performs in a similar manner as the Package.

    4. You may not sell, rent, lease, or transfer the Package to third parties without prior written permission in hardcopy (ie. letter or fax) signed and dated by SnertSoft.

  5. Termination

    1. This Agreement is effective until terminated. You may terminate this Agreement at any time by destroying all copies of the Package.

    2. This Agreement will terminate immediately without notice from SnertSoft if You fail to comply with any provision of this Agreement.

    3. Either party may terminate this Agreement immediately should any portion of the Package become, or in either party's opinion be likely to become, the subject of a claim of infringement of any intellectual property right. Upon Termination, You must destroy all copies of the Package.

  6. Versions Of The License

    1. New Versions. SnertSoft may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number.

    2. Effect of New Versions. Once a version of the Package has been published under a particular version of the License, You may always continue to use it under the terms of that License version. You may also choose to use such Package under the terms of the most current version of the License published by SnertSoft.

    3. No one other than SnertSoft has the right to modify the terms applicable to the Package created under this License.

Disclaimer

THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO WAY SHALL SNERTSOFT OR LICENSEE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

License Control

The Package may use one or more license control methods including, but not limited to, license key activation, periodic reporting of Package details and IP address of installation to SnertSoft & Co., or remote license verification by SnertSoft & Co.. Any information reported to or gathered by SnertSoft & Co. shall remain strictly confidential and the private property of SnertSoft & Co.. Under no circumstances will SnertSoft & Co. resell or release this information to third parties, unless demanded by court order.

Support

Support is provided for one year from date of purchase and only for SnertSoft's original Package that was purchased directly from SnertSoft. Additional support beyond the first year can be obtained from SnertSoft on time & materials basis or from one of SnertSoft's authorised partners.

Support for the Package obtained from authorised partners, such as value-added resllers or appliance manufacturers, will be supplied by those partners. SnertSoft will not support the Package without proof of purchase from SnertSoft, such as an Order N° or Invoice N°.

Package enhancements requests and product suggestions are always welcome. A community mailing list is available; please refer to SnertSoft web site Support area for details.

Gifts

Gifts from the author's Amazon US or Amazon UK wishlist (search by mail address <achowe at snert dot com>) are welcomed for the continued encouragement, moral support, and ego pumping needed to work in foreign non-english speaking lands.

since January 2010