283 lines
11 KiB
Plaintext
283 lines
11 KiB
Plaintext
=========================== Minimalist =============================
|
|
|
|
I. Common information
|
|
|
|
Minimalist is a MINImalist MAiling LIST manager. It is fast, extremely easy
|
|
to setup and support. It is written in Perl and fully tested on FreeBSD and
|
|
Linux, where it works pretty well. However there aren't causes not to use
|
|
Minimalist on any other Unix system, because it doesn't use any
|
|
system-dependent features.
|
|
|
|
Minimalist has these features:
|
|
|
|
. subscribe/unsubscribe users by request
|
|
* including write-only option of subscription
|
|
. several levels of security
|
|
. read-only/closed/mandatory lists
|
|
. information about list; users, subscribed to list; lists, to which user
|
|
subscribed
|
|
. per-user options:
|
|
* read-only (for open lists)
|
|
* write allow (for read-only lists))
|
|
* maximum message size
|
|
. susped/resume subscription
|
|
. archiving lists (internal and external), with maximum size of archived
|
|
message
|
|
. multilanguage support
|
|
. process MIME-encoded messages
|
|
* including support for local charset (for reports and footer)
|
|
. hook for bounce processing (using VERP - Variable Envelope Return-Path)
|
|
. external delivery of processed message
|
|
. blacklist
|
|
. logging activity
|
|
|
|
Minimalist has a notion of 'administrators' (global and per-list). They
|
|
have full rights to manipulate subscription of other users and get any
|
|
information, related to lists and users.
|
|
|
|
Basic language of Minimalist is English, additional languages can be found
|
|
either in distribution (in directory languages/) or on Web, at
|
|
http://www.mml.org.ua/languages/. There is also README, which explains how
|
|
to use these languages.
|
|
|
|
Commands may be either in subject of message (one command per message)
|
|
or in body (one or more commands, one per line). Batched processing starts
|
|
when subject either empty or contains command 'body' (without quotes) and
|
|
stops when either arrives command 'stop' or 'exit' (without quotes) or
|
|
gets 10 incorrect commands.
|
|
|
|
Supported commands are:
|
|
|
|
subscribe <list> [<email>] :
|
|
Subscribe user to <list>. If <list> contains suffix '-writers', user
|
|
will be able to write to this <list>, but will not receive messages
|
|
from it.
|
|
|
|
unsubscribe <list> [<email>] :
|
|
Unsubscribe user from <list>. Can be used with suffix '-writers' (see
|
|
above description for subscribe)
|
|
|
|
auth <code> :
|
|
Confirm command, used in response to subscription requests in some cases.
|
|
This command isn't standalone, it must be used only in response to a
|
|
request by Minimalist.
|
|
|
|
mode <list> <email> <mode> :
|
|
Set mode for specified user on specified list. Allowed only for
|
|
administrator. Mode can be (without quotes):
|
|
* 'reader' - read-only access to the list for the user;
|
|
* 'writer' - user can post messages to the list regardless of list's
|
|
status
|
|
* 'usual' - clear any two above mentioned modes
|
|
* 'suspend' - suspend user subscription
|
|
* 'resume' - resume previously suspended permission
|
|
* 'maxsize <size>' - set maximum size (in bytes) of messages, which
|
|
user wants to receive
|
|
* 'reset' - clear all modes for specified user
|
|
|
|
suspend <list> :
|
|
Stop receiving of messages from specified mailing list
|
|
|
|
resume <list> :
|
|
Restore receiving of messages from specified mailing list
|
|
|
|
maxsize <list> <size> :
|
|
Set maximum size (in bytes) of messages, which user wants to receive
|
|
|
|
which [<email>] :
|
|
Return list of lists to which user is subscribed
|
|
|
|
info [<list>] :
|
|
Request information about all existing lists or about <list>
|
|
|
|
who <list> :
|
|
Return the list of users subscribed to <list>
|
|
|
|
help :
|
|
Return list of supported commands with brief description about every
|
|
command
|
|
|
|
Note, that commands with <email>, 'who' and 'mode' can only be used by
|
|
administrators (users identified in the 'mailfrom' authentication scheme or
|
|
who used a correct password - either global or local). Otherwise command will
|
|
be ignored. Password must be supplied in any header of message as fragment
|
|
of the header in the following format:
|
|
|
|
{pwd: list_password}
|
|
|
|
For example:
|
|
|
|
To: MML Discussion {pwd: password1235} <mml-general\@kiev.sovam.com>
|
|
|
|
This fragment, of course, will be removed from the header before sending
|
|
message to subscribers.
|
|
|
|
----------------------------------------------------------------------------
|
|
II. Install
|
|
|
|
To install, place minimalist.pl somewhere (in /usr/local/sbin for example).
|
|
This path must be accessible for MTA and minimalist.pl must be executable
|
|
by your MTA.
|
|
|
|
Then copy minimalist.conf-sample to /usr/local/etc/minimalist.conf. If you
|
|
wish to have it in different location, you will use '-c' command-line
|
|
directive, followed by full path and name of file, where appropriate config
|
|
located (for example: minimalist.pl -c /etc/minimalist.conf ). Set
|
|
variables in config accordingly to your needs (defaults are useful in most
|
|
cases).
|
|
|
|
The next step is to create alias for minimalist, which pipes received
|
|
message to the program. The often place of aliases file is /etc/aliases.
|
|
Add this line at the end of file:
|
|
|
|
minimalist: "|/usr/local/sbin/minimalist.pl"
|
|
|
|
and, if your MTA requires, do all it need to actualize changes.
|
|
|
|
After this you must create directory which Minimalist will use for work.
|
|
It is defined in the minimalist.conf by directive 'directory'. This
|
|
directory must be *WRITABLE* by your MTA (check next section for information
|
|
on how to detect Minimalist's EUID/EGID).
|
|
|
|
----------------------------------------------------------------------------
|
|
III. Creating lists
|
|
|
|
1. In the main Minimalist's directory create directory, named exactly as
|
|
list you creating. This directory and it's contents must be owned by
|
|
uid/gid of your MTA (it's because Minimalist will write here some control
|
|
information - subscribed users, archived messages, etc). The simple and right
|
|
method to know MTA's euid/egid is:
|
|
|
|
. create in /etc/aliases such entry:
|
|
mtaid: "|tee /tmp/mtaid.tst"
|
|
. mail message to mtaid
|
|
. check owner/group of resulted /tmp/mtaid.tst and chown main Minimalist's
|
|
directory (and all subsequent) to this owner/group
|
|
. delete 'mtaid' alias from /etc/aliases
|
|
|
|
2. Add list's name and short description of it into lists.lst file (in the
|
|
main Minimalist's directory). This file will be shown by the command
|
|
<info>. Example of this file's contents:
|
|
|
|
list This is testing list
|
|
info General information, news, etc
|
|
|
|
3. Create in the list's directory some files:
|
|
|
|
a) config
|
|
Private settings for this list, they override global parameters.
|
|
|
|
b) info
|
|
Common information about list, used when user subscribes to the list
|
|
and requests information about list.
|
|
|
|
c) footer
|
|
This file will be appended to any message, passed through list. There
|
|
are few ways in which footer can be added to message:
|
|
|
|
* if message is not encoded (i.e. if it's 7bit or 8bit), message's
|
|
charset is the same as list's charset or list's charset is default
|
|
(us-ascii) and footer doesn't contain any predefined MIME-headers
|
|
(see below), then footer will be simply added to the end of the
|
|
incoming message.
|
|
|
|
* else entire message will be converted to MIME-format and footer
|
|
will be added as separate entity, with his own charset (from
|
|
configuration or from predefined headers).
|
|
|
|
* if message is already MIME-encoded, then footer will be added as
|
|
separate entity, accordingly to structure of incoming message.
|
|
|
|
It means, that footer will always be visible regardless of attachments
|
|
in message or encoding of message or charset, used in message.
|
|
|
|
If you want to define your own headers, start footer with string
|
|
'*hdr: ' (without quotes), followed by headers. Body of footer must be
|
|
separated from header with empty line, for example:
|
|
|
|
+--------------------------------------------------------
|
|
|*hdr: Content-Type: text/html; charset=koi8-r
|
|
|Content-Transfer-Encoding: 8bit
|
|
|
|
|
|<html>
|
|
|... rest body of header ...
|
|
|</html>
|
|
+--------------------------------------------------------
|
|
|
|
It gives ability to use in footer whatever you want, from HTML code,
|
|
which has references to some other resources, to animated GIFs or
|
|
Flash programs.
|
|
|
|
There are some useful macros can be used in 'info' and 'footer' files:
|
|
|
|
\a will be expanded to administrator's email
|
|
\d will be expanded to <domain>
|
|
\l will be expanded to <list>
|
|
\o will be expanded to <list>-owner@<domain>
|
|
|
|
4. Add list's aliases to /etc/aliases file:
|
|
|
|
list: "|/usr/local/sbin/minimalist.pl list"
|
|
list-owner: user@somewhere
|
|
|
|
If you are using VERP for bounce processing (see minimalist.conf-sample for
|
|
information about directive 'verp'), you must add one more alias, something
|
|
like to:
|
|
|
|
list-owner-*: "|/path/to/bounce_processing_tool.pl"
|
|
|
|
Wildcard mask specifies, that any message, where recipient's address starts
|
|
on 'list-owner-', will be passed to bounce_processing_tool.pl. Check your
|
|
MTA documentation on how to create wildcard aliases.
|
|
|
|
Distribution of Minimalist does not provide bounce processing program for
|
|
now. You should use any third-party program.
|
|
|
|
----------------------------------------------------------------------------
|
|
IV. Check configuration
|
|
|
|
You always can check configuration with command:
|
|
|
|
minimalist.pl - [listname [listname ... ]]
|
|
|
|
where 'listname' is existing list's name. If there are errors in they will
|
|
be reported. It is recommended always check configuration after any
|
|
changes either in global configuration file or in list's config.
|
|
|
|
----------------------------------------------------------------------------
|
|
V. Security
|
|
|
|
Information about how to get administrative privileges, stored in global
|
|
and private configs. You must set owner and permissions of this configs to
|
|
allow your MTA access configs and disallow access for unprivileged users.
|
|
|
|
----------------------------------------------------------------------------
|
|
VI. Internals
|
|
|
|
Subscribers are listed in files 'list' and 'list-writers' in list's
|
|
directory. Format: e-mail per row. Settings for subscriber are appended to
|
|
his e-mail through separator '>'. Available values are (without quotes):
|
|
|
|
'+' - user allowed to write in read only list (mode ... writer)
|
|
'-' - user disallowed to write in list (mode ... reader)
|
|
'!' - suspended user (suspend/resume, mode ... suspend/resume)
|
|
'#ms<size>' - maximum size in bytes of messages for user
|
|
|
|
Archives are located under list's directory in archive/yyyy./mm./dd./[0-9]*
|
|
in format one file per one message. DON'T DELETE "SEQUENCE" file in this
|
|
directory - there is a number of a last archived message!
|
|
|
|
VII. Enjoy :)
|
|
|
|
Directory sample/ in the distribution contains examples of configuration
|
|
files. Directory docs/FAQ contains some FAQs, contrib/ - some third party
|
|
supporting programs (please, note, that author doesn't aware about their
|
|
functionality and damage possibility).
|
|
|
|
There is mailing list about Minimalist. Please, mail to
|
|
minimalist@kiev.sovam.com
|
|
with subject of 'subscribe mml-general' to subscribe on this list.
|
|
|
|
Vladimir Litovka, <doka@kiev.sovam.com>
|
|
http://www.mml.org.ua/
|