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 er...@apache.org on 2010/09/26 17:13:46 UTC

svn commit: r1001446 [3/4] - in /james/server/trunk/src/site: ./ apt/ resources/images/ xdoc/ xdoc/images/

Modified: james/server/trunk/src/site/xdoc/fetchmail_configuration.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/site/xdoc/fetchmail_configuration.xml?rev=1001446&r1=1001445&r2=1001446&view=diff
==============================================================================
--- james/server/trunk/src/site/xdoc/fetchmail_configuration.xml (original)
+++ james/server/trunk/src/site/xdoc/fetchmail_configuration.xml Sun Sep 26 15:13:45 2010
@@ -18,952 +18,960 @@
   under the License.    
 -->
 <document>
+
  <properties>
-  <title>James 3.0 - fetchmail Configuration</title>
+  <title>James 3.0 - 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>
+<body>
 
-<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>
+  <section name="Fetchmail">
 
-<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;
+    <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;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;
+        user=&quot;myaccount&quot;
         password=&quot;mypassword&quot;
-        recipientprefix=&quot;&quot;
-        recipientsuffix=&quot;@localhost&quot;
+        recipient=&quot;user@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;
+    </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;@localhost&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>
+      
+      <li>If using a Exchange 2000 or Exchange 2003 server get sure you fix the CLRF bug. 
+      See <a href="http://support.microsoft.com/kb/816896/en-us"> Bug description and fix</a></li>
+    </ul>
 
-    &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>
+  </p>
 
-<li>If using a Exchange 2000 or Exchange 2003 server get sure you fix the CLRF bug. 
-See <a href="http://support.microsoft.com/kb/816896/en-us"> Bug description and fix</a>
-</li>
-</ul>
-</p>
-</section>
+  </section>
 
 
 </body>

Modified: james/server/trunk/src/site/xdoc/index.xml
URL: http://svn.apache.org/viewvc/james/server/trunk/src/site/xdoc/index.xml?rev=1001446&r1=1001445&r2=1001446&view=diff
==============================================================================
--- james/server/trunk/src/site/xdoc/index.xml (original)
+++ james/server/trunk/src/site/xdoc/index.xml Sun Sep 26 15:13:45 2010
@@ -19,138 +19,98 @@
 -->
 <document>
 
-<properties>
-<title>James 3 - Table of Contents</title>
-</properties>
+  <properties>
+     <title>James 3 - Index</title>
+     </properties>
 
 <body>
