---
layout: default
---
<!--
    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.
-->
<link href="assets/css/lightbox.css" rel="stylesheet">
<link href="assets/css/lity.min.css" rel="stylesheet" />
<div id="wrapper">
  <div class="apache_ref">
    <a href="https://www.apache.org" alt="apache foundation link"><img src="https://www.apache.org/foundation/press/kit/asf_logo.svg" title="apache foundation logo"/></a>
  </div>
  <div class="apache_ref_mobile">
    <a href="https://www.apache.org" alt="apache foundation link">The Apache Software Foundation</a>
  </div>
  <div class="apache_ref_left">
    <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a>
  </div>
  <div class="apache_ref_left_mobile">
    <a href="https://www.apache.org/events/current-event.html" alt="apache foundation event"><img src="https://www.apache.org/events/current-event-234x60.png" title="apache foundation event logo"/></a>
  </div>

  <!-- Header -->
    <header id="header" class="alt">
      <div class="logo"><a href="/index.html" alt="Apache James"><img src="/images/james.svg" alt="james logo"/></a></div>
      <h1 class="hidden">James Enterprise Mail Server</h1>
      <h2>Emails at the heart of your business logic</h2>
    </header>

  <!-- Nav -->
    <nav id="nav">
      <ul>
        <li class="logo_li"><span class="logo"><img src="images/james-alt.svg" alt="james logo" /></span></li>
        <li><a href="#intro" class="active">About</a></li>
        <li><a href="#first">Get Started</a></li>
        <li><a href="#roadmap">Roadmap</a></li>
        <li><a href="#posts">Last Posts</a></li>
        <li><a href="#second">Community</a></li>
        <li><a href="#third">Contribute</a></li>
        <li><a href="#use-cases">Use-cases</a></li>
        <li><a href="documentation.html"><span class="fa fa-external-link"></span> Documentation</a></li>
      </ul>
    </nav>

  <!-- Main -->
    <div id="main">

      <!-- Introduction -->
        <section id="intro" class="main special">
          <div class="">
            <div class="content">
              <header class="major">
                <h2>About</h2>
              </header>
              <p class="align-left">James stands for <b>Java Apache Mail Enterprise Server!</b><br/>
                It has a modular architecture based on a rich set of <b>modern</b> and <b>efficient</b> components which provides at the end <b>complete, stable, secure and extendable Mail Servers running on the JVM</b>.
              </p>
              <p class="align-left">Create your <b>own personal solution</b> of emails treatment by assembling the components you need thanks to the Inversion of Control mail platform offered and  go further customizing filtering and routing rules using <b>James Mailet Container</b>.</p>
              <div class="about-table">
                <h3 class="tb-h3">James from a technical point of view</h3>
                <b>Complete portability</b> (100% pure JVM: Java &amp; Scala)<br/>
                <b>Built with Java 11</b> and running on the <b>Java RE 11</b>.<br/><br/>
                <b>James Components:</b><br/>
                - <b>Emailing protocols:</b> SMTP, LMTP, POP3, IMAP, ManageSieve, JMAP<br/>
                - <b>Mailet container:</b> independent, extensible and pluggable email processing agents<br/>
                - <b>Storage API:</b> Mailbox API / Search API / User API<br/>
                - <b>Storage Implementations:</b> Cassandra / PostgreSQL / HSQLDB / MySQL / ElasticSearch...<br/>
                - <b>Administration:</b> JMX / REST / Command Line<br/>
                - <b>James Core</b>
              </div>
              <p class="align-left"><br/><br/>Your James server <b>can also be used as Mail Transfer Agent</b>, by enabling only <b>SMTP</b> or as a <b>IMAP</b> Mail Delivery Agent.</p>
              <a href="images/james-general-architecture.png" data-lightbox="james-schema" data-title="James General architecture" alt="James General architecture" class="james-schema" ><span class="fa fa-sitemap"></span>james general architecture<span class="fa fa-long-arrow-right"></span></a>
              <a href="images/james-smtp-relay.png" data-lightbox="james-schema" data-title="James SMTP relay" alt="James SMTP relay" class="james-schema"><span class="fa fa-sitemap"></span>using james as smtp relay<span class="fa fa-long-arrow-right"></span></a>
              <a href="images/james-imap-server.png" data-lightbox="james-schema" data-title="James IMAP server" alt="James IMAP server" class="james-schema"><span class="fa fa-sitemap"></span>using james as an imap server<span class="fa fa-long-arrow-right"></span></a><br/><br/>

              <a href="howTo/index.html" data-title="How To" alt="How To" class="james-schema">
                <span class="fa fa-sitemap"></span>Click here to see how-tos for some James features<span class="fa fa-long-arrow-right"></span>
              </a>

              <h2 class="big-h2"><span class="fa fa-wrench"></span> <span>James is a <b>living Open Source project</b> (all developments and implementations are based on open technical standards), any function which is not already available from <b>can be developed!</b></span></h2>
            </div>
          </div>
        </section>

      <!-- First Section -->
        <section id="first" class="main">
          <header class="major">
            <h2>Get Started With James</h2>
          </header>
          <section>
            <ul class="james-ul no-padding">
              <li class="post-template"><span class="long-arrow-right">&#8594;</span><span><b>
