<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">










<html>
  <head>
    <title>James Server - 
  James 2.3 - Global Server Configuration</title>
    <style type="text/css" media="all">
      @import url("./css/maven-base.css");
      @import url("./css/maven-theme.css");
      @import url("./css/site.css");
    </style>
    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
      </head>
  <body class="composite">
    <div id="banner">
                  <a href="http://james.apache.org/index.html" id="bannerLeft">
    
                                            <img src="images/james-server-logo.gif" alt="" />
    
            </a>
                        <a href="http://www.apache.org/index.html" id="bannerRight">
    
                                            <img src="images/asf-logo-reduced.gif" alt="" />
    
            </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
          
  

  
    
  
  
            <div class="xleft">
        Last Published: 04/19/2007
                      </div>
            <div class="xright">      <a href="../../index.html">JAMES Project</a>
          |
          <a href="../../server/index.html">Server</a>
          |
          <a href="../../jspf/index.html">jSPF</a>
          |
          <a href="../../mime4j/index.html">Mime4J</a>
          |
          <a href="../../jsieve/index.html">JSieve</a>
          |
          <a href="../../postage/index.html">Postage</a>
          
  

  
    
  
  
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="leftColumn">
      <div id="navcolumn">
           
  

  
    
  
  
                   <h5>James Server</h5>
        <ul>
              
    <li class="none">
              <a href="../index.html">Overview</a>
        </li>
              
    <li class="none">
              <a href="../design_objectives.html">Objectives</a>
        </li>
              
          
              
      
              
        <li class="expanded">
              <a href="../FAQ.html">James FAQ</a>
                <ul>
                  
    <li class="none">
              <a href="../james_and_sendmail.html">James and Sendmail</a>
        </li>
              </ul>
        </li>
              
    <li class="none">
              <a href="http://wiki.apache.org/james">Wiki</a>
        </li>
              
    <li class="none">
              <a href="../rfclist.html">Useful RFCs</a>
        </li>
          </ul>
          <h5>Concepts</h5>
        <ul>
              
    <li class="none">
              <a href="summary.html">Summary</a>
        </li>
              
    <li class="none">
              <a href="spoolmanager.html">SpoolManager</a>
        </li>
              
    <li class="none">
              <a href="repositories.html">Repositories</a>
        </li>
              
    <li class="none">
              <a href="mailet_api.html">The Mailet API</a>
        </li>
          </ul>
          <h5>How to...</h5>
        <ul>
              
    <li class="none">
              <a href="build_instructions.html">Build James</a>
        </li>
              
    <li class="none">
              <a href="installation_instructions.html">Install James</a>
        </li>
          </ul>
          <h5>Configuration</h5>
        <ul>
              
    <li class="none">
              <a href="dns_configuration.html">DNS Server</a>
        </li>
              
    <li class="none">
              <a href="pop3_configuration.html">POP3 Server</a>
        </li>
              
    <li class="none">
              <a href="smtp_configuration.html">SMTP Server</a>
        </li>
              
    <li class="none">
              <a href="nntp_configuration.html">NNTP Server</a>
        </li>
              
    <li class="none">
              <a href="fetchmail_configuration.html">FetchMail</a>
        </li>
              
    <li class="none">
              <a href="remotemanager_configuration.html">RemoteManager</a>
        </li>
              
    <li class="none">
              <a href="spoolmanager_configuration.html">SpoolManager</a>
        </li>
              
    <li class="none">
              <strong>Server-wide</strong>
        </li>
              
    <li class="none">
              <a href="adding_users.html">Adding Users</a>
        </li>
              
    <li class="none">
              <a href="provided_matchers.html">Provided Matchers</a>
        </li>
              
    <li class="none">
              <a href="provided_mailets.html">Provided Mailets</a>
        </li>
          </ul>
          <h5>Common Configurations</h5>
        <ul>
              
    <li class="none">
              <a href="smtp_auth.html">Using SMTP AUTH</a>
        </li>
              
    <li class="none">
              <a href="using_database.html">Using a Database with James</a>
        </li>
              
    <li class="none">
              <a href="usingTLS.html">Using TLS/SSL</a>
        </li>
              
    <li class="none">
              <a href="mailing_lists.html">Creating Mailing Lists</a>
        </li>
          </ul>
          <h5>Customization</h5>
        <ul>
              
    <li class="none">
              <a href="custom_matcher.html">How to write a custom Matcher</a>
        </li>
              
    <li class="none">
              <a href="custom_mailet.html">How to write a custom Mailet</a>
        </li>
          </ul>
          <h5>Project</h5>
        <ul>
              
    <li class="none">
              <a href="changelog.html">Changelog</a>
        </li>
          </ul>
          <h5>Project Documentation</h5>
        <ul>
              
                
              
      
            
      
            
      
            
      
            
      
            
      
            
      
            
      
              
        <li class="collapsed">
              <a href="project-info.html">Project Information</a>
              </li>
              
                
              
      
            
      
            
      
            
      
              
        <li class="collapsed">
              <a href="project-reports.html">Project Reports</a>
              </li>
          </ul>
          <h5>Project</h5>
        <ul>
              
    <li class="none">
              <a href="http://issues.apache.org/jira/browse/JAMES">Bug Database</a>
        </li>
              
    <li class="none">
              <a href="http://svn.apache.org/viewvc/james/server/">Source Code</a>
        </li>
              
    <li class="none">
              <a href="../todo.html">TODO</a>
        </li>
          </ul>
          <h5>Downloads</h5>
        <ul>
              
    <li class="none">
              <a href="../../download.cgi">Stable releases</a>
        </li>
              
    <li class="none">
              <a href="../../downloadunstable.cgi">Unstable releases</a>
        </li>
              
    <li class="none">
              <a href="http://people.apache.org/builds/james/nightly/">Nightly builds</a>
        </li>
          </ul>
                                       <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
            <img alt="Built by Maven" src="./images/logos/maven-feather.png"></img>
          </a>
                       
  

  
    
  
  
        </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        

 


