public class Redirect extends AbstractRedirect
A mailet providing configurable redirection services.
Can produce listserver, forward and notify behaviour, with the original message intact, attached, appended or left out altogether.
It differs from Resend because (i) some defaults are different,
notably for the following parameters: <recipients>,
<to>, <reversePath> and <inline>; (ii)
because it allows the use of the <static> parameter;.
Use Resend if you need full control, Redirect if
the more automatic behaviour of some parameters is appropriate.
This built in functionality is controlled by the configuration as laid out below. In the table please note that the parameters controlling message headers accept the "unaltered" value, whose meaning is to keep the associated header unchanged and, unless stated differently, corresponds to the assumed default if the parameter is missing.
The configuration parameters are:
| <recipients> |
A comma delimited list of addresses for recipients of this message; it will
use the "to" list if not specified, and "unaltered" if
none of the lists is specified. These addresses will only appear in the To: header if no "to" list is supplied. Such addresses can contain "full names", like Mr. John D. Smith <john.smith@xyz.com>. The list can include constants "sender", "from", "replyTo", "postmaster", "reversePath", "recipients", "to", "null" and "unaltered"; "replyTo" uses the ReplyTo header if available, otherwise the From header if available, otherwise the Sender header if available, otherwise the return-path; "from" is made equivalent to "sender", and "to" is made equivalent to "recipients"; "null" is ignored. |
| <to> |
A comma delimited list of addresses to appear in the To: header; the email
will be delivered to any of these addresses if it is also in the recipients
list. The recipients list will be used if this list is not supplied; if none of the lists is specified it will be "unaltered". Such addresses can contain "full names", like Mr. John D. Smith <john.smith@xyz.com>. The list can include constants "sender", "from", "replyTo", "postmaster", "reversePath", "recipients", "to", "null" and "unaltered"; "from" uses the From header if available, otherwise the Sender header if available, otherwise the return-path; "replyTo" uses the ReplyTo header if available, otherwise the From header if available, otherwise the Sender header if available, otherwise the return-path; "recipients" is made equivalent to "to"; if "null" is specified alone it will remove this header. |
| <sender> |
A single email address to appear in the From: and Return-Path: headers and
become the sender. It can include constants "sender", "postmaster" and "unaltered"; "sender" is equivalent to "unaltered". Default: "unaltered". |
| <message> |
A text message to insert into the body of the email. Default: no message is inserted. |
| <inline> |
One of the following items:
|
| <attachment> |
One of the following items:
|
| <passThrough> |
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. Default: false. |
| <fakeDomainCheck> |
true or false, if true will check if the sender domain is valid. Default: true. |
| <attachError> |
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). Default: false. |
| <replyTo> |
A single email address to appear in the Reply-To: header. It can include constants "sender", "postmaster" "null" and "unaltered"; if "null" is specified it will remove this header. Default: "unaltered". |
| <reversePath> |
A single email address to appear in the Return-Path: header. It can include constants "sender", "postmaster" and "null"; if "null" is specified then it will set it to <>, meaning "null return path". Notice: the "unaltered" value is not allowed. Default: the value of the <sender> parameter, if set, otherwise remains unaltered. |
| <subject> |
An optional string to use as the subject. Default: keep the original message subject. |
| <prefix> |
An optional subject prefix prepended to the original message subject, or to a
new subject specified with the <subject> parameter. For example: [Undeliverable mail]. Default: "". |
| <isReply> |
true or false, if true the IN_REPLY_TO header will be set to the id of the
current message. Default: false. |
| <debug> |
true or false. If this is true it tells the mailet to write some debugging
information to the mailet log. Default: false. |
| <static> |
true or false. If this is true it tells the mailet that it can reuse all the
initial parameters (to, from, etc) without re-calculating their values. This
will boost performance where a redirect task doesn't contain any dynamic
values. If this is false, it tells the mailet to recalculate the values for
each e-mail processed. Default: false. |
Example:
<mailet match="RecipientIs=test@localhost" class="Redirect">
<recipients>x@localhost, y@localhost, z@localhost</recipients>
<to>list@localhost</to>
<sender>owner@localhost</sender>
<message>sent on from James</message>
<inline>unaltered</inline>
<passThrough>FALSE</passThrough>
<replyTo>postmaster</replyTo>
<prefix xml:space="preserve">[test mailing] </prefix>
<!-- note the xml:space="preserve" to preserve whitespace -->
<static>TRUE</static>
</mailet>
and:
<mailet match="All" class="Redirect">
<recipients>x@localhost</recipients>
<sender>postmaster</sender>
<message xml:space="preserve">Message marked as spam:</message>
<inline>heads</inline>
<attachment>message</attachment>
<passThrough>FALSE</passThrough>
<attachError>TRUE</attachError>
<replyTo>postmaster</replyTo>
<prefix>[spam notification]</prefix>
<static>TRUE</static>
</mailet>
replyto can be used instead of replyTo; such name is kept for backward compatibility.
AbstractRedirect.SpecialAddress| Constructor and Description |
|---|
Redirect() |
| Modifier and Type | Method and Description |
|---|---|
protected String[] |
getAllowedInitParameters()
Gets the expected init parameters.
|
protected int |
getInLineType()
Gets the
inline property. |
String |
getMailetInfo()
Returns a string describing this mailet.
|
protected Collection<org.apache.mailet.MailAddress> |
getRecipients()
Gets the
recipients property. |
protected org.apache.mailet.MailAddress |
getReversePath()
Gets the
reversePath property. |
protected org.apache.mailet.MailAddress |
getReversePath(org.apache.mailet.Mail originalMail)
Gets the
reversePath property, built dynamically using the
original Mail object. |
protected javax.mail.internet.InternetAddress[] |
getTo()
Gets the
to property. |
protected boolean |
isStatic()
Gets the
static property. |
attachError, attachError, buildAlteredMessage, changeSubject, getAttachmentType, getAttachmentType, getFakeDomainCheck, getFakeDomainCheck, getInLineType, getMessage, getMessage, getMessageHeaders, getPassThrough, getPassThrough, getRecipients, getReplyTo, getReplyTo, getSender, getSender, getSpecialAddress, getSubject, getSubject, getSubjectPrefix, getSubjectPrefix, getTo, getTypeCode, init, isReply, isReply, replaceInternetAddresses, replaceMailAddresses, senderDomainIsValid, service, setDNSService, setIsReply, setRecipients, setReplyTo, setReversePath, setSender, setSubjectPrefix, setTopublic String getMailetInfo()
getMailetInfo in interface org.apache.mailet.MailetgetMailetInfo in class org.apache.mailet.base.GenericMailetprotected String[] getAllowedInitParameters()
getAllowedInitParameters in class AbstractRedirectprotected boolean isStatic()
AbstractRedirect
Gets the static property.
Return true to reduce calls to getTo, getSender, getRecipients, getReplyTo, getReversePath amd getMessage where these values don't change (eg hard coded, or got at startup from the mailet config); return false where any of these methods generate their results dynamically eg in response to the message being processed, or by reference to a repository of users.
It is now (from version 2.2) somehow obsolete, as should be always true
because the "good practice" is to use "getX()" methods statically, and
use instead "getX(Mail)" methods for dynamic situations. A false value is
now meaningful only for subclasses of Redirect older than version
2.2 that were relying on this.
Is a "getX()" method.
isStatic in class AbstractRedirectstatic init parameterprotected int getInLineType()
throws javax.mail.MessagingException
AbstractRedirectinline property. May return one of the following
values to indicate how to append the original message to build the new
message:
UNALTERED : original message is the new message bodyBODY : original message body is appended to the new
messageHEADS : original message headers are appended to the new
messageALL : original is appended with all headersNONE : original is not appendedgetInLineType in class AbstractRedirectinline init parameterjavax.mail.MessagingExceptionprotected Collection<org.apache.mailet.MailAddress> getRecipients() throws javax.mail.MessagingException
AbstractRedirectrecipients property. Returns the collection of
recipients of the new message, or null if no change is requested. Is a
"getX()" method.getRecipients in class AbstractRedirectrecipients init parameter or the postmaster
address or SpecialAddress.SENDER or
SpecialAddress.REVERSE_PATH or
SpecialAddress.UNALTERED or the to init
parameter if missing or null if also the latter is
missingjavax.mail.MessagingExceptionprotected javax.mail.internet.InternetAddress[] getTo()
throws javax.mail.MessagingException
AbstractRedirectto property. Returns the "To:" recipients of the
new message. or null if no change is requested. Is a "getX()" method.getTo in class AbstractRedirectto init parameter or the postmaster address or
SpecialAddress.SENDER or
SpecialAddress.REVERSE_PATH or
SpecialAddress.UNALTERED or the
recipients init parameter if missing or
null if also the latter is missingjavax.mail.MessagingExceptionprotected org.apache.mailet.MailAddress getReversePath()
throws javax.mail.MessagingException
AbstractRedirectreversePath property. Returns the reverse-path of
the new message, or null if no change is requested. Is a "getX()" method.getReversePath in class AbstractRedirectreversePath init parameter or the postmaster
address or SpecialAddress.SENDER or
SpecialAddress.NULL or null if missingjavax.mail.MessagingExceptionprotected org.apache.mailet.MailAddress getReversePath(org.apache.mailet.Mail originalMail)
throws javax.mail.MessagingException
AbstractRedirectreversePath property, built dynamically using the
original Mail object. Is a "getX(Mail)" method.getReversePath in class AbstractRedirectAbstractRedirect.getReversePath(); if null return
AbstractRedirect.getSender(Mail), meaning the new
requested sender if anyjavax.mail.MessagingExceptionCopyright © 2002-2012 The Apache Software Foundation. All Rights Reserved.