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 <alllocal> 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 <alllocal> 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 "true", the fetch tasks will be run periodically. If "false",
-no fetch tasks will be run. The default is "false".</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>
-<fetchmail enabled="true">
-...
-</fetchmail>
-</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>
-<fetch name="mydomain.com">
-...
-</fetch>
-</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>
-<accounts>
-...
-</accounts>
-</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 "true", mail for recipients in the blacklist will
-not be injected into the James input spool. If "false", 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 "true", mail for recipients in the blacklist will be
-left on the server. If "false", mail for recipients in the blacklist
-will be marked for deletion.</dd>
-<dt><strong>markseen</strong></dt>
-<dd>A boolean. If "true", mail for recipients in the blacklist will be
-marked as seen on the server. If "false", mail for recipients in the blacklist
-will not be marked as seen.</dd>
-</dl>
-</p>
-
-<p>
-<source>
-<blacklist
- reject="true"
- leaveonserver="true"
- markseen="true">
-wibble@mydomain.com, flobble@mydomain.com
-</blacklist>
-</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>
-<defaultdomain>
- mydomain.com
-</defaultdomain>
-</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>
-<fetchall>false</fetchall>
-</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 "true", mail injected into the James input spool
-will be left on the server. If "false", mail injected into the James
-input spool will be marked for deletion.</dd>
-<dt><strong>markseen</strong></dt>
-<dd>A boolean. If "true", mail injected into the James input spool
-will be marked as seen on the server. If "false", mail injected into
-the James input spool will not be marked as seen.</dd>
-</dl>
-</p>
-
-<p>
-<source>
-<fetched leaveonserver="true" markseen="true"/>
-</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>
-<host>pop3.server.com</host>
-</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>
-<interval>60000</interval>
-</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>
-<javaMailFolderName>INBOX</javaMailFolderName>
-</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>
-<javaMailProperties>
-...
-</javaMailProperties>
-</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>
-<javaMailProviderName>pop3</javaMailProviderName>
-</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 "true", mail whose message size exceeds the maximum
-permitted size will not be injected into the James input spool. If
-"false", 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 "true", mail whose message size exceeds the maximum
-permitted size will be left on the server. If "false", mail whose message
-size exceeds the maximum permitted size will be marked for deletion.</dd>
-<dt><strong>markseen</strong></dt>
-<dd>A boolean. If "true", mail whose message size exceeds the maximum
-permitted size will be marked as seen on the server. If "false",
-mail whose message size exceeds the maximum permitted size will not be marked as
-seen.</dd>
-</dl>
-</p>
-
-<p>
-<source>
-<maxmessagesize
- limit="4096"
- reject="false"
- leaveonserver="false"
- markseen="false"/>
-</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 "true", mail for which a sole intended recipient
-cannot be determined is left unprocessed until the next run of the fetch task.
-If "false", mail for which a sole intended recipient cannot be
-determined is processed immediately.</dd>
-<dt><strong>reject</strong></dt>
-<dd>A boolean. If "true", mail for which a sole intended recipient
-cannot be determined will not be injected into the James input spool. If
-"false", 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 "true", mail for which a sole intended recipient
-cannot be determined will be left on the server. If "false", 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 "true", mail for which a sole intended recipient
-cannot be determined will be marked as seen on the server. If "false",
-mail for which a sole intended recipient cannot be determined will not be marked
-as seen.</dd>
-</dl>
-</p>
-
-<p>
-<source>
-<recipientnotfound
- defer="true"
- reject="true"
- leaveonserver="true"
- markseen="true"/>
-</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>
-<recursesubfolders>false</recursesubfolders>
-</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 "true", mail whose specified recieved header is invalid
-will not be injected into the James input spool. If "false", 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 "true", mail whose specified recieved header is invalid
-will be left on the server. If "false", mail whose specified recieved header
-is invalid will be marked for deletion.</dd>
-<dt><strong>markseen</strong></dt>
-<dd>A boolean. If "true", mail whose specified recieved header is invalid
-will be marked as seen on the server. If "false", mail whose specified
-recieved header is invalid will not be marked as seen.</dd>
-</dl>
-</p>
-
-<p>
-<source>
-<remoteReceivedHeader
- index="1"
- reject="true"
- leaveonserver="true"
- markseen="true"/>
-</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 "true", mail for remote recipients will not be
-injected into the James input spool. If "false", 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 "true", mail for remote recipients will be left on
-the server. If "false", mail for remote recipients will be marked for
-deletion.</dd>
-<dt><strong>markseen</strong></dt>
-<dd>A boolean. If "true", mail for remote recipients will be marked as
-seen on the server. If "false", mail for remote recipients will not be
-marked as seen.</dd>
-</dl>
-</p>
-
-<p>
-<source>
-<remoterecipient
- reject="true"
- leaveonserver="true"
- markseen="true"/>
-</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 "true", mail that cannot be delivered will be left
-on the server. If "false", mail that cannot be delivered will be
-marked for deletion.</dd>
-<dt><strong>markseen</strong></dt>
-<dd>A boolean. If "true", mail for that cannot be delivered will be
-marked as seen on the server. If "false", mail that cannot be
-delivered will not be marked as seen.</dd>
-</dl>
-</p>
-
-<p>
-<source>
-<undeliverable
- leaveonserver="true"
- markseen="true"/>
-</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 "true", mail for recipients who are not defined as
-James users will not be injected into the James input spool. If
-"false", 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 "true", mail for recipients who are not defined as
-James users will be left on the server. If "false", 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 "true", mail for recipients who are not defined as
-James users will be marked as seen on the server. If "false", mail
-for recipients who are not defined as James users will not be marked as seen.
-</dd>
-</dl>
-</p>
-
-<p>
-<source>
-<userundefined
- reject="true"
- leaveonserver="true"
- markseen="true"/>
-</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 "true", mail is always delivered to the recipient
-declared in the <strong>recipient</strong> attribute above. If
-"false", the intended recipient is determined from the mail headers or
-the process declared by the <strong>recipientnotfound</strong> tag.
-</dd>
-</dl>
-</p>
-
-<p>
-<source>
-<account
- user="myaccount"
- password="mypassword"
- recipient="user@localhost"
- ignorercpt-header="true"/>
-</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 "true", mail is always delivered to the recipient
-constructed from the <strong>recipientprefix</strong> and
-<strong>recipientsuffix</strong> attributes above and the James user. If
-"false", the intended recipient is determined from the mail headers or
-the process declared by the <strong>recipientnotfound</strong> tag.
-</dd>
-</dl>
-</p>
-
-<p>
-<source>
-<alllocal
- userprefix=""
- usersuffix="@external.domain.com"
- password="mypassword"
- recipientprefix=""
- recipientsuffix="@mydomain.com"
- ignorercpt-header="true"/>
-</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>
-<property
- name="mail.pop3.connectiontimeout"
- value="180000"/>
-</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>
-<accounts>
+ <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 <alllocal> 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 <alllocal> 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 "true", the fetch tasks will be run periodically. If "false",
+ no fetch tasks will be run. The default is "false".</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>
+ <Fetchmail enabled="true">
+ ...
+ </Fetchmail>
+ </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>
+ <fetch name="mydomain.com">
+ ...
+ </fetch>
+ </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>
+ <accounts>
+ ...
+ </accounts>
+ </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 "true", mail for recipients in the blacklist will
+ not be injected into the James input spool. If "false", 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 "true", mail for recipients in the blacklist will be
+ left on the server. If "false", mail for recipients in the blacklist
+ will be marked for deletion.</dd>
+ <dt><strong>markseen</strong></dt>
+ <dd>A boolean. If "true", mail for recipients in the blacklist will be
+ marked as seen on the server. If "false", mail for recipients in the blacklist
+ will not be marked as seen.</dd>
+ </dl>
+ </p>
+
+ <p>
+ <source>
+ <blacklist
+ reject="true"
+ leaveonserver="true"
+ markseen="true">
+ wibble@mydomain.com, flobble@mydomain.com
+ </blacklist>
+ </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>
+ <defaultdomain>
+ mydomain.com
+ </defaultdomain>
+ </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>
+ <fetchall>false</fetchall>
+ </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 "true", mail injected into the James input spool
+ will be left on the server. If "false", mail injected into the James
+ input spool will be marked for deletion.</dd>
+ <dt><strong>markseen</strong></dt>
+ <dd>A boolean. If "true", mail injected into the James input spool
+ will be marked as seen on the server. If "false", mail injected into
+ the James input spool will not be marked as seen.</dd>
+ </dl>
+ </p>
+
+ <p>
+ <source>
+ <fetched leaveonserver="true" markseen="true"/>
+ </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>
+ <host>pop3.server.com</host>
+ </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>
+ <interval>60000</interval>
+ </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>
+ <javaMailFolderName>INBOX</javaMailFolderName>
+ </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>
+ <javaMailProperties>
+ ...
+ </javaMailProperties>
+ </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>
+ <javaMailProviderName>pop3</javaMailProviderName>
+ </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 "true", mail whose message size exceeds the maximum
+ permitted size will not be injected into the James input spool. If
+ "false", 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 "true", mail whose message size exceeds the maximum
+ permitted size will be left on the server. If "false", mail whose message
+ size exceeds the maximum permitted size will be marked for deletion.</dd>
+ <dt><strong>markseen</strong></dt>
+ <dd>A boolean. If "true", mail whose message size exceeds the maximum
+ permitted size will be marked as seen on the server. If "false",
+ mail whose message size exceeds the maximum permitted size will not be marked as
+ seen.</dd>
+ </dl>
+
+ </p>
+
+ <p>
+ <source>
+ <maxmessagesize
+ limit="4096"
+ reject="false"
+ leaveonserver="false"
+ markseen="false"/>
+ </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 "true", mail for which a sole intended recipient
+ cannot be determined is left unprocessed until the next run of the fetch task.
+ If "false", mail for which a sole intended recipient cannot be
+ determined is processed immediately.</dd>
+ <dt><strong>reject</strong></dt>
+ <dd>A boolean. If "true", mail for which a sole intended recipient
+ cannot be determined will not be injected into the James input spool. If
+ "false", 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 "true", mail for which a sole intended recipient
+ cannot be determined will be left on the server. If "false", 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 "true", mail for which a sole intended recipient
+ cannot be determined will be marked as seen on the server. If "false",
+ mail for which a sole intended recipient cannot be determined will not be marked
+ as seen.</dd>
+ </dl>
+ </p>
+
+ <p>
+ <source>
+ <recipientnotfound
+ defer="true"
+ reject="true"
+ leaveonserver="true"
+ markseen="true"/>
+ </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>
+ <recursesubfolders>false</recursesubfolders>
+ </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 "true", mail whose specified recieved header is invalid
+ will not be injected into the James input spool. If "false", 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 "true", mail whose specified recieved header is invalid
+ will be left on the server. If "false", mail whose specified recieved header
+ is invalid will be marked for deletion.</dd>
+ <dt><strong>markseen</strong></dt>
+ <dd>A boolean. If "true", mail whose specified recieved header is invalid
+ will be marked as seen on the server. If "false", mail whose specified
+ recieved header is invalid will not be marked as seen.</dd>
+ </dl>
+ </p>
+
+ <p>
+ <source>
+ <remoteReceivedHeader
+ index="1"
+ reject="true"
+ leaveonserver="true"
+ markseen="true"/>
+ </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 "true", mail for remote recipients will not be
+ injected into the James input spool. If "false", 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 "true", mail for remote recipients will be left on
+ the server. If "false", mail for remote recipients will be marked for
+ deletion.</dd>
+ <dt><strong>markseen</strong></dt>
+ <dd>A boolean. If "true", mail for remote recipients will be marked as
+ seen on the server. If "false", mail for remote recipients will not be
+ marked as seen.</dd>
+ </dl>
+ </p>
+
+ <p>
+ <source>
+ <remoterecipient
+ reject="true"
+ leaveonserver="true"
+ markseen="true"/>
+ </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 "true", mail that cannot be delivered will be left
+ on the server. If "false", mail that cannot be delivered will be
+ marked for deletion.</dd>
+ <dt><strong>markseen</strong></dt>
+ <dd>A boolean. If "true", mail for that cannot be delivered will be
+ marked as seen on the server. If "false", mail that cannot be
+ delivered will not be marked as seen.</dd>
+ </dl>
+ </p>
+
+ <p>
+ <source>
+ <undeliverable
+ leaveonserver="true"
+ markseen="true"/>
+ </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 "true", mail for recipients who are not defined as
+ James users will not be injected into the James input spool. If
+ "false", 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 "true", mail for recipients who are not defined as
+ James users will be left on the server. If "false", 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 "true", mail for recipients who are not defined as
+ James users will be marked as seen on the server. If "false", mail
+ for recipients who are not defined as James users will not be marked as seen.
+ </dd>
+ </dl>
+ </p>
+
+ <p>
+ <source>
+ <userundefined
+ reject="true"
+ leaveonserver="true"
+ markseen="true"/>
+ </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 "true", mail is always delivered to the recipient
+ declared in the <strong>recipient</strong> attribute above. If
+ "false", the intended recipient is determined from the mail headers or
+ the process declared by the <strong>recipientnotfound</strong> tag.
+ </dd>
+ </dl>
+ </p>
+
+ <p>
+ <source>
<account
- user="user1@external.domain.com"
- password="password1"
- recipient="user1@localhost"
- ignorercpt-header="true"/>
-
- <account
- user="user2@external.domain.com"
- password="password2"
- recipient="user2@localhost"
- ignorercpt-header="true"/>
-
- <account
- user="user3@external.domain.com"
- password="password3"
- recipient="user3@localhost"
- ignorercpt-header="true"/>
-</accounts>
-</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>
-<accounts>
- <account
- user="global@external.domain.com"
- password="password"
- recipient="fetchmail@localhost"
- ignorercpt-header="false"/>
-</accounts>
-</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>
-<recipientnotfound
- defer="false"
- reject="false"
- leaveonserver="false"
- markseen="false"/>
-</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>
-<accounts>
- <alllocal
- userprefix=""
- usersuffix="@external.domain.com"
+ user="myaccount"
password="mypassword"
- recipientprefix=""
- recipientsuffix="@localhost"
+ recipient="user@localhost"
ignorercpt-header="true"/>
-</accounts>
-</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><recipientnotfound defer="true"</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>
-<accounts>
+ </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 "true", mail is always delivered to the recipient
+ constructed from the <strong>recipientprefix</strong> and
+ <strong>recipientsuffix</strong> attributes above and the James user. If
+ "false", the intended recipient is determined from the mail headers or
+ the process declared by the <strong>recipientnotfound</strong> tag.
+ </dd>
+ </dl>
+ </p>
+
+ <p>
+ <source>
<alllocal
userprefix=""
usersuffix="@external.domain.com"
password="mypassword"
recipientprefix=""
- recipientsuffix="@localhost"
+ recipientsuffix="@mydomain.com"
ignorercpt-header="true"/>
+ </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>
+ <property
+ name="mail.pop3.connectiontimeout"
+ value="180000"/>
+ </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>
+ <accounts>
+ <account
+ user="user1@external.domain.com"
+ password="password1"
+ recipient="user1@localhost"
+ ignorercpt-header="true"/>
+
+ <account
+ user="user2@external.domain.com"
+ password="password2"
+ recipient="user2@localhost"
+ ignorercpt-header="true"/>
+
+ <account
+ user="user3@external.domain.com"
+ password="password3"
+ recipient="user3@localhost"
+ ignorercpt-header="true"/>
+ </accounts>
+ </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>
+ <accounts>
+ <account
+ user="global@external.domain.com"
+ password="password"
+ recipient="Fetchmail@localhost"
+ ignorercpt-header="false"/>
+ </accounts>
+ </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>
+ <recipientnotfound
+ defer="false"
+ reject="false"
+ leaveonserver="false"
+ markseen="false"/>
+ </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>
+ <accounts>
+ <alllocal
+ userprefix=""
+ usersuffix="@external.domain.com"
+ password="mypassword"
+ recipientprefix=""
+ recipientsuffix="@localhost"
+ ignorercpt-header="true"/>
+ </accounts>
+ </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><recipientnotfound defer="true"</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>
+ <accounts>
+ <alllocal
+ userprefix=""
+ usersuffix="@external.domain.com"
+ password="mypassword"
+ recipientprefix=""
+ recipientsuffix="@localhost"
+ ignorercpt-header="true"/>
+
+ <account
+ user="global@external.domain.com"
+ password="password"
+ recipient="Fetchmail@localhost"
+ ignorercpt-header="false"/>
+ </accounts>
+
+ <recipientnotfound
+ defer="true"
+ reject="true"
+ leaveonserver="true"
+ markseen="true"/>
+ </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="true"</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="false"/></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>
- <account
- user="global@external.domain.com"
- password="password"
- recipient="fetchmail@localhost"
- ignorercpt-header="false"/>
-</accounts>
-
-<recipientnotfound
- defer="true"
- reject="true"
- leaveonserver="true"
- markseen="true"/>
-</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="true"</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="false"/></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