blob: b3fc4dea0611e136cf5fc086bfefa02dacac5d55 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!-- Generated by Apache Maven Doxia at 2021-11-12 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Apache James Project &#x2013; Apache James Server 3 - Fetchmail Configuration</title>
<style type="text/css" media="all">
@import url("../css/james.css");
@import url("../css/maven-base.css");
@import url("../css/maven-theme.css");
@import url("../css/site.css");
@import url("../js/jquery/css/custom-theme/jquery-ui-1.8.5.custom.css");
@import url("../js/jquery/css/print.css");
@import url("../js/fancybox/jquery.fancybox-1.3.4.css");
</style>
<script type="text/javascript" src="../js/jquery/js/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="../js/jquery/js/jquery-ui-1.8.5.custom.min.js"></script>
<script type="text/javascript" src="../js/fancybox/jquery.fancybox-1.3.4.js"></script>
<link rel="stylesheet" href="../css/print.css" type="text/css" media="print" />
<meta name="Date-Revision-yyyymmdd" content="20211112" />
<meta http-equiv="Content-Language" content="en" />
<!-- Google Analytics -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-1384591-1']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script').item(0); s.parentNode.insertBefore(ga, s);
})();
</script>
</head>
<body class="composite">
<div id="banner">
<a href="../index.html" id="bannerLeft" title="james-logo.png">
<img src="../images/logos/james-logo.png" alt="James Project" />
</a>
<a href="https://www.apache.org/index.html" id="bannerRight">
<img src="images/logos/asf_logo_small.png" alt="The Apache Software Foundation" />
</a>
<div class="clear">
<hr/>
</div>
</div>
<div id="breadcrumbs">
<div class="xleft">
<span id="publishDate">Last Published: 2021-11-12</span>
</div>
<div class="xright"> <a href="../index.html" title="Home">Home</a>
|
<a href="../documentation.html" title="James">James</a>
|
<a href="../mime4j/index.html" title="Mime4J">Mime4J</a>
|
<a href="../jsieve/index.html" title="jSieve">jSieve</a>
|
<a href="../jspf/index.html" title="jSPF">jSPF</a>
|
<a href="../jdkim/index.html" title="jDKIM">jDKIM</a>
</div>
<div class="clear">
<hr/>
</div>
</div>
<div id="leftColumn">
<div id="navcolumn">
<h5>James components</h5>
<ul>
<li class="collapsed">
<a href="../documentation.html" title="About James">About James</a>
</li>
<li class="expanded">
<a href="../server/index.html" title="Server">Server</a>
<ul>
<li class="none">
<a href="../server/advantages.html" title="Advantages">Advantages</a>
</li>
<li class="none">
<a href="../server/objectives.html" title="Objectives">Objectives</a>
</li>
<li class="expanded">
<a href="../server/quick-start.html" title="User Manual">User Manual</a>
<ul>
<li class="collapsed">
<a href="../server/features.html" title="1. Features">1. Features</a>
</li>
<li class="none">
<a href="../server/packaging.html" title="2. Packaging">2. Packaging</a>
</li>
<li class="collapsed">
<a href="../server/install.html" title="3. Install James">3. Install James</a>
</li>
<li class="expanded">
<a href="../server/config.html" title="4. Configure James">4. Configure James</a>
<ul>
<li class="none">
<a href="../server/config-listeners.html" title="Additional mailbox listeners">Additional mailbox listeners</a>
</li>
<li class="none">
<a href="../server/config-antispam.html" title="Anti Spam">Anti Spam</a>
</li>
<li class="none">
<a href="../server/config-blob-export.html" title="Blob Export">Blob Export</a>
</li>
<li class="none">
<a href="../server/config-blobstore.html" title="BlobStore">BlobStore</a>
</li>
<li class="none">
<a href="../server/config-cassandra.html" title="Cassandra">Cassandra</a>
</li>
<li class="none">
<a href="../server/config-elasticsearch.html" title="ElasticSearch">ElasticSearch</a>
</li>
<li class="none">
<a href="../server/config-vault.html" title="Deleted Messages Vault">Deleted Messages Vault</a>
</li>
<li class="none">
<a href="../server/config-dnsservice.html" title="DNS Service">DNS Service</a>
</li>
<li class="none">
<a href="../server/config-domainlist.html" title="Domain List">Domain List</a>
</li>
<li class="none">
<strong>FetchMail</strong>
</li>
<li class="none">
<a href="../server/config-guice.html" title="Guice">Guice</a>
</li>
<li class="none">
<a href="../server/config-imap4.html" title="IMAP4">IMAP4</a>
</li>
<li class="none">
<a href="../server/config-jmap.html" title="JMAP">JMAP</a>
</li>
<li class="none">
<a href="../server/config-mailrepositorystore.html" title="Mail Repository Stores">Mail Repository Stores</a>
</li>
<li class="none">
<a href="../server/config-mailbox.html" title="Mailbox">Mailbox</a>
</li>
<li class="none">
<a href="../server/config-mailetcontainer.html" title="Mailet Container">Mailet Container</a>
</li>
<li class="none">
<a href="../server/config-healthcheck.html" title="Periodical Health Checks">Periodical Health Checks</a>
</li>
<li class="none">
<a href="../server/config-pop3.html" title="POP3">POP3</a>
</li>
<li class="none">
<a href="../server/config-quota.html" title="Quota">Quota</a>
</li>
<li class="none">
<a href="../server/config-rabbitmq.html" title="RabbitMQ">RabbitMQ</a>
</li>
<li class="none">
<a href="../server/config-recipientrewritetable.html" title="Recipient Rewrite">Recipient Rewrite</a>
</li>
<li class="none">
<a href="../server/config-smtp-lmtp.html" title="SMTP LMTP">SMTP LMTP</a>
</li>
<li class="none">
<a href="../server/config-sieve.html" title="Sieve">Sieve</a>
</li>
<li class="none">
<a href="../server/config-ssl-tls.html" title="SSL/TLS">SSL/TLS</a>
</li>
<li class="none">
<a href="../server/config-system.html" title="System">System</a>
</li>
<li class="none">
<a href="../server/config-spring-jpa-postgres.html" title="Spring JPA Postgres">Spring JPA Postgres</a>
</li>
<li class="none">
<a href="../server/config-users.html" title="Users">Users</a>
</li>
<li class="none">
<a href="../server/config-webadmin.html" title="WebAdmin">WebAdmin</a>
</li>
</ul>
</li>
<li class="collapsed">
<a href="../server/manage.html" title="5. Manage">5. Manage</a>
</li>
<li class="collapsed">
<a href="../server/monitor.html" title="6. Monitor">6. Monitor</a>
</li>
<li class="collapsed">
<a href="../server/upgrade.html" title="7. Upgrade">7. Upgrade</a>
</li>
<li class="collapsed">
<a href="../server/dev.html" title="8. Developers Corner">8. Developers Corner</a>
</li>
</ul>
</li>
<li class="none">
<a href="../mail.html#James_Mailing_lists" title="Mailing Lists">Mailing Lists</a>
</li>
<li class="none">
<a href="../server/release-notes.html" title="Release Notes">Release Notes</a>
</li>
<li class="none">
<a href="../server/apidocs/index.html" title="Javadoc">Javadoc</a>
</li>
<li class="none">
<a href="https://issues.apache.org/jira/browse/JAMES" title="Issue Tracker">Issue Tracker</a>
</li>
<li class="none">
<a href="https://github.com/apache/james-project" title="Sources">Sources</a>
</li>
<li class="none">
<a href="../server/rfcs.html" title="RFCs">RFCs</a>
</li>
<li class="none">
<a href="../download.cgi#Apache_James_Server" title="Download releases">Download releases</a>
</li>
</ul>
</li>
<li class="collapsed">
<a href="../mailet/index.html" title="Mailets">Mailets</a>
</li>
<li class="collapsed">
<a href="../mailbox/index.html" title="Mailbox">Mailbox</a>
</li>
<li class="collapsed">
<a href="../protocols/index.html" title="Protocols">Protocols</a>
</li>
<li class="collapsed">
<a href="../mpt/index.html" title="MPT">MPT</a>
</li>
</ul>
<h5>Apache Software Foundation</h5>
<ul>
<li>
<strong>
<a title="ASF" href="http://www.apache.org/">ASF</a>
</strong>
</li>
<li>
<a title="Get Involved" href="http://www.apache.org/foundation/getinvolved.html">Get Involved</a>
</li>
<li>
<a title="FAQ" href="http://www.apache.org/foundation/faq.html">FAQ</a>
</li>
<li>
<a title="License" href="http://www.apache.org/licenses/" >License</a>
</li>
<li>
<a title="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
</li>
<li>
<a title="Thanks" href="http://www.apache.org/foundation/thanks.html">Thanks</a>
</li>
<li>
<a title="Security" href="http://www.apache.org/security/">Security</a>
</li>
</ul>
<a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
<img class="poweredBy" alt="Built by Maven" src="../images/logos/maven-feather.png" />
</a>
</div>
</div>
<div id="bodyColumn">
<div id="contentBox">
<section>
<h2><a name="Fetchmail_Configuration"></a>Fetchmail Configuration</h2>
This configuration file requires Spring wiring.
<p>Consult <a class="externalLink" href="https://github.com/apache/james-project/tree/master/server/apps/spring-app/src/main/resources/fetchmail.xml">fetchmail.xml</a> in GIT to get some examples and hints.</p>
<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><br />
<a href="#Fetchmail_Gmail">Fetchmail Gmail</a>
</p>
</section>
<section>
<h2><a name="How_Fetchmail_Works"></a>How Fetchmail Works</h2>
<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>
<h2><a name="Fetchmail_Configuration_Parameters"></a>Fetchmail Configuration Parameters</h2>
<p>The Fetchmail configuration parameters are part of the James configuration,
whose base file is fetchmail.xml. For clarity and flexibility, the
Fetchmail configuration parameters are stored in the file
james-Fetchmail.xml, which is referenced within
fetchmail.xml.</p>
<p>The configuration parameters are described below.</p>
<section>
<h3><a name="Fetchmail"></a>Fetchmail</h3>
<p>The configuration block delimited by the <b>Fetchmail</b> tag
controls Fetchmail.</p>
<p>The tag has these attributes:
</p>
<dl>
<dt><b>enabled</b></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>The tag has these child tags (minimum cardinality, maximum cardinality):
</p>
<ul>
<li><b><a href="#fetch">fetch</a></b> (0, *)</li>
</ul>
<p>
</p>
<div class="source">
<pre>
&lt;Fetchmail enabled=&quot;true&quot;&gt;
...
&lt;/Fetchmail&gt;
</pre></div>
</section>
<section>
<h3><a name="fetch"></a>fetch</h3>
<p>The <b>fetch</b> tag defines a fetch task to be run
periodically. Fetch tasks run concurrently.</p>
<p>The tag has these attributes:
</p>
<dl>
<dt><b>name</b></dt>
<dd>A string uniquely identifying the fetch task.</dd>
</dl>
<p>The tag has these child tags (minimum cardinality, maximum cardinality):
</p>
<ul>
<li><b><a href="#accounts">accounts</a></b> (1, 1)</li>
<li><b><a href="#blacklist">blacklist</a></b> (1, 1)</li>
<li><b><a href="#defaultdomain">defaultdomain</a></b> (0, 1)</li>
<li><b><a href="#fetchall">fetchall</a></b> (1, 1)</li>
<li><b><a href="#fetched">fetched</a></b> (1, 1)</li>
<li><b><a href="#host">host</a></b> (1, 1)</li>
<li><b><a href="#interval">interval</a></b> (1, 1)</li>
<li><b><a href="#javaMailFolderName">javaMailFolderName</a></b> (1, 1)</li>
<li><b><a href="#javaMailProperties">javaMailProperties</a></b> (0, 1)</li>
<li><b><a href="#javaMailProviderName">javaMailProviderName</a></b> (1, 1)</li>
<li><b><a href="#maxmessagesize">maxmessagesize</a></b> (0, 1)</li>
<li><b><a href="#recipientnotfound">recipientnotfound</a></b> (1, 1)</li>
<li><b><a href="#recursesubfolders">recursesubfolders</a></b> (1, 1)</li>
<li><b><a href="#remoteReceivedHeader">remoteReceivedHeader</a></b> (0, 1)</li>
<li><b><a href="#remoterecipient">remoterecipient</a></b> (1, 1)</li>
<li><b><a href="#undeliverable">undeliverable</a></b> (1, 1)</li>
<li><b><a href="#userundefined">userundefined</a></b> (1, 1)</li>
</ul>
<p>
</p>
<div class="source">
<pre>
&lt;fetch name=&quot;mydomain.com&quot;&gt;
...
&lt;/fetch&gt;
</pre></div>
</section>
<section>
<h3><a name="accounts"></a>accounts</h3>
<p>The <b>accounts</b> 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):
</p>
<ul>
<li><b><a href="#account">account</a></b> (0, *)</li>
<li><b><a href="#alllocal">alllocal</a></b> (0, 1)</li>
</ul>
<p>
</p>
<div class="source">
<pre>
&lt;accounts&gt;
...
&lt;/accounts&gt;
</pre></div>
</section>
<section>
<h3><a name="blacklist"></a>blacklist</h3>
<p>The <b>blacklist</b> 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: wibble@mydomain.com, flobble@mydomain.com.</p>
<p>The tag has these attributes:
</p>
<dl>
<dt><b>reject</b></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 org.apache.james.Fetchmail.isBlacklistedRecipient
added to the mail.</dd>
<dt><b>leaveonserver</b></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><b>markseen</b></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>
<div class="source">
<pre>
&lt;blacklist
reject=&quot;true&quot;
leaveonserver=&quot;true&quot;
markseen=&quot;true&quot;&gt;
wibble@mydomain.com, flobble@mydomain.com
&lt;/blacklist&gt;
</pre></div>
</section>
<section>
<h3><a name="defaultdomain"></a>defaultdomain</h3>
<p>The <b>defaultdomain</b> tag declares the domain name to be
appended to the From: 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 <b>servernames</b> tag of the <b>James</b>
block in the configuration or the name localhost.</p>
<p>
</p>
<div class="source">
<pre>
&lt;defaultdomain&gt;
mydomain.com
&lt;/defaultdomain&gt;
</pre></div>
</section>
<section>
<h3><a name="fetchall"></a>fetchall</h3>
<p>The <b>fetchall</b> 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>
</p>
<div class="source">
<pre>
&lt;fetchall&gt;false&lt;/fetchall&gt;
</pre></div>
</section>
<section>
<h3><a name="fetched"></a>fetched</h3>
<p>The <b>fetched</b> 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:
</p>
<dl>
<dt><b>leaveonserver</b></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><b>markseen</b></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>
<div class="source">
<pre>
&lt;fetched leaveonserver=&quot;true&quot; markseen=&quot;true&quot;/&gt;
</pre></div>
</section>
<section>
<h3><a name="host"></a>host</h3>
<p>The <b>host</b> 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>
</p>
<div class="source">
<pre>
&lt;host&gt;pop3.server.com&lt;/host&gt;
</pre></div>
</section>
<section>
<h3><a name="interval"></a>interval</h3>
<p>The <b>interval</b> 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>
</p>
<div class="source">
<pre>
&lt;interval&gt;60000&lt;/interval&gt;
</pre></div>
</section>
<section>
<h3><a name="javaMailFolderName"></a>javaMailFolderName</h3>
<p>The <b>javaMailFolderName</b> 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
INBOX.</p>
<p>
</p>
<div class="source">
<pre>
&lt;javaMailFolderName&gt;INBOX&lt;/javaMailFolderName&gt;
</pre></div>
</section>
<section>
<h3><a name="javaMailProperties"></a>javaMailProperties</h3>
<p>The <b>javaMailProperties</b> tag declares the properties to be
applied to the JavaMail Session used by the fetch task. These override the
properties answered by System.getProperties(). Many JavaMail
properties are specific to the JavaMail Provider selected by the
<a href="#javaMailProviderName">javaMailProviderName</a> tag.</p>
<p><b>Relying on the default values selected by the Provider can be
inappropriate.</b> 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 class="externalLink" 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 class="externalLink" 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 class="externalLink" 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):
</p>
<ul>
<li><b><a href="#property">property</a></b> (0, *)</li>
</ul>
<p>
</p>
<div class="source">
<pre>
&lt;javaMailProperties&gt;
...
&lt;/javaMailProperties&gt;
</pre></div>
</section>
<section>
<h3><a name="javaMailProviderName"></a>javaMailProviderName</h3>
<p>The <b>javaMailProviderName</b> 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
pop3 or imap. The name is used to select the default
Provider for the protocol.</p>
<p>
</p>
<div class="source">
<pre>
&lt;javaMailProviderName&gt;pop3&lt;/javaMailProviderName&gt;
</pre></div>
</section>
<section>
<h3><a name="maxmessagesize"></a>maxmessagesize</h3>
<p>The <b>maxmessagesize</b> 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:
</p>
<dl>
<dt><b>limit</b></dt>
<dd>An integer. The maximum message size expressed in Kilobytes. If 0, there is
no limit.</dd>
<dt><b>reject</b></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
org.apache.james.Fetchmail.isMaxMessageSizeExceeded added prior to
injection into the James input spool, (see below for the location of an example).</dd>
<dt><b>leaveonserver</b></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><b>markseen</b></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>
<div class="source">
<pre>
&lt;maxmessagesize
limit=&quot;4096&quot;
reject=&quot;false&quot;
leaveonserver=&quot;false&quot;
markseen=&quot;false&quot;/&gt;
</pre></div>
<p>An example configuration using James mailet processing to bounce fetched
messages that exceed the maximum permitted size can be found in the file
$PHOENIX_HOME/apps/james/conf/samples/Fetchmail/maxMessageSize.xml.
</p>
</section>
<section>
<h3><a name="recipientnotfound"></a>recipientnotfound</h3>
<p>The <b>recipientnotfound</b> 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:
</p>
<dl>
<dt><b>defer</b></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><b>reject</b></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
org.apache.james.Fetchmail.isRecipientNotFound added to the
mail.</dd>
<dt><b>leaveonserver</b></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><b>markseen</b></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>
<div class="source">
<pre>
&lt;recipientnotfound
defer=&quot;true&quot;
reject=&quot;true&quot;
leaveonserver=&quot;true&quot;
markseen=&quot;true&quot;/&gt;
</pre></div>
</section>
<section>
<h3><a name="recursesubfolders"></a>recursesubfolders</h3>
<p>The <b>recursesubfolders</b> 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>
</p>
<div class="source">
<pre>
&lt;recursesubfolders&gt;false&lt;/recursesubfolders&gt;
</pre></div>
</section>
<section>
<h3><a name="remoteReceivedHeader"></a>remoteReceivedHeader</h3>
<p>The <b>remoteReceivedHeader</b> 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 <b>remoteReceivedHeaderIndex</b> should
be set to <b>1</b>.
</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
<b>remoteReceivedHeaderIndex</b> tag may be omitted or the default
index value of -1 can be specified. This causes the remote address to be set to
127.0.0.1 and the remote host name to be set to
localhost. Matchers almost always considered these values to be
legitimate.</p>
<p>The tag has these attributes:
</p>
<dl>
<dt><b>index</b></dt>
<dd>An integer whose meaning is described above.
</dd>
<dt><b>reject</b></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 org.apache.james.Fetchmail.isInvalidReceivedHeader
added to the mail, the remote address set to 127.0.0.1 and the remote
host name set to localhost.
</dd>
<dt><b>leaveonserver</b></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><b>markseen</b></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>
<div class="source">
<pre>
&lt;remoteReceivedHeader
index=&quot;1&quot;
reject=&quot;true&quot;
leaveonserver=&quot;true&quot;
markseen=&quot;true&quot;/&gt;
</pre></div>
<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
$PHOENIX_HOME/apps/james/conf/samples/Fetchmail/remoteReceivedHeader.xml.
</p>
</section>
<section>
<h3><a name="remoterecipient"></a>remoterecipient</h3>
<p>The <b>remoterecipient</b> 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 <b>servernames</b> tag of the
<b>James</b> block in the configuration.</p>
<p>The tag has these attributes:
</p>
<dl>
<dt><b>reject</b></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
org.apache.james.Fetchmail.isRemoteRecipient added to the mail.
</dd>
<dt><b>leaveonserver</b></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><b>markseen</b></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>
<div class="source">
<pre>
&lt;remoterecipient
reject=&quot;true&quot;
leaveonserver=&quot;true&quot;
markseen=&quot;true&quot;/&gt;
</pre></div>
</section>
<section>
<h3><a name="undeliverable"></a>undeliverable</h3>
<p>The <b>undeliverable</b> tag declares what happens to mail that
cannot be delivered.</p>
<p>The tag has these attributes:
</p>
<dl>
<dt><b>leaveonserver</b></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><b>markseen</b></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>
<div class="source">
<pre>
&lt;undeliverable
leaveonserver=&quot;true&quot;
markseen=&quot;true&quot;/&gt;
</pre></div>
</section>
<section>
<h3><a name="userundefined"></a>userundefined</h3>
<p>The <b>userundefined</b> tag declares what happens to mail for
which the recipient is not defined as a James user.</p>
<p>The tag has these attributes:
</p>
<dl>
<dt><b>reject</b></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
org.apache.james.Fetchmail.isUserUndefined added to the mail.
</dd>
<dt><b>leaveonserver</b></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><b>markseen</b></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>
<div class="source">
<pre>
&lt;userundefined
reject=&quot;true&quot;
leaveonserver=&quot;true&quot;
markseen=&quot;true&quot;/&gt;
</pre></div>
</section>
<section>
<h3><a name="account"></a>account</h3>
<p>The <b>account</b> tag declares an account on the external server
from which mail should be fetched.</p>
<p>The tag has these attributes:
</p>
<dl>
<dt><b>user</b></dt>
<dd>The string to be passed as the user when connecting to the external server.
</dd>
<dt><b>password</b></dt>
<dd>The string to be passed as the password when connecting to the external
server.</dd>
<dt><b>recipient</b></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><b>ignorercpt-header</b></dt>
<dd>A boolean. If &quot;true&quot;, mail is always delivered to the recipient
declared in the <b>recipient</b> attribute above. If
&quot;false&quot;, the intended recipient is determined from the mail headers or
the process declared by the <b>recipientnotfound</b> tag.
</dd>
</dl>
<p>
</p>
<div class="source">
<pre>
&lt;account
user=&quot;myaccount&quot;
password=&quot;mypassword&quot;
recipient=&quot;user@localhost&quot;
ignorercpt-header=&quot;true&quot;/&gt;
</pre></div>
</section>
<section>
<h3><a name="alllocal"></a>alllocal</h3>
<p>The <b>alllocal</b> 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 <b>alllocal</b> 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:
</p>
<dl>
<dt><b>userprefix</b></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><b>usersuffix</b></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><b>password</b></dt>
<dd>The string to be passed as the password when connecting to the external
server.</dd>
<dt><b>recipientprefix</b></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><b>recipientsuffix</b></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><b>ignorercpt-header</b></dt>
<dd>A boolean. If &quot;true&quot;, mail is always delivered to the recipient
constructed from the <b>recipientprefix</b> and
<b>recipientsuffix</b> 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 <b>recipientnotfound</b> tag.
</dd>
</dl>
<p>
</p>
<div class="source">
<pre>
&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;
</pre></div>
</section>
<section>
<h3><a name="property"></a>property</h3>
<p>The <b>property</b> tag declares a name/value pair.</p>
<p>The tag has these attributes:
</p>
<dl>
<dt><b>name</b></dt>
<dd>The name of the property.
</dd>
<dt><b>value</b></dt>
<dd>The value of the property.</dd>
</dl>
<p>
</p>
<div class="source">
<pre>
&lt;property
name=&quot;mail.pop3.connectiontimeout&quot;
value=&quot;180000&quot;/&gt;
</pre></div>
</section>
</section>
<section>
<h2><a name="Fetchmail_Examples"></a>Fetchmail Examples</h2>
<p>Full sources to the examples discussed below can be found in the directory
$PHOENIX_HOME/apps/james/conf/samples/Fetchmail.</p>
<section>
<h3><a name="One_Account.2C_One_User"></a>One Account, One User</h3>
<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 <b>accounts</b> block looks like
this:</p>
<p>
</p>
<div class="source">
<pre>
&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;
</pre></div>
</section>
<section>
<h3><a name="One_Account.2C_Many_Users"></a>One Account, Many Users</h3>
<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 <b>accounts</b> block looks like this:</p>
<p>
</p>
<div class="source">
<pre>
&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;
</pre></div>
<p>The <b>recipientnotfound</b> 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
<b>account</b> tag:</p>
<p>
</p>
<div class="source">
<pre>
&lt;recipientnotfound
defer=&quot;false&quot;
reject=&quot;false&quot;
leaveonserver=&quot;false&quot;
markseen=&quot;false&quot;/&gt;
</pre></div>
</section>
<section>
<h3><a name="One_Account.2C_One_User_-_Dynamic"></a>One Account, One User - Dynamic</h3>
<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 <b>alllocal</b> tag declares the parameters for the dynamic
accounts. The <b>accounts</b> block below will deliver mail for
user1@external.domain.com to user1@localhost,
user2@external.domain.com to user2@localhost,
userZ@external.domain.com to userZ@localhost etc.:</p>
<p>
</p>
<div class="source">
<pre>
&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;
</pre></div>
</section>
<section>
<h3><a name="One_Account.2C_Many_Users_-_Dynamic"></a>One Account, Many Users - Dynamic</h3>
<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 <b>alllocal</b> tag declares dynamic
accounts for all local users and the <b>account</b> tag configures an
account to fetch all mail.</p>
<p>The <b>recipientnotfound</b> 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 &lt;recipientnotfound defer=&quot;true&quot; 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>
</p>
<div class="source">
<pre>
&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;
</pre></div>
</section>
</section>
<section>
<h2><a name="Fetchmail_Caveats"></a>Fetchmail Caveats</h2>
<p>These are some things to be aware of when using Fetchmail:
</p>
<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 FetchedFrom
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
org.apache.james.Fetchmail.taskName 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
markseen=&quot;true&quot; will most likely have no effect and
therefore, the <b>fetchall</b> 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 leaveonserver=&quot;false&quot;/&gt;.</li>
<li>If using a Exchange 2000 or Exchange 2003 server get sure you fix the CLRF bug.
See <a class="externalLink" href="http://support.microsoft.com/kb/816896/en-us"> Bug description and fix</a></li>
</ul>
</section>
<section>
<h2><a name="Fetchmail_Gmail"></a>Fetchmail Gmail</h2>
<p>Use this configuration to fetch Gmail via POP3. Please don't forget to enable POP3 in Gmail (<a class="externalLink" href="http://mail.google.com/support/bin/answer.py?answer=13273">read how-to</a>).</p>
<div class="source">
<pre>
&lt;fetchmail enabled=&quot;true&quot;&gt;
&lt;fetch name=&quot;gmail.com&quot;&gt;
&lt;accounts&gt;
&lt;account user=&quot;YOUR_USER@gmail.com&quot; password=&quot;YOUR_PASSWORD&quot; recipient=&quot;YOUR_EMAIL_ADDRESS_IN_JAMES&quot; ignorercpt-header=&quot;true&quot;/&gt;
&lt;/accounts&gt;
&lt;host&gt;pop.gmail.com&lt;/host&gt;
&lt;interval&gt;600000&lt;/interval&gt;
&lt;javaMailProviderName&gt;pop3&lt;/javaMailProviderName&gt;
&lt;javaMailFolderName&gt;INBOX&lt;/javaMailFolderName&gt;
&lt;javaMailProperties&gt;
&lt;property name=&quot;mail.pop3.ssl.enable&quot; value=&quot;true&quot;/&gt;
&lt;/javaMailProperties&gt;
&lt;fetchall&gt;false&lt;/fetchall&gt;
&lt;recursesubfolders&gt;false&lt;/recursesubfolders&gt;
&lt;defaultdomain&gt;localhost&lt;/defaultdomain&gt;
&lt;fetched leaveonserver=&quot;true&quot; markseen=&quot;true&quot;/&gt;
&lt;remotereceivedheader index=&quot;1&quot; reject=&quot;true&quot; leaveonserver=&quot;true&quot; markseen=&quot;false&quot;/&gt;
&lt;maxmessagesize limit=&quot;0&quot; reject=&quot;false&quot; leaveonserver=&quot;true&quot; markseen=&quot;false&quot;/&gt;
&lt;undeliverable leaveonserver=&quot;true&quot; markseen=&quot;false&quot;/&gt;
&lt;recipientnotfound defer=&quot;true&quot; reject=&quot;true&quot; leaveonserver=&quot;true&quot; markseen=&quot;false&quot;/&gt;
&lt;blacklist reject=&quot;true&quot; leaveonserver=&quot;true&quot; markseen=&quot;false&quot;&gt; wibble@localhost, flobble@localhost&lt;/blacklist&gt;
&lt;userundefined reject=&quot;true&quot; leaveonserver=&quot;true&quot; markseen=&quot;false&quot; /&gt;
&lt;remoterecipient reject=&quot;true&quot; leaveonserver=&quot;true&quot; markseen=&quot;false&quot; /&gt;
&lt;/fetch&gt;
&lt;/fetchmail&gt;
</pre></div>
<p>Use this configuration to fetch Gmail via IMAP4. Please don't forget to enable IMAP4 in Gmail (<a class="externalLink" href="http://mail.google.com/support/bin/answer.py?answer=77695">read how-to</a>).</p>
<div class="source">
<pre>
&lt;fetchmail enabled=&quot;true&quot;&gt;
&lt;fetch name=&quot;gmail.com&quot;&gt;
&lt;accounts&gt;
&lt;account user=&quot;YOUR_USER@gmail.com&quot; password=&quot;YOUR_PASSWORD&quot; recipient=&quot;YOUR_EMAIL_ADDRESS_IN_JAMES&quot; ignorercpt-header=&quot;true&quot;/&gt;
&lt;/accounts&gt;
&lt;host&gt;imap.gmail.com&lt;/host&gt;
&lt;interval&gt;600000&lt;/interval&gt;
&lt;javaMailProviderName&gt;imap&lt;/javaMailProviderName&gt;
&lt;javaMailFolderName&gt;INBOX&lt;/javaMailFolderName&gt;
&lt;javaMailProperties&gt;
&lt;property name=&quot;mail.imap.ssl.enable&quot; value=&quot;true&quot;/&gt;
&lt;/javaMailProperties&gt;
&lt;fetchall&gt;false&lt;/fetchall&gt;
&lt;recursesubfolders&gt;false&lt;/recursesubfolders&gt;
&lt;defaultdomain&gt;localhost&lt;/defaultdomain&gt;
&lt;fetched leaveonserver=&quot;true&quot; markseen=&quot;true&quot;/&gt;
&lt;remotereceivedheader index=&quot;1&quot; reject=&quot;true&quot; leaveonserver=&quot;true&quot; markseen=&quot;false&quot;/&gt;
&lt;maxmessagesize limit=&quot;0&quot; reject=&quot;false&quot; leaveonserver=&quot;true&quot; markseen=&quot;false&quot;/&gt;
&lt;undeliverable leaveonserver=&quot;true&quot; markseen=&quot;false&quot;/&gt;
&lt;recipientnotfound defer=&quot;true&quot; reject=&quot;true&quot; leaveonserver=&quot;true&quot; markseen=&quot;false&quot;/&gt;
&lt;blacklist reject=&quot;true&quot; leaveonserver=&quot;true&quot; markseen=&quot;false&quot;&gt; wibble@localhost, flobble@localhost&lt;/blacklist&gt;
&lt;userundefined reject=&quot;true&quot; leaveonserver=&quot;true&quot; markseen=&quot;false&quot; /&gt;
&lt;remoterecipient reject=&quot;true&quot; leaveonserver=&quot;true&quot; markseen=&quot;false&quot; /&gt;
&lt;/fetch&gt;
&lt;/fetchmail&gt;
</pre></div>
</section>
</div>
</div>
<div class="clear">
<hr/>
</div>
<div id="footer">
<div class="xright">Copyright &#169; 2006-2021
<a href="https://www.apache.org/">The Apache Software Foundation</a>.
All Rights Reserved.
</div>
<div class="clear">
<hr/>
</div>
</div>
</body>
</html>