You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by no...@apache.org on 2006/07/05 19:10:26 UTC

svn commit: r419282 - /james/server/trunk/src/xdocs/

Author: norman
Date: Wed Jul  5 10:10:26 2006
New Revision: 419282

URL: http://svn.apache.org/viewvc?rev=419282&view=rev
Log:
Updates on xdocs

Added:
    james/server/trunk/src/xdocs/fetchmail_configuration_2_3.xml   (with props)
    james/server/trunk/src/xdocs/remotemanager_configuration_2_3.xml
    james/server/trunk/src/xdocs/repositories_2_3.xml
    james/server/trunk/src/xdocs/serverwide_configuration_2_3.xml
    james/server/trunk/src/xdocs/smtp_auth_2_3.xml
    james/server/trunk/src/xdocs/smtp_configuration_2_3.xml
    james/server/trunk/src/xdocs/spoolmanager_2_3.xml
    james/server/trunk/src/xdocs/spoolmanager_configuration_2_3.xml
    james/server/trunk/src/xdocs/using_database_2_3.xml
Modified:
    james/server/trunk/src/xdocs/documentation_2_3.xml
    james/server/trunk/src/xdocs/installation_instructions_2_3.xml
    james/server/trunk/src/xdocs/mailet_api_2_3.xml
    james/server/trunk/src/xdocs/summary_2_3.xml

Modified: james/server/trunk/src/xdocs/documentation_2_3.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/xdocs/documentation_2_3.xml?rev=419282&r1=419281&r2=419282&view=diff
==============================================================================
--- james/server/trunk/src/xdocs/documentation_2_3.xml (original)
+++ james/server/trunk/src/xdocs/documentation_2_3.xml Wed Jul  5 10:10:26 2006
@@ -3,7 +3,7 @@
 <document>
 
  <properties>
-  <title>James 2.13 - Table of Contents</title>
+  <title>James 2.3 - Table of Contents</title>
  </properties>
 
 <body>
@@ -22,7 +22,7 @@
 <p>
 James is built on top of trunk version of the <a href="http://avalon.apache.org/">Avalon Application Framework</a>.  This 
 framework encourages a set of good development practices such as Component Oriented Programming and 
-Inversion of Control.  The standard distribution of James includes version 4.0.1 of the 
+Inversion of Control.  The standard distribution of James includes  
 <a href="http://avalon.apache.org/phoenix">Phoenix Avalon Framework container</a>.  This stable 
 and robust container provides a strong foundation for the James server.
 </p>
@@ -53,7 +53,6 @@
 <li><a href="pop3_configuration_2_3.html">POP3 Server Configuration</a></li>
 <li><a href="smtp_configuration_2_3.html">SMTP Server Configuration</a></li>
 <li><a href="nntp_configuration_2_3.html">NNTP Server Configuration</a></li>
-<li><a href="fetchpop_configuration_2_3.html">FetchPOP Configuration <i>(deprecated)</i></a></li>
 <li><a href="fetchmail_configuration_2_3.html">fetchMail Configuration</a></li>
 <li><a href="remotemanager_configuration_2_1.html">RemoteManager Configuration</a></li>
 <li><a href="repositories_2_3.html">Repository Configuration</a></li>

