blob: 7a6a08ea61a94cf40fef04f01f20aacf977b7a56 [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-09-26 -->
<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; 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="author" content="Serge Knystautas" />
<meta name="Date-Revision-yyyymmdd" content="20210926" />
<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-09-26</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="collapsed">
<a href="../../server/index.html" title="Server">Server</a>
</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="Configuration"></a>Configuration</h2>
<p>
<blockquote>
<p>This document explains the JAMES.conf.xml file for James 2.0
<br />JAMES 2.0 uses a date-stamped version of Avalon from late September 2001.
The lib directory includes jars with date-stamped names for the Avalon libraries.
</br>
</p>
</blockquote>
</section>
<section>
<h2><a name="James_Server_Configuration"></a>James Server Configuration</h2>
<section>
<h3><a name="James_Configuration"></a>James Configuration</h3>
<p>
These tag elements control the JAMES spooling and identification
settings.
</p>
<table class="bodyTable" border="1">
<tr class="a">
<th>&lt;name&gt;</th>
<th>default value</th>
<th>meaning</th>
</tr>
<tr class="b">
<td> postmaster </td>
<td> Postmaster@localhost </td>
<td> Is the source of error replies and the email users will mail to for any problem. You
should change this to an address that can receive incoming messages.</td>
</tr>
<tr class="a">
<td> helloName</td>
<td> attribute autodetect=TRUE and value of 'myMailServer' </td>
<td> The name by which James will identify itself in SMTP and POP3
greetings. If autodetect is TRUE James will attempt to detect
automatically the name, failing which it will use 'localhost'. If
autodetect is not TRUE, James will use the specified name or
'localhost' if none is specified. Look in jamesinfo.log for
lines like &quot;[...] Local host is: [servername] and [...] Hello Name is: [machine name]&quot;</td>
</tr>
<tr class="b">
<td> servernames/servername</td>
<td> attribute autodetect=TRUE and last value of 'localhost'</td>
<td> A list of host names James will consider as local. Any user [user]@[servername]
will be considered to be local. If autodetect is TRUE James will attempt to detect
automatically the name and use any names specified. Look in jamesinfo.log for a line like &quot;[...] Handling mail for:: [domain/host]&quot;</td>
</tr>
<tr class="a">
<td> spoolRepository </td>
<td> file://var/mail/spool/ </td>
<td> This is the path where incoming messages are stored before beeing processed. </td>
</tr>
<tr class="b">
<td> inboxRepository </td>
<td> file://var/mail/localinbox/ </td>
<td> This is the root for local users inbox. Each user will have a personal folder
[inboxRepository]/[user] </td>
</tr>
<tr class="a">
<td> spoolmanagerthreads </td>
<td> 5 </td>
<td> This is the number of thread that work polling mails from the spool and take care
of processing them. </td>
</tr>
</table>
</section>
<section>
<h3><a name="SMTP_Server_Configuration"></a>SMTP Server Configuration</h3>
<p>
These tag elements affect the SMTP listener (for incoming messages).
</p>
<table class="bodyTable" border="1">
<tr class="a">
<th>&lt;name&gt;</th>
<th>default value</th>
<th>meaning</th>
</tr>
<tr class="b">
<td> port </td>
<td> 25 </td>
<td> The port we are listening to. </td>
</tr>
<tr class="a">
<td> bind </td>
<td> N.A. </td>
<td> Specific IP addresses that you wish to bind this service to. </td>
</tr>
<tr class="b">
<td> smtphandler </td>
<td> N.A. </td>
<td> Parent for all SMTPHandler configuations. </td>
</tr>
<tr class="a">
<td> connectiontimeout </td>
<td> 120000 </td>
<td> If nothing is received from an open connection for more than {timeout] mills
the connection is closed. </td>
</tr>
</table>
</section>
<section>
<h3><a name="POP3_Server_Configuration"></a>POP3 Server Configuration</h3>
<p>
These tag elements affect the POP3 server (for message retrieval)
</p>
<table class="bodyTable" border="1">
<tr class="a">
<th>&lt;name&gt;</th>
<th>default value</th>
<th>meaning</th>
</tr>
<tr class="b">
<td> port </td>
<td> 110 </td>
<td> The port we are listening to. </td>
</tr>
<tr class="a">
<td> bind </td>
<td> N.A. </td>
<td> Specific IP addresses that you wish to bind this service to. </td>
</tr>
<tr class="b">
<td> useTLS </td>
<td> false </td>
<td> Whether you wish to require/use TLS (SSL) on this port. </td>
</tr>
<tr class="a">
<td> pop3handler </td>
<td> N.A. </td>
<td> Parent for all POP3Handler configuations. </td>
</tr>
<tr class="b">
<td> connectiontimeout </td>
<td> 120000 </td>
<td> If nothing is received from an open connection for more than {timeout] mills
the connection is closed. </td>
</tr>
</table>
</section>
<section>
<h3><a name="Users_Manager_Configuration"></a>Users Manager Configuration</h3>
<p>
These tag elements affect the configuration of the list of local users.
</p>
<table class="bodyTable" border="1">
<tr class="a">
<th>&lt;name&gt;</th>
<th>default value</th>
<th>meaning</th>
</tr>
<tr class="b">
<td> repository </td>
<td> file://var/users/ </td>
<td> The path where local mail account information are stored. </td>
</tr>
</table>
</section>
<section>
<h3><a name="Remote_Manager_Configuration"></a>Remote Manager Configuration</h3>
<p>
These tag elements affect the remote manager, a telnet based utility
to manage the User Manager.
</p>
<table class="bodyTable" border="1">
<tr class="a">
<th>&lt;name&gt;</th>
<th>default value</th>
<th>meaning</th>
</tr>
<tr class="b">
<td> port </td>
<td> 4555 </td>
<td> The port we are listening to. </td>
</tr>
<tr class="a">
<td> bind </td>
<td> N.A. </td>
<td> Specific IP addresses that you wish to bind this service to. </td>
</tr>
<tr class="b">
<td> useTLS </td>
<td> false </td>
<td> Whether you wish to require/use TLS (SSL) on this port. </td>
</tr>
<tr class="a">
<td> administrator_accounts </td>
<td> N.A. </td>
<td> The parent of &lt;account&gt; </td>
</tr>
<tr class="b">
<td> account </td>
<td> login=&quot;root&quot; password=&quot;root&quot; </td>
<td> A list of root account to administer JAMES. </td>
</tr>
<tr class="a">
<td> connectiontimeout </td>
<td> 120000 </td>
<td> If nothing is received from an open connection for more than {timeout] mills</td>
</tr>
</table>
</section>
<section>
<h3><a name="Transport_Configuration"></a>Transport Configuration</h3>
<p>
These tag elements affect SMTP remote delivery, specifically, DNS
lookup functionality.
</p>
<table class="bodyTable" border="1">
<tr class="a">
<th>&lt;name&gt;</th>
<th>default value</th>
<th>meaning</th>
</tr>
<tr class="b">
<td> dnsServer/servers/server </td>
<td> N.A. </td>
<td> This is a list of DNS to resolve external address. </td>
</tr>
<tr class="a">
<td> authoritative </td>
<td> false </td>
<td> Whether to require authoritative (non-cached) DNS records. Should always be false
unless you understand the implications. </td>
</tr>
<tr class="b">
<td> repository </td>
<td> file://var/mail/delayed/ </td>
<td> This is a temp repository path shared with the name of &quot;TMP_REPOSITORY&quot;.
It is used by the RemoteDelivery Mailet to store mail for futher delivery.
(Note: this is not very elegant and will probally change soon) </td>
</tr>
<tr class="a">
<td> mailets </td>
<td> rootpath=&quot;org.apache.james.transport.mailets.&quot; </td>
<td> This is the parent node for all mailet configurations. The rootpath specify
where mailet repository is. (Note: need to plug more than one repository) </td>
</tr>
</table>
</section>
</section>
<section>
<h2><a name="The_Mailet_processor_pipeline"></a>The Mailet processor pipeline</h2>
<p>
This is James sitemap. It defines how each incoming mail will be
processed. Incoming mails begins their process at the first mailet in the
pipe. Each step is described by a &lt;servet&gt; tag with some attributes:
&lt;mailet match=&quot;[matchClass]=[matchParameters]&quot;
class=&quot;[mailetClass]&quot;&gt;.
The Matcher class split the mail into two Collections: one with all recipients
matching conditions and the other with all recipient not matching. All information
in the mail except recipients cloned so the message that both matching and not matching
are identical (again except recipients). The matching recipients and mail will be passed to
the specified mailet for processing. After processing both mails, the
untouched not-matching mail and the processed matching mail, each go to next step in
the processor. Some mailets will indicate the mail should be consumed and no continue processing.
The Null mailet for example will simply consume any incoming mail as will the RemoteDelivery
since after delivery the mail needs no more processing.
</p>
<section>
<h3><a name="Matchers"></a>Matchers</h3>
<p>
The Matcher interface defines how match class should work. Their work is
to split a Vector of recipients into two: the ones matching a specified
condition and all others.
Currently implemented matchers:
</p>
<table class="bodyTable" border="1">
<tr class="a">
<th>class name</th>
<th>parameter</th>
<th>action</th>
<th>example</th>
</tr>
<tr class="b">
<td> All </td>
<td> none </td>
<td> match all recipients. </td>
<td> match=&quot;All&quot; </td>
</tr>
<tr class="a">
<td> HasAttachment </td>
<td> none </td>
<td> match all recipients if the message has an attachment (if content type is multipart/mixed). </td>
<td> match=&quot;All&quot; </td>
</tr>
<tr class="b">
<td> HostIs </td>
<td> comma separated list of hosts names </td>
<td> match all recipients belonging to one of the specified hosts </td>
<td> match=&quot;HostIs=myHost.mydom.org,yourHost&quot; </td>
</tr>
<tr class="a">
<td> HostIsLocal </td>
<td> none </td>
<td> check recipients's hosts against the list of host names set in configuration for localhost
(see &lt;servername&gt;). </td>
<td> match=&quot;HostIsLocal&quot; </td>
</tr>
<tr class="b">
<td> InSpammerBlacklist </td>
<td> DNS zone with blacklist </td>
<td> match all recipients if mail received from an IP address on the blacklist. </td>
<td> match=&quot;InSpammerBlacklist=blackholes.mail-abuse.org&quot; </td>
</tr>
<tr class="a">
<td> IsSingleRecipient </td>
<td> none </td>
<td> match mail if only has 1 recipient. </td>
<td> match=&quot;IsSingleRecipient&quot; </td>
</tr>
<tr class="b">
<td> NESSpamCheck </td>
<td> none </td>
<td> match all recipients if mail matches various spam detection rules. </td>
<td> match=&quot;NESSpamCheck&quot; </td>
</tr>
<tr class="a">
<td> RecipientIs </td>
<td> comma separated list of recipients </td>
<td> match all recipients defined in condition. </td>
<td> match=&quot;RecipientIs=root@localhost,admin@localhost&quot; </td>
</tr>
<tr class="b">
<td> RecipientIsLocal </td>
<td> none </td>
<td> match recipient which host is local (see HostIsLocal) and that are recognized by the
Users Manager to be local accounts. </td>
<td> match=&quot;RecipientIsLocal&quot; </td>
</tr>
<tr class="a">
<td> RelayLimit </td>
<td> Maximum number of hops. </td>
<td> match all recipients if the message has more than the specified number of SMTP hops.
Important to prevent race conditions in SMTP delivery.
</td>
<td> match=&quot;RelayLimit=30&quot; </td>
</tr>
<tr class="b">
<td> RemoteAddrInNetwork </td>
<td> comma separated list of network addresses </td>
<td> match all recipients if the message was received from an IP address that matches the
comma separated list. Wildcards are supposed, e.g., 192.168.0.* is a valid option.
</td>
<td> match=&quot;RemoteAddrInNetwork=127.0.0.1,192.168.*&quot; </td>
</tr>
<tr class="a">
<td> RemoteAddrNotInNetwork </td>
<td> comma separated list of network addresses </td>
<td> match all recipients if the message was not received from an IP address that matches
the comma separated list. Wildcards are supposed, e.g., 192.168.0.* is a valid option.
</td>
<td> match=&quot;RemoteAddrNotInNetwork=127.0.0.1,192.168.*&quot; </td>
</tr>
<tr class="b">
<td> SenderInFakeDomain </td>
<td> none </td>
<td> match recipients who's domain name portion of their email address is invalid. Queries
for A, CNAME, and MX record entries. </td>
<td> match=&quot;SenderInFakeDomain&quot; </td>
</tr>
<tr class="a">
<td> SenderIs </td>
<td> comma separated list of address. </td>
<td> match all recipients if sender is in the condition string, else match none. </td>
<td> match=&quot;SenderIs=badBay@badhost&quot; </td>
</tr>
<tr class="b">
<td> SizeGreaterThan </td>
<td> number of bytes. supports 'k' and 'm' suffixes. </td>
<td> match all recipients if message is larger than the given number of bytes, kilobytes, or megabytes. </td>
<td> match=&quot;SizeGreaterThan=1m&quot; </td>
</tr>
<tr class="a">
<td> SubjectIs </td>
<td> comma separated list of address. </td>
<td> match all recipients if the subject is equal to the condition string, else match none. </td>
<td> match=&quot;SubjectIs=REMOVE&quot; </td>
</tr>
<tr class="b">
<td> SubjectStartsWith </td>
<td> comma separated list of address. </td>
<td> match all recipients if the subject starts with the condition string, else match none. </td>
<td> match=&quot;SubjectStartsWith: [ADV]&quot; </td>
</tr>
<tr class="a">
<td> UserIs </td>
<td> comma separated list of accounts </td>
<td> match all recipients defined in condition regardless of host. </td>
<td> match=&quot;UserIs=root,admin&quot; </td>
</tr>
</table>
<p>
Some examples:
<br />
- &lt;mailet match=&quot;RecipientIsLocal&quot;
class=&quot;LocalDelivery&quot;&gt;
</br>
<br />
- &lt;mailet match=&quot;UserIs=root&quot;
class=&quot;Forward&quot;&gt;
</br>
<br />
- &lt;mailet match=&quot;SenderIs=badBoy@myhost,badGirl@yourhost&quot;
class=&quot;Null&quot;&gt;
</br>
</p>
</section>
<section>
<h3><a name="Mailet"></a>Mailet</h3>
<p>
Mailet are classes that process a message. They are
passed a Mail object on which they can perform any kind of task.
Clever use of mailets allow you to write an email-based application.
Simple mailets provide basic mail functionality like mail forwarding,
mailing list, &quot;I'm on vacation&quot; message, mail logging etc. As simply as
these mailet, you can write and deploy your own mailet to perform any kind of task.
<br />
Here you are some of the mailets bundled with James along with their configuration:
</br>
</p>
<b>Null</b>
<blockquote>
Consume any incoming mail. No configuration needed.
<br />
&lt;mailet match=&quot;SenderIs=badBoy@badhost&quot; class=&quot;Null&quot;&gt;
&lt;/mailet&gt;
</br>
</blockquote>
<b>debug.Identity</b>
<blockquote>
Leave any incoming mail untouched. A debug mailet
(not really useful).
No configuration needed.
<br />
&lt;mailet match=&quot;All&quot; class=&quot;Identity&quot;&gt;
&lt;/mailet&gt;</br>
</blockquote>
<b>Forward</b>
<blockquote>
<br />
Replace the recipient list with recipient specified in
configurations.</br>
<br />
&lt;mailet match=&quot;RecipientIs=root@localhost&quot;
class=&quot;Forward&quot;&gt;</br>
<blockquote>
<br />
&lt;forwardto&gt; green@blue.org &lt;/forwardto&gt;
&lt;forwardto&gt; red@yellow.com &lt;/forwardto&gt;
</br>
</blockquote>
&lt;/mailet&gt;
</blockquote>
<b>ToProcessor</b>
<blockquote>
Sends the incoming mail object to a new processor pipeline.
root and error are special processors that
should always be defined.
<br />
&lt;mailet match=&quot;RecipientIsLocal&quot; class=&quot;ToProcessor&quot;&gt;
</br>
<blockquote>
&lt;processor&gt; localdelivery &lt;/processor&gt;
</blockquote>
&lt;/mailet&gt;
</blockquote>
<b>ServerTime</b>
<blockquote>
Replies to the sender with a short message with the current time.
No configuration needed.
<br />
&lt;mailet match=&quot;RecipientIs=time@localhost&quot; class=&quot;ServerTime&quot;&gt;
</br>
&lt;/mailet&gt;
</blockquote>
<b>ToRepository</b>
<blockquote>
Stores mails in the specified MailRepository. Useful for mail logging
etc. If the passThrough parameter is false the mail will be consumed, if true
it will be returned untouched to the pipe.
<br />
&lt;mailet match=&quot;RecipientIs=root@localhost&quot;
class=&quot;ToRepository&quot;&gt;
</br>
<blockquote>
<br />
&lt;repositoryPath&gt; file://var/mail/logAdmin
&lt;/repositoryPath&gt;
</br>
<br />
&lt;passThrough&gt; true &lt;/passThrough&gt; (default false)
</br>
</blockquote>
&lt;/mailet&gt;
</blockquote>
<b>LocalDelivery</b>
<blockquote>
Store mail in the local inbox, one folder for each user.
<br />
&lt;mailet match=&quot;RecipientIsLocal&quot; class=&quot;LocalDelivery&quot;&gt;
</br>
&lt;/mailet&gt;
</blockquote>
<b>RemoteDelivery</b>
Relays mails to remote hosts. &quot;delayTime&quot; is the time in mills the
mailet will wait before retrying sending a mail which fail at first time. &quot;maxRetries&quot;
is the number of retries before sending back to sender the mail. <br />
&lt;mailet match=&quot;!RecipientIsLocal&quot; class=&quot;RemoteDelivery&quot;&gt;
</br>
<blockquote>
<br />
&lt;delayTime&gt; 21600000 &lt;/delayTime&gt;
</br>
<br />
&lt;maxRetries&gt; 5 &lt;/maxRetries&gt;
</br>
</blockquote>
<p>&lt;/mailet&gt; </p>
<b>Redirect</b>
<dl>
<dt>A mailet providing configurable redirection services<br /></br>
This mailet can produce listserver, forward and notify behaviour, with the
original message intact, attached, appended or left out altogether.<br /></br>
This built in functionality is controlled by the configuration as laid out
below.</dt>
</dl>
<p>However it is also designed to be easily subclassed to make authoring redirection
mailets simple. <br /></br>
By extending it and overriding one or more of its methods new behaviour can
be quickly created without the author having to address any other issue than
the relevant one. For more information see the javadocs</p>
<p>The configuration parameters are:</p>
<table class="bodyTable" border="1">
<tr class="a">
<th>param</th>
<th>desc</th>
</tr>
<tr class="b">
<td>&lt;recipients&gt;</td>
<td>A comma delimited list of email addresses for recipients of this message,
it will use the &quot;to&quot; list if not specified. These addresses
will only appear in the To: header if no &quot;to&quot; list is supplied.</td>
</tr>
<tr class="a">
<td>&lt;to&gt;</td>
<td>A comma delimited list of addresses to appear in the To: header, the
email will only be delivered to these addresses if they are in the recipients
list.<br />
</br>
The recipients list will be used if this is not supplied</td>
</tr>
<tr class="b">
<td>&lt;sender&gt;</td>
<td>A single email address to appear in the From: header <br />
</br>
It can include constants &quot;sender&quot; and &quot;postmaster&quot;</td>
</tr>
<tr class="a">
<td>&lt;message&gt;</td>
<td>A text message to be the body of the email. Can be omitted.</td>
</tr>
<tr class="b">
<td>&lt;inline&gt;</td>
<td>
<p>One of the following items:</p>
<ul>
<li>unaltered The original message is the new
message, for forwarding/aliasing</li>
<li>heads The
headers of the original message are appended to the message</li>
<li>body The
body of the original is appended to the new message</li>
<li>all Both
headers and body are appended</li>
<li>none Neither
body nor headers are appended</li>
</ul>
</td>
</tr>
<tr class="a">
<td>&lt;attachment&gt;</td>
<td>
<p>One of the following items:</p>
<ul>
<li>heads The headers of the original
are attached as text</li>
<li>body The body of the original
is attached as text</li>
<li>all Both
headers and body are attached as a single text file</li>
<li>none Nothing is attached</li>
<li>message The original message is attached as type message/rfc822,
this means that it can, in many cases, be opened, resent, fw'd, replied
to etc by email client software.</li>
</ul>
</td>
</tr>
<tr class="b">
<td>&lt;passThrough&gt;</td>
<td>TRUE or FALSE, if true the original message continues in the mailet
processor after this mailet is finished. False causes the original to
be stopped.</td>
</tr>
<tr class="a">
<td>&lt;attachError&gt;</td>
<td>TRUE or FALSE, if true any error message available to the mailet is
appended to the message body (except in the case of inline == unaltered)</td>
</tr>
<tr class="b">
<td>&lt;replyto&gt;</td>
<td>A single email address to appear in the Rely-To: header, can also be
&quot;sender&quot; or &quot;postmaster&quot;, this header is not set if
this is omited.</td>
</tr>
<tr class="a">
<td>&lt;prefix&gt;</td>
<td>An optional subject prefix prepended to the original message subject,
for example..<br />
</br>
Undeliverable mail:</td>
</tr>
<tr class="b">
<td>&lt;static&gt;</td>
<td>
<p>TRUE or FALSE, if this is true it hints to the mailet that none of
the parameters are set dynamically, and therefore they can be set once
in the init method.<br /></br>
False tells the mailet to call all the &quot;getters&quot; for every
mail processed.</p>
<p>This defaults to false.<br /></br>
It should be TRUE in all cases, except where one of the getter methods
has been overriden to provide dynamic values, such as a listserve which
might override getRecipients() to get a list from a users repository.</p>
</td>
</tr>
</table>
<table class="bodyTable" border="1">
<tr class="a">
<th>
<p>Example, creates a distribution list:</p></th></tr>
<tr class="b">
<td>
<p> &lt;mailet match=&quot;RecipientIs=test@localhost&quot; class=&quot;Redirect&quot;&gt;<br /></br>
&lt;recipients&gt;x@localhost, y@localhost, z@localhost&lt;/recipients&gt;<br /></br>
&lt;to&gt;list@localhost&lt;/to&gt;<br /></br>
&lt;sender&gt;owner@localhost&lt;/sender&gt;<br /></br>
&lt;message&gt;sent on from James&lt;/message&gt;<br /></br>
&lt;inline&gt;unaltered&lt;/inline&gt;<br /></br>
&lt;passThrough&gt;FALSE&lt;/passThrough&gt;<br /></br>
&lt;replyto&gt;postmaster&lt;/replyto&gt;<br /></br>
&lt;prefix&gt;[test mailing]&lt;/prefix&gt;<br /></br>
&lt;static&gt;TRUE&lt;/static&gt;<br /></br>
&lt;passThrough&gt;FALSE&lt;/passThrough&gt;<br /></br>
&lt;/mailet&gt;<br /></br>
</p></td></tr></table>
<table class="bodyTable" border="1">
<tr class="a">
<th>
<p>and this sends a spam notification to the postmaster <br /></br>with the original message
attached as a message, and a subject prefix:</p></th></tr>
<tr class="b">
<td>
<p> &lt;mailet match=&quot;All&quot; class=&quot;Redirect&quot;&gt;<br /></br>
&lt;recipients&gt;x@localhost&lt;/recipients&gt;<br /></br>
&lt;sender&gt;postmaster&lt;/sender&gt;<br /></br>
&lt;message&gt;Message marked as spam:<br /></br>
&lt;/message&gt;<br /></br>
&lt;inline&gt;heads&lt;/inline&gt;<br /></br>
&lt;attachment&gt;message&lt;/attachment&gt;<br /></br>
&lt;passThrough&gt;FALSE&lt;/passThrough&gt;<br /></br>
&lt;attachError&gt;TRUE&lt;/attachError&gt;<br /></br>
&lt;replyto&gt;postmaster&lt;/replyto&gt;<br /></br>
&lt;prefix&gt;[spam notification]&lt;/prefix&gt;<br /></br>
&lt;static&gt;TRUE&lt;/static&gt;<br /></br>
&lt;passThrough&gt;FALSE&lt;/passThrough&gt;<br /></br>
&lt;/mailet&gt;</p>
</td></tr></table>
</section>
</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>