<a name="Global Server Configuration"></a><div class="section"><h2>Global Server Configuration</h2>
<p>There are a number of global configuration blocks that do not fall into any one 
component.  They have effects that are global in scope across the server.  Some of 
these blocks are crucial, while others can be ignored by any but the most sophisticated 
server administrators.</p>
<a name="The James Block"></a><div class="section"><h3>The James Block</h3>
<p>This configuration block is defined by the <strong>James</strong> tag.  All administrators 
need to adjust this configuration block upon installation.  It no attributes, but several 
children, all of which are required.
<ul>
<li><strong>postmaster</strong> - the body of this element is the address that the server 
will consider its postmaster address.  This address will be listed as the sender address 
of all error messages that originate from James.  Also, all messages addressed to 
postmaster@&lt;servername&gt;, where &lt;servername&gt; is one of the domain names whose 
mail is being handled by James, will be redirected to this email address.</li>
<li><strong>usernames</strong> - this element has no body, but instead has three required 
boolean attributes.  These are <strong>ignoreCase</strong>, <strong>enabledAliases</strong>, 
and <strong>enableForwarding</strong>.  The first of these determines whether email user names
will be treated as case-insensitive or not.  The second attribute configures whether local user
aliasing will be enabled.  Finally, the value of the third attribute determines whether forwarding 
to potentially remote users will be enabled.</li>
<li><strong>servernames</strong> - this element determines exactly which mail domains and IP 
addresses the server will treat as local.  It has two boolean attributes - 
<strong>autodetect</strong> and <strong>autodetectIP</strong>.  The first attribute, if true,
causes the server to attempt to determine its own host name and add that to the list of local
mail domains.  The second attribute causes the server to attempt to determine its own IP 
address and add it to the list of local mail domains.  In addition to these attributes, this 
tag has zero or more <strong>servername</strong> children.</li>
<ul>
<li><strong>servername</strong> - a single host name or IP address that should be added to the list of 
mail domains that the server considers local.</li>
</ul>
<li><strong>inboxRepository</strong> - This is a simple container tag which contains a single child element.</li>
<ul>
<li><strong>repository</strong> - this defines the mail repository that will be used to store 
mail delivered locally.  This element has no body.  The required attribute <strong>type</strong> 
is always set to &quot;MAIL&quot;.  The required attribute <strong>repositoryURL</strong> addresses the
repository as described in <a href="repositories.html">the repository configuration section</a>.</li>
</ul>
</ul>

</div>
<a name="The Connectionmanager Block"></a><div class="section"><h3>The Connectionmanager Block</h3>

This block controls general connection management.  There are two elements.
<ul>
<li><strong>idle-timeout</strong> - the number of milliseconds that it will take for idle 
client connections managed by this connection manager to be marked at timed out.  If no 
value is specified, the value defaults to 5 minutes, 300000 milliseconds.  A value of 0 
means that client sockets will not timeout.</li>
<li><strong>max-connections</strong> - The max-connections parameter specifies the default 
maximum number of client connections that this connection manager will allow per managed 
server socket.  This value can be overridden by each individual service.  If no value is 
specified, the value defaults to 30.  A value of 0 means that there is no limit imposed 
by the connection manager, although resource limitations imposed by other components 
(i.e. max # of threads) may serve to limit the number of open connections.</li>
</ul>

</div>
<a name="The Objectstorage Block"></a><div class="section"><h3>The Objectstorage Block</h3>
This block controls the low level file repository to file mapping.  There is no need to modify this.
</div>
<a name="The Socketmanager Block"></a><div class="section"><h3>The Socketmanager Block</h3>
This block controls the socket types available inside James.  Unless you are intending to enable SSL, it 
shouldn't be necessary for you to adjust this block.  For modifications to this block that are required to
enable TLS, see <a href="usingTLS.html">the using TLS section</a>.
</div>
<a name="The Threadmanager Block"></a><div class="section"><h3>The Threadmanager Block</h3>
This block controls the thread pools available inside James.  Only expert administators should modify 
this configuration.
</div>
</div>


      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">&#169;  
          2002-2007
    
          The Apache Software Foundation
          
  

  
    
  
  
  </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
    <script src="http://www.google-analytics.com/urchin.js" type="text/javascript">
    </script>
    <script type="text/javascript">
      _uacct = "UA-1384591-1";
      urchinTracker();
    </script>
  </body>
</html>