Added: james/server/trunk/src/xdocs/fetchmail_configuration_2_3.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/xdocs/fetchmail_configuration_2_3.xml?rev=419282&view=auto
==============================================================================
--- james/server/trunk/src/xdocs/fetchmail_configuration_2_3.xml (added)
+++ james/server/trunk/src/xdocs/fetchmail_configuration_2_3.xml Wed Jul  5 10:10:26 2006
@@ -0,0 +1,950 @@
+<?xml version="1.0"?>
+
+<document>
+ <properties>
+  <title>James 2.3 - fetchmail Configuration</title>
+ </properties>
+
+ <body>
+<section name="fetchmail">
+<p>fetchmail acts as a gateway between an external message store such as an IMAP
+or POP3 server and James. Mail is fetched from the external message store and
+injected into the James input spool.</p>
+
+<p>fetchmail  is useful when delivery via standard SMTP is not an option, as a
+means of consolidating mail delivered to several external accounts into a single
+James account, or to apply the mail processing capabilities of James to mail 
+stored in an external message store.</p>
+
+<p>fetchmail has several configuration options that control the fetching and 
+filtering of mail injected into the James input spool. Once there, James' 
+flexible mail processing engine can be used to further process the mail, just as
+if it had been delivered via standard SMTP.</p>
+
+<p>
+<a href="#How fetchmail Works">How fetchmail Works</a><br/>
+<a href="#fetchmail Configuration Parameters">fetchmail Configuration Parameters</a><br/>
+<a href="#fetchmail Examples">fetchmail Examples</a><br/>
+<a href="#fetchmail Caveats">fetchmail Caveats</a>
+</p>
+</section>
+
+<section name="How fetchmail Works">
+<p>Mail is delivered by periodically running fetch tasks that read messages from
+an external message store and injects them into the James input spool. Fetch 
+tasks run concurrently.</p>
+
+<p>A set of filters applies to each fetch task. Each filter provides the ability
+to reject a message that matches the filter criteria. Rejected messages are not
+injected into the James input spool; they are either marked as seen or deleted.
+When a filter is configured to accept a message that matches its criteria, 
+messages are marked with a MailAttribute. This MailAttribute can be detected 
+within the James matcher/mailet chain, allowing further processing as 
+required.</p>
+
+<p>Each fetch task is associated with a single host server. Accounts are defined
+to the fetch task for each mailbox on the server from which mail is to be
+fetched. Accounts run consecutively.</p>
+
+<p>Optionally, the fetch task can be configured with an &lt;alllocal&gt; Account that
+generates an Account entry for each user defined in the James user repository.
+This removes the requirement to manually add or remove Account entries to the 
+fetchmail configuration each time a James user is added or removed. Currently 
+this is only useful if the server supports virtual mailboxes that allow the same
+password to apply to all users within a domain.</p>
+
+<p>Accounts can be configured to deliver all mail for an Account to a specified
+recipient or to deduce the intended recipient from the mail headers.</p>
+
+<p>Accounts are normally configured to deliver all mail for an Account to a 
+specified recipient, ignoring the recipient in the mail headers. This works well
+in the majority of cases where a mailbox is guaranteed to contain mail for a sole
+mailbox recipient.</p>
+
+<p>Accounts are configured to deduce the intended recipient from the mail headers
+when a mailbox contains mail for several users, typically all users in a domain.
+Used alone, this is not foolproof as there are circumstances when a single unique
+recipient cannot be deduced from the mail headers alone. Used in conjunction with
+an appropriately configured &lt;alllocal&gt; account, it is always possible to deduce 
+the intended recipient when the recipient is a James user.</p>
+</section>
+
+<section name="fetchmail Configuration Parameters">
+<p>The fetchmail configuration parameters are part of the James configuration, 
+whose base file is <code>config.xml</code>. For clarity and flexibility, the 
+fetchmail configuration parameters are stored in the file 
+<code>james-fetchmail.xml</code>, which is referenced within 
+<code>config.xml</code>.</p>
+
+<p>The configuration parameters are described below.</p>
+
+<subsection name="fetchmail">
+<p>The configuration block delimited by the <strong>fetchmail</strong> tag 
+controls fetchmail.</p>
+
+<p>The tag has these attributes:
+<dl>
+<dt><strong>enabled</strong></dt>
+<dd>A boolean. If &quot;true&quot;, the fetch tasks will be run periodically. If &quot;false&quot;, 
+no fetch tasks will be run. The default is &quot;false&quot;.</dd>
+</dl>
+</p>
+
+<p>The tag has these child tags (minimum cardinality, maximum cardinality):
+<ul>
+<li><strong><a href="#fetch">fetch</a></strong> (0, *)</li>
+</ul>
+</p>
+
+<p>
+<source>
+&lt;fetchmail enabled=&quot;true&quot;&gt;
+...
+&lt;/fetchmail&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="fetch">
+<p>The <strong>fetch</strong> tag defines a fetch task to be run 
+periodically. Fetch tasks run concurrently.</p>
+
+<p>The tag has these attributes:
+<dl>
+<dt><strong>name</strong></dt>
+<dd>A string uniquely identifying the fetch task.</dd>
+</dl>
+</p>
+
+<p>The tag has these child tags (minimum cardinality, maximum cardinality):
+<ul>
+<li><strong><a href="#accounts">accounts</a></strong> (1, 1)</li>
+<li><strong><a href="#blacklist">blacklist</a></strong> (1, 1)</li>
+<li><strong><a href="#defaultdomain">defaultdomain</a></strong> (0, 1)</li>
+<li><strong><a href="#fetchall">fetchall</a></strong> (1, 1)</li>
+<li><strong><a href="#fetched">fetched</a></strong> (1, 1)</li>
+<li><strong><a href="#host">host</a></strong> (1, 1)</li>
+<li><strong><a href="#interval">interval</a></strong> (1, 1)</li>
+<li><strong><a href="#javaMailFolderName">javaMailFolderName</a></strong> (1, 1)</li>
+<li><strong><a href="#javaMailProperties">javaMailProperties</a></strong> (0, 1)</li>
+<li><strong><a href="#javaMailProviderName">javaMailProviderName</a></strong> (1, 1)</li>
+<li><strong><a href="#maxmessagesize">maxmessagesize</a></strong> (0, 1)</li>
+<li><strong><a href="#recipientnotfound">recipientnotfound</a></strong> (1, 1)</li>
+<li><strong><a href="#recursesubfolders">recursesubfolders</a></strong> (1, 1)</li>
+<li><strong><a href="#remoteReceivedHeader">remoteReceivedHeader</a></strong> (0, 1)</li>
+<li><strong><a href="#remoterecipient">remoterecipient</a></strong> (1, 1)</li>
+<li><strong><a href="#undeliverable">undeliverable</a></strong> (1, 1)</li>
+<li><strong><a href="#userundefined">userundefined</a></strong> (1, 1)</li>
+</ul>
+</p>
+
+<p>
+<source>
+&lt;fetch name=&quot;mydomain.com&quot;&gt;
+...
+&lt;/fetch&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="accounts">
+<p>The <strong>accounts</strong> tag declares the accounts from which mail will 
+be fetched by the fetch task. Accounts run concurrently.</p>
+
+<p>The tag has these child tags (minimum cardinality, maximum cardinality):
+<ul>
+<li><strong><a href="#account">account</a></strong> (0, *)</li>
+<li><strong><a href="#alllocal">alllocal</a></strong> (0, 1)</li>
+</ul>
+</p>
+
+<p>
+<source>
+&lt;accounts&gt;
+...
+&lt;/accounts&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="blacklist">
+<p>The <strong>blacklist</strong> tag declares a list of recipient addresses 
+for whom mail will be rejected and what happens to the rejected mail.</p>
+
+<p>The tag value is a tab, comma or space delimited list of recipient 
+addresses, eg: <code>wibble@mydomain.com, flobble@mydomain.com</code>.</p>
+
+<p>The tag has these attributes:
+<dl>
+<dt><strong>reject</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail for recipients in the blacklist will
+not be injected into the James input spool. If &quot;false&quot;, mail for
+recipients in the blacklist will be injected into the James input spool with the
+Mail Attribute <code>org.apache.james.fetchmail.isBlacklistedRecipient</code>
+added to the mail.</dd>
+<dt><strong>leaveonserver</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail for recipients in the blacklist will be
+left on the server. If &quot;false&quot;, mail for recipients in the blacklist 
+will be marked for deletion.</dd>
+<dt><strong>markseen</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail for recipients in the blacklist will be
+marked as seen on the server. If &quot;false&quot;, mail for recipients in the blacklist 
+will not be marked as seen.</dd>
+</dl>
+</p>
+
+<p>
+<source>
+&lt;blacklist 
+    reject=&quot;true&quot; 
+    leaveonserver=&quot;true&quot;
+    markseen=&quot;true&quot;&gt;
+wibble@mydomain.com, flobble@mydomain.com
+&lt;/blacklist&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="defaultdomain">
+<p>The <strong>defaultdomain</strong> tag declares the domain name to be 
+appended to the <code>From:</code> header of a mail that has a valid user part
+but is missing the domain part.</p>
+
+<p>If not specified, the default behaviour is to append the canonical host name
+of the James server.</p>
+
+<p>The tag value is the name of the server to append. The name must be a server
+declared in the <strong>servernames</strong> tag of the <strong>James</strong>
+block in the configuration or the name <code>localhost</code>.</p>
+
+<p>
+<source>
+&lt;defaultdomain&gt;
+    mydomain.com
+&lt;/defaultdomain&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="fetchall">
+<p>The <strong>fetchall</strong> tag declares if all mail should be fetched from
+the server, or just unseen mail.</p>
+
+<p>The tag value is a boolean. If true, all mail is fetched. If false, only 
+unseen mail is fetched.</p>
+
+<p>
+<source>
+&lt;fetchall&gt;false&lt;/fetchall&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="fetched">
+<p>The <strong>fetched</strong> tag declares what will happen to mail on the
+external server that is successfully injected into the James input spool.</p>
+
+<p>The tag has these attributes:
+<dl>
+<dt><strong>leaveonserver</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail injected into the James input spool 
+will be left on the server. If &quot;false&quot;, mail injected into the James
+input spool will be marked for deletion.</dd>
+<dt><strong>markseen</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail injected into the James input spool 
+will be marked as seen on the server. If &quot;false&quot;, mail injected into
+the James input spool will not be marked as seen.</dd>
+</dl>
+</p>
+
+<p>
+<source>
+&lt;fetched leaveonserver=&quot;true&quot; markseen=&quot;true&quot;/&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="host">
+<p>The <strong>host</strong> tag declares the IP address of the external
+server from which mail is fetched.</p>
+
+<p>The tag value is the DNS name or IP address literal of the external
+server.</p>
+
+<p>
+<source>
+&lt;host&gt;pop3.server.com&lt;/host&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="interval">
+<p>The <strong>interval</strong> tag declares the period between invocations of
+the fetch tasks. If a fetch task is still active from a previous invocation
+when the period expires, the new invocation is skipped over.</p>
+
+<p>The tag value is an integer representing the number of milliseconds to elapse
+between invocations of the fetch tasks.</p>
+
+<p>
+<source>
+&lt;interval&gt;60000&lt;/interval&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="javaMailFolderName">
+<p>The <strong>javaMailFolderName</strong> tag declares the name of the root 
+folder on the external server from which mail is fetched.</p>
+
+<p>The tag value is the cAsE-sEnSiTiVe name of the root folder on the external
+server from which mail is fetched. For POP3 servers this is always 
+<code>INBOX</code>.</p>
+
+<p>
+<source>
+&lt;javaMailFolderName&gt;INBOX&lt;/javaMailFolderName&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="javaMailProperties">
+<p>The <strong>javaMailProperties</strong> tag declares the properties to be
+applied to the JavaMail Session used by the fetch task. These override the
+properties answered by <code>System.getProperties()</code>. Many JavaMail
+properties are specific to the JavaMail Provider selected by the 
+<a href="#javaMailProviderName">javaMailProviderName</a> tag.</p>
+
+<p><strong>Relying on the default values selected by the Provider can be
+inappropriate.</strong> For instance, the default connection and I/O timeout 
+values of infinite for the default IMAP and POP3 Providers is rarely what is
+required. Consult the documentation of the Provider for details and options.</p>
+
+<p>Documentation for the default Provider for IMAP is located
+<a href="http://java.sun.com/products/javamail/javadocs/com/sun/mail/imap/package-summary.html">
+here</a>.</p>
+
+<p>Documentation for the default Provider for POP3 is located
+<a href="http://java.sun.com/products/javamail/javadocs/com/sun/mail/pop3/package-summary.html">
+here</a>.</p>
+
+<p>Details of how to change a Provider are located
+<a href="http://java.sun.com/products/javamail/javadocs/javax/mail/Session.html">
+here</a>.</p>
+
+<p>The tag has these child tags (minimum cardinality, maximum cardinality):
+<ul>
+<li><strong><a href="#property">property</a></strong> (0, *)</li>
+</ul>
+</p>
+
+<p>
+<source>
+&lt;javaMailProperties&gt;
+...
+&lt;/javaMailProperties&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="javaMailProviderName">
+<p>The <strong>javaMailProviderName</strong> tag selects the JavaMail protocol
+Provider used to interact with the external server.</p>
+
+<p>The tag value is the name of a JavaMail supported protocol, such as 
+<code>pop3</code> or <code>imap</code>. The name is used to select the default
+Provider for the protocol.</p>
+
+<p>
+<source>
+&lt;javaMailProviderName&gt;pop3&lt;/javaMailProviderName&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="maxmessagesize">
+<p>The <strong>maxmessagesize</strong> tag declares the maximum permitted message
+size for messages injected into the James input spool and what happens to fetched
+messages that exceed this size.</p>
+<p>The tag has these attributes:
+<dl>
+<dt><strong>limit</strong></dt>
+<dd>An integer. The maximum message size expressed in Kilobytes. If 0, there is
+no limit.</dd>
+<dt><strong>reject</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail whose message size exceeds the maximum
+permitted size will not be injected into the James input spool. If 
+&quot;false&quot;, mail whose message size exceeds the maximum permitted size will
+have its contents removed, an explanatory error message and the Mail Attribute
+<code>org.apache.james.fetchmail.isMaxMessageSizeExceeded</code> added prior to 
+injection into the James input spool, (see below for the location of an example).</dd>
+<dt><strong>leaveonserver</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail whose message size exceeds the maximum
+permitted size will be left on the server. If &quot;false&quot;, mail whose message
+size exceeds the maximum permitted size will be marked for deletion.</dd>
+<dt><strong>markseen</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail whose message size exceeds the maximum
+permitted size will be marked as seen on the server. If &quot;false&quot;,
+mail whose message size exceeds the maximum permitted size will not be marked as
+seen.</dd>
+</dl>
+</p>
+
+<p>
+<source>
+&lt;maxmessagesize 
+    limit=&quot;4096&quot;
+    reject=&quot;false&quot;
+    leaveonserver=&quot;false&quot;
+    markseen=&quot;false&quot;/&gt;
+</source>
+</p>
+
+<p>An example configuration using James mailet processing to bounce fetched
+messages that exceed the maximum permitted size can be found in the file
+<code>$PHOENIX_HOME/apps/james/conf/samples/fetchmail/maxMessageSize.xml</code>.
+</p>
+</subsection>
+
+<subsection name="recipientnotfound">
+<p>The <strong>recipientnotfound</strong> tag declares what happens to mail for
+which a sole intended recipient cannot be found when attempting to determine
+the recipient from the mail headers.</p>
+
+<p>In configurations with more than one account per fetch task, processing of
+matched mail can be deferred to the next run of the fetch task. This gives 
+other accounts that may be able to determine a sole intended recipient an
+opportunity to do so before recipientnotfound processing is invoked.</p>
+
+<p>The tag has these attributes:
+<dl>
+<dt><strong>defer</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail for which a sole intended recipient 
+cannot be determined is left unprocessed until the next run of the fetch task.
+If &quot;false&quot;, mail for which a sole intended recipient cannot be
+determined is processed immediately.</dd>
+<dt><strong>reject</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail for which a sole intended recipient 
+cannot be determined will not be injected into the James input spool. If 
+&quot;false&quot;, mail for which a sole intended recipient cannot be 
+determined will be injected into the James input spool using the recipient
+attribute of the current account and with the Mail Attribute 
+<code>org.apache.james.fetchmail.isRecipientNotFound</code> added to the
+mail.</dd>
+<dt><strong>leaveonserver</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail for which a sole intended recipient 
+cannot be determined will be left on the server. If &quot;false&quot;, mail for
+which a sole intended recipient cannot be determined will be marked for 
+deletion.</dd>
+<dt><strong>markseen</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail for which a sole intended recipient 
+cannot be determined will be marked as seen on the server. If &quot;false&quot;,
+mail for which a sole intended recipient cannot be determined will not be marked
+as seen.</dd>
+</dl>
+</p>
+
+<p>
+<source>
+&lt;recipientnotfound 
+    defer=&quot;true&quot;
+    reject=&quot;true&quot;
+    leaveonserver=&quot;true&quot;
+    markseen=&quot;true&quot;/&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="recursesubfolders">
+<p>The <strong>recursesubfolders</strong> tag declares if mail should be fetched 
+from sub-folders of the root folder, or just the root folder.</p>
+
+<p>The tag value is a boolean. If true, mail is fetched from the root folder and
+its subfolders. If false, mail is fetched from just the root folder.</p>
+
+<p>
+<source>
+&lt;recursesubfolders&gt;false&lt;/recursesubfolders&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="remoteReceivedHeader">
+<p>The <strong>remoteReceivedHeader</strong> tag declares the zero based
+index of the RFC2822 compliant RECEIVED header used to determine the address and
+host name of the remote MTA that sent a fetched message and what happens to 
+messages when the specified header is invalid.</p>
+
+<p>Typically, the first (index = 0) RECEIVED header is for the local MTA that 
+delivered the message to the message store and the second (index = 1) RECEIVED
+header is for the remote MTA that delivered the message to the local MTA. When
+this configuration applies, the <strong>remoteReceivedHeaderIndex</strong> should
+be set to <strong>1</strong>.
+</p>
+
+<p>To verify the correct setting, examine the RECEIVED headers for messages
+delivered to the configured message store and locate the first one containing a
+remote domain in the'from' field. Remembering that zero based indexing is used,
+if this the second header, use an index of 1, if this is the third header, use an
+index of 2, and so forth.</p>
+
+<p>Matchers such as InSpammerBlacklist use the remote address and/or remote host
+name to identify illegitimate remote MTAs. If you do not use such matchers, the
+<strong>remoteReceivedHeaderIndex</strong> tag may be omitted or the default
+index value of -1 can be specified. This causes the remote address to be set to
+<code>127.0.0.1</code> and the remote host name to be set to
+<code>localhost</code>. Matchers almost always considered these values to be
+legitimate.</p>
+
+<p>The tag has these attributes:
+<dl>
+<dt><strong>index</strong></dt>
+<dd>An integer whose meaning is described above.
+</dd>
+<dt><strong>reject</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail whose specified recieved header is invalid
+will not be injected into the James input spool. If &quot;false&quot;, mail whose 
+specified recieved header is invalid will be injected into the James input spool with 
+the Mail Attribute <code>org.apache.james.fetchmail.isInvalidReceivedHeader</code>
+added to the mail, the remote address set to <code>127.0.0.1</code> and the remote 
+host name set to <code>localhost</code>.
+</dd>
+<dt><strong>leaveonserver</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail whose specified recieved header is invalid
+will be left on the server. If &quot;false&quot;, mail whose specified recieved header
+is invalid will be marked for deletion.</dd>
+<dt><strong>markseen</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail whose specified recieved header is invalid
+will be marked as seen on the server. If &quot;false&quot;, mail whose specified
+recieved header is invalid will not be marked as seen.</dd>
+</dl>
+</p>
+
+<p>
+<source>
+&lt;remoteReceivedHeader
+    index=&quot;1&quot; 
+    reject=&quot;true&quot;
+    leaveonserver=&quot;true&quot;
+    markseen=&quot;true&quot;/&gt;
+</source>
+</p>
+
+<p>An example configuration using James mailet processing to notify the postmaster
+of fetched messages that contain an invalid Received header can be found in the file
+<code>$PHOENIX_HOME/apps/james/conf/samples/fetchmail/remoteReceivedHeader.xml</code>.
+</p>
+</subsection>
+
+<subsection name="remoterecipient">
+<p>The <strong>remoterecipient</strong> tag declares what happens to mail for
+which the domain part of the recipient is remote. A domain is remote if it is 
+not a server declared in the <strong>servernames</strong> tag of the
+<strong>James</strong> block in the configuration.</p>
+
+<p>The tag has these attributes:
+<dl>
+<dt><strong>reject</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail for remote recipients will not be 
+injected into the James input spool. If &quot;false&quot;, mail for remote
+recipients will be injected into the James input spool with the Mail Attribute 
+<code>org.apache.james.fetchmail.isRemoteRecipient</code> added to the mail.
+</dd>
+<dt><strong>leaveonserver</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail for remote recipients will be left on
+the server. If &quot;false&quot;, mail for remote recipients will be marked for 
+deletion.</dd>
+<dt><strong>markseen</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail for remote recipients will be marked as
+seen on the server. If &quot;false&quot;, mail for remote recipients will not be
+marked as seen.</dd>
+</dl>
+</p>
+
+<p>
+<source>
+&lt;remoterecipient 
+    reject=&quot;true&quot;
+    leaveonserver=&quot;true&quot;
+    markseen=&quot;true&quot;/&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="undeliverable">
+<p>The <strong>undeliverable</strong> tag declares what happens to mail that
+cannot be delivered.</p>
+
+<p>The tag has these attributes:
+<dl>
+<dt><strong>leaveonserver</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail that cannot be delivered will be left
+on the server. If &quot;false&quot;, mail that cannot be delivered will be
+marked for deletion.</dd>
+<dt><strong>markseen</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail for that cannot be delivered will be
+marked as seen on the server. If &quot;false&quot;, mail that cannot be
+delivered will not be marked as seen.</dd>
+</dl>
+</p>
+
+<p>
+<source>
+&lt;undeliverable
+    leaveonserver=&quot;true&quot;
+    markseen=&quot;true&quot;/&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="userundefined">
+<p>The <strong>userundefined</strong> tag declares what happens to mail for
+which the recipient is not defined as a James user.</p>
+
+<p>The tag has these attributes:
+<dl>
+<dt><strong>reject</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail for recipients who are not defined as
+James users will not be injected into the James input spool. If 
+&quot;false&quot;, mail for recipients who are not defined as James users will
+be injected into the James input spool with the Mail Attribute 
+<code>org.apache.james.fetchmail.isUserUndefined</code> added to the mail.
+</dd>
+<dt><strong>leaveonserver</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail for recipients who are not defined as
+James users will be left on the server. If &quot;false&quot;, mail for 
+recipients who are not defined as James users will be marked for deletion.</dd>
+<dt><strong>markseen</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail for recipients who are not defined as
+James users will be marked as seen on the server. If &quot;false&quot;, mail
+for recipients who are not defined as James users will not be marked as seen.
+</dd>
+</dl>
+</p>
+
+<p>
+<source>
+&lt;userundefined
+    reject=&quot;true&quot;
+    leaveonserver=&quot;true&quot;
+    markseen=&quot;true&quot;/&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="account">
+<p>The <strong>account</strong> tag declares an account on the external server
+from which mail should be fetched.</p>
+
+<p>The tag has these attributes:
+<dl>
+<dt><strong>user</strong></dt>
+<dd>The string to be passed as the user when connecting to the external server.
+</dd>
+<dt><strong>password</strong></dt>
+<dd>The string to be passed as the password when connecting to the external 
+server.</dd>
+<dt><strong>recipient</strong></dt>
+<dd>The recipient to whom messages will be delivered when the intended recipient
+cannot be determined or when the intended recipient is to be ignored.</dd>
+<dt><strong>ignorercpt-header</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail is always delivered to the recipient
+declared in the <strong>recipient</strong> attribute above. If 
+&quot;false&quot;, the intended recipient is determined from the mail headers or
+the process declared by the <strong>recipientnotfound</strong> tag.
+</dd>
+</dl>
+</p>
+
+<p>
+<source>
+&lt;account
+    user=&quot;myaccount&quot;
+    password=&quot;mypassword&quot;
+    recipient=&quot;user@localhost&quot;
+    ignorercpt-header=&quot;true&quot;/&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="alllocal">
+<p>The <strong>alllocal</strong> tag declares the parameters to be applied to
+dynamic accounts. The set of dynamic accounts is refreshed each time the fetch
+task runs by combining the <strong>alllocal</strong> tag attributes with each of
+the currently defined James users to create an account for every James user.</p>
+
+<p>The tag has these attributes:
+<dl>
+<dt><strong>userprefix</strong></dt>
+<dd>The string to be added before the James user when constructing the string
+passed as the user when connecting to the external server.
+</dd>
+<dt><strong>usersuffix</strong></dt>
+<dd>The string to be added after the James user when constructing the string
+passed as the user when connecting to the external server.
+</dd>
+<dt><strong>password</strong></dt>
+<dd>The string to be passed as the password when connecting to the external 
+server.</dd>
+<dt><strong>recipientprefix</strong></dt>
+<dd>The string to be added before the James user when constructing the recipient
+to whom messages will be delivered when the intended recipient cannot be 
+determined or when the intended recipient is to be ignored.</dd>
+<dt><strong>recipientsuffix</strong></dt>
+<dd>The string to be added after the James user when constructing the recipient
+to whom messages will be delivered when the intended recipient cannot be 
+determined or when the intended recipient is to be ignored.</dd>
+<dt><strong>ignorercpt-header</strong></dt>
+<dd>A boolean. If &quot;true&quot;, mail is always delivered to the recipient
+constructed from the <strong>recipientprefix</strong> and 
+<strong>recipientsuffix</strong> attributes above and the James user. If 
+&quot;false&quot;, the intended recipient is determined from the mail headers or
+the process declared by the <strong>recipientnotfound</strong> tag.
+</dd>
+</dl>
+</p>
+
+<p>
+<source>
+&lt;alllocal
+    userprefix=&quot;&quot;
+    usersuffix=&quot;@external.domain.com&quot;
+    password=&quot;mypassword&quot;
+    recipientprefix=&quot;&quot;
+    recipientsuffix=&quot;@mydomain.com&quot;
+    ignorercpt-header=&quot;true&quot;/&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="property">
+<p>The <strong>property</strong> tag declares a name/value pair.</p>
+
+<p>The tag has these attributes:
+<dl>
+<dt><strong>name</strong></dt>
+<dd>The name of the property.
+</dd>
+<dt><strong>value</strong></dt>
+<dd>The value of the property.</dd>
+</dl>
+</p>
+
+<p>
+<source>
+&lt;property
+    name=&quot;mail.pop3.connectiontimeout&quot;
+    value=&quot;180000&quot;/&gt;
+</source>
+</p>
+</subsection>
+
+</section>
+
+<section name="fetchmail Examples">
+<p>Full sources to the examples discussed below can be found in the directory
+<code>$PHOENIX_HOME/apps/james/conf/samples/fetchmail</code>.</p>
+
+<subsection name="One Account, One User">
+<p>When all mail for an account is to be delivered to a single user, 
+configure each account to ignore the recipient in the mail headers and deliver
+to the specified recipient. The <strong>accounts</strong> block looks like 
+this:</p>
+
+<p>
+<source>
+&lt;accounts&gt;
+    &lt;account
+        user=&quot;user1@external.domain.com&quot;
+        password=&quot;password1&quot;
+        recipient=&quot;user1@localhost&quot;
+        ignorercpt-header=&quot;true&quot;/&gt;
+
+    &lt;account
+        user=&quot;user2@external.domain.com&quot;
+        password=&quot;password2&quot;
+        recipient=&quot;user2@localhost&quot;
+        ignorercpt-header=&quot;true&quot;/&gt;
+
+    &lt;account
+        user=&quot;user3@external.domain.com&quot;
+        password=&quot;password3&quot;
+        recipient=&quot;user3@localhost&quot;
+        ignorercpt-header=&quot;true&quot;/&gt;
+&lt;/accounts&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="One Account, Many Users">
+<p>When an account contains mail to be delivered to many users, configure each
+account to determine the recipient from the mail headers and deliver to that 
+user. The <strong>accounts</strong> block looks like this:</p>
+
+<p>
+<source>
+&lt;accounts&gt;
+    &lt;account
+        user=&quot;global@external.domain.com&quot;
+        password=&quot;password&quot;
+        recipient=&quot;fetchmail@localhost&quot;
+        ignorercpt-header=&quot;false&quot;/&gt;
+&lt;/accounts&gt;
+</source>
+</p>
+
+<p>The <strong>recipientnotfound</strong> tag is used to declare what happens 
+when the recipient cannot be determined from the mail headers. In the example 
+below, mail is injected into the spool using the recipient declared in the
+<strong>account</strong> tag:</p>
+
+<p>
+<source>
+&lt;recipientnotfound
+    defer=&quot;false&quot;
+    reject=&quot;false&quot;
+    leaveonserver=&quot;false&quot;
+    markseen=&quot;false&quot;/&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="One Account, One User - Dynamic">
+<p>When an external server supports virtual mailboxes, fetchmail's dynamic 
+account facility can be used. This greatly simplifies user configuration as 
+the fetchmail accounts for users are automatically synchronized with those
+defined in the James user repository. This guarantees that mail for all local 
+users will be fetched and delivered.</p>
+
+<p>Currently, there is a limitation that all virtual accounts and the global
+account must share the same password.</p>
+
+<p>The <strong>alllocal</strong> tag declares the parameters for the dynamic 
+accounts. The <strong>accounts</strong> block below will deliver mail for 
+<code>user1@external.domain.com</code> to <code>user1@localhost</code>, 
+<code>user2@external.domain.com</code> to <code>user2@localhost</code>,
+<code>userZ@external.domain.com</code> to <code>userZ@localhost</code> etc.:</p>
+
+<p>
+<source>
+&lt;accounts&gt;
+    &lt;alllocal
+        userprefix=&quot;&quot;
+        usersuffix=&quot;@external.domain.com&quot;
+        password=&quot;mypassword&quot;
+        recipientprefix=&quot;&quot;
+        recipientsuffix=&quot;@localhost&quot;
+        ignorercpt-header=&quot;true&quot;/&gt;
+&lt;/accounts&gt;
+</source>
+</p>
+</subsection>
+
+<subsection name="One Account, Many Users - Dynamic">
+<p>The 
+<a href="#One Account, One User - Dynamic">One Account, One User - Dynamic</a>
+example guarantees delivery of mail for all local users, but leaves other mail
+on the external server unprocessed. The 
+<a href="#One Account, Many Users">One Account, Many Users</a> example
+processes all mail on the external server, but cannot guarantee delivery to the
+intended recipient. By combining the two, it is possible to guarantee the 
+delivery of mail for all local users and process all mail.</p>
+
+<p>In the snippet below, the <strong>alllocal</strong> tag declares dynamic
+accounts for all local users and the <strong>account</strong> tag configures an
+account to fetch all mail.</p>
+
+<p>The <strong>recipientnotfound</strong> tag rejects mail for which a recipient
+cannot be determined. By the time this processing is activated, the dynamic 
+accounts will have processed mail for all local users, so the mail can 
+only be mail for non-local users or newly arrived mail for local users. It is 
+not possible to know which, but we want to leave mail for local users to be
+dealt with by the dynamic accounts. The next time the dynamic accounts run any
+newly arrived mail for local users will be processed. The remainder will be for
+non-local users and can now be safely dealt with.</p>
+
+<p>The <code>&lt;recipientnotfound defer=&quot;true&quot;</code> attribute 
+enables deferal of the processing of messages for which the recipient cannot be
+determined to the next iteration of the fetch task, and is used here. The 
+relevant tags are:</p>
+
+<p>
+<source>
+&lt;accounts&gt;
+    &lt;alllocal
+        userprefix=&quot;&quot;
+        usersuffix=&quot;@external.domain.com&quot;
+        password=&quot;mypassword&quot;
+        recipientprefix=&quot;&quot;
+        recipientsuffix=&quot;@localhost&quot;
+        ignorercpt-header=&quot;true&quot;/&gt;
+
+    &lt;account
+        user=&quot;global@external.domain.com&quot;
+        password=&quot;password&quot;
+        recipient=&quot;fetchmail@localhost&quot;
+        ignorercpt-header=&quot;false&quot;/&gt;
+&lt;/accounts&gt;
+
+&lt;recipientnotfound
+    defer=&quot;true&quot;
+    reject=&quot;true&quot;
+    leaveonserver=&quot;true&quot;
+    markseen=&quot;true&quot;/&gt;
+</source>
+</p>
+</subsection>
+
+</section>
+
+<section name="fetchmail Caveats">
+<p>These are some things to be aware of when using fetchmail:
+<ul>
+<li>As noted in the
+<a href="#One Account, One User - Dynamic">One Account, One User - Dynamic</a>
+example, all virtual accounts and the global account must share the same 
+password. A future version might associate each James user to a set of account
+credentials.
+</li>
+
+<li>When using dynamic accounts, an account is generated and an attempt made to
+fetch mail for all James users defined to James even if there is no such mailbox
+on the server. This is inefficient but not fatal. The solution is the same as 
+described above.
+</li>
+
+<li>When using dynamic accounts, as described in the
+<a href="#One Account, Many Users - Dynamic">One Account, Many Users - Dynamic</a>
+example, the user name used to fetch the mail for all accounts must not be
+defined as a James user. If it is, a dynamic account will be generated for it
+and fetch all the mail before the account declared to process mail for all users
+has an opportunity to run!
+</li>
+
+<li>The now deprecated fetchPOP interacted with the <code>FetchedFrom</code> 
+matcher to detect mail injected by fetchPOP. This will not work with fetchmail. 
+Compared to fetchPOP, there are far fewer occasions when mail injected by 
+fetchmail requires special processing. When it does, use the HasMailAttribute 
+matcher to match the attribute named 
+<code>org.apache.james.fetchmail.taskName</code> to detect all mail injected by
+fetchmail. To detect mail injected by a specific fetch task, use one of the 
+HasMailAttributeWithValue matchers to match on the attribute name and the
+attribute value. The attribute value is the name of the fetch task that 
+injected the mail.
+</li>
+
+<li>The POP3 protocol does not enforce support of any of the Flags associated 
+with messages other than DELETED. This means that 
+<code>markseen=&quot;true&quot;</code> will most likely have no effect and 
+therefore, the <strong>fetchall</strong> tag will be inoperative. In this 
+situation, the only way to avoid repeatedly fetching the same mail is to delete
+it from the server using <code>leaveonserver=&quot;false&quot;/&gt;</code>.
+</li>
+</ul>
+</p>
+</section>
+
+
+</body>
+
+</document>

