<?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-11-12 -->
<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; Apache James Server 3 - Users Configuration</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="Date-Revision-yyyymmdd" content="20211112" />
    <meta http-equiv="Content-Language" content="en" />
        
          <!-- 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-11-12</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="collapsed">
                          <a href="../documentation.html" title="About James">About James</a>
                  </li>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <li class="expanded">
                          <a href="../server/index.html" title="Server">Server</a>
                    <ul>
                      <li class="none">
                          <a href="../server/advantages.html" title="Advantages">Advantages</a>
            </li>
                      <li class="none">
                          <a href="../server/objectives.html" title="Objectives">Objectives</a>
            </li>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      <li class="expanded">
                          <a href="../server/quick-start.html" title="User Manual">User Manual</a>
                    <ul>
                                                                                                                                                                                    <li class="collapsed">
                          <a href="../server/features.html" title="1. Features">1. Features</a>
                  </li>
                      <li class="none">
                          <a href="../server/packaging.html" title="2. Packaging">2. Packaging</a>
            </li>
                                                                                                                              <li class="collapsed">
                          <a href="../server/install.html" title="3. Install James">3. Install James</a>
                  </li>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <li class="expanded">
                          <a href="../server/config.html" title="4. Configure James">4. Configure James</a>
                    <ul>
                      <li class="none">
                          <a href="../server/config-listeners.html" title="Additional mailbox listeners">Additional mailbox listeners</a>
            </li>
                      <li class="none">
                          <a href="../server/config-antispam.html" title="Anti Spam">Anti Spam</a>
            </li>
                      <li class="none">
                          <a href="../server/config-blob-export.html" title="Blob Export">Blob Export</a>
            </li>
                      <li class="none">
                          <a href="../server/config-blobstore.html" title="BlobStore">BlobStore</a>
            </li>
                      <li class="none">
                          <a href="../server/config-cassandra.html" title="Cassandra">Cassandra</a>
            </li>
                      <li class="none">
                          <a href="../server/config-elasticsearch.html" title="ElasticSearch">ElasticSearch</a>
            </li>
                      <li class="none">
                          <a href="../server/config-vault.html" title="Deleted Messages Vault">Deleted Messages Vault</a>
            </li>
                      <li class="none">
                          <a href="../server/config-dnsservice.html" title="DNS Service">DNS Service</a>
            </li>
                      <li class="none">
                          <a href="../server/config-domainlist.html" title="Domain List">Domain List</a>
            </li>
                      <li class="none">
                          <a href="../server/config-fetchmail.html" title="FetchMail">FetchMail</a>
            </li>
                      <li class="none">
                          <a href="../server/config-guice.html" title="Guice">Guice</a>
            </li>
                      <li class="none">
                          <a href="../server/config-imap4.html" title="IMAP4">IMAP4</a>
            </li>
                      <li class="none">
                          <a href="../server/config-jmap.html" title="JMAP">JMAP</a>
            </li>
                      <li class="none">
                          <a href="../server/config-mailrepositorystore.html" title="Mail Repository Stores">Mail Repository Stores</a>
            </li>
                      <li class="none">
                          <a href="../server/config-mailbox.html" title="Mailbox">Mailbox</a>
            </li>
                      <li class="none">
                          <a href="../server/config-mailetcontainer.html" title="Mailet Container">Mailet Container</a>
            </li>
                      <li class="none">
                          <a href="../server/config-healthcheck.html" title="Periodical Health Checks">Periodical Health Checks</a>
            </li>
                      <li class="none">
                          <a href="../server/config-pop3.html" title="POP3">POP3</a>
            </li>
                      <li class="none">
                          <a href="../server/config-quota.html" title="Quota">Quota</a>
            </li>
                      <li class="none">
                          <a href="../server/config-rabbitmq.html" title="RabbitMQ">RabbitMQ</a>
            </li>
                      <li class="none">
                          <a href="../server/config-recipientrewritetable.html" title="Recipient Rewrite">Recipient Rewrite</a>
            </li>
                      <li class="none">
                          <a href="../server/config-smtp-lmtp.html" title="SMTP LMTP">SMTP LMTP</a>
            </li>
                      <li class="none">
                          <a href="../server/config-sieve.html" title="Sieve">Sieve</a>
            </li>
                      <li class="none">
                          <a href="../server/config-ssl-tls.html" title="SSL/TLS">SSL/TLS</a>
            </li>
                      <li class="none">
                          <a href="../server/config-system.html" title="System">System</a>
            </li>
                      <li class="none">
                          <a href="../server/config-spring-jpa-postgres.html" title="Spring JPA Postgres">Spring JPA Postgres</a>
            </li>
                      <li class="none">
            <strong>Users</strong>
          </li>
                      <li class="none">
                          <a href="../server/config-webadmin.html" title="WebAdmin">WebAdmin</a>
            </li>
              </ul>
        </li>
                                                                                                                              <li class="collapsed">
                          <a href="../server/manage.html" title="5. Manage">5. Manage</a>
                  </li>
                                                                                                            <li class="collapsed">
                          <a href="../server/monitor.html" title="6. Monitor">6. Monitor</a>
                  </li>
                                                                        <li class="collapsed">
                          <a href="../server/upgrade.html" title="7. Upgrade">7. Upgrade</a>
                  </li>
                                                                                                                                                                                                                                    <li class="collapsed">
                          <a href="../server/dev.html" title="8. Developers Corner">8. Developers Corner</a>
                  </li>
              </ul>
        </li>
                      <li class="none">
                          <a href="../mail.html#James_Mailing_lists" title="Mailing Lists">Mailing Lists</a>
            </li>
                      <li class="none">
                          <a href="../server/release-notes.html" title="Release Notes">Release Notes</a>
            </li>
                      <li class="none">
                          <a href="../server/apidocs/index.html" title="Javadoc">Javadoc</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="https://github.com/apache/james-project" title="Sources">Sources</a>
            </li>
                      <li class="none">
                          <a href="../server/rfcs.html" title="RFCs">RFCs</a>
            </li>
                      <li class="none">
                          <a href="../download.cgi#Apache_James_Server" title="Download releases">Download releases</a>
            </li>
              </ul>
        </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="Users_Repositories"></a>Users Repositories</h2>

    <section>