WHAT WILL YOU TRY:</b><br>
              <span>Here you will try James server v 3.6.0 thanks to an image. This James image has a default configuration
                using JPA (hsqldb) and Lucene. It also includes a default domain named james.local and three default users:
                user01, user02, user03, with their default password being <i>1234</i>.<br>
                <i>Note: this James server will respond to IMAP port 143 and SMTP port 25.</i></span></span>
              </li>
              <li class="post-template"><span class="long-arrow-right">&#8594;</span><span><b>STEPS YOU HAVE TO FOLLOW:</b><br>
                Pull and run the James image with the following single command:<br><br>
                <code class="highlighter-rouge">docker run -p "25:25" -p "143:143" apache/james:demo-3.6.0</code>

                <br><br>
                Then, connect this image with for instance, Thunderbird.<br>
                <i>Notes: for more information about James CLI, have a look at <a href="https://github.com/apache/james-project/#other-useful-commands" alt="Useful commands">'Useful commands section README.txt'</a>.</i></span>
              </li>
              <li class="post-template"><span class="long-arrow-right">&#8594;</span><span><b>ALTERNATIVES:</b><br>
                Instructions that do not imply docker are also available <a href="/server/install.html">here</a>.
              </span>
              </li>
              <li class="post-template"><span class="long-arrow-right">&#8594;</span><span><b>BETA:</b> Distributed James server<br>
                Recent work of the Apache James project did lead to a James product that leverages a distributed mail server,
                using storage technologies like <a href="https://cassandra.apache.org/">Cassandra</a>,
                  <a href="https://www.elastic.co/elasticsearch/">ElasticSearch</a>, <a href="https://www.rabbitmq.com/">RabbitMQ</a>, and
                <a href="https://wiki.openstack.org/wiki/Swift">objectStorage (S3/Swift)</a>.<br/><br/>
                Feedback on this product, announced as a beta since 3.6.0 is welcome.<br/><br/>
                This product can be executed via <a href="https://github.com/apache/james-project/blob/master/dockerfiles/run/docker-compose.yml">
                docker-compose</a> or you can follow its<a href="/server/install/guice-cassandra-rabbitmq-swift.html"> standard
                installation guide</a>
              </span></li>
            </ul>
          </section>
        </section>

      <!-- Roadmap -->
        <section id="roadmap" class="main">
          <header class="major">
            <h2>Roadmap</h2>
          </header>
          <section>
            <ul class="james-ul">
              <li class="post-template"><span><b>MAIN GOALS</b><br>
                <ul>
                  <li><span class="long-arrow-right">&#8594;</span>Providing a <b>distributed mail server</b>,
                    fully horizontally scalable.</li>
                  <li><span class="long-arrow-right">&#8594;</span><span>Maintaining a <b>standalone version</b>
                    suitable for a single server, based on <b>JPA</b>.</span></li>
                </ul>
              </li>
              <li class="post-template"><span><b>INCOMING FEATURES</b><br>
                <ul>
                  <li><span class="long-arrow-right">&#8594;</span><span>Rework our documentation with <a href="https://antora.org/">Antora</a>,
                    specify it on a per-server basis for ease of use.<br/>
                    We will furthermore target servers to identified use cases, formulated in non technical terms: Basic Server, Advanced Server and Distributed Server.<br/>
                    Spring server will be deprecated. A summary of community call describing this item can be found
                    <a href="https://www.mail-archive.com/server-dev@james.apache.org/msg67212.html">here</a>.</span></li>
                  <li><span class="long-arrow-right">&#8594;</span><span>Improve developper experience with a migration to the Gradle
                    build system and Apache hosted automated builds. A summary of community call describing this item can be found
                    <a href="https://www.mail-archive.com/server-dev@james.apache.org/msg67212.html">here</a>.</span></li>
                  <li><span class="long-arrow-right">&#8594;</span><span>Update the currently implemented JMAP draft specification
                    to the <b>new JMAP RFC</b>. See this
                    <a href="https://github.com/apache/james-project/blob/master/src/adr/0018-jmap-new-specs.md">ADR</a>
                    for more information.</span></li>
                   <li><span class="long-arrow-right">&#8594;</span><span><b>Blobs garbage collector</b>:
                    the deduplication mechanism used to save some spaces makes it complicated to remove blobs. We are implementing a
                    garbage collector responsible for removing the no more used blobs.
                    See this <a href="https://github.com/linagora/james-project/pull/3122">ADR</a> (Architecture Decision Record) for more explanation.</span></li>
                  <li><span class="long-arrow-right">&#8594;</span><span>Enhance our eventual consistency model by providing
                    <b>tools for reparing projections</b>. See this
                    <a href="https://github.com/linagora/james-project/pull/3125">discussion</a> for more information.</span></li>
                  <li><span class="long-arrow-right">&#8594;</span><span>Feel free to add your own items here: see <a href="#third">Contribute</a>.</span></li>
                </ul>
              </span>
              </li>
            </ul>
          </section>
        </section>

    <!-- Last Posts -->
      <section id="posts" class="main">
        <header class="major">
          <h2>Last Posts</h2>
        </header>
        <section>
          <ul class="no-padding">
            {% for post in site.posts limit:2 %}
              <li class="post-template">
                <span class="icon fa-file-text-o"></span>
                <span class="details">
                  <a href="{{ post.url }}" alt="{{ post.title }}"><b>{{ post.title }} - {{ post.date | date: '%B %d, %Y' }}</b><br><small>{{ post.excerpt }}</small></a>
                </span>
              </li>
            {% endfor %}
          </ul>
        </section>
        <footer>
          <ul class="actions">
            <li><a href="posts.html" class="button">READ MORE POSTS</a></li>
          </ul>
        </footer>
      </section>

      <!-- Second Section -->
        <section id="second" class="main">
          <header class="major">
            <h2>Community </h2>
          </header>
          <section>
            <p class="align-left">
            Apache James Project is  an Open Source all-volunteer project obtaining its strength from its Community made of developers and users. All are welcome to the Community!<br>
            That way, we recommend that Users, Developers, Curious and Fans join the James Community.</p>
            <ul class="no-padding no-margin">
              <li class="post-template center-icon">
                <a href="https://james.apache.org/mail.html" alt="mailing list james"><span class="icon fa-envelope"></span></a>
                <span class="details">
                  <b>Mailing list:</b>
                  <br/>Subscribe to the appropriate <a href="https://james.apache.org/mail.html" class="comm" alt="mailing lists">Mailing Lists</a> according to your interests and your profile.<br/> <a href="https://james.apache.org/mail.html#Guidelines" class="comm" alt="mail guideline">Mail guidelines</a> explain you more precisely how it works.
                </span>
              </li>
              <li class="post-template center-icon">
                <a href="https://james.apache.org/mail.html" alt="Gitter chat room"><span class="icon fa-wechat"></span></a>
                <span class="details">
                  <b>Gitter chat room:</b>
                  <br/>Chat in live with the community on <a href="https://gitter.im/apache/james-project" class="comm" alt="Gitter chat room">Gitter chat room</a>.
                </span>
              </li>
              <li class="post-template center-icon">
                <a href="https://twitter.com/ApacheJames" alt="twitter account"><span class="icon fa-twitter"></span></a>
                <span class="details">
                  <b>Twitter:</b>
                  <br/>Express yourself and follow us <a href="https://twitter.com/ApacheJames" class="comm" alt="twitter account">@ApacheJames</a>.
                </span>
              </li>
              <li class="post-template center-icon">
                <a href="https://james.apache.org/download.cgi" alt="Downloads"><span class="icon fa-cloud-download "></span></a>
                <span class="details">
                  <b>Download Apache James releases:</b>
                  <br/>Our <a href="https://james.apache.org/download.cgi">download page</a> allows you to download artifacts and sources for the James Server and James libraries.
                </span>
              </li>
              <li class="post-template center-icon">
                <a href="https://james.apache.org/support.html" alt="Professional support"><span class="icon fa-briefcase"></span></a>
                <span class="details">
                  <b>Professional support:</b>
                  <br/>Find a list of companies which can provide you some <a href="https://james.apache.org/support.html" class="comm" alt="Professional support">
                  support on James</a>.
                </span>
              </li>
            </ul>
          </section>
        </section>
       <section id="third" class="main">
          <header class="major">
            <h2>Contribute </h2>
          </header>
          <section>
            <p class="align-left">
              James is a project that lives from the contributions of its community.<br/>
              <b>Anyone can contribute!</b> That's right, we always want to hear from people with contributions to the code, the documentation, the website, and bug reports.
              We more than welcome non-coding contributions.<br>
              Here are different ways to contribute:
            </p>
            <ul class="no-padding no-margin">
              <li class="post-template center-icon">
                <a href="https://www.apache.org/licenses/"><span class="icon fa-copyright "></span></a>
                <span class="details">
                  <b>Licenses:</b>
                  <br/>All contributions to the James project are made under the <a class="comm" alt="License" href="https://www.apache.org/licenses/">Apache license 2.0</a>
                </span>
              </li>
              <li class="post-template center-icon">
                <a href="https://james.apache.org/mail.html"><span class="icon fa-bullhorn "></span></a>
                <span class="details">
                  <b>Join the community:</b>
                  <br/>We more than welcome <b>articles</b> and <b>blog posts</b> about James.<br/>
                  Contact us by <a href="https://james.apache.org/mail.html" class="comm" alt="mailing lists">email</a> or
                  on <a href="https://gitter.im/apache/james-project" class="comm" alt="Gitter chat room">Gitter</a> to share your experiences.
                  <br/>Don't hesitate to promote the Apache James project on your preferred medias.
                </span>
              </li>

                <li class="post-template center-icon">
                    <a href="https://issues.apache.org/jira/browse/JAMES/?selectedTab=com.atlassian.jira.jira-projects-plugin:summary-panel"><span class="icon fa-bug"></span></a>
                    <span class="details">
                  <b>Report bugs:</b>
                  <br/>You can here enter bug encountered, share your point of view about a specific feature or anything else... <br/>
                  Each subproject has its own bug tracker.
                  <a href="https://issues.apache.org/jira/browse/JAMES/?selectedTab=com.atlassian.jira.jira-projects-plugin:summary-panel" class="comm" alt="James Server bugtracker">Go to James Server project bugtracker</a>.<br/>
                  For other projects click on the appropriate links mentioned in the concerned subproject. Finally, create your issue.
                </span>
                </li>

              <li class="post-template center-icon">
                <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20JAMES%20AND%20resolution%20%3D%20Unresolved%20AND%20labels%20%3D%20documentation%20ORDER%20BY%20priority%20DESC%2C%20updated%20DESC"><span class="icon fa-book "></span></a>
                <span class="details">
                  <b>Documentation:</b><br/>
                  Documentation is an easy way to get on board! <br/>
                  Check out the <a class="comm" alt="Documentation" href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20JAMES%20AND%20resolution%20%3D%20Unresolved%20AND%20labels%20%3D%20documentation%20ORDER%20BY%20priority%20DESC%2C%20updated%20DESC">~documentation</a> label on JIRA to get some ideas.<br/>
                  Report on JIRA the typo you spots, the information you miss, and any improvement you can think to.<br/>
                  The next step is to contribute the documentation changes via <a class="comm" alt="The website on github"  href="https://github.com/apache/james-project/tree/master/src/site/xdoc">Git</a>.
                </span>
              </li>

              <li class="post-template center-icon">
                <a href="https://github.com/apache/james-project"><span class="icon fa-git"></span></a>
                <span class="details">
                  <b>How to contribute code changes:</b>
                  <br/>Read our sources from the <a href="git://git.apache.org/james-project.git" class="comm" alt="James Git sources">Apache Git</a>.<br/>
                  You can also come and interact with us on <a href="https://github.com/apache/james-project" class="comm" alt="James on GitHub">GitHub</a> and share your work by creating a pull request.<br/>
                  Alternatively, you can attach a <a  class="comm" alt="Patch" href="https://james.apache.org/contribute.html#Code_Patches">patch</a> to the JIRA issue.<br/>
                  After a review, and exchanges with you, an Apache James developer will integrate the changes once it matches our policies.
                </span>
              </li>

              <li class="post-template center-icon">
                <a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20JAMES%20AND%20resolution%20%3D%20Unresolved%20AND%20labels%20%3D%20newbie%20ORDER%20BY%20priority%20DESC%2C%20updated%20DESC" alt="contribute to the code"><span class="icon fa-cogs"></span></a>
                <span class="details">
                  <b>What contributions can you do:</b>
                  <br/>We reference some easy tasks to start with :
                  <a class="comm" alt="Newbie tasks" href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20JAMES%20AND%20resolution%20%3D%20Unresolved%20AND%20labels%20%3D%20newbie%20ORDER%20BY%20priority%20DESC%2C%20updated%20DESC">~newbie</a>
                  <br/> We have a collection of minor fixes awaiting contributions:
                  <a class="comm" alt="Easy fixes" href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20JAMES%20AND%20resolution%20%3D%20Unresolved%20AND%20labels%20%3D%20easyfix%20ORDER%20BY%20priority%20DESC%2C%20updated%20DESC">~easyfix</a>
                  <br/> Challenge yourself with some cool features we thought to:
                  <a class="comm" alt="Cool features" href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20JAMES%20AND%20resolution%20%3D%20Unresolved%20AND%20labels%20%3D%20feature%20ORDER%20BY%20priority%20DESC%2C%20updated%20DESC">~feature</a>
                  <br/>Additional ideas are more than welcome. Don't hesitate to discuss that with us!
                </span>
              </li>
              <li class="post-template center-icon">
                <a href="https://www.apache.org/security/" alt="Report security vulnerabilities"><span class="icon fa-shield "></span></a>
                <span class="details">
                  <b>Reporting security vulnerabilities:</b><br/>

                  <a class="comm" alt="Security" href="https://www.apache.org/security/">Security</a>: Vulnerabilities should be announced to the Apache Security team.<br/>
                  PMCs will be notified about them, and will work hard to propose fixes as fast as possible.
                </span>
              </li>
              <li class="post-template center-icon">
                <a href="http://james.apache.org/contribute.html" alt="Additional information"><span class="icon fa-info-circle "></span></a>
                <span class="details">
                 <span class="details">
                   <b>Additional information:</b><br/>
                      The <a class="comm" alt="More details about contributing" href="http://james.apache.org/contribute.html">contribute</a> page contains more details about the various details exposed above.<br/>
                      To match the quality expectations of our community, we enforce <a class="comm" alt="Coding Standards" href="http://james.apache.org/contribute.html#Coding_Standards">coding standards</a>.
                      We rely on <a class="comm" alt="checkstyle" href="https://github.com/apache/james-project/blob/master/checkstyle.xml">checkstyle</a> for style checking.
                 </span>
                </span>
              </li>
            </ul>
          </section>
        </section>

      <section id="use-cases" class="main">
        <header class="major">
          <h2>James use-cases</h2>
        </header>
        <section>
          <div class="content">
            <a href="#openpaas" data-lity class="james-use-case-link">
              <span class="fa fa-server"></span><br/>
              Linagora<br/>
              OpenPaaS<br/>
              <span class="fa fa-long-arrow-right"></span></a>
          </div>

          <div id="openpaas" style="background:#fff" class="lity-hide">
              <div class="padding about-table james-use-case-content">
                <header class="major">
                  <h2><a href="https://open-paas.org/"><img src="/images/openpaas.png"></a></h2>
                </header>
                <p class="post-template">
                  At&nbsp;<a href="https://linagora.com/" class="comm">LINAGORA</a>, we chose JAMES as the Mail Delivery Agent of our&nbsp;
                  <a href="https://open-paas.org/" class="comm">OpenPaaS</a>&nbsp;product:</p>
                <ul class="james-ul">
                  <li class="james-use-case-li center-icon"><span class="icon fa-arrow-right"></span>For easy administration of email load balancing and high availability</li>
                  <li class="james-use-case-li center-icon"><span class="icon fa-arrow-right"></span>To allow email interactions with the platform</li>
                  <li class="james-use-case-li center-icon"><span class="icon fa-arrow-right"></span>To use the&nbsp;<a href="https://jmap.io/" class="comm">JMAP</a>&nbsp;protocol (the browser interacts directly with the mail server)</li>
                </ul>
                <p>Our deployment currently allows serving a hundred users over JMAP, SMTP and IMAP.</p>
              </div>
          </div>
        </section>
      </section>


        <section id="stats" class="main">
          <header class="major">
            <h2>Some statistics...</h2>
          </header>
          <section>
            <ul class="statistics" onclick="location.href='https://github.com/apache/james-project'" title="Github James Project">
              <li class="style1">
                <span class="icon fa-users"></span>
                <strong id="contributor-num"></strong> Contributors
              </li>
              <li class="style2">
                <span class="icon fa-file-code-o"></span>
                <strong id="commit-num"></strong> Last year commits
              </li>
              <li class="style3">
                <span class="icon fa-code-fork"></span>
                <strong id="fork-num"></strong> Forks
              </li>
              <li class="style4">
                <span class="icon fa-star-o"></span>
                <strong id="star-num"></strong> Stars
              </li>
            </ul>
            <header class="major">
              <h2>...and contributors</h2>
            </header>
            <ul class="no-padding align-center" id="contributor-list"></ul>
          </section>
      </section>
    </div>
    <footer id="footer" class="major">
      <section>
        <h2>James</h2>
        <ul class="no-padding">
          <li class="no-padding"><a href="#intro" class="active">About</a></li>
          <li class="no-padding"><a href="#first">Get Started</a></li>
          <li class="no-padding"><a href="#roadmap">Roadmap</a></li>
          <li class="no-padding"><a href="#posts">Last Posts</a></li>
          <li class="no-padding"><a href="#second">Community</a></li>
          <li class="no-padding"><a href="#third">Contribute</a></li>
          <li class="no-padding"><a href="https://james.apache.org/"><span class="fa fa-external-link"></span> Documentation</a></li>
        </ul>
      </section>
      <section>
        <h2>Connect</h2>
        <ul class="icons">
          <li><a href="https://james.apache.org/mail.html" class="icon fa-envelope-o alt"><span class="label">Mailing-list</span></a></li>
          <li><a href="https://gitter.im/apache/james-project" class="icon fa-wechat alt"><span class="label">Gitter</span></a></li>
          <li><a href="https://github.com/apache/james-project" class="icon fa-github alt"><span class="label">GitHub</span></a></li>
          <li><a href="https://twitter.com/ApacheJames" class="icon fa-twitter alt"><span class="label">Twitter</span></a></li>
          <li><a href="https://james.apache.org/support.html" class="icon fa-briefcase alt"><span class="label">Support</span></a></li>
          <li><a href="http://www.apache.org/events/current-event" class="icon fa-calendar alt"><span class="label">Apache Foundation events</span></a></li>
          </ul>
      </section>
      <section class="legal-section">
        <h2>Copyright</h2>
        Apache James and related projects are trademarks of the Apache Software Foundation.<br/>
        <a href="https://www.apache.org/">Copyright 2006-2018 The Apache Software Foundation. All Rights Reserved.</a><br/>
        <a href="https://www.apache.org/licenses/">License</a><br/>
        <a href="https://www.apache.org/foundation/sponsorship.html">Donate</a> to support the Apache Foundation<br/>
        <a href="https://www.apache.org/foundation/thanks.html">Thanks</a><br/>
        Design: <a href="https://html5up.net">HTML5 UP</a><br/>
        Thanks to <a href="http://www.neoma-interactive.com/">Neoma by Linagora</a> for the website design
      </section>
  </footer>
</div>

<!-- Scripts -->
<script src="assets/js/jquery.min.js"></script>
<script src="assets/js/jquery.scrollex.min.js"></script>
<script src="assets/js/jquery.scrolly.min.js"></script>
<script src="assets/js/skel.min.js"></script>
<script src="assets/js/util.js"></script>
<script src="assets/js/lightbox.js"></script>
<script src="assets/js/github-fetch.js"></script>
<script src="assets/js/lity.min.js"></script>
<!--[if lte IE 8]><script src="assets/js/ie/respond.min.js"></script><![endif]-->
<script src="assets/js/main.js"></script>