Propchange: james/server/trunk/src/xdocs/fetchmail_configuration_2_3.xml
------------------------------------------------------------------------------
    svn:executable = *

Modified: james/server/trunk/src/xdocs/installation_instructions_2_3.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/xdocs/installation_instructions_2_3.xml?rev=419282&r1=419281&r2=419282&view=diff
==============================================================================
--- james/server/trunk/src/xdocs/installation_instructions_2_3.xml (original)
+++ james/server/trunk/src/xdocs/installation_instructions_2_3.xml Wed Jul  5 10:10:26 2006
@@ -59,7 +59,7 @@
 </p>
 <ul>
 <li>RemoteManager Administrator Account - Before the RemoteManager service can be used to add users to this server 
-installation an administrator account must be created.  More information can be found <a href="remotemanager_configuration_2_1.html">here</a>.</li>
+installation an administrator account must be created.  More information can be found <a href="remotemanager_configuration_2_3.html">here</a>.</li>
 <li>DNS Servers - James needs to have access to a DNS server for domain resolution.  The out of the box 
 configuration assumes that there is a DNS server on localhost.  In general administrators will have to change 
 the configuration to point to a valid DNS server.  This can be done by adjusting the dnsserver configuration 

Modified: james/server/trunk/src/xdocs/mailet_api_2_3.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/xdocs/mailet_api_2_3.xml?rev=419282&r1=419281&r2=419282&view=diff
==============================================================================
--- james/server/trunk/src/xdocs/mailet_api_2_3.xml (original)
+++ james/server/trunk/src/xdocs/mailet_api_2_3.xml Wed Jul  5 10:10:26 2006
@@ -26,7 +26,7 @@
 <p>The Javadoc for the Mailet API can be found <a href="mailet/index.html">here</a>.</p>
 <p>James bundles a number of Matchers and Mailets in its distribution.  Descriptions of provided matchers 
 can be found <a href="provided_matchers_2_3.html">here</a>, while descriptions of provided mailets can be found 
