<?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 Dec 28, 2012 -->
<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>mailets - Old Release Notes (aggregated)</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="Apache JAMES Project Team" />
    <meta name="Date-Revision-yyyymmdd" content="20121228" />
    <meta http-equiv="Content-Language" content="en" />
                                                    
<link title="DOAP" rel="meta" type="application/rdf+xml" href="http://james.apache.org//doap_james-project.rdf"/>
                      
          <!-- 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-mailets-logo.gif">
              
                                                                            
        <img src="images/logos/james-mailets-logo.gif" alt="Apache James Project" />
                </a>
                              <a href="http://www.apache.org/index.html" id="bannerRight">
              
                                        
        <img src="images/logos/asf-logo-reduced.gif" alt="The Apache Software Foundation" />
                </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
                
                <div class="xleft">
        <span id="publishDate">Last Published: 2012-12-28</span>
                      </div>
            <div class="xright">                    <a href="../index.html" title="Home">Home</a>
            |
                        <a href="../server/index.html" title="Server">Server</a>
            |
                        <a href="../hupa/index.html" title="Hupa">Hupa</a>
            |
                        <a href="../protocols/index.html" title="Protocols">Protocols</a>
            |
                        <a href="../imap/index.html" title="IMAP">IMAP</a>
            |
                        <a href="index.html" title="Mailets">Mailets</a>
            |
                        <a href="../mailbox/index.html" title="Mailbox">Mailbox</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>
            |
                        <a href="../mpt/index.html" title="MPT">MPT</a>
            |
                        <a href="../postage/index.html" title="Postage">Postage</a>
              
                
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
             
                
                                <h5>Mailet</h5>
                  <ul>
                  <li class="none">
                          <a href="api" title="Mailet API">Mailet API</a>
            </li>
                  <li class="none">
                          <a href="ai" title="Mailet AI">Mailet AI</a>
            </li>
                  <li class="none">
                          <a href="base" title="Basic Mailet Toolkit">Basic Mailet Toolkit</a>
            </li>
                  <li class="none">
                          <a href="crypto" title="Crypto Mailets">Crypto Mailets</a>
            </li>
                  <li class="none">
                          <a href="mailetdocs-maven-plugin" title="MailetDocs">MailetDocs</a>
            </li>
                  <li class="none">
                          <a href="../jsieve/mailet/" title="Sieve Mailet">Sieve Mailet</a>
            </li>
                  <li class="none">
                          <a href="standard" title="Standard Mailets">Standard Mailets</a>
            </li>
          </ul>
                       <h5>Useful Information</h5>
                  <ul>
                  <li class="none">
                          <a href="apidocs" title="Java Docs">Java Docs</a>
            </li>
                  <li class="none">
                          <a href="quickstart.html" title="Quick Start">Quick Start</a>
            </li>
                  <li class="none">
                          <a href="release-notes.html" title="Release Notes">Release Notes</a>
            </li>
          </ul>
                       <h5>Project Documentation</h5>
                  <ul>
                                                                                      <li class="collapsed">
                          <a href="project-info.html" title="Project Information">Project Information</a>
                  </li>
                                                                    <li class="collapsed">
                          <a href="project-reports.html" title="Project Reports">Project Reports</a>
                  </li>
          </ul>
                       <h5>About James</h5>
                  <ul>
                  <li class="none">
                          <a href="../index.html" title="Overview">Overview</a>
            </li>
                  <li class="none">
                          <a href="../newsarchive.html" title="News">News</a>
            </li>
                  <li class="none">
                          <a href="../mail.html" title="Mailing Lists">Mailing Lists</a>
            </li>
                  <li class="none">
                          <a href="../contribute.html" title="Contributing">Contributing</a>
            </li>
                  <li class="none">
                          <a href="../guidelines.html" title="Guidelines">Guidelines</a>
            </li>
                  <li class="none">
                          <a href="http://wiki.apache.org/james" title="Wiki">Wiki</a>
            </li>
                  <li class="none">
                          <a href="../team-list.html" title="Who We Are">Who We Are</a>
            </li>
                  <li class="none">
                          <a href="../license.html" title="License">License</a>
            </li>
          </ul>
                       <h5>Download</h5>
                  <ul>
                  <li class="none">
                          <a href="../download.cgi" title="Releases">Releases</a>
            </li>
                  <li class="none">
                          <a href="https://repository.apache.org/content/repositories/snapshots/org/apache/james/" title=""></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">
        <!-- 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. --><div class="section"><h2>AI Mailets Release Notes<a name="AI_Mailets_Release_Notes"></a></h2><p>Apache James AI Mailets 0.1 is expect to be the first independent release of this code.</p><p>Previously released in <a class="externalLink" href="http://james.apache.org/server/index.html&apos;">Apache James Server</a> 2.</p><p><a class="externalLink" href="http://maven.apache.org">Maven 3</a> is used to build this project.</p></div><div class="section"><h2>MailetDocs Release Notes (2009-01-17)<a name="MailetDocs_Release_Notes_2009-01-17"></a></h2><p>The MailetDocs plugin for <a class="externalLink" href="http://maven.apache.org">Apache Maven</a> documents implementations of the <a class="externalLink" href="http://james.apache.org/mailet/api">Apache Mailet API</a>. A mailet is an independent mail processor designed to be run in a mailet container. A catalog of mailets and matchers is created, together with reports on each one.</p></div><div class="section"><h2>0.1<a name="a0.1"></a></h2><p>0.1 is the first release of this plugin. Basic function is complete but the API may change as the code is developed. Feedback to server-dev@james.apache.org is appreciated.</p></div><div class="section"><h2>Apache James Mailet Base Release Notes (2009-04-01)<a name="Apache_James_Mailet_Base_Release_Notes_2009-04-01"></a></h2><p>Apache James Mailets Base collects a number of utilites and lightweight frameworks useful when working with the <a class="externalLink" href="http://james.apache.org/mailet"> Apache Mailet API</a> (a framework assisting the rapid development of email processing functionality). Mailets base is used as the basis for the email processing functions shipped with the <a class="externalLink" href="http://james.apache.org/server"> Apache James server</a> (an advanced mail server) but is not dependent on that server.</p><p>Version 1.0</p><p>This is the first independent release of these mature components last shipped with Apache James 2.3.</p><p>Earlier Releases</p><p>Previous versions of the components in base shipped with Apache James server. This product contains repackaged versions which are otherwise compatible with these versions. All classes are package org.apache.mailet.base except test helpers (which are now packaged in org.apache.mailet.base.test).</p><p>It is recommended that anyone using these older versions updates to the new library.</p><p>Apache James Mailet Crypto Release Notes (2009-02-09)</p><p>Apache James Cryptographic Mailets encode, decode, sign and verify mail, together with related cryptology utilities. Mailets are defined by the <a class="externalLink" href="http://james.apache.org/mailet">Apache Mailet API</a> (a framework assisting the rapid development of email processing functionality).</p><p><a class="externalLink" href="http://maven.apache.org">Maven 2</a> is used to build this project.</p><p>1.1 (In Preparation)</p><p>Is a JRE update release upgrading dependencies and code to Java 1.5</p><ul><li>Upgrading to BouncyCastle 1.43 from 1.29 adds numerous features, resolves many defects and addresses some security advisories. See the <a class="externalLink" href="http://www.bouncycastle.org/releasenotes.html"> release notes</a> for more details.</li><li>The secondary Ant build has now been removed. Maven should be used to build. The Maven build now inherits and uses the Apache standard pom.</li></ul><p>1.0</p><p>This is the first independent release of this code. Previously it was shipped as part of the <a class="externalLink" href="http://james.apache.org/mailet">Apache James Mail Server</a> (an advanced mail server). This release is not dependent on that server but can be used in any Mailet container.</p><p>Cryptography Notice</p><p>This distribution includes cryptographic software. The country in which you currently reside may have restrictions on the import, possession, use, and/or re-export to another country, of encryption software. BEFORE using any encryption software, please check your country's laws, regulations and policies concerning the import, possession, or use, and re-export of encryption software, to see if this is permitted. See http://www.wassenaar.org for more information.</p><p>The U.S. Government Department of Commerce, Bureau of Industry and Security (BIS), has classified this software as Export Commodity Control Number (ECCN) 5D002.C.1, which includes information security software using or performing cryptographic functions with asymmetric algorithms. The form and manner of this Apache Software Foundation distribution makes it eligible for export under the License Exception ENC Technology Software Unrestricted (TSU) exception (see the BIS Export Administration Regulations, Section 740.13) for both object code and source code.</p><p>The following provides more details on the included cryptographic software:</p><p>This library provides high level crytographic operations based on lower level crytographic libraries created by The Legion of the Bouncy Castle (http://www.bouncycastle.org/).</p><p>Export classifications and source links can be found at http://www.apache.org/licenses/exports/.</p></div><div class="section"><h2>Apache James Standard Mailet Release Notes (2009-02-09)<a name="Apache_James_Standard_Mailet_Release_Notes_2009-02-09"></a></h2><p>Apache James Standard Mailets are a collection of general purpose mail processing agents with minimal dependencies. Mailets are defined by the <a class="externalLink" href="http://james.apache.org/mailet">Apache Mailet API</a> (a framework assisting the rapid development of email processing functionality).</p></div><div class="section"><h2>1.0<a name="a1.0"></a></h2><p>This is the first independent release of this code. Previously it was shipped as part of the <a class="externalLink" href="http://james.apache.org/mailet">Apache James Mail Server</a> (an advanced mail server). This release is not dependent on that server but can be used in any Mailet container.</p><div class="section"><h3>Since James Server 2.3.1<a name="Since_James_Server_2.3.1"></a></h3><ul><li>Upgrade to Apache Mailet API 2.4 and Apache Mailets Base 1.0</li><li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/JAMES-728">JAMES-728</a>] - ClamAV and IOUtil updates to close streams/readers/writers and sockets</li><li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/JAMES-733">JAMES-733</a>] - Fix javadoc</li><li>[<a class="externalLink" href="https://issues.apache.org/jira/browse/JAMES-579">JAMES-579</a>] - Update license headers and NOTICE to follow the latest ASF requirements</li></ul></div></div>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">Copyright &#169;                    2008-2012
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
                
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
