<!--
    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>
<html>
    <head>
        <meta charset="utf-8"/>
        <title>Apache James</title>

        <link rel="stylesheet" type="text/css" href="/assets/css/main.css">
        <link rel="stylesheet" type="text/css" href="/assets/css/font-awesome.min.css">
        <link rel="stylesheet" type="text/css" href="/assets/css/ie8.css">
        <link rel="stylesheet" type="text/css" href="/assets/css/ie9.css">
        <link rel="shortcut icon" href="/images/james-logo.png">
    </head>
<body>
    <!--
    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="documentation.html"><span class="fa fa-external-link"></span> Documentation</a></li>
        <li><a href="download.cgi"><span class="fa fa-external-link"></span> Downloads</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>
            <h3>Get Started With the official binaries </h3>
          </header>
          <section>
            <ul class="james-ul no-padding">
              <li class="post-template"><span class="long-arrow-right">&#8594;</span><span><b>DOWNLOADS:</b><br>
                The Apache James project wires together the different libraries composing James to provide a running services,
                ready to download on the Apache mirrors. See
                <a href="download.cgi">our download page</a>.<br/><br/>
                Follow <a href="server/install.html">our installation guide</a>.
              </span></li>
            </ul>
          </section>
          <section id="first_docker" class="main">
            <header class="major">
              <h3>Get Started With James And Docker</h3>
            </header>
            <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@james.local, user02@james.local, user03@james.local, with their default password being <i>1234</i>.<br>
                <i>Note: this James server will respond to IMAPS port 993 and SMTPS port 465.</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 "465:465" -p "993:993" apache/james:demo-3.6.0</code>

                <br><br>
                Then, connect this image with for instance, Thunderbird. This <a href="howTo/imap-server.html">tutorial</a> covers more in depth user and domain creation,
                as well as thunderbird setup.<br></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/server/apps/distributed-app/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 WORK</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. <a href="https://james.staged.apache.org/james-project/3.7.0/servers/index.html">Preview</a>...<br/>
                    We will furthermore target servers to identified use cases, formulated in non technical terms: Basic Server, Advanced Server and Distributed Server.<br/></span></li>
                  <li><span class="long-arrow-right">&#8594;</span><span>Promote guice based applications.<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>.<br/><br/>
                    Guice adoption schedule:
                    <ol>
                      <li>Promote Guice artifacts on the download page as part of <code>3.7.0</code></li>
                      <li>Deprecate Spring artifact as part of <code>3.8.0</code></li>
                      <li>Remove Spring artifact as part of <code>4.0.0</code></li>
                    </ol></span></li>
                  <li><span class="long-arrow-right">&#8594;</span><span>Continue improving <b>JMAP
                    <a href="https://datatracker.ietf.org/doc/html/rfc8621">RFC-8621</a></b> support. See this
                    <a href="https://issues.apache.org/jira/browse/JAMES-2884">JIRA</a> for some further possible
                    developments</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">
            
              <li class="post-template">
                <span class="icon fa-file-text-o"></span>
                <span class="details">
                  <a href="/james/update/2021/09/26/mime4j-0.8.6.html" alt="Apache James Mime4J 0.8.6"><b>Apache James Mime4J 0.8.6 - September 26, 2021</b><br><small><p>The Apache James developers are pleased to announce Apache James Mime4J 0.8.6</p>
</small></a>
                </span>
              </li>
            
              <li class="post-template">
                <span class="icon fa-file-text-o"></span>
                <span class="details">
                  <a href="/james/update/2021/09/21/james-joinsapachecon.html" alt="Getting Apache James to serve 1M+ digital mailboxes of all Estonian residents "><b>Getting Apache James to serve 1M+ digital mailboxes of all Estonian residents  - September 21, 2021</b><br><small><p>The Apache James team is proud to announce that one of our committers, Juhan Aasaru, presents a James
talk at <a href="https://www.apachecon.com/acah2021/index.html">ApacheCON @home 2021</a></p>

</small></a>
                </span>
              </li>
            
          </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>


</body>
</html>