-<a href="provided_mailets_2_1.html">here</a>.</p>
+<a href="provided_mailets_2_3.html">here</a>.</p>
 </section>
 </body>
 </document>

Added: james/server/trunk/src/xdocs/remotemanager_configuration_2_3.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/xdocs/remotemanager_configuration_2_3.xml?rev=419282&view=auto
==============================================================================
--- james/server/trunk/src/xdocs/remotemanager_configuration_2_3.xml (added)
+++ james/server/trunk/src/xdocs/remotemanager_configuration_2_3.xml Wed Jul  5 10:10:26 2006
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+
+<document>
+
+ <properties>
+  <title>James 2.3 - Configuring the RemoteManager</title>
+ </properties>
+
+<body>
+<section name="RemoteManager Configuration">
+<p>The RemoteManager is controlled by a configuration block in the config.xml.
+The remotemanager tag defines the boundaries of the configuration block.  It encloses 
+all the relevant configuration for the RemoteManager.  The behavior of the RemoteManager is
+controlled by the attributes and children of this tag.</p>
+
+<p>This tag has an optional boolean attribute - <strong>enabled</strong> - that defines whether the service is active or not.  The value defaults to "true" if
+not present.</p>
+<p>The standard children of the remotemanager tag are:</p>
+<ul>
+<li><strong>port</strong> - This is an optional integer value.  This value is the port on which this POP3 server is configured 
+to listen.If the tag or value is omitted, the value will default to 4555.</li>
+<li><strong>bind</strong> - This is an optional value.  If present, this value is a string describing 
+the IP address to which this service should be bound.  If the tag or value is absent then the service 
+will bind to all network interfaces for the machine.</li>
+<li><strong>useTLS</strong> - This is an optional boolean value.  If this value is true, then the "ssl"
+server socket factory is used to generate the server socket for this service.  If it is false, the 
+"plain" server socket factory is used.  In either case this behavior is overridden by the serverSocketType 
+tag which is described under the expert configuration options.</li>
+<li><strong>handler</strong> - This is an artifact preserved for backwards compatibility.  This tag 
+was used to group related parameters.  It should disappear in future versions.</li>
+<ul>
+<li><strong>helloName</strong> - This is a required tag with an optional body that defines the server name 
+used in the initial service greeting.  The tag may have an optional attribute - <strong>autodetect</strong>.  If 
+the autodetect attribute is present and true, the service will use the local hostname
+returned by the Java libraries.  If autodetect is absent or false, the body of the tag will be used.  In
+this case, if no body is present, the value "localhost" will be used.</li>
+<li><strong>administrator_accounts</strong> - This is an required container tag.  It contains 
+one or more <strong>administrator_account</strong> elements, each of which has a <strong>login</strong> attribute 
+and a <strong>password</strong> attribute.  These two attributes correspond to the login id and password for the 
+administrative account respectively.  Obviously, for security reasons, these should be set upon James installation.</li>
+<li><strong>connectionTimeout</strong> - This is an optional tag with an integer body.  </li>
+</ul>
+</ul>
+<p>There are a few additional children of the pop3server tag that are appropriate for advanced 
+configurations.  These should only be used by expert administrators.  All tags in this group are optional.</p>
+<ul>
+<li><strong>serverSocketFactory</strong> - This is an optional tag with a string body.  If the tag is present, 
+the body must be the name of one of the server socket factories specified in the socket manager block.  Any other 
+value will result in an error.  If present, this tag overrides the useTLS tag.</li>
+<li><strong>threadGroup</strong> - This is an optional tag with a string body.  If the tag is present, 
+the body must be the name of one of the thread groups specified in the thread manager block.  Any other 
+value will result in an error.  This tag is best used to fine tune thread allocation between the services.</li>
+<li><strong>connectionLimit</strong> - The connectionLimit parameter specifies the maximum number of client 
+connections that this service will allow.  If no value is specified, the value defaults to that specified in 
+the connectionmanager block.  A value of 0 means that there is no limit imposed 
+by the service, although resource limitations imposed by other components 
+(i.e. max # of threads) may serve to limit the number of open connections.</li>
+</ul>
+</section>
+</body>
+</document>

Added: james/server/trunk/src/xdocs/repositories_2_3.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/xdocs/repositories_2_3.xml?rev=419282&view=auto
==============================================================================
--- james/server/trunk/src/xdocs/repositories_2_3.xml (added)
+++ james/server/trunk/src/xdocs/repositories_2_3.xml Wed Jul  5 10:10:26 2006
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+
+<document>
+
+ <properties>
+  <title>Repositories</title>
+ </properties>
+
+<body>
+<section name="Repositories">
+
+<p>James uses a number of different repositories to both store message data (email, news messages) and 
+user information.  User repositories store user information, including user names, authentication 
+information, and aliases.  Mail repositories store messages that have been delivered locally.  Spool 
+repositories store messages that are still being processed.  Finally, news repositories are used to
+store news messages.</p>
+
+</section>
+<section name="Storage Types">
+
+<p>Aside from the type of data they store, repositories are distinguished by 
+where they store data.  There are three types of storage - File, Database, and DBFile.</p>
+<subsection name="File Repositories">
+
+<p>File-based repositories store all data in the file system.  In general, these repositories are extremely
+simple to configure, but may compare poorly in terms of performance when compared to other repository
+types.  File repositories are not recommended for large or performance-critical configurations.  In the
+default configuration, all repositories are file repositories.</p>
+
+<p>File repository paths typically begin with the prefix "file".  Paths are relative to the application
+base directory, unless the path begins with a slash.  As an example, assume that James is running in 
+/usr/james/phoenix/apps/james.  Then "file://var/mail/spool/" would refer to the directory /usr/james/phoenix/apps/james/var/mail/spool.  
+And "file:///var/mail/spool/" (note the extra '/') would refer to the directory /var/mail/spool.</p>
+
+<p>All repository types (mail, spool, user, and news) have file-based implementations.  No special configuration is required to enable file-based repositories</p>
+
+</subsection>
+<subsection name="Database (JDBC) Repositories">
+
+<p>Database repositories store all data in an administrator-supplied database.  Configuration is somewhat
+more complex, requiring that the administrator adjust the data-connections section.  Detailed directions 
+are included in the sample configuration file.  The administrator will need to know the JDBC driver class,
+the appropriate URL for use with his database, and a valid username/password for the database.</p>
+
+<p>If the administrator wants to configure a database other than MySQL, it will be necessary to add the jar 
+or zip file containing the JDBC driver classes to the lib subdirectory of the installation directory.  This
+will allow Phoenix to properly load the driver when it is initializing the database repository.  The MySQL
+driver is pre-packaged with James.</p>
+
+<p>Database repository paths typically begin with the prefix "db".  The format is "db://&lt;data-source&gt;/&lt;table&gt;" 
+where &lt;data-source&gt; is the name of the data-source defined in the data-connections section.  And &lt;table&gt; is 
+the particular table associated with the repository.</p>
+
+<p>Mail, spool, and user repositories have JDBC-based implementations.</p>
+
+</subsection>
+<subsection name="DBFile Repositories">
+
+<p>This is a special repository type used only for mail repositories.  DBFile repositories store the body of
+a mail message in the file system, while headers are stored in the database.  This allows the administrator 
+to minimize the size of data stored in the database, while conserving most of the performance of the 
+database repository.</p>
+
+<p>Only mail repositories have dbfile-based implementations.</p>
+</subsection>
+
+</section>
+</body>
+</document>

Added: james/server/trunk/src/xdocs/serverwide_configuration_2_3.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/xdocs/serverwide_configuration_2_3.xml?rev=419282&view=auto
==============================================================================
--- james/server/trunk/src/xdocs/serverwide_configuration_2_3.xml (added)
+++ james/server/trunk/src/xdocs/serverwide_configuration_2_3.xml Wed Jul  5 10:10:26 2006
@@ -0,0 +1,83 @@
+<?xml version="1.0"?>
+
+<document>
+
+ <properties>
+  <title>James 2.3 - Global Server Configuration</title>
+ </properties>
+
+<body>
+<section name="Global Server Configuration">
+<p>There are a number of global configuration blocks that do not fall into any one 
+component.  They have effects that are global in scope across the server.  Some of 
+these blocks are crucial, while others can be ignored by any but the most sophisticated 
+server administrators.</p>
+<subsection name="The James Block">
+<p>This configuration block is defined by the <strong>James</strong> tag.  All administrators 
+need to adjust this configuration block upon installation.  It no attributes, but several 
+children, all of which are required.
+<ul>
+<li><strong>postmaster</strong> - the body of this element is the address that the server 
+will consider its postmaster address.  This address will be listed as the sender address 
+of all error messages that originate from James.  Also, all messages addressed to 
+postmaster@&lt;servername&gt;, where &lt;servername&gt; is one of the domain names whose 
+mail is being handled by James, will be redirected to this email address.</li>
+<li><strong>usernames</strong> - this element has no body, but instead has three required 
+boolean attributes.  These are <strong>ignoreCase</strong>, <strong>enabledAliases</strong>, 
+and <strong>enableForwarding</strong>.  The first of these determines whether email user names
+will be treated as case-insensitive or not.  The second attribute configures whether local user
+aliasing will be enabled.  Finally, the value of the third attribute determines whether forwarding 
+to potentially remote users will be enabled.</li>
+<li><strong>servernames</strong> - this element determines exactly which mail domains and IP 
+addresses the server will treat as local.  It has two boolean attributes - 
+<strong>autodetect</strong> and <strong>autodetectIP</strong>.  The first attribute, if true,
+causes the server to attempt to determine its own host name and add that to the list of local
+mail domains.  The second attribute causes the server to attempt to determine its own IP 
+address and add it to the list of local mail domains.  In addition to these attributes, this 
+tag has zero or more <strong>servername</strong> children.</li>
+<ul>
+<li><strong>servername</strong> - a single host name or IP address that should be added to the list of 
+mail domains that the server considers local.</li>
+</ul>
+<li><strong>inboxRepository</strong> - This is a simple container tag which contains a single child element.</li>
+<ul>
+<li><strong>repository</strong> - this defines the mail repository that will be used to store 
+mail delivered locally.  This element has no body.  The required attribute <strong>type</strong> 
+is always set to "MAIL".  The required attribute <strong>repositoryURL</strong> addresses the
+repository as described in <a href="repositories_2_3.html">the repository configuration section</a>.</li>
+</ul>
+</ul>
+</p>
+</subsection>
+<subsection name="The Connectionmanager Block">
+<p>
+This block controls general connection management.  There are two elements.
+<ul>
+<li><strong>idle-timeout</strong> - the number of milliseconds that it will take for idle 
+client connections managed by this connection manager to be marked at timed out.  If no 
+value is specified, the value defaults to 5 minutes, 300000 milliseconds.  A value of 0 
+means that client sockets will not timeout.</li>
+<li><strong>max-connections</strong> - The max-connections parameter specifies the default 
+maximum number of client connections that this connection manager will allow per managed 
+server socket.  This value can be overridden by each individual service.  If no value is 
+specified, the value defaults to 30.  A value of 0 means that there is no limit imposed 
+by the connection manager, although resource limitations imposed by other components 
+(i.e. max # of threads) may serve to limit the number of open connections.</li>
+</ul>
+</p>
+</subsection>
+<subsection name="The Objectstorage Block">
+<p>This block controls the low level file repository to file mapping.  There is no need to modify this.</p>
+</subsection>
+<subsection name="The Socketmanager Block">
+<p>This block controls the socket types available inside James.  Unless you are intending to enable SSL, it 
+shouldn't be necessary for you to adjust this block.  For modifications to this block that are required to
+enable TLS, see <a href="usingTLS_2_1.html">the using TLS section</a>.</p>
+</subsection>
+<subsection name="The Threadmanager Block">
+<p>This block controls the thread pools available inside James.  Only expert administators should modify 
+this configuration.</p>
+</subsection>
+</section>
+</body>
+</document>

Added: james/server/trunk/src/xdocs/smtp_auth_2_3.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/xdocs/smtp_auth_2_3.xml?rev=419282&view=auto
==============================================================================
--- james/server/trunk/src/xdocs/smtp_auth_2_3.xml (added)
+++ james/server/trunk/src/xdocs/smtp_auth_2_3.xml Wed Jul  5 10:10:26 2006
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+
+<document>
+
+ <properties>
+  <title>James 2.3 - Using Authenticated SMTP</title>
+ </properties>
+
+<body>
+<section name="Authenticated SMTP (SMTP AUTH)">
+<p>Authenticated SMTP is a method of securing your SMTP server.  With SMTP AUTH enabled senders who wish to 
+relay mail through the SMTP server (that is, send mail that is eventually to be delivered to another SMTP 
+server) must authenticate themselves to James before sending their message.  Mail that is to be delivered 
+locally does not require authentication.  This method ensures that spammers cannot use your SMTP server
+to send unauthorized mail, while still enabling users who may not have fixed IP addresses to send their 
+messages.</p>
+<p>Mail servers that allow spammers to send unauthorized email are known as open relays.  So SMTP AUTH
+is a mechanism for ensuring that your server is not an open relay .</p>
+<p>At this time James only supports simple user name / password authentication.</p>
+<subsection name="Configuring James for Authenticated SMTP">
+<p>Configuring James for Authentication SMTP is a multi-step process.  It requires several adjustments of 
+the config.xml.  To enable SMTP AUTH, do the following:</p>
+<p>First, as mentioned above, SMTP AUTH requires that James be able to distinguish between mail intended 
+for local delivery and mail intended for remote delivery.  James makes this determination by matching the 
+domain to which the mail was sent against the &lt;servernames&gt; element of the James configuration block.  Any 
+local domains should be explicitly listed as &lt;servername&gt; elements in this section.</p>
+<p>Second, James is configured out of the box so as to not serve as an open relay for spammers.  This is done 
+by restricting the IP addresses from which mail will be accepted using the RemoteAddrNotInNetwork mailet.  This
+restriction must be lifted before users can send from arbitrary clients.  To do this, comment out or remove the 
+mailet tag containing the class attribute "RemoteAddrNotInNetwork".  This tag can be found in the spoolmanager 
+configuration block, in the root processor configuration.</p>
+<p>Third, set the authRequired element of the smtpserver configuration block to "true".</p>
+<p>Fourth, if you wish to ensure that authenticated users can only send email from their own account, you may
+optionally set the verifyIdentity element of the smtpserver configuration block to "true".</p>
+<p>Fifth, restart James.  This will pull in all of your configuration changes.</p>
+</subsection>
+<subsection name="Verifying Your Configuration">
+<p>Finally, you need to verify that your configuration was done correctly.  This step is 
+<strong>important</strong> and should not be skipped.</p>
+<p>Verify that you have not inadvertantly configured your server as an open relay. This is most easily 
+accomplished by using the service provided at <a href="http://www.ordb.org">ORDB.org</a>.  ORDB.org will 
+check your mail server and inform you if it is an open relay.</p>
+<p>It is extremely important that your server not be configured as an open relay.  Aside from potential 
+costs associated with usage by spammers, connections from servers that are determined to be open relays 
+are routinely rejected by SMTP servers.  This can severely impede the ability of your mail server to 
+send mail.</p>
+<p>Of course it is also necessary to confirm that users and log in and send 
+mail through your server.  This can be accomplished using any standard mail client (i.e. Outlook, 
+Eudora, Evolution).</p>
+</subsection>
+</section>
+</body>
+</document>

Added: james/server/trunk/src/xdocs/smtp_configuration_2_3.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/xdocs/smtp_configuration_2_3.xml?rev=419282&view=auto
==============================================================================
--- james/server/trunk/src/xdocs/smtp_configuration_2_3.xml (added)
+++ james/server/trunk/src/xdocs/smtp_configuration_2_3.xml Wed Jul  5 10:10:26 2006
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+
+<document>
+
+ <properties>
+  <title>James 2.3 - Configuring the SMTP Service</title>
+ </properties>
+
+<body>
+<section name="SMTP Configuration">
+<p>The SMTP service is controlled by a configuration block in the config.xml.
+The smtpserver tag defines the boundaries of the configuration block.  It encloses 
+all the relevant configuration for the SMTP server.  The behavior of the SMTP service is
+controlled by the attributes and children of this tag.</p>
+
+<p>This tag has an optional boolean attribute - <strong>enabled</strong> - that defines whether the service is active or not.  The value defaults to "true" if
+not present.</p>
+<p>The standard children of the smtpserver tag are:</p>
+<ul>
+<li><strong>port</strong> - This is an optional integer value.  This value is the port on which this SMTP server is configured 
+to listen.If the tag or value is omitted, the value will default to the standard SMTP port, 25.</li>
+<li><strong>bind</strong> - This is an optional value.  If present, this value is a string describing 
+the IP address to which this service should be bound.  If the tag or value is absent then the service 
+will bind to all network interfaces for the machine.</li>
+<li><strong>useTLS</strong> - This is an optional boolean value.  If this value is true, then the "ssl"
+server socket factory is used to generate the server socket for this service.  If it is false, the 
+"plain" server socket factory is used.  In either case this behavior is overridden by the serverSocketType 
+tag which is described under the expert configuration options.</li>
+<li><strong>handler</strong> - This is an artifact preserved for backwards compatibility.  This tag 
+was used to group related parameters.  It should disappear in future versions.</li>
+<ul>
+<li><strong>helloName</strong> - This is a required tag with an optional body that defines the server name 
+used in the initial service greeting.  The tag may have an optional attribute - <strong>autodetect</strong>.  If 
+the autodetect attribute is present and true, the service will use the local hostname
+returned by the Java libraries.  If autodetect is absent or false, the body of the tag will be used.  In
+this case, if no body is present, the value "localhost" will be used.</li>
+<li><strong>connectionTimeout</strong> - This is an optional tag with a non-negative integer body.  </li>
+<li><strong>authRequired</strong> - This is an optional tag with a boolean body.  If true, then the server will 
+require authentication before delivering mail to non-local email addresses.  If this tag is absent, or the value 
+is false then the client will not be prompted for authentication.  Only simple user/password authentication is
+supported at this time.</li>
+<li><strong>verifyIdentity</strong> - This is an optional tag with a boolean body.  This option can only be used 
+if SMTP authentication is required.  If the parameter is set to true then the sender address for the submitted message
+will be verified against the authenticated subject.</li>
+<li><strong>maxmessagesize</strong> - This is an optional tag with a non-negative integer body.  It specifies the maximum 
+size, in kbytes, of any message that will be transmitted by this SMTP server.  It is a service-wide, as opposed to 
+a per user, limit.  If the value is zero then there is no limit.  If the tag isn't specified, the service will
+default to an unlimited message size.</li>
+</ul>
+</ul>
+<p>There are a few additional children of the smtpserver tag that are appropriate for advanced 
+configurations.  These should only be used by expert administrators.  All tags in this group are optional.</p>
+<ul>
+<li><strong>serverSocketFactory</strong> - This is an optional tag with a string body.  If the tag is present, 
+the body must be the name of one of the server socket factories specified in the socket manager block.  Any other 
+value will result in an error.  If present, this tag overrides the useTLS tag.</li>
+<li><strong>threadGroup</strong> - This is an optional tag with a string body.  If the tag is present, 
+the body must be the name of one of the thread groups specified in the thread manager block.  Any other 
+value will result in an error.  This tag is best used to fine tune thread allocation between the services.</li>
+<li><strong>connectionLimit</strong> - The connectionLimit parameter specifies the maximum number of client 
+connections that this service will allow.  If no value is specified, the value defaults to that specified in 
+the connectionmanager block.  A value of 0 means that there is no limit imposed 
+by the service, although resource limitations imposed by other components 
+(i.e. max # of threads) may serve to limit the number of open connections.</li>
+</ul>
+</section>
+</body>
+</document>

Added: james/server/trunk/src/xdocs/spoolmanager_2_3.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/xdocs/spoolmanager_2_3.xml?rev=419282&view=auto
==============================================================================
--- james/server/trunk/src/xdocs/spoolmanager_2_3.xml (added)
+++ james/server/trunk/src/xdocs/spoolmanager_2_3.xml Wed Jul  5 10:10:26 2006
@@ -0,0 +1,68 @@
+<?xml version="1.0"?>
+
+<document>
+
+ <properties>
+  <title>James 2.3 - The SpoolManager, Matchers, and Mailets</title>
+ </properties>
+
+<body>
+<section name="The SpoolManager, Matchers, and Mailets">
+
+<p>James separates the services that deliver mail to James (i.e. SMTP, FetchMail) 
+from the engine that processes mail after it is received by James.  The 
+SpoolManager component is James' mail processing engine.  James' SpoolManager component 
+is a Mailet container.  It is these mailets and matchers that actually carry out mail processing.</p>
+
+<p>Core to the SpoolManager operation are Matchers and Mailets.  A Matcher is a 
+simple object that checks whether a mail message matches a particular condition. 
+A mailet is another type object that processes an email message in some way.  Some 
+typical tasks appropriate for a mailet would be adding a header, delivering the message 
+to a local repository, or handling remote delivery.  Both the Matcher and Mailet APIs are 
+public, allowing James users to write their own custom matchers and mailets.  James 
+comes with a large set of pre-built matchers and mailets.</p>
+
+<p>Matchers and mailets are used in pairs.  At each stage in processing a message is checked 
+against a matcher.  The matcher will attempt to match the mail message.  The match is not simply
+a yes or no issue.  Instead, the match method returns a collection of matched recipients.  If the 
+this collection of matched recipients is empty, the mailet is not invoked.  If the collection of
+matched recipients is the entire set of original recipients, the mail is then processed by the 
+associated mailet.  Finally, if the matcher only matches a proper subset of the original recipients,
+the original mail is duplicated.  The recipients for one message are set to the matched recipients,
+and that message is processed by the mailet.  The recipients for the other mail are set to the
+non-matching recipients, and that message is not processed by the mailet.</p>
+
+<p>More on matchers and mailets can be found <a href="mailet_api_2_3.html">here</a>.</p>
+
+<p>One level up from the matchers and mailets are the processors.  Each processor 
+is a list of matcher/mailet pairs.  During mail processing, mail messages will be 
+processed by each pair, in order.  In most cases, the message will be processed by 
+all the pairs in the processor.  However, it is possible for a mailet to change the 
+state of the mail message so it is immediately directed to another processor, and no 
+additional processing occurs in the current processor.  Typically this occurs when the mailet wants to prevent 
+future processing of this message (i.e. the mail message has been delivered locally, 
+and hence requires no further processing) or when the mail message has been identified
+as a candidate for special processing (i.e. the message is spam and thus should be 
+routed to the spam processor).  Because of this redirection, the processors in the 
+SpoolManager form a tree.  The root processor, which must be present, is the root of
+this tree.</p>
+
+<p>The SpoolManager continually checks for mail in the spool repository.  When
+mail is first found in the repository, it is delivered to the root processor.  
+Mail can be placed on this spool from a number of sources (SMTP, FetchPOP, a 
+custom component).  This spool repository is also used for storage of mail that is
+being redirected from one processor to another.  Mail messages are driven through 
+the processor tree until they reach the end of a processor or are marked completed 
+by a mailet.</p>
+
+<p>More on configuration of the SpoolManager can be found <a href="spoolmanager_configuration_2_3.html">here</a>.</p>
+
+<p>Much of the power of James lies in the SpoolManager component.  Custom matchers and 
+mailets can be easily developed to address an administrator's particular needs.  The 
+processor tree can easily be configured to sort, filter, and deliver mail based on any 
+number of criteria.  Mail administrators new to James should spend some time learning how 
+to configure the SpoolManager to meet their needs.</p>
+
+</section>
+</body>
+</document>

Added: james/server/trunk/src/xdocs/spoolmanager_configuration_2_3.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/xdocs/spoolmanager_configuration_2_3.xml?rev=419282&view=auto
==============================================================================
--- james/server/trunk/src/xdocs/spoolmanager_configuration_2_3.xml (added)
+++ james/server/trunk/src/xdocs/spoolmanager_configuration_2_3.xml Wed Jul  5 10:10:26 2006
@@ -0,0 +1,82 @@
+<?xml version="1.0"?>
+
+<document>
+
+ <properties>
+  <title>James 2.3 - Configuring the SpoolManager</title>
+ </properties>
+
+<body>
+<section name="SpoolManager Configuration">
+<p>The SpoolManager is controlled by a single configuration block in the config.xml.
+The spoolmanager tag defines the boundaries of the configuration block.  The behavior of 
+the SpoolManager, most importantly the routing of mail messages through the processor tree,
+is controlled by this block.</p>
+
+<p>The spoolmanager tag has a few simple children.  These are:</p>
+<ul>
+<li><strong>threads</strong> - This is a required positive integer element.  It specifies 
+the number of threads the SpoolManager will use to process messages in the spool.  This 
+parameter tends to substantially impact performance, so it is advisable to tune it in production 
+configurations.</li>
+<li><strong>mailetpackages</strong> - This is a required container tag.  It contains some number 
+of <strong>mailetpackage</strong> children.  The body of each of these <strong>mailetpackage</strong> 
+elements is a Java package name.  It is these packages that contain the classes to be instantiated
+as mailets.</li>
+<li><strong>matcherpackages</strong> - This is a required container tag.  It contains some number 
+of <strong>matcherpackage</strong> children.  The body of each of these <strong>matcherpackage</strong> 
+elements is a Java package name.  It is these packages that contain the classes to be instantiated
+as matchers.</li>
+</ul>
+
+<p>The remaining SpoolManager configuration elements are complex enough to require a more in-depth
+discussion.</p>
+
+<subsection name="Processor Configuration">
+<p>In addition to the child elements discussed above, the SpoolManager tag can have several 
+<strong>processor</strong> children.  It is these tags and their children that define the processor tree 
+for the SpoolManager.</p>
+<p>Each processor has a required attribute, <strong>name</strong>.  The value of this attribute must be 
+unique for each processor tag.  The name of a processor is significant.  Certain processors are required 
+(specifically root and error).  The name "ghost" is forbidden as a processor name, as it is used to denote 
+a message that should not undergo any further processing.</p>
+<p>The James SpoolManager creates a correspondance between processor names and the "state" of a mail as defined 
+in the Mailet API.  Specifically, after each mailet processes a mail, the state of the message is examined.  If
+the state has been changed, the message does not continue in the current processor.  If the new state is "ghost"
+then processing of that message terminates completely.  If the new state is anything else, the message is 
+re-routed to the processor with the name matching the new state.</p>
+<p>The root processor is a required processor.  All new messages that the SpoolManager finds on the spool are 
+directed to this processor.</p>
+<p>The error processor is another required processor.  Under certain circumstances James itself will redirect messages
+to the error processor.  It is also the standard processor to which mailets redirect messages when an error
+condition is encountered.</p>
+<p>The transport and spam processors are two useful, but optional, processors that are included in the out of
+the box configuration.  These processors include logic for actual mail delivery and spam handling respectively.  More
+information on these processors can be found in the default config.xml.</p>
+<p>Each processor element has zero or more <strong>mailet</strong> child elements.  Each of these elements describes a 
+matcher/mailet pair.  The ordering of the <strong>mailet</strong> children is crucial to the configuration, as 
+it is the order in which pairs will be traversed in the processor.</p>
+<p>It is this <strong>mailet</strong> element that is at the core of the SpoolManager configuration.</p>
+</subsection>
+<subsection name="The Mailet Tag">
+<p>Consider the following simple <strong>mailet</strong> tag:</p>
+&lt;mailet match="RemoteAddrNotInNetwork=127.0.0.1" class="ToProcessor"&gt;<br/>
+&lt;processor&gt;spam&lt;/processor&gt;<br/>
+&lt;/mailet&gt;<br/>
+<p>The mailet tag has two required attributes, <strong>match</strong> and <strong>class</strong>.</p>
+<p>The <strong>match</strong> attribute is set to the value of the specific Matcher class to be instantiated with a an 
+optional argument.  If present, the argument is separated from the Matcher class name by an '='.  Semantic 
+interpretation of the argument is left to the particular mailet.</p>
+<p>The <strong>class</strong> attribute is set to the value of the Mailet class that is to be instantiated.</p>
+<p>Finally, the children of the <strong>mailet</strong> tag define the configuration that is passed to the Mailet.  The 
+tags used in this section should have no attributes or children.  The names and bodies of the elements will be passed to 
+the mailet as (name, value) pairs.</p>
+<p>So in the example above, a Matcher instance of RemoteAddrNotInNetwork would be instantiated, and the value "127.0.0.1" 
+would be passed to the matcher.  The Mailet of the pair will be an instance of ToProcessor, and it will be passed the (name, value) 
+pair of ("processor", "spam").</p>
+<p>James includes a number of pre-packaged Mailets and Matchers.  A list of provided Mailets may be found 
+<a href="provided_mailets_2_3.html">here</a>.  A list of provided Matchers may be found <a href="provided_matchers_2_3.html">here</a>.</p>
+</subsection>
+</section>
+</body>
+</document>

Modified: james/server/trunk/src/xdocs/summary_2_3.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/xdocs/summary_2_3.xml?rev=419282&r1=419281&r2=419282&view=diff
==============================================================================
--- james/server/trunk/src/xdocs/summary_2_3.xml (original)
+++ james/server/trunk/src/xdocs/summary_2_3.xml Wed Jul  5 10:10:26 2006
@@ -58,7 +58,7 @@
 <p>More information on configuring the NNTP service can be found <a href="nntp_configuration_2_3.html">here</a>.</p>
 
 </section>
-<section name="FetchPOP">
+<section name="FetchMail">
 
 <p>FetchMail, unlike the other James components, is not an implementation of an RFC.  Instead, it's a 
 component that allows the administrator to configure James to retrieve email from a number of POP3 

Added: james/server/trunk/src/xdocs/using_database_2_3.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/xdocs/using_database_2_3.xml?rev=419282&view=auto
==============================================================================
--- james/server/trunk/src/xdocs/using_database_2_3.xml (added)
+++ james/server/trunk/src/xdocs/using_database_2_3.xml Wed Jul  5 10:10:26 2006
@@ -0,0 +1,126 @@
+<?xml version="1.0"?>
+
+<document>
+
+ <properties>
+  <title>James 2.3 - Using a Database</title>
+ </properties>
+
+<body>
+<section name="Database Configuration">
+<p>James has the capacity to use a JDBC-compatible database for storage of both message and user 
+data.  This section explains how to configure James to utilize a database for storage.</p>
+<subsection name="Requirements">
+<p>Using James with a database backend has certain requirements.  Database configuration is 
+extremely vendor-specific, so we can only state the requirements in general terms.</p>
+<p>There must be a database instance accessible from the James server.  An account with appropriate
+privileges (select, insert, delete into tables, and on initial startup creation of tables) and
+with sufficient quota for the data to be inserted into the database must be available.  Also,
+since James will use JDBC to access the database, an appropriate JDBC driver must be 
+available for installation.</p>
+<p>It is important to verify the functionality of the database before attempting to configure 
+James to use it as a repository.  This will help ensure that configuration issues are properly
+identified.</p>
+</subsection>
+<subsection name="Connection Configuration">
+<p>Configuring the Phoenix container to work with JDBC is the first step in enabling James database support.</p>
+<p>First, Phoenix must be able to load the JDBC classes.  To make these classes available to Phoenix, place the 
+jar/zip files for the JDBC driver in the lib subdirectory of the James installation directory.  Any additional 
+libraries upon which the JDBC library depends that are not part of the standard Java distribution should also be
+added to this directory.</p>
+<p>Please note that a MySQL driver is included as part of the James distribution and
+so there is no need to add such a driver to the lib directory.</p>
+<p>Second, the config.xml must be modified so that Phoenix initializes the database connections.  The relevant 
+configuration is in the database-connections block.  The database-connections tag has only a single child tag, 
+data-sources.  This latter tag is a simple container tag for a number of child elements.  It is these child 
+elements, <strong>data-source</strong> elements, that define the database connections.</p>
+<p>Each <strong>data-source</strong> tag has a required attribute, <strong>name</strong>.  This value 
+must be unique to each <strong>data-source</strong> element.  It is this <strong>name</strong> that will 
+be used to specify the database connection in other parts of the config.xml file.</p>
+<p>The <strong>data-source</strong> element has five children, all of whom are required.
+<ul>
+<li><strong>driver</strong> - The class name of the database driver to be used.</li>
+<li><strong>dburl</strong> - The JDBC connection URL for your database/driver.</li>
+<li><strong>user</strong> - The user id of the database account to be used by this connection.</li>
+<li><strong>password</strong> - The password of the database account to be used by this connection.</li>
+<li><strong>max</strong> - The maximum number of JDBC connections to be used concurrently by this data-source.</li>
+</ul>
+</p>
+
+<p>Generally, you simply configure these entries in the config.xml
+file, which are commented, in order to use a database with James.  You
+would then use the db: or dbfile: prefix instead of the file: prefix
+for a particular repository.  You are currently free to mix and match
+your use of these different storage types for different repositories.
+See <a href="repositories_2_3.html">Repository Configuration</a> for
+more details.  A sample configuration is described below.</p>
+
+</subsection>
+<subsection name="SQL Statement Configuration">
+<p>The precise SQL statements used by James to modify and view data stored in the database are specified in
+an external configuration file.  The sqlResources.xml file 
+(which can be found in the apps/james/conf directory) is a sample configuration file that contains the SQL
+statements used by James.  The purpose of each of these statements, as well as the repository with which 
+they are associated, is documented in situ.</p>
+
+<p>If you are using a SQL database with unusual SQL commands or data types, you may
+need to add special entries to this file.  The James team
+does try to keep sqlResources.xml updated, so if you do run into a
+special case, please let us know.</p>
+
+<p>Also, if the database tables are not created a priori, but rather are to be created by James
+upon startup, special attention should be paid to the "create table" statements in this file.  Such
+statements tend to be both very database and very database instance specific.</p>
+</subsection>
+<subsection name="Sample James Configuration">
+
+<p>The config.xml file has commented out examples for MySQL and
+MSSQL data sources, and for each of the standard repositories.  For
+example, to use MySQL, you would uncomment and adjust the following
+data-source element.</p>
+
+<p>You must create the database, in this case named
+<strong>mail</strong>, the user, and assign the user privileges.
+You may create the tables before running James or, if you so choose, James 
+will automatically create the tables it needs.  In the latter case the user 
+must have table creation privileges.</p>
+
+<source>
+&lt;data-source name="maildb" class="org.apache.james.util.mordred.JdbcDataSource"&gt;
+  &lt;driver&gt;org.gjt.mm.mysql.Driver&lt;/driver&gt;
+  &lt;dburl&gt;jdbc:mysql://127.0.0.1/mail&lt;/dburl&gt;
+  &lt;user&gt;username&lt;/user&gt;
+  &lt;password&gt;password&lt;/password&gt;
+  &lt;max&gt;20&lt;/max&gt;
+&lt;/data-source&gt;
+</source>
+
+<p>Once the data-source element has been created, it can be referenced elsewhere in the config.xml 
+file.  For example, the following element tells James to use the maildb data-source and dbfile 
+storage mechanism for the message spool:</p>
+
+<source>
+&lt;spoolRepository&gt;
+   &lt;repository destinationURL="dbfile://maildb/spool/spool" type="SPOOL"/&gt;
+&lt;/spoolRepository&gt;
+</source>
+
+<p>The following element tells James to store mailboxes in a the maildb data-source:</p>
+
+<source>
+&lt;inboxRepository&gt;
+   &lt;repository destinationURL="db://maildb/inbox/" type="MAIL"/&gt;
+&lt;/inboxRepository&gt;
+</source>
+
+<p>The configuration file contains further examples.</p>
+</subsection>
+<subsection name="Known Issues">
+<p>There are some vendor-specific subtleties in using databases with James that have been observed 
+by some users.  These issues (and methods to resolve them) are recorded on the 
+<a href="FAQ.html">James FAQ</a> as they are reported.  Please consult the FAQ if you encounter any 
+difficulties.</p>
+</subsection>
+</section>
+</body>
+</document>



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


Re: svn commit: r419282 - /james/server/trunk/src/xdocs/

Posted by Stefano Bagnara <ap...@bago.org>.
A big THANK YOU for this!
You know, no one want to work on documentation issue..

We have not found a good solution for the site generation spanning 
multiple James version, but I think we can live with the current 
solution for 2.3 and then find a different solution for 3.0.

I just committed a few small changes to the docs.
I readded 2.1/2.2 links to the main menu, so we can publish both 
documentation for a while.

Stefano

norman@apache.org wrote:
> Author: norman
> Date: Wed Jul  5 10:10:26 2006
> New Revision: 419282
> 
> URL: http://svn.apache.org/viewvc?rev=419282&view=rev
> Log:
> Updates on xdocs
> 
> Added:
>     james/server/trunk/src/xdocs/fetchmail_configuration_2_3.xml   (with props)
>     james/server/trunk/src/xdocs/remotemanager_configuration_2_3.xml
>     james/server/trunk/src/xdocs/repositories_2_3.xml
>     james/server/trunk/src/xdocs/serverwide_configuration_2_3.xml
>     james/server/trunk/src/xdocs/smtp_auth_2_3.xml
>     james/server/trunk/src/xdocs/smtp_configuration_2_3.xml
>     james/server/trunk/src/xdocs/spoolmanager_2_3.xml
>     james/server/trunk/src/xdocs/spoolmanager_configuration_2_3.xml
>     james/server/trunk/src/xdocs/using_database_2_3.xml
> Modified:
>     james/server/trunk/src/xdocs/documentation_2_3.xml
>     james/server/trunk/src/xdocs/installation_instructions_2_3.xml
>     james/server/trunk/src/xdocs/mailet_api_2_3.xml
>     james/server/trunk/src/xdocs/summary_2_3.xml


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org