blob: 53c61c278a929685f35417e77abe18cc699f6269 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at 2016-10-20 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Apache James Server 3.0 -
Apache James Server 3 - List Manager Configuration</title>
<style type="text/css" media="all">
@import url("./css/james.css");
@import url("./css/maven-base.css");
@import url("./css/maven-theme.css");
@import url("./css/site.css");
@import url("./js/jquery/css/custom-theme/jquery-ui-1.8.5.custom.css");
@import url("./js/jquery/css/print.css");
@import url("./js/fancybox/jquery.fancybox-1.3.4.css");
</style>
<script type="text/javascript" src="./js/jquery/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="./js/jquery/js/jquery-ui-1.8.5.custom.min.js"></script>
<script type="text/javascript" src="./js/fancybox/jquery.fancybox-1.3.4.js"></script>
<link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
<meta name="Date-Revision-yyyymmdd" content="20161020" />
<meta http-equiv="Content-Language" content="en" />
<link title="DOAP" rel="meta" type="application/rdf+xml" href="http://james.apache.org//doap_james-project.rdf"/>
<!-- Google Analytics -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-1384591-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script').item(0); s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body class="composite">
<div id="banner">
<a href="../index.html" id="bannerLeft" title="james-logo.png">
<img src="images/logos/james-logo.png" alt="Apache James Server 3.0" />
</a>
<a href="http://www.apache.org/index.html" id="bannerRight">
<img src="images/logos/asf_logo_small.png" alt="The Apache Software Foundation" />
</a>
<div class="clear">
<hr/>
</div>
</div>
<div id="breadcrumbs">
<div class="xleft">
<span id="publishDate">Last Published: 2016-10-20</span>
</div>
<div class="xright"> <a href="../../index.html" title="Home">Home</a>
|
<a href="../index.html" title="Server">Server</a>
|
<a href="../../hupa/index.html" title="Hupa">Hupa</a>
|
<a href="../../protocols/index.html" title="Protocols">Protocols</a>
|
<a href="../../mailet/index.html" title="Mailets">Mailets</a>
|
<a href="../../mailbox/index.html" title="Mailbox">Mailbox</a>
|
<a href="../../mime4j/index.html" title="Mime4J">Mime4J</a>
|
<a href="../../jsieve/index.html" title="jSieve">jSieve</a>
|
<a href="../../jspf/index.html" title="jSPF">jSPF</a>
|
<a href="../../jdkim/index.html" title="jDKIM">jDKIM</a>
|
<a href="../../mpt/index.html" title="MPT">MPT</a>
|
<a href="../../postage/index.html" title="Postage">Postage</a>
</div>
<div class="clear">
<hr/>
</div>
</div>
<div id="leftColumn">
<div id="navcolumn">
<h5>Overview</h5>
<ul>
<li class="none">
<a href="index.html" title="Introduction">Introduction</a>
</li>
<li class="none">
<a href="release-notes.html" title="Release Notes">Release Notes</a>
</li>
</ul>
<h5>Features</h5>
<ul>
<li class="none">
<a href="feature-mailetcontainer.html" title="Mailet Container">Mailet Container</a>
</li>
<li class="none">
<a href="feature-queue-priority.html" title="Queue Priority">Queue Priority</a>
</li>
<li class="none">
<a href="feature-persistence.html" title="Persistence">Persistence</a>
</li>
<li class="none">
<a href="feature-protocols.html" title="Protocols">Protocols</a>
</li>
<li class="none">
<a href="feature-smtp-hooks.html" title="SMTP Hooks">SMTP Hooks</a>
</li>
<li class="none">
<a href="feature-performance.html" title="Performance">Performance</a>
</li>
<li class="none">
<a href="feature-security.html" title="Security">Security</a>
</li>
</ul>
<h5>User Manual</h5>
<ul>
<li class="none">
<a href="quick-start.html" title="1. Quick Start">1. Quick Start</a>
</li>
<li class="none">
<a href="install.html" title="2. Install James">2. Install James</a>
</li>
<li class="collapsed">
<a href="config.html" title="3. Configure James">3. Configure James</a>
</li>
<li class="collapsed">
<a href="manage.html" title="4. Manage">4. Manage</a>
</li>
<li class="collapsed">
<a href="monitor.html" title="5. Monitor">5. Monitor</a>
</li>
<li class="collapsed">
<a href="upgrade.html" title="6. Upgrade">6. Upgrade</a>
</li>
</ul>
<h5>Developers Corner</h5>
<ul>
<li class="none">
<a href="dev.html" title="Architecture">Architecture</a>
</li>
<li class="none">
<a href="dev-build.html" title="Build from source">Build from source</a>
</li>
<li class="none">
<a href="dev-database-schema.html" title="Database Schema">Database Schema</a>
</li>
<li class="collapsed">
<a href="dev-extend.html" title="Develop Extensions">Develop Extensions</a>
</li>
<li class="collapsed">
<a href="dev-provided.html" title="Provided Extensions">Provided Extensions</a>
</li>
</ul>
<h5>References</h5>
<ul>
<li class="none">
<a href="apidocs/index.html" title="Javadoc">Javadoc</a>
</li>
<li class="none">
<a href="https://issues.apache.org/jira/browse/JAMES" title="Issue Tracker">Issue Tracker</a>
</li>
</ul>
<h5>About James</h5>
<ul>
<li class="none">
<a href="../../index.html" title="Overview">Overview</a>
</li>
<li class="none">
<a href="../../newsarchive.html" title="News">News</a>
</li>
<li class="none">
<a href="../../mail.html" title="Mailing Lists">Mailing Lists</a>
</li>
<li class="none">
<a href="../../contribute.html" title="Contributing">Contributing</a>
</li>
<li class="none">
<a href="../../guidelines.html" title="Guidelines">Guidelines</a>
</li>
<li class="none">
<a href="http://wiki.apache.org/james" title="Wiki">Wiki</a>
</li>
<li class="none">
<a href="../../team-list.html" title="Who We Are">Who We Are</a>
</li>
<li class="none">
<a href="../../license.html" title="License">License</a>
</li>
<li class="none">
<a href="../../thanks.html" title="Thanks">Thanks</a>
</li>
<li class="none">
<a href="../../support.html" title="Professional support">Professional support</a>
</li>
</ul>
<h5>Download</h5>
<ul>
<li class="none">
<a href="../../download.cgi" title="Releases">Releases</a>
</li>
</ul>
<h5>Apache Software Foundation</h5>
<ul>
<li>
<strong>
<a title="ASF" href="http://www.apache.org/">ASF</a>
</strong>
</li>
<li>
<a title="Get Involved" href="http://www.apache.org/foundation/getinvolved.html">Get Involved</a>
</li>
<li>
<a title="FAQ" href="http://www.apache.org/foundation/faq.html">FAQ</a>
</li>
<li>
<a title="License" href="http://www.apache.org/licenses/" >License</a>
</li>
<li>
<a title="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li>
<a title="Thanks" href="http://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
<li>
<a title="Security" href="http://www.apache.org/security/">Security</a>
</li>
</ul>
<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
<img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
</a>
</div>
</div>
<div id="bodyColumn">
<div id="contentBox">
<!-- Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License. -->
<p>
<div class="ui-widget">
<div class="ui-state-error ui-corner-all" style="padding: 0 .7em;">
<p><span class="ui-icon ui-icon-alert" style="float: left; margin-right: .3em;"></span>
<b>This page still contains text related to James 2.3 and needs to
be updated for James 3.0</b>
</p>
</div>
</div>
<div class="section">
<h2>List Manager Configuration<a name="List_Manager_Configuration"></a></h2>
<div class="section">
<h3><a name="null"></a></h3>
<p>Consult <a class="externalLink" href="https://github.com/apache/james-project/tree/master/server/app/src/main/resources/james-listmanager-template.xml">james-listmanager.xml</a> in GIT to get some examples and hints.</p>
<p>One of the frequent questions on the James-User Mailing List is how
to create a mailing list. This document explains one way of using the
currently supplied Matchers and Mailets in James v3.0.</p>
<p>Basically, the process requires creating two &lt;mailet&gt; entries
and a repository. The first mailet handles list commands (currently
only <i>list-name</i>-on and <i>list-name</i>-off). The second mailet
handles list messages. The repository will hold the e-mail addresses
of list subscribers.</p>
<p>The mailets go into the processor chain (e.g., at the top of the
<i>transport</i> processor), the repository goes into the
&lt;users-store&gt; block.</p>
</div>
<div class="section">
<h3>Setting up the Repository<a name="Setting_up_the_Repository"></a></h3>
<p>The mailing list mailets need a repository within which to store
the subscriber list. There is a separate repository for each mailing
list, and is completely independent of the user repository used by
James to manage e-mail accounts. This is configured in the
&lt;users-store&gt; block of james-listmanager.xml.</p>
<p>The following illustrates a database-backed repository using JDBC
with the ListUsersJdbcRepository class. Notice that there will be a
single table, <i>lists</i>, created in the db://maildb resource
defined elsewhere. There are currently two columns: the list name and
the list subscriber.</p>
<div class="source">
<pre>
&lt;repository name=&quot;<i>list-name</i>&quot;
class=&quot;org.apache.james.userrepository.ListUsersJdbcRepository&quot;
destinationURL=&quot;db://maildb/lists/<i>list-name</i>&quot;&gt;
&lt;sqlFile&gt;file://conf/sqlResources.xml&lt;/sqlFile&gt;
&lt;/repository&gt;
</pre></div>
<p>The following illustrates a file-system repository using the
UsersFileRepository class. [Note: the destination URL is a child
element when configuring a file-system repository, and an attribute
when configuring a database-backed repository. This inconsistency
will be addressed in a future version of James.]</p>
<div class="source">
<pre>
&lt;repository name=&quot;<i>list-name</i>&quot;
class=&quot;org.apache.james.userrepository.UsersFileRepository&quot;&gt;
&lt;destination URL=&quot;file://var/lists/<i>list-name</i>/&quot; /&gt;
&lt;/repository&gt;
</pre></div>
</div>
<div class="section">
<h3>Alternate Explanation<a name="Alternate_Explanation"></a></h3>
<p>James currently includes only the most basic list functionality, users can subscribe and unsubscribe, but there is no moderation of messages or subscriptions</p>
<p>To enable a list you need the following in config.xml in the root processor block and above the final mailet block -</p>
<div class="source">
<pre>
&lt;mailet match=&quot;CommandForListserv=james@localhost&quot;
class=&quot;AvalonListservManager&quot;&gt;
&lt;repositoryName&gt;list-james&lt;/repositoryName&gt;
&lt;/mailet&gt;
</pre></div>
<p>that will intercept the command emails sent to
</p>
<ul>
<li>james-on@localhost to subscribe the sender</li>
<li>james-off@localhost to unsubscribe the sender</li>
</ul>
<p>and-</p>
<div class="source">
<pre>
&lt;mailet match=&quot;RecipientIs=james@localhost&quot; class=&quot;AvalonListserv&quot;&gt;
&lt;membersonly&gt; false &lt;/membersonly&gt;
&lt;attachmentsallowed&gt; true &lt;/attachmentsallowed&gt;
&lt;replytolist&gt; true &lt;/replytolist&gt;
&lt;repositoryName&gt;list-james&lt;/repositoryName&gt;
&lt;subjectprefix&gt;JamesList&lt;/subjectprefix&gt;
&lt;/mailet&gt;
</pre></div>
<p>Which will distribute the mail to the current subscribers</p>
<p>in addition to the above you need to have a repository configured in the users-store block(usually near the bottom of config.xml) like so (database)-</p>
<div class="source">
<pre>
&lt;repository name=&quot;list-james&quot;
class=&quot;org.apache.james.userrepository.ListUsersJdbcRepository&quot;
destinationURL=&quot;db://maildb/lists/list-james&quot;&gt;
&lt;sqlFile&gt;file://conf/sqlResources.xml&lt;/sqlFile&gt;
&lt;/repository&gt;
</pre></div>
<p>Database users will also need to ensure that they have <a href="2.3.1/using_database.html">configured a data-source</a> named to match the destination URL</p>
<p>Using the filesystem:-</p>
<div class="source">
<pre>
&lt;repository name=&quot;list-james&quot;
class=&quot;org.apache.james.userrepository.UsersFileRepository&quot;&gt;
&lt;destination URL=&quot;file://var/lists/list-james/&quot;/&gt;
&lt;/repository&gt;
</pre></div>
<p>Restart James, send a mail to james-on@localhost and you should be subscribed.</p>
<p>The repository, be it a database table or directory in the filesystem will be created automatically.</p>
<p>Database users can manipulate the users repository using SQL, and hence any application capable of running SQL queries against it.</p>
</div>
</div>
<div class="section">
<h2>miResources.xml<a name="miResources.xml"></a></h2>
<p>Consult <a class="externalLink" href="https://github.com/apache/james-project/tree/master/server/app/src/main/resources/miResources.xml">miResources.xml</a> in GIT to get some examples and hints.</p>
</div>
</div>
</div>
<div class="clear">
<hr/>
</div>
<div id="footer">
<div class="xright">Copyright &#169; 2002-2016
<a href="http://www.apache.org/">The Apache Software Foundation</a>.
All Rights Reserved.
</div>
<div class="clear">
<hr/>
</div>
</div>
</body>
</html>