Mailets

James provides a number of implemented Mailets for use by James administrators in their configurations. These are primarily mailets that members of the James developer or user communities have found useful in their own configurations. A description of how to configure Mailets and use them in the James SpoolManager can be found here.

AddFooter

Description: This mailet adds a text footer to the message.

Parameters:

  • text (required) - the text that will be added as a footer to the message.

AddHabeasWarrantMark

Description: This mailet adds a Habeas warrant mark (see http://habeas.com for details) to the message.

Parameters: None.

AddHeader

Description: This mailet is deprecated .Please use SetMimeHeader .

AvalonListserv

Provides basic list server functionality. Implements basic filters for emails sent to the list, including restriction of senders to members, diallowing attachments in list messages, and subject line processing

Parameters:

  • repositoryName (required) - the name of the user repository that contains the users for this list.
  • membersonly (optional) - whether only members of the list can send messages to this list. Defaults to false.
  • attachmentsallowed (optional) - whether attachments are allowed in messages sent to this list. Defaults to true.
  • replytolist (optional) - whether the reply-to address for all messages sent to this list is set to the list address. Defaults to true.
  • subjectprefix (optional) - a String value. If set, this value is prepended to the subject line of all messages sent to the list.
  • autobracket (optional) - a boolean value. If a subjectprefix is set, this value determines whether the prefix is bracketed before being prepended to the subject line. Defaults to true.

AvalonListservManager

Processes list management commands of the form <list-name>-on@<host> and <list-name>-off@<host> where <list-name> and lt;host> are arbitrary. Note that this should be used in tandem with a CommandForListserv matcher to ensure that only commands intended for a specific list are processed. Parameters:
  • repositoryName (required) - the name of the user repository that contains the users for this list.

BayesianAnalysis

Description: Spam detection mailet using bayesian analysis techniques. Parameters:
  • repositoryPath (required) - The repositoryPath which is used.
  • headerName - The HeaderName which get adds to holds the Probalitity. Default is X-MessageIsSpamProbability.
  • ignoreLocalSender - Set to true if you want to ignore messages from local senders. By local sender we mean a return-path with a local server part (server listed in <servernames> in config.xml). Default is false.
  • maxSize - Set this to the maximum message size (in bytes) after analysis will be skipped. Default is 100000.

BayesianAnalysisFeeder

Description: Feeds ham OR spam messages to train the BayesianAnalysis mailet. Parameters:
  • repositoryPath (required) - The repositoryPath which is used.
  • feedType (required) - The type of the message which is used to feed the mailet. Allowed values are spam and ham.
  • maxSize - Set this to the maximum message size (in bytes) after analysis will be skipped. Default is 100000.

Bounce

Description: Generates a response to the reverse-path address. Parameters:
  • sender - The senderAddress which will be used for sending the bounce. Possible values: address, postmaster , sender, unaltered. Default postmaster.
  • attachError - Attach error. Default is false.
  • message - Set the message which get included in the bounce.
  • prefix - Optional subject prefix prepended to the original message.
  • inline - Specify which mailpart will be included in the email body. Possible values: unaltered, heads, body , all, "none". Default "none".
  • attachment - Specify which mailpart will be attached to the email. Possible values: none, heads, body, all, message. Default message.
  • passThrough - If set to false the email will not processed after the bounce. Possible values: true, false. Default true.
  • fakeDomainCheck - If set to false true will check if the sender domain is valid. Possible values: true, false. Default true.
  • debug - If set true you can enable debugging. Possible values: true, false. Default false.

ClamAVScan

Description: Does an antivirus scan check using a ClamAV daemon (CLAMD). Parameters:
  • host - The host name of the server where CLAMD runs. The default is localhost
  • port - The port on which CLAMD listens. The default is 3310.
  • maxPings - The maximum number of connection retries during startup. If the value is 0 no startup test will be done.
  • pingIntervalMillis (required) - The interval (in milliseconds) between each connection retry during startup. The default is 30000 (30 seconds)
  • streamBufferSize - the BufferedOutputStream buffer size to use writing to the stream connection. The default is 8192.
  • debug - If set true you can enable debugging. Possible values: true, false. Default false.

CommandListservFooter

Description: CommandListservFooter is based on the AddFooter mailet. It is used by the CommandListservProcessor to inject a footer into mailing list. Parameters: None.

CommandListservManager

Description: CommandListservManager is the default implementation of ICommandListservManager. It loads all the configured IListServCommands and delegates to them at runtime.

It isn't responsible for procesing messages sent to the main mailing list, but is responsible for individual commands sent by users, such as: info, subscribe, etc...

Requests sent to the CommandListservManager take the form of:
<listName>-<commandName>@domain
If the command isn't recognized an error will be sent.



The configuration for this mailet sould be in the 'root' processor block. Parameters:
  • listName - The listname
  • displayName - The full listname
  • listOwner - An emailaddress which will be used as owneraddress.
  • repositoryName - the repository name
  • listDomain - The domain


Example configuration:
<mailet match="CommandListservMatcher=announce@localhost" class="CommandListservManager">
  <listName>announce</listName>
  <displayName>Announce mailing list</displayName>
  <listOwner>owner@localhost</listOwner>
  <repositoryName>list-announce</repositoryName>
  <listDomain>localhost</listDomain>

  <commandpackages>
     <commandpackage>org.apache.james.transport.mailets.listservcommands</commandpackage>
  </commandpackages>

  <commands>
     <command name="subscribe" class="Subscribe"/>
     <command name="subscribe-confirm" class="SubscribeConfirm"/>
     <command name="unsubscribe" class="UnSubscribe"/>
     <command name="unsubscribe-confirm" class="UnSubscribeConfirm"/>
     <command name="error" class="ErrorCommand"/>
     <command name="owner" class="Owner"/>
     <command name="info" class="Info"/>
  </commands>
 </mailet>

DSNBounce

Description: Generates a Delivery Status Notification (DSN). Note that this is different than a mail-client's reply, which would use the Reply-To or From header.Bounced messages are attached in their entirety (headers and content) and the resulting MIME part type is "message/rfc822". The reverse-path and the Return-Path header of the response is set to null (<>), meaning that no reply should be sent. A sender of the notification message can optionally be specified. If one is not specified, the postmaster's address will be used. Parameters:
  • sender - An address, postmaster,sender or unaltered. Default is postmaster
  • prefix - Optional subject prefix prepended to the original message.
  • attachment - Values are message, heads or none. Default is message. test will be done.
  • messageString - the message sent in the bounce, the first occurrence of the pattern [machine] is replaced with the name of the executing machine, default=Hi. This is the James mail server at [machine] ....
  • passThrough (optional) - a boolean value (true/false) indicating whether processing should continue on the message is on. If false, the original message is GHOSTed. Defaults to false.
  • debug - If set true you can enable debugging. Possible values: true, false. Default false.

Forward

Description: This mailet forwards the message to a set of recipients. Parameters:
  • forwardto (required) - a comma delimited list of email addresses.

FromRepository

Description: This mailet ee-spools mail found in the specified Repository. Parameters:
  • repositoryPath (required) - The repositoryPath which is used.
  • processor (required) - The target processor to move the mails to.
  • delete - If set to true the mails get deleted after re-spooling. Default is false.

ICommandListservManager

Description: ICommandListservManager is the interface that describes the functionality of any command based list serv managers. Parameters: None.

JDBCAlias

Description: This mailet does alias translation for email addresses stored in a database table. Parameters:
  • mappings (required) - a URL of the form db://<data-source>/<table>, where <table> is the table in the database containing the alias info and <data-source> is the name of the data-source in config.xml that is to be used.
  • source_column (required) - the column containing the aliases.
  • target_column (required) - the column containing the alias targets.

JDBCVirtualUserTable

Description: This mailet does complex alias translation for email addresses stored in a database table. Parameters:
  • table (required) - the URL describing the database table. This URL has the form db://<data-source>/<table> where <data-source> and <table> are the names of the data-source as defined in config.xml and the table in the database.
  • sqlquery (optional) - the text of the SQL query used by the mailet to do user lookup. The default is "select VirtualUserTable.target_address from VirtualUserTable, VirtualUserTable as VUTDomains where (VirtualUserTable.user like ? or VirtualUserTable.user like '\\%') and (VirtualUserTable.domain like ? or (VirtualUserTable.domain like '\\%' and VUTDomains.domain like ?)) order by concat(VirtualUserTable.user,'@',VirtualUserTable.domain) desc limit 1"

LocalDelivery

Description: This mailet delivers messages to local mailboxes. Parameters: None.

LogMessage

Description: Logs Message Headers and/or Body. Parameters:
  • passThrough (optional) - If the "passThrough" in confs is true the mail will be left untouched in the pipe. If false will be destroyed. Default is true.
  • headers (optional) - If set to true the headers get logged. Default is true"
  • body (optional) - If set to true the body get logged. Default is true.
  • bodyMax (optional) - The max length wich should be logged. Default is log all.
  • comment (optional) - The comment which should be logged Default is none.

NotifyPostmaster

Description: This mailet forwards the message as an attachment to the James postmaster. Parameters:
  • sendingAddress (optional) - the address from which the forwarded email will be sent. Defaults to the postmaster address.
  • notice (optional) - the text message that will accompany the forwarded message. Defaults to "We were unable to deliver the attached message because of an error in the mail server."
  • attachStackTrace (optional) - whether an error stack trace is attached to the forwarded message.

NotifySender

Description: This mailet forwards the message as an attachment to the original sender. Parameters:
  • sendingAddress (optional) - the address from which the forwarded email will be sent. Defaults to the postmaster address.
  • notice (optional) - the text message that will accompany the forwarded message. Defaults to "We were unable to deliver the attached message because of an error in the mail server."
  • attachStackTrace (optional) - whether an error stack trace is attached to the forwarded message.

Null

Description: This mailet ends processing for this mail. Parameters: None.

PostmasterAlias

Description: Intercepts all mails addressed to postmaster@<domain> where <domain> is one of the domains managed by this James server and substitutes the configured James postmaster address for the original recipient address. This mailet is inserted automatically by James at the head of the root processor. Parameters: None.

Redirect

Description: A mailet providing powerful, configurable redirection services.

This mailet can produce listserver, forward and notify behaviour, with the original message intact, attached, appended or left out altogether.

This built in functionality is controlled by the configuration as described here. It is also intended to be easily subclassed to make providing bespoke redirection mailets simple.

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 here. Parameters: See javadocs.

RemoteDelivery

Manages delivery of messages to recipients on remote SMTP hosts. Parameters:
  • outgoing (required) - The URL for the repository that will hold messages being processed by the RemoteDelivery Mailet.
  • delayTime (optional) - a non-negative Long value that is the time in milliseconds between redelivery attempts for a particular mail. Defaults to six hours.
  • maxRetries (optional) - a non-negative Integer value that is number of times the Mailet will attempt to deliver a particular mail. Defaults to five.
  • timeout (optional) - The SMTP connection timeout for SMTP connections generated by this Mailet. Defaults to 60 seconds.
  • deliveryThreads (optional) - The number of threads this Mailet will use to generate SMTP connections.
  • gateway (optional) - The host name of the SMTP server to be used as a gateway for this server. If this value is set, then all messages will be delivered to the gateway server, regardless of recipient address. To specify more than one gateway server, add multiple gateway tags, each containing one value. If more than one server is specified, they will be tried in order until one is successful. In addition the port may be specified for each gateway in the format <host>:<port>. If this value is unset, delivery will occur to SMTP servers resolved by MX lookup.
  • gatewayPort (optional) - The default port number of the SMTP server to be used as a gateway for this server. This value will be employed when a gateway is set and the gateway value does not specify a port as described above.
  • bind (optional) - If present, this value is a string describing the local IP address to which the mailet should be bound while delivering emails. If the tag is absent then the service will bind to the default local address of the machine. This tag is useful for multihomed machines.

    Note: Currently you must use the same IP address for all of those RemoteDelivery instances where you explicitly supply a bind address.
  • debug (optional) - a boolean value (true/false) indicating whether debugging is on. Defaults to false.

RemoveAllMailAttributes

Description: Removes all attributes on the Mail instance. Parameters: None.

RemoveMailAttributes

Description: Remove attributes on the Mail instance. Parameters:
  • name (required) - The name of the attribute to remove.

Resend

Description:A mailet providing configurable redirection services. For more information see the javadocs here. Parameters: See javadocs.

ServerTime

Description: This mailet sends a message to the sender of the original mail message with a server timestamp. Parameters: None.

SetMailAttributes

Description: Set attributes on the Mail instance. Parameters:
  • name (required) - The name of the attribute to set.

SetMimeHeader

Description: Set an MimeHeader on a MimeMessage. Parameters:
  • name (required) - the name of the header to be added to the message.
  • value (required) - the text that will be added as a header to the message.

SMIMECheckSignature

Description: Verifies the s/mime signature of a message. The s/mime signing ensure that the private key owner is the real sender of the message. To be checked by this mailet the s/mime signature must contain the actual signature, the signer's certificate and optionally a set of certificate that can be used to create a chain of trust that starts from the signer's certificate and leads to a known trusted certificate. This check is composed by two steps: firstly it's ensured that the signature is valid, then it's checked if a chain of trust starting from the signer certificate and that leads to a trusted certificate can be created. The first check verifies that the the message has not been modified after the signature was put and that the signer's certificate was valid at the time of the signing. The latter should ensure that the signer is who he declare to be. Parameters: See javadocs.

SMIMEDecrypt

Description: This mailet decrypts a s/mime encrypted message. It takes as input an encrypted message and it tries to dechiper it using the key specified in its configuration. If the decryption is successful the mail will be changed and it will contain the decrypted message. The mail attribute org.apache.james.SMIMEDecrypt will contain the public certificate of the key used in the process. Parameters: See javadocs.

SMIMESign

Description: Puts a server-side SMIME signature on a message. It is a concrete subclass of SMIMEAbstractSign, with very few modifications to it. A text file with an explanation text is attached to the original message, and the resulting message with all its attachments is signed. The resulting appearence of the message is almost unchanged: only an extra attachment and the signature are added. Parameters: See javadocs.

ToProcessor

Description: Redirects processing of the mail message to the specified processor. Parameters:
  • processor (required) - the name of the processor to which the message is to be redirected.
  • noticeText (optional) - a String value that, if present, is set as the error message of the redirected message. If this value is not present, no error message is set.

ToMultiRepository

Description: Receives a Mail from JamesSpoolManager and takes care of delivery of the message to local inboxes or a specific repository. Differently from LocalDelivery this does not lookup the UserRepository This simply store the message in a repository named like the local part of the recipient address. If no repository is specified then this fallback to MailServer.getUserInbox. Otherwise you can add your own configuration for the repository. Parameters:
  • repositoryUrl (required) - the URL of the repository to which the message is to be added.
  • addDeliveryHeader (optional) - a String value which can be used specify a header which will add to the message. Default is to not add a header.

ToRepository

Places a copy of the message in the specified repository. Parameters:
  • repositoryPath (required) - the URL of the repository to which the message is to be added.
  • passThrough (optional) - a boolean value (true/false) indicating whether processing should continue on the message is on. If false, the original message is GHOSTed. Defaults to false.

UseHeaderRecipients

Description: Ignores the recipients associated with the Mail interface. Instead, it regenerates the mail recipients from the MimeMessage headers (To, Cc, Bcc) and inserts a new message at the queue root these new recipients. The original message is GHOSTed. Parameters:
  • debug (optional) - a boolean value (true/false) indicating whether debugging is on. Defaults to false.

UsersRepositoryAliasingForwarding

Receives a Mail from JamesSpoolManager and takes care of delivery of the message to local inboxes. Parameters:
  • enableAliases (optional) - Specify wether the user aliases should be looked up or not. Default is false.
  • enableForwarding (optional) -Enable the forwarding. Default to false.
  • usersRepository (optional) - Specific users repository name. Default to empty. If empty does lookup the default userRepository.

WhiteListManager

Manages for each local user a "white list" of remote addresses whose messages should never be blocked as spam. The normal behaviour is to check, for a local sender, if a remote recipient is already in the list: if not, it will be automatically inserted. This is under the interpretation that if a local sender X sends a message to a remote recipient Y, then later on if a message is sent by Y to X it should be considered always valid and never blocked; hence Y should be in the white list of X. Another mode of operations is when a local sender sends a message to whitelistManagerAddress with one of three specific values in the subject, to (i) send back a message displaying a list of the addresses in his own list; (ii) insert some new addresses in his own list; (iii) remove some addresses from his own list. In all this cases the message will be ghosted and the postmaster will reply to the sender. The sender name is always converted to its primary name (handling aliases). Parameters:
  • repositoryPath - The repository path.
  • automaticInsert (optional) - If true automatically inserts the local sender to remote recipients entries in the whitelist. Default is false.
  • whitelistManagerAddress (optional) - Set this to an email address of the "whitelist manager" to send commands to (default is null).
  • displayFlag (optional) - Set this to a unique text that you can use (by sending a message to the "whitelist manager" above) to tell the mailet to send back the contents of the white list. Default is null.
  • insertFlag (optional) - Set this to a unique text that you can use (by sending a message to the "whitelist manager" above) to tell the mailet to insert some new remote recipients to the white list. Default is null.
  • removeFlag (optional) - Set this to a unique text that you can use (by sending a message to the "whitelist manager" above) to tell the mailet to remove some remote recipients from the white list. Default is null.