<h3><a name="Introduction"></a>Introduction</h3>

      
<p>User repositories are required to store James user information and authentication data</p>

      
<p>Consult <a class="externalLink" href="https://github.com/apache/james-project/tree/master/server/apps/spring-app/src/main/resources/usersrepository.xml">usersrepository.xml</a> in GIT to get some examples and hints.</p>

      
<p>
        A user has two attributes: username and password. A valid user should satisfy these criteria:
      </p>
      
<ul>
        
<li>username and password cannot be null or empty</li>
        
<li>username should not be longer than 255 characters</li>
        
<li>username can not contain '/'</li>
        
<li>username can not contain multiple domain delimiter('@')</li>
        
<li>A username can have only a local part when virtualHosting is disabled. E.g.'myUser'</li>
        
<li>
            When virtualHosting is enabled, a username should have a domain part,
            and the domain part should be concatenated after a domain delimiter('@'). E.g. 'myuser@james.org'
        </li>
      </ul>
      
<p>
        A user is always considered as lower cased, so 'myUser' and 'myuser' are the same user, and can be used as well as recipient local part than as login for different protocols.
      </p>
    </section>

    <section>
<h3><a name="General_configuration"></a>General configuration</h3>

      
<p>All Users Repositories provide at least these two options</p>

      
<dl>
        
<dt><b>enableVirtualHosting</b></dt>
        
<dd>true or false. Add domain support for users (default: false, except for Cassandra Users Repository)</dd>
        
<dt><b>administratorId</b></dt>
        
<dd>user's name. Allow a user to access to the <a class="externalLink" href="https://tools.ietf.org/html/rfc4616#section-2">impersonation command</a>, acting on the behalf of any user.</dd>
      </dl>

    </section>

    <section>
<h3><a name="JPA_Users_Repository"></a>JPA Users Repository</h3>

     
<p>JPA (database via OpenJPA) based user repository. This is the default implementation.</p>

     
<p>The usersrepository tag as 2 attributes: name=&quot;LocalUsers&quot; and class=&quot;org.apache.james.user.file.UsersFileRepository&quot;&gt;
     The class tag should be specified for Spring, but is not taken into acount by Guice.</p>


      
<dl>
        
<dt><b>algorithm</b></dt>
        
<dd>Algorithm to hash passwords. Supported password algorithm are: MD5, SHA-256, SHA-512, NONE(then SHA-1 will be used).</dd>
        
<dd>MD5 and SHA-1 are deprecated.</dd>
        
<dt><b>enableVirtualHosting</b></dt>
        
<dd>true (default) or false. Defines if the usernames must (true) or may not contain (false) a domain part (user@domain.tld).</dd>
      </dl>

    </section>

    <section>
<h3><a name="LDAP_Users_Repository"></a>LDAP Users Repository</h3>

       
<p>Read-Only LDAP based UsersRepository</p>

       
<p>Example:</p>

       
<div class="source">
<pre>
&lt;repository name=&quot;LocalUsers&quot; class=&quot;org.apache.james.user.ldap.ReadOnlyUsersLDAPRepository&quot; ldapHost=&quot;ldap://myldapserver:389&quot;
    principal=&quot;uid=ldapUser,ou=system&quot; credentials=&quot;password&quot; userBase=&quot;ou=People,o=myorg.com,ou=system&quot; userIdAttribute=&quot;uid&quot;/&gt;</pre></div>

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