-<section name="James 3.0-M1 (Milestone 1)">
-<p>
-James 3.0-M1 represents the leading edge of development. This codestream has many more
-features than the 2.x code, but is not as well tested in production. The internal APIs
-are under current validation and are expected to be subject to change. Reasonable
-configuration compatibility has been retained with 3.0.
-</p>
-<p>
-The Java Apache Mail Enterprise Server (a.k.a. Apache James) is a 100% pure Java SMTP, IMAP4 and POP3 Mail 
-server designed to be a complete and portable enterprise mail engine solution.  
-James is based on currently available open protocols.
-</p>
-<p>
-The James server also serves as a mail application platform.  The James project hosts the Apache Mailet API, 
-and the James server is a Mailet container.  This feature makes it easy to design, write, and deploy 
-custom applications for mail processing.  This modularity and ease of customization is one of James' 
-strengths, and can allow administrators to produce powerful applications surprisingly easily.
-</p>
-<p>
-James is now built on top of Spring 3.0 in replacement of trunk version of the <a href="http://avalon.apache.org/">Avalon Application Framework</a>.
-With Spring, We keep the  good development practices introduced by Avalon such as 
-Component Oriented Programming and  Inversion of Control. 
-The stable and robust Spring container provides a strong foundation for the James server.
-</p>
-<p>
-James 3.0-M1 requires Java 1.5 but Java 1.6 is recommended.
-</p>
-<p>
-A migration guide for users willing to upgrade from 3.0 to 3.0-M1 is under redaction.
-</p>
-<p>
-The NNTP News server present in James 3.0 has been removed from the 3.0 release line.
-</p>
-<p>
-This documentation is intended to be an introduction to the concepts behind the James implementation, as well 
-as a guide to installing, configuring, (and for developers) building the James server.
-</p>
-
-<section name="Release Announcement">
-
-<p>The Java Apache Mail Enterprise Server (a.k.a. Apache James) Project is happy to announce the release 
-of version 3.0 of the Apache James server.</p>
-
-<p>James is a 100% pure Java Mail and News server designed to be a complete and portable enterprise 
-mail engine solution.  James supports currently available IETF protocols, including SMTP,POP3 and NNTP 
-, and it and IMAP are targeted for full functionality in v3).  James 
-is able to store user and message data either in a file-system or a JDBC-compatible database, 
-allowing fast, reliable, even real-time replicated storage.</p>
-
-<p>James provides a powerful, flexible mail application engine through support for the Apache Mailet 
-API.  With its Mailet pipeline architecture, James can be used not only to provide standard e-mail 
-services, but also to implement custom e-mail applications.</p>
-
-<p>The James mail server is deployed in production environments and has proven itself to be a robust 
-and high performance mail solution.  Tests indicate that version 3.0 is able to maintain a constant 
-mail throughput rate of thousands of messages/minute for continuous periods.</p>
-
-<p>The James Community is also happy to announce the beginning of the design phase for James version 
-3.0.  Features tentatively slated for that version include enhancements to nearly every area of 
-functionality, including full IMAP support, improved mailing list capabilities, fastfail support, 
-smtp-api for developing own fastfail filters and the next revision of the Mailet API.  This is expected
-to be an exciting time in James development.  We are actively 
-looking for eager, capable developers to contribute to James.  If you're interesting in contributing 
-to the James project, please subscribe to the James developer mailing list.</p>
-
-<p>Information about James can be found at the <a href="http://james.apache.org/">James web site</a> 
-at http://james.apache.org/.  Users interested in subscribing to the James 
-<a href="mailto:server-user-subscribe@james.apache.org">user</a> and 
-<a href="mailto:server-dev-subscribe@james.apache.org">developer</a> mailings lists should send emails 
-to server-user-subscribe@james.apache.org and server-dev-subscribe@james.apache.org, respectively</p>
-</section>
-
-
-<!-- This hierarchy is present in the menu. It will be easier to not replicate it here -->
-<!-- 
-<subsection name="Table of Contents">
-<p>
-I. James Concepts
-<ul>
-<li><a href="summary.html">Summary</a></li>
-<li><a href="spoolmanager.html">SpoolManager</a></li>
-<li><a href="repositories.html">Repositories</a></li>
-<li><a href="mailet_api.html">The Mailet API</a></li>
-</ul>
-II. How To Build James
-<ul>
-<li><a href="build_instructions.html">Building James</a></li>
-</ul>
-III. How To Install James
-<ul>
-<li><a href="installation_instructions.html">Installing James</a></li>
-</ul>
-IV. Configuring James
-<ul>
-<li><a href="dns_configuration.html">DNS Server Configuration</a></li>
-<li><a href="pop3_configuration.html">POP3 Server Configuration</a></li>
-<li><a href="smtp_configuration.html">SMTP Server Configuration</a></li>
-<li><a href="nntp_configuration.html">NNTP Server Configuration</a></li>
- <li><a href="fetchmail_configuration.html">fetchMail Configuration</a></li>
-<li><a href="remotemanager_configuration.html">RemoteManager Configuration</a></li>
-<li><a href="repositories.html">Repository Configuration</a></li>
-<li><a href="spoolmanager_configuration.html">SpoolManager Configuration</a></li>
-<li><a href="serverwide_configuration.html">Server-wide Configuration</a></li>
-<li><a href="adding_users.html">Adding Users</a></li>
-<li><a href="provided_matchers.html">Provided Matchers</a></li>
-<li><a href="provided_mailets.html">Provided Mailets</a></li>
-</ul>
-V. Common Configurations
-<ul>
-<li><a href="smtp_auth.html">Using SMTP AUTH</a></li>
-<li><a href="using_database.html">Using a Database with James</a></li>
-<li><a href="usingTLS.html">Using TLS/SSL</a></li>
-<li><a href="mailing_lists.html">Creating Mailing Lists</a></li>
-</ul>
-VI. Customizing James
-<ul>
-<li><a href="custom_matcher.html">How to write a custom Matcher</a></li>
-<li><a href="custom_mailet.html">How to write a custom Mailet</a></li>
-</ul>
-V. Other Information
-<ul>
-<li><a href="upgrade_instructions.html">Upgrade James</a></li>
-</ul>
-</p>
-</subsection>
--->
 
-</section>
+  <section name="James 3.0-M1 (Milestone 1)">
+  
+    <p>James 3.0-M1 represents the leading edge of development. This codestream has many more
+    features than the 2.x code, but is not as well tested in production. The internal APIs
+    are under current validation and are expected to be subject to change. Reasonable
+    configuration compatibility has been retained with 3.0.</p>
+    
+    <p>The Java Apache Mail Enterprise Server (a.k.a. Apache James) is a 100% pure Java SMTP, IMAP4 and POP3 Mail 
+    server designed to be a complete and portable enterprise mail engine solution.  
+    James is based on currently available open protocols.</p>
+    
+    <p>The James server also serves as a mail application platform.  The James project hosts the Apache Mailet API, 
+    and the James server is a Mailet container.  This feature makes it easy to design, write, and deploy 
+    custom applications for mail processing.  This modularity and ease of customization is one of James' 
+    strengths, and can allow administrators to produce powerful applications surprisingly easily.</p>
+    
+    <p>James is now built on top of Spring 3.0 in replacement of trunk version of the <a href="http://avalon.apache.org/">Avalon Application Framework</a>.
+    With Spring, We keep the  good development practices introduced by Avalon such as 
+    Component Oriented Programming and  Inversion of Control. 
+    The stable and robust Spring container provides a strong foundation for the James server.</p>
+    
+    <p>James 3.0-M1 requires Java 1.5 but Java 1.6 is recommended. 
+    A migration guide for users willing to upgrade from 3.0 to 3.0 is under development. 
+    The NNTP News server present in James 3.0 has been removed from the 3.0 release line.</p>
+    
+    <p>This documentation is intended to be an introduction to the concepts behind the James implementation, as well 
+    as a guide to <a href="/installation_instructions.html">install</a>, <a href="/configuration_instructions.html">configure</a> 
+    and <a href="/build_james.html">develop</a> the James server.</p>
+  
+  <!-- This hierarchy is present in the menu. It will be easier to not replicate it here 
+
+    <subsection name="Table of Contents">
+      <p>
+      I. James Concepts
+      <ul>
+      <li><a href="summary.html">Summary</a></li>
+      <li><a href="spoolmanager.html">SpoolManager</a></li>
+      <li><a href="repositories.html">Repositories</a></li>
+      <li><a href="mailet_api.html">The Mailet API</a></li>
+      </ul>
+      II. How To Build James
+      <ul>
+      <li><a href="build_instructions.html">Building James</a></li>
+      </ul>
+      III. How To Install James
+      <ul>
+      <li><a href="installation_instructions.html">Installing James</a></li>
+      </ul>
+      IV. Configuring James
+      <ul>
+      <li><a href="dns_configuration.html">DNS Server Configuration</a></li>
+      <li><a href="pop3_configuration.html">POP3 Server Configuration</a></li>
+      <li><a href="smtp_configuration.html">SMTP Server Configuration</a></li>
+      <li><a href="nntp_configuration.html">NNTP Server Configuration</a></li>
+       <li><a href="fetchmail_configuration.html">fetchMail Configuration</a></li>
+      <li><a href="remotemanager_configuration.html">RemoteManager Configuration</a></li>
+      <li><a href="repositories.html">Repository Configuration</a></li>
+      <li><a href="spoolmanager_configuration.html">SpoolManager Configuration</a></li>
+      <li><a href="serverwide_configuration.html">Server-wide Configuration</a></li>
+      <li><a href="adding_users.html">Adding Users</a></li>
+      <li><a href="provided_matchers.html">Provided Matchers</a></li>
+      <li><a href="provided_mailets.html">Provided Mailets</a></li>
+      </ul>
+      V. Common Configurations
+      <ul>
+      <li><a href="smtp_auth.html">Using SMTP AUTH</a></li>
+      <li><a href="using_database.html">Using a Database with James</a></li>
+      <li><a href="usingTLS.html">Using TLS/SSL</a></li>
+      <li><a href="mailing_lists.html">Creating Mailing Lists</a></li>
+      </ul>
+      VI. Customizing James
+      <ul>
+      <li><a href="custom_matcher.html">How to write a custom Matcher</a></li>
+      <li><a href="custom_mailet.html">How to write a custom Mailet</a></li>
+      </ul>
+      V. Other Information
+      <ul>
+      <li><a href="upgrade_instructions.html">Upgrade James</a></li>
+      </ul>
+      </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