summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/mailman/docs/8-miles-high.rst28
-rw-r--r--src/mailman/docs/INTRODUCTION.rst2
-rw-r--r--src/mailman/docs/MTA.rst86
-rw-r--r--src/mailman/docs/START.rst34
4 files changed, 107 insertions, 43 deletions
diff --git a/src/mailman/docs/8-miles-high.rst b/src/mailman/docs/8-miles-high.rst
index d068ebd73..85b186fc5 100644
--- a/src/mailman/docs/8-miles-high.rst
+++ b/src/mailman/docs/8-miles-high.rst
@@ -37,10 +37,12 @@ processing queues.
node [shape=box, color=lightblue, style=filled];
msg [shape=ellipse, color=black, fillcolor=white];
lmtpd [label="LMTP\nSERVER"];
+ rts [label="Return\nto Sender"];
msg -> MTA [label="SMTP"];
MTA -> lmtpd [label="LMTP"];
lmtpd -> MTA [label="reject"];
lmtpd -> IN -> PIPELINE [label=".pck"];
+ IN -> rts;
lmtpd -> BOUNCES [label=".pck"];
lmtpd -> COMMAND [label=".pck"];
}
@@ -49,7 +51,9 @@ The `in` queue is processed by *filter chains* (explained below) to determine
whether the post (or administrative request) will be processed. If not
allowed, the message pickle is discarded, rejected (returned to sender), or
held (saved for moderator approval -- not shown). Otherwise the message is
-added to the `pipeline` (i.e. posting) queue.
+added to the `pipeline` (i.e. posting) queue. (Note that rejecting at this
+stage is *not* equivalent to rejecting during LMTP processing. This issue is
+currently unresolved.)
Each of the `command`, `bounce`, and `pipeline` queues is processed by a
*pipeline of handlers* as in Mailman 2's pipeline. (Some functions such as
@@ -60,7 +64,8 @@ Handlers may copy messages to other queues (*e.g.*, `archive`), and eventually
posted messages for distribution to the list membership end up in the `out`
queue for injection into the MTA.
-The `virgin` queue is a special queue for messages created by Mailman.
+The `virgin` queue (not depicted above) is a special queue for messages created
+by Mailman.
.. graphviz::
@@ -97,12 +102,13 @@ The default set of rules looks something like this:
subgraph rules {
rankdir=TB;
node [shape=record];
- approved [label="<in> approved | { <no> | <yes> }"];
- emergency [label="<in> emergency | { <no> | <yes> }"];
- loop [label="<in> loop | { <no> | <yes> }"];
- modmember [label="<in> member\nmoderated | { <no> | <yes> }"];
- administrivia [group="0", label="<in> administrivia | <always> "];
- maxsize [label="<in> max\ size | {<in> no | <yes>}"];
+ approved [label="<in> approved | { <no> no | <yes> }"];
+ emergency [label="<in> emergency | { <no> no | <yes> }"];
+ loop [label="<in> loop | { <no> no | <yes> }"];
+ modmember [label="<in> member\nmoderated | { <no> no | <yes> }"];
+ administrivia [group="0",
+ label="<in> administrivia | { <no> no | <yes> }"];
+ maxsize [label="<in> max\ size | {<no> no | <yes>}"];
any [label="<in> any | {<no> | <yes>}"];
truth [label="<in> truth | <always>"];
@@ -114,6 +120,7 @@ The default set of rules looks something like this:
DISCARD [shape=invhouse, color=black, style=solid];
MODERATION [color=wheat];
HOLD [color=wheat];
+ action [color=wheat];
}
{ PIPELINE [shape=box, style=filled, color=cyan]; }
@@ -130,7 +137,8 @@ The default set of rules looks something like this:
modmember:no -> administrivia:in;
modmember:yes -> MODERATION;
- administrivia:always -> maxsize:in;
+ administrivia:no -> maxsize:in;
+ administrivia:yes -> action;
maxsize:no -> any:in;
maxsize:yes -> MODERATION;
@@ -145,7 +153,7 @@ The default set of rules looks something like this:
Configuration
=============
-Uses `lazr.config`_, essentially an "ini"-style configuration format.
+Mailman 3 uses `lazr.config`_, essentially an "ini"-style configuration format.
Each Runner's configuration object knows whether it should be started
when the Mailman daemon starts, and what queue the Runner manages.
diff --git a/src/mailman/docs/INTRODUCTION.rst b/src/mailman/docs/INTRODUCTION.rst
index 1ad71cf16..e7128e756 100644
--- a/src/mailman/docs/INTRODUCTION.rst
+++ b/src/mailman/docs/INTRODUCTION.rst
@@ -82,7 +82,7 @@ lists and archives, etc., are available at:
Requirements
============
-Mailman 3.0 requires `Python 2.7`_ or newer.
+Mailman 3.0 requires `Python 2.7`_.
.. _`GNU Mailman`: http://www.list.org
diff --git a/src/mailman/docs/MTA.rst b/src/mailman/docs/MTA.rst
index aa53981f8..7165c30b9 100644
--- a/src/mailman/docs/MTA.rst
+++ b/src/mailman/docs/MTA.rst
@@ -2,32 +2,73 @@
Hooking up your mail server
===========================
-Mailman needs to be hooked up to your mail server (a.k.a. *mail transport
-agent* or *MTA*) both to accept incoming mail and to deliver outgoing mail.
-Mailman itself never delivers messages to the end user; it lets its immediate
-upstream mail server do that.
+Mailman needs to communicate with your *MTA* (*mail transport agent*
+or *mail server*, the software which handles sending mail across the
+Internet), both to accept incoming mail and to deliver outgoing mail.
+Mailman itself never delivers messages to the end user. It sends them
+to its immediate upstream MTA, which delivers them. In the same way,
+Mailman never receives mail directly. Mail from outside always comes
+via the MTA.
-The preferred way to allow Mailman to accept incoming messages from your mail
-server is to use the `Local Mail Transfer Protocol`_ (LMTP_) interface. Most
-open source mail server support LMTP for local delivery, and this is much more
-efficient than spawning a process just to do the delivery.
+Mailman accepts incoming messages from the MTA using the `Local Mail
+Transfer Protocol`_ (LMTP_) interface. Mailman can use other incoming
+transports, but LMTP is much more efficient than spawning a process
+just to do the delivery. Most open source MTAs support LMTP for local
+delivery. If yours doesn't, and you need to use a different
+interface, please ask on the `mailing list or on IRC`_.
-Your mail server should also accept `Simple Mail Transfer Protocol`_ (SMTP_)
-connections from Mailman, for all outgoing messages.
+Mailman passes all outgoing messages to the MTA using the `Simple Mail
+Transfer Protocol`_ (SMTP_).
-The specific instructions for hooking your mail server up to Mailman differs
-depending on which mail server you're using. The following are instructions
-for the popular open source mail servers.
+Cooperation between Mailman and the MTA requires some configuration of
+both. MTA configuration differs for each of the available MTAs, and
+there is a section for each one. Instructions for Postfix are given
+below. We would really appreciate contributions of configurations for
+Exim and Sendmail, and welcome information about other popular open
+source mail servers.
-Note that Mailman provides lots of configuration variables that you can use to
-tweak performance for your operating environment. See the
-``src/mailman/config/schema.cfg`` file for details.
+Configuring Mailman to communicate with the MTA is straightforward,
+and basically the same for all MTAs. In your ``mailman.cfg`` file,
+add (or edit) a section like the following::
+
+ [mta]
+ incoming: mailman.mta.postfix.LMTP
+ outgoing: mailman.mta.deliver.deliver
+ lmtp_host: 127.0.0.1
+ lmtp_port: 8024
+ smtp_host: localhost
+ smtp_port: 25
+This configuration is for a system where Mailman and the MTA are on
+the same host.
-Exim
-====
+The ``incoming`` and ``outgoing`` parameters identify the Python
+objects used to communicate with the MTA. The ``deliver`` module used
+in ``outgoing`` is pretty standard across all MTAs. The ``postfix``
+module in ``incoming`` is specific to Postfix. See the section for
+your MTA below for details on these parameters.
-Contributions are welcome!
+``lmtp_host`` and ``lmtp_port`` are parameters which are used by
+Mailman, but also will be passed to the MTA to identify the Mailman
+host. The "same host" case is special; some MTAs (including Postfix)
+do not recognize "localhost", and need the numerical IP address. If
+they are on different hosts, ``lmtp_host`` should be set to the domain
+name or IP address of the Mailman host. ``lmtp_port`` is fairly
+arbitrary (there is no standard port for LMTP). Use any port
+convenient for your site. "8024" is as good as any, unless another
+service is using it.
+
+``smtp_host`` and ``smtp_port`` are parameters used to identify the
+MTA to Mailman. If the MTA and Mailman are on separate hosts,
+``smtp_host`` should be set to the domain name or IP address of the
+MTA host. ``smtp_port`` will almost always be 25, which is the
+standard port for SMTP. (Some special site configurations set it to a
+different port. If you need this, you probably already know that,
+know why, and what to do, too!)
+
+Mailman also provides many other configuration variables that you can
+use to tweak performance for your operating environment. See the
+``src/mailman/config/schema.cfg`` file for details.
Postfix
@@ -131,12 +172,19 @@ the Postfix documentation at:
.. _`mydestination`: http://www.postfix.org/postconf.5.html#mydestination
+Exim
+====
+
+Contributions are welcome!
+
+
Sendmail
========
Contributions are welcome!
+.. _`mailing list or on IRC`: START.html#contact-us
.. _`Local Mail Transfer Protocol`:
http://en.wikipedia.org/wiki/Local_Mail_Transfer_Protocol
.. _LMTP: http://www.faqs.org/rfcs/rfc2033.html
diff --git a/src/mailman/docs/START.rst b/src/mailman/docs/START.rst
index 6c029590b..a50deabf9 100644
--- a/src/mailman/docs/START.rst
+++ b/src/mailman/docs/START.rst
@@ -25,19 +25,26 @@ search, and retrieval of archived messages to a separate application (a simple
implementation is provided). The web interface (known as `Postorius`_) and
archiver (known as `Hyperkitty`_) are in separate development.
-Contributions are welcome. Please submit bug reports on the Mailman bug
-tracker at https://bugs.launchpad.net/mailman though you will currently need
-to have a login on Launchpad to do so. You can also send email to the
-mailman-developers@python.org mailing list.
+
+Contact Us
+==========
+
+Contributions of code, problem reports, and feature requests are welcome.
+Please submit bug reports on the Mailman bug tracker at
+https://bugs.launchpad.net/mailman (you need to have a login on Launchpad to
+do so). You can also send email to the mailman-developers@python.org mailing
+list, or ask on IRC channel ``#mailman`` on Freenode.
Requirements
============
Python 2.7 is required. It can either be the default 'python' on your
-``$PATH`` or it can be accessible via the ``python2.7`` binary.
-If your operating system does not include Python, see http://www.python.org
-downloading and installing it from source. Python 3 is not yet supported.
+``$PATH`` or it can be accessible via the ``python2.7`` binary. If
+your operating system does not include Python, see http://www.python.org
+for information about downloading installers (where available) and
+installing it from source (when necessary or preferred). Python 3 is
+not yet supported.
You may need some additional dependencies, which are either available from
your OS vendor, or can be downloaded automatically from the `Python
@@ -133,8 +140,9 @@ Try ``bin/mailman --help`` for more details. You can use the commands
``bin/mailman start`` to start the runner subprocess daemons, and of course
``bin/mailman stop`` to stop them.
-Postorius is being developed as a separate, Django-based project. For now,
-all configuration happens via the command line and REST API.
+Postorius, a web UI for administration and subscriber settings, is being
+developed as a separate, Django-based project. For now, the most flexible
+means of configuration is via the command line and REST API.
Mailman Web UI
@@ -151,16 +159,16 @@ Postorius was prototyped at the `Pycon 2012 sprint`_, so it is "very alpha" as
of Mailman 3 beta 1, and comes in several components. In particular, it
requires a `Django`_ installation, and Bazaar checkouts of the `REST client
module`_ and `Postorius`_ itself. Building it is fairly straightforward,
-however, given Florian Fuchs' `Five Minute Guide` from his `blog post`_ on the
+based on Florian Fuchs' `Five Minute Guide` from his `blog post`_ on the
Mailman wiki. (Check the `blog post`_ for the most recent version!)
The Archiver
------------
-In Mailman 3, the archivers are decoupled from the core engine. It is useful
-to provide a simple, standard interface for third-party archiving tools and
-services. For this reason, Mailman 3 defines a formal interface to insert
+In Mailman 3, the archivers are decoupled from the core engine. Instead,
+Mailman 3 provides a simple, standard interface for third-party archiving tools
+and services. For this reason, Mailman 3 defines a formal interface to insert
messages into any of a number of configured archivers, using whatever protocol
is appropriate for that archiver. Summary, search, and retrieval of archived
posts are handled by a separate application.