| <?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 Apr 12, 2012 -->
|
| <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>James Server - |
| Design Objectives</title>
|
| <style type="text/css" media="all">
|
| @import url("./css/james.css");
|
| @import url("./css/maven-base.css");
|
| @import url("./css/maven-theme.css");
|
| @import url("./css/site.css");
|
| @import url("./js/jquery/css/custom-theme/jquery-ui-1.8.5.custom.css");
|
| @import url("./js/jquery/css/print.css");
|
| @import url("./js/fancybox/jquery.fancybox-1.3.4.css");
|
| </style>
|
| <script type="text/javascript" src="./js/jquery/js/jquery-1.4.2.min.js"></script>
|
| <script type="text/javascript" src="./js/jquery/js/jquery-ui-1.8.5.custom.min.js"></script>
|
| <script type="text/javascript" src="./js/fancybox/jquery.fancybox-1.3.4.js"></script>
|
| <link rel="stylesheet" href="./css/print.css" type="text/css" media="print" />
|
| <meta name="author" content="James Project Web Team" />
|
| <meta name="Date-Revision-yyyymmdd" content="20120412" />
|
| <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-server-logo.gif">
|
|
|
|
|
| <img src="images/logos/james-server-logo.gif" alt="James Server" />
|
| </a>
|
| <a href="http://www.apache.org/" id="bannerRight">
|
|
|
|
|
| <img src="images/logos/asf-logo-reduced.gif" alt="The Apache Software Foundation" />
|
| </a>
|
| <div class="clear">
|
| <hr/>
|
| </div>
|
| </div>
|
| <div id="breadcrumbs">
|
|
|
|
|
| <div class="xleft">
|
| <span id="publishDate">Last Published: 2012-04-12</span>
|
| | <span id="projectVersion">Version: 1.6</span>
|
| </div>
|
| <div class="xright"> <a href="../index.html" title="Home">Home</a>
|
| |
|
| <a href="index.html" title="Server">Server</a>
|
| |
|
| <a href="../hupa/index.html" title="Hupa">Hupa</a>
|
| |
|
| <a href="../protocols/index.html" title="Protocols">Protocols</a>
|
| |
|
| <a href="../imap/index.html" title="IMAP">IMAP</a>
|
| |
|
| <a href="../mailet/index.html" title="Mailets">Mailets</a>
|
| |
|
| <a href="../mailbox/index.html" title="Mailbox">Mailbox</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>
|
| |
|
| <a href="../mpt/index.html" title="MPT">MPT</a>
|
| |
|
| <a href="../postage/index.html" title="Postage">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" title="Overview">Overview</a>
|
| </li>
|
| <li class="none">
|
| <strong>Objectives</strong>
|
| </li>
|
| <li class="none">
|
| <a href="FAQ.html" title="Server FAQ">Server FAQ</a>
|
| </li>
|
| <li class="none">
|
| <a href="rfclist.html" title="Useful RFCs">Useful RFCs</a>
|
| </li>
|
| <li class="none">
|
| <a href="http://issues.apache.org/jira/browse/JAMES" title="Issue Tracker">Issue Tracker</a>
|
| </li>
|
| <li class="none">
|
| <a href="http://svn.apache.org/viewvc/james/server/" title="Source">Source</a>
|
| </li>
|
| </ul>
|
| <h5>Documentation</h5>
|
| <ul>
|
| <li class="none">
|
| <a href="3/index.html" title="Server v3">Server v3</a>
|
| </li>
|
| <li class="none">
|
| <a href="2/index.html" title="Server v2">Server v2</a>
|
| </li>
|
| <li class="none">
|
| <a href="archive/document_archive.html" title="Archive">Archive</a>
|
| </li>
|
| </ul>
|
| <h5>About James</h5>
|
| <ul>
|
| <li class="none">
|
| <a href="../index.html" title="Overview">Overview</a>
|
| </li>
|
| <li class="none">
|
| <a href="../newsarchive.html" title="News">News</a>
|
| </li>
|
| <li class="none">
|
| <a href="../mail.html" title="Mailing Lists">Mailing Lists</a>
|
| </li>
|
| <li class="none">
|
| <a href="../contribute.html" title="Contributing">Contributing</a>
|
| </li>
|
| <li class="none">
|
| <a href="../guidelines.html" title="Guidelines">Guidelines</a>
|
| </li>
|
| <li class="none">
|
| <a href="http://wiki.apache.org/james" title="Wiki">Wiki</a>
|
| </li>
|
| <li class="none">
|
| <a href="../weare.html" title="Who We Are">Who We Are</a>
|
| </li>
|
| <li class="none">
|
| <a href="../license.html" title="License">License</a>
|
| </li>
|
| </ul>
|
| <h5>Download</h5>
|
| <ul>
|
| <li class="none">
|
| <a href="../download.cgi" title="Releases">Releases</a>
|
| </li>
|
| <li class="none">
|
| <a href="http://people.apache.org/builds/james/nightly/" title=""></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">
|
| <!-- 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. --> |
| |
| |
| <div class="section"><h2>Design Objectives<a name="Design_Objectives"></a></h2> |
| |
| <div class="section"><h3>Features<a name="Features"></a></h3> |
| <p>These are some of the currently implemented features:</p> |
| <p> |
| <i> |
| <b>Complete portability</b> |
| </i> Apache James is be a 100% pure Java application |
| based on the Java 2 platform and the JavaMail 1.3 API. |
| </p> |
| <p> |
| <i> |
| <b>Protocol abstraction</b> |
| </i> Unlike other mail engines, protocols are seen only |
| like "communication languages" ruling comunications between clients and |
| the server. Apache James is not be tied to any particular protocol but |
| follow an abstracted server design (like JavaMail did on the |
| client side)</p> |
| <p> |
| <i> |
| <b>Complete solution</b> |
| </i> the mail system is able to handle both mail |
| transport and storage in a single server application. Apache James |
| works alone without the need for any other server or solution.</p> |
| <p> |
| <i> |
| <b>Mailet support</b> |
| </i> Apache James supports the Apache Mailet API. A Mailet |
| is a discrete piece of mail-processing logic which is incorporated into |
| a Mailet-compliant mail-server's processing. This easy-to-write, |
| easy-to-use pattern allows developers to build powerful customized mail |
| systems. Examples of the services a Mailet might provide include: a |
| mail-to-fax or mail-to-phone transformer, a filter, a language translator, a mailing |
| list manager, etc. Several Mailets are included in the James |
| distribution (see <a href="3/index.html">server documentation</a>).</p> |
| <p> |
| <i> |
| <b>Resource abstraction</b> |
| </i> Like protocols, resources are abstracted and, |
| accessed through defined interfaces (JavaMail for transport, JDBC for |
| spool storage or user accounts in RDBMS's, Apache Mailet API). The server is |
| highly modular and reuse solutions from other projects.</p> |
| <p> |
| <i> |
| <b>Secure and multi-threaded design</b> |
| </i> Based on the technology developed |
| for the Apache JServ servlet engine, Apache James has a careful, |
| security-oriented, full multi-threaded design, to allow performance, |
| scalability and mission-critical use.</p> |
| <p>Anything else you may want if you help us write it :-)</p> |
| </div> |
| <div class="section"><h3>Standards compliance<a name="Standards_compliance"></a></h3> |
| <p>It is the existence of published "open" standards which |
| allows independant teams to develop interoperable software. |
| <br />James attempts to support a number of these standards most of which are |
| IETF RFC's and in the areas covered by these standards the published standard |
| is our requirements document. |
| <br />This sometimes leads to confusion where behaviour is not |
| the subject of a relevant standard, or conflict where common |
| (de-facto) behaviour is actually at odds with a supported standard. |
| <br />We believe that it is our responsibility to adhere to the published standard. |
| If we allow our implementation to deviate it means that we are tacitly encouraging |
| the situation whereby interoperability is no longer guarenteed by standards |
| compliance alone, but also requires access to undocumented and possibly |
| even commercially licenced technology. There is no easy route for a |
| newcomer to aquire these secrets, and interoperabilty |
| becomes something only available to the elite. |
| </p> |
| <p>The James policy for issues of non-compliance tries to tread the fine line |
| between a pragmatic acceptance of other people's misinterpretation of the |
| RFC's and an evangelical defence of open standards as the key to freedom of interoperation. |
| </p> |
| <p> |
| In practice this policy is that certain well argued of cases of |
| non-compliance which can be *safely* worked around, will be tolerated by |
| James. |
| </p> |
| <p> |
| In cases (like jira issue JAMES-344 ) where variance from a published standard is |
| required it is desirable that this functionality is disabled in James by default, |
| it must be prominently and clearly documented that this causes James |
| to violate the relevant standard, and should be enabled by explicit |
| configuration, making its use a conscious decision of the user rather |
| than an decision taken by the James team. |
| </p> |
| <p> |
| In cases where the required behaviour is not within the scope of any standard which |
| James claims to support (such as behaviour which is a de-facto standard or |
| an <i>internet draft</i> RFC but not yet subject of a <i>standards track</i> RFC) it is |
| acceptable to implement the behaviour so long as it is adequately |
| documented (for instance by refrence to an <i>internet draft</i> or |
| other public document) and users can be clear about what to expect from James. |
| </p> |
| </div> |
| </div> |
| |
|
|
| </div>
|
| </div>
|
| <div class="clear">
|
| <hr/>
|
| </div>
|
| <div id="footer">
|
| <div class="xright">Copyright © 2006-2012
|
| <a href="http://www.apache.org">The Apache Software Foundation</a>.
|
| All Rights Reserved.
|
|
|
| </div>
|
| <div class="clear">
|
| <hr/>
|
| </div>
|
| </div>
|
| </body>
|
| </html>
|