<?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; Overview</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="James Project Web Team" />
    <meta name="Date-Revision-yyyymmdd" content="20210926" />
    <meta http-equiv="Content-Language" content="en" />
        <script type="text/javascript" src="js/james/index.js?v=2"></script><script type="text/javascript" src="js/james/functions.js"></script>
          <!-- 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="expanded">
            <strong>About James</strong>
                  <ul>
                      <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="https://issues.apache.org/jira/browse/JAMES" title="Issue tracker">Issue tracker</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>
                      <li class="none">
                          <a href="thanks.html" title="Thanks">Thanks</a>
            </li>
                      <li class="none">
                          <a href="support.html" title="Professional support">Professional support</a>
            </li>
                      <li class="none">
                          <a href="download.cgi" title="Download releases">Download releases</a>
            </li>
              </ul>
        </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="Apache_James_Project"></a>Apache James Project</h2>

          
<p>James has a modular architecture based on a rich set of modern and efficient components which provides at the end, complete, stable, secure and extendable Mail Servers running on the JVM.
             James is made of <b>internal projects</b> - Server, Mailet, Mailbox, Protocols, MPT - and of <b>external projects</b> &#x2013; Hupa, Mime4J, jSieve, jSPF, jDKIM.</p>

          
<p>You can also read the <a class="externalLink" href="http://wiki.apache.org/james/">wiki</a>
             (discover <a class="externalLink" href="https://cwiki.apache.org/confluence/display/JAMES2/JamesUsers">who uses James</a>,...)</p>

        <img src="images/james-schema-subprojects.png" class="centered" alt="" usemap="#Map" />
           <map name="Map" id="Map">
              <area alt="" title="" href="http://james.apache.org/hupa/index.html" shape="poly" coords="461,83,575,85,577,129,458,128" />
              <area alt="" title="" href="http://james.apache.org/server/index.html" shape="poly" coords="466,197,580,196,581,241,468,240" />
              <area alt="" title="" href="http://james.apache.org/mpt/index.html" shape="poly" coords="139,247,205,248,204,290,138,290" />
              <area alt="" title="" href="http://james.apache.org/mailet/index.html" shape="poly" coords="322,284,436,284,436,328,320,329" />
              <area alt="" title="" href="http://james.apache.org/mailbox/index.html" shape="poly" coords="466,285,578,286,579,329,466,326" />
              <area alt="" title="" href="http://james.apache.org/protocols/index.html" shape="poly" coords="604,284,762,284,762,330,606,329" />
              <area alt="" title="" href="http://james.apache.org/mime4j/index.html" shape="poly" coords="273,422,386,422,387,465,272,467" />
              <area alt="" title="" href="http://james.apache.org/jsieve/index.html" shape="poly" coords="406,422,518,421,520,465,408,464" />
              <area alt="" title="" href="http://james.apache.org/jspf/index.html" shape="poly" coords="545,420,648,421,651,465,551,468" />
              <area alt="" title="" href="http://james.apache.org/jdkim/index.html" shape="poly" coords="683,422,795,422,795,464,680,464" />
           </map>

          <section>
<h3><a name="Software_Components"></a>Software Components</h3>

            
<p>Developers looking for a modular mail platform on which to build can look
               at the modules and libraries used to compose James Server 3.0.</p>

            <section>
<h4><a name="Internal_Projects"></a>Internal Projects</h4>

            
<p>The <a class="externalLink" href="http://james.apache.org/mailet/">Apache James Mailet project</a> collects products
               related to mailets (mail processing components analogous to servlets). These are independent of the
                <a class="externalLink" href="http://james.apache.org/server/">James server</a> and can be reused in any mailet container.</p>

            
<ul>
              
<li>The <a class="externalLink" href="http://james.apache.org/mailet/api">Apache James Mailet API</a> specifies mailets.</li>
              
<li>The <a class="externalLink" href="http://james.apache.org/mailet/base">Apache James Mailet Basic Toolkit</a>
                  collects utilities and lightweight frameworks useful to develop and test mailets.</li>
              
<li><a class="externalLink" href="http://james.apache.org/mailet/standard">Apache James Standard Mailets</a> collects
                  general processing mailets with limited dependencies.</li>
              
<li><a class="externalLink" href="http://james.apache.org/mailet/crypto">Apache James Crypto Mailets</a> collects
                  mailets which perform cryptographic processing such as signing, encrypting,
                  decrypting and signature verification.</li>
            </ul>

            
<p><a class="externalLink" href="http://james.apache.org/protocols/">Apache James Protocols</a> project delivers a lightweight,
               and highly extensible framework for mail protocols implementations.
               Protocols is coming with several implementations of popular mail protocols like:
                </p>
<ul>
                  
<li>SMTP</li>
                  
<li>LMTP</li>
                  
<li>POP3</li>
                  
<li>IMAP</li>
                  
<li>ManageSieve</li>
                  
<li>JMAP</li>
                </ul>
            

            
<p><a class="externalLink" href="http://james.apache.org/mailbox/">Apache James Mailbox</a> features include the support of emails storage, 
            indexing emails for research, quotas, an events system.</p>

            </section><section>
<h4><a name="External_Projects"></a>External Projects</h4>
            
<p><a class="externalLink" href="http://james.apache.org/mime4j/">Apache James Mime4J</a> parses MIME typed documents (including
                - but not limited to - mail). APIs similar to DOM, SAX and pull parsers are exposed.</p>

            
<p><a class="externalLink" href="http://james.apache.org/jspf/">Apache James jSPF</a> implements <abbr title="Sender Policy Framework">
                <a class="externalLink" href="http://www.openspf.org/">SPF</a></abbr>.
               The jSPF library is pure Java SPF implementation. It was designed to match the current SPF-Specs of 2006-2009 (See RFC section).
               SPF is also knows as Sender Policy Framework. It was designed to detect email spoofing
               This is the solution if you ever was tired of getting spam from yourself.
               For more information see <abbr title="Sender Policy Framework"> <a class="externalLink" href="http://www.openspf.org/">openspf website</a></abbr>.
               </p>

            
<p><a class="externalLink" href="http://james.apache.org/jsieve">Apache James jSieve</a> is a Java implementation of
             the Sieve mail filtering language defined by <a class="externalLink" href="http://www.ietf.org/rfc/rfc3028.txt">RFC 3028</a>.
             jSieve is implemented as a language processor that can be plugged into any internet mail application to add Sieve support.</p>

            
<p><a class="externalLink" href="http://james.apache.org/jdkim/">Apache James jDKIM</a> implements <abbr title="Domain Keys Identified Mail">
               <a class="externalLink" href="http://www.dkim.org/">DKIM</a></abbr>. jDKIM is a DKIM implementation library written in Java. It provides both verification
               and signing and also provides Mailets for the Apache JAMES project.
               </p>

            
<p><a class="externalLink" href="http://james.apache.org/mpt/">Apache James MPT</a> is a scripted functional test tool
                suitable for testing mail protocols.</p>

           </section></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>
