FileDocCategorySizeDatePackage
AddHabeasWarrantMark.javaAPI DocApache James 2.3.15068Fri Jan 12 12:56:28 GMT 2007org.apache.james.transport.mailets

AddHabeasWarrantMark.java

/****************************************************************
 * 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.                                           *
 ****************************************************************/

package org.apache.james.transport.mailets;

import org.apache.james.transport.matchers.HasHabeasWarrantMark;
import org.apache.mailet.GenericMailet ;
import org.apache.mailet.Mail ;

/*
 * This matcher adds the Hebeas Warrant Mark to a message.
 * For details see: http://www.hebeas.com
 *
 * Usage: <mailet match="<suitable-matcher>" class="AddHabeasWarrantMark" />
 *
 * NOTE: Although this mailet is covered by the Apache Software License,
 * the Habeas Warrant Mark is copyright.  A separate license from Habeas
 * is required in order to legally attach the Habeas Warrant Mark to
 * e-mail messages.  Each James Administrator is responsible for
 * ensuring that James is configured to attach the Habeas Warrant Mark
 * only to e-mail covered by a suitable license received from Habeas.
 * 
 * Because the Habeas Warrant Mark is copyright material, I have asked
 * for and received the following explicit statement from Habeas:
 *
 * -----------------------------------
 * From: Lindsey Pettit [mailto:support@habeas.com]
 * Sent: Sunday, September 29, 2002 5:51
 * To: Noel J. Bergman
 * Subject: RE: Habeas and Apache James
 *
 * Dear Noel,
 * 
 * > FURTHERMORE, if James is to be capable of sending Habeas SWE, I need
 * > to write a Mailet that attaches the headers.  As with any MTA, it
 * > would be up to the administrator to properly configure James and make
 * > sure that licenses are acquired.  Since the Habeas Warrant Mark is
 * > copyright, I believe that I require authorization from you for that
 * > Mailet, especially since it attaches the Habeas Warrant Mark.  For my
 * > own protection, please show me why such authorization is unnecessary,
 * > send me a digitally signed e-mail, or FAX a signed authorization
 * 
 * You do not yourself need the authorization to build the functionality 
 * into the [mailet];  what one needs authorization, in the form of a 
 * license, for, is to use the mark *in headers*, in outgoing email.
 * However, please let me know if you would like something more 
 * formal, and I can try to have something faxed to you.
 * 
 * > The Mailet docs would reference the Habeas website, and inform
 * > administrators that in order to USE the mailet, they need to ensure
 * > that they have whatever licenses are required from you as appropriate
 * > to your licensing terms.
 * 
 * That's absolutely perfect!
 * -----------------------------------
 *
 */

public class AddHabeasWarrantMark extends GenericMailet
{
    /**
     * Called by the mailet container to allow the mailet to process to
     * a message message.
     *
     * This method adds the Habeas Warrant Mark headers to the message,
     * saves the changes, and then allows the message to fall through
     * in the pipeline.
     *
     * @param mail - the Mail object that contains the message and routing information
     * @throws javax.mail.MessagingException - if an message or address parsing exception occurs or
     *      an exception that interferes with the mailet's normal operation
     */
    public void service(Mail mail) throws javax.mail.MessagingException
    {
        try
        {
            javax.mail.internet.MimeMessage message = mail.getMessage();

            for(int i = 0 ; i < HasHabeasWarrantMark.warrantMark.length ; i++)
            {
                message.setHeader(HasHabeasWarrantMark.warrantMark[i][0], HasHabeasWarrantMark.warrantMark[i][1]);
            }

            message.saveChanges();
        }
        catch (javax.mail.MessagingException me)
        {
            log(me.getMessage());
        }
    }

    /*
     * Return a string describing this mailet.
     *
     * @return a string describing this mailet
     */
    public String getMailetInfo()
    {
        return "Add Habeas Warrant Mark.  Must be used in accordance with a license from Habeas (see http://www.habeas.com for details).";
    }
}