http://git-wip-us.apache.org/repos/asf/james-site/blob/f81a00ef/content/server/dev-provided-smtp-hooks.html ---------------------------------------------------------------------- diff --git a/content/server/dev-provided-smtp-hooks.html b/content/server/dev-provided-smtp-hooks.html new file mode 100644 index 0000000..825ad10 --- /dev/null +++ b/content/server/dev-provided-smtp-hooks.html @@ -0,0 +1,417 @@ +<?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 2016-12-06 --> +<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 Server 3.0 - + Apache James Server 3 - Provided SMTP Hooks</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="20161206" /> + <meta http-equiv="Content-Language" content="en" /> + +<link title="DOAP" rel="meta" type="application/rdf+xml" href="http://james.apache.org//doap_james-project.rdf"/> + + <!-- 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="Apache James Server 3.0" /> + </a> + <a href="http://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: 2016-12-06</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="../../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>Overview</h5> + <ul> + <li class="none"> + <a href="index.html" title="Introduction">Introduction</a> + </li> + <li class="none"> + <a href="release-notes.html" title="Release Notes">Release Notes</a> + </li> + </ul> + <h5>Features</h5> + <ul> + <li class="none"> + <a href="feature-mailetcontainer.html" title="Mailet Container">Mailet Container</a> + </li> + <li class="none"> + <a href="feature-queue-priority.html" title="Queue Priority">Queue Priority</a> + </li> + <li class="none"> + <a href="feature-persistence.html" title="Persistence">Persistence</a> + </li> + <li class="none"> + <a href="feature-protocols.html" title="Protocols">Protocols</a> + </li> + <li class="none"> + <a href="feature-smtp-hooks.html" title="SMTP Hooks">SMTP Hooks</a> + </li> + <li class="none"> + <a href="feature-performance.html" title="Performance">Performance</a> + </li> + <li class="none"> + <a href="feature-security.html" title="Security">Security</a> + </li> + </ul> + <h5>User Manual</h5> + <ul> + <li class="none"> + <a href="quick-start.html" title="1. Quick Start">1. Quick Start</a> + </li> + <li class="none"> + <a href="install.html" title="2. Install James">2. Install James</a> + </li> + <li class="collapsed"> + <a href="config.html" title="3. Configure James">3. Configure James</a> + </li> + <li class="collapsed"> + <a href="manage.html" title="4. Manage">4. Manage</a> + </li> + <li class="collapsed"> + <a href="monitor.html" title="5. Monitor">5. Monitor</a> + </li> + <li class="collapsed"> + <a href="upgrade.html" title="6. Upgrade">6. Upgrade</a> + </li> + </ul> + <h5>Developers Corner</h5> + <ul> + <li class="none"> + <a href="dev.html" title="Architecture">Architecture</a> + </li> + <li class="none"> + <a href="dev-build.html" title="Build from source">Build from source</a> + </li> + <li class="none"> + <a href="dev-database-schema.html" title="Database Schema">Database Schema</a> + </li> + <li class="collapsed"> + <a href="dev-extend.html" title="Develop Extensions">Develop Extensions</a> + </li> + <li class="expanded"> + <a href="dev-provided.html" title="Provided Extensions">Provided Extensions</a> + <ul> + <li class="none"> + <a href="dev-provided-mailets.html" title="Mailets">Mailets</a> + </li> + <li class="none"> + <a href="dev-provided-matchers.html" title="Matchers">Matchers</a> + </li> + <li class="none"> + <strong>SMTP Hooks</strong> + </li> + </ul> + </li> + </ul> + <h5>References</h5> + <ul> + <li class="none"> + <a href="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> + </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="../../team-list.html" title="Who We Are">Who We Are</a> + </li> + <li class="none"> + <a href="../../license.html" title="License">License</a> + </li> + <li class="none"> + <a href="../../thanks.html" title="Thanks">Thanks</a> + </li> + <li class="none"> + <a href="../../support.html" title="Professional support">Professional support</a> + </li> + </ul> + <h5>Download</h5> + <ul> + <li class="none"> + <a href="../../download.cgi" title="Releases">Releases</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>Provided Hooks in James Server<a name="Provided_Hooks_in_James_Server"></a></h2> + + +<p>The following hooks are supported:</p> + + +<div class="section"> +<h3>AuthHook<a name="AuthHook"></a></h3> + +<p>Allows to hook in your code for authenticate users for sending mail via SMTP AUTH. + You could for example query your own database table to see if a user should be allowed to + send mail with the given username and password.</p> + </div> + + +<div class="section"> +<h3>ConnectionHandler<a name="ConnectionHandler"></a></h3> + +<p>Allows to hook in your code on a new connection. So you could just drop it + or do something else.</p> + </div> + + +<div class="section"> +<h3>HeloHook<a name="HeloHook"></a></h3> + +<p>Allows to hook in your code in the HELO and EHLO commands.</p> + </div> + + +<div class="section"> +<h3>MailHook<a name="MailHook"></a></h3> + +<p>Allows to hook in your code in the MAIL command. Like checking the sender + which was given with MAIL FROM: <whatever@example></p> + </div> + + +<div class="section"> +<h3>MailParametersHook<a name="MailParametersHook"></a></h3> + +<p>Allows to hook in given parameters in the EHLO command.</p> + </div> + + +<div class="section"> +<h3>JamesMessageHook<a name="JamesMessageHook"></a></h3> + +<p>Allow to hook in your code after the email was received via the DATA command and + was marked for queuing by the CLRF.CRLF sequence. This will get executed right before + the message will actual get queued.</p> + +<p>IMPORTANT: If you want to do heavy processing here + and not want to reject the method based on a criteria you are most times better of to + use the Mailet API!</p> + </div> + + +<div class="section"> +<h3>QuitHook<a name="QuitHook"></a></h3> + +<p>Allow to hook in your code in the QUIT command.</p> + </div> + + +<div class="section"> +<h3>RcptHook<a name="RcptHook"></a></h3> + +<p>Allows to hook in your code in the RCPT command. Like implementing a custom logic to + check if the mail for a given recipient should get accepted or rejected.</p> + </div> + + +<div class="section"> +<h3>UnknownCmdHook<a name="UnknownCmdHook"></a></h3> + +<p>Allows to hook in your code on every unknown command.</p> + </div> + + +<div class="section"> +<h3>MailPriorityHandler<a name="MailPriorityHandler"></a></h3> + +<p>Allows to set priority on mails for the spool queues, depending on the destination domain.</p> + </div> + + +<div class="section"> +<h3>HookResultJMXMonitor<a name="HookResultJMXMonitor"></a></h3> + +<p>Allows to register a HookStatsMBean under JMX for every processed Hook. + You will get statistics about the configured hooks via JMX </p> + </div> + + </div> + + + + + </div> + </div> + <div class="clear"> + <hr/> + </div> + <div id="footer"> + <div class="xright">Copyright © 2002-2016 + <a href="https://www.apache.org/">The Apache Software Foundation</a>. + All Rights Reserved. + + </div> + <div class="clear"> + <hr/> + </div> + </div> + </body> +</html>
http://git-wip-us.apache.org/repos/asf/james-site/blob/f81a00ef/content/server/dev-provided.html ---------------------------------------------------------------------- diff --git a/content/server/dev-provided.html b/content/server/dev-provided.html new file mode 100644 index 0000000..8db9283 --- /dev/null +++ b/content/server/dev-provided.html @@ -0,0 +1,352 @@ +<?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 2016-12-06 --> +<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 Server 3.0 - + Apache James Server 3 - Extend James</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="20161206" /> + <meta http-equiv="Content-Language" content="en" /> + +<link title="DOAP" rel="meta" type="application/rdf+xml" href="http://james.apache.org//doap_james-project.rdf"/> + + <!-- 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="Apache James Server 3.0" /> + </a> + <a href="http://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: 2016-12-06</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="../../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>Overview</h5> + <ul> + <li class="none"> + <a href="index.html" title="Introduction">Introduction</a> + </li> + <li class="none"> + <a href="release-notes.html" title="Release Notes">Release Notes</a> + </li> + </ul> + <h5>Features</h5> + <ul> + <li class="none"> + <a href="feature-mailetcontainer.html" title="Mailet Container">Mailet Container</a> + </li> + <li class="none"> + <a href="feature-queue-priority.html" title="Queue Priority">Queue Priority</a> + </li> + <li class="none"> + <a href="feature-persistence.html" title="Persistence">Persistence</a> + </li> + <li class="none"> + <a href="feature-protocols.html" title="Protocols">Protocols</a> + </li> + <li class="none"> + <a href="feature-smtp-hooks.html" title="SMTP Hooks">SMTP Hooks</a> + </li> + <li class="none"> + <a href="feature-performance.html" title="Performance">Performance</a> + </li> + <li class="none"> + <a href="feature-security.html" title="Security">Security</a> + </li> + </ul> + <h5>User Manual</h5> + <ul> + <li class="none"> + <a href="quick-start.html" title="1. Quick Start">1. Quick Start</a> + </li> + <li class="none"> + <a href="install.html" title="2. Install James">2. Install James</a> + </li> + <li class="collapsed"> + <a href="config.html" title="3. Configure James">3. Configure James</a> + </li> + <li class="collapsed"> + <a href="manage.html" title="4. Manage">4. Manage</a> + </li> + <li class="collapsed"> + <a href="monitor.html" title="5. Monitor">5. Monitor</a> + </li> + <li class="collapsed"> + <a href="upgrade.html" title="6. Upgrade">6. Upgrade</a> + </li> + </ul> + <h5>Developers Corner</h5> + <ul> + <li class="none"> + <a href="dev.html" title="Architecture">Architecture</a> + </li> + <li class="none"> + <a href="dev-build.html" title="Build from source">Build from source</a> + </li> + <li class="none"> + <a href="dev-database-schema.html" title="Database Schema">Database Schema</a> + </li> + <li class="collapsed"> + <a href="dev-extend.html" title="Develop Extensions">Develop Extensions</a> + </li> + <li class="expanded"> + <strong>Provided Extensions</strong> + <ul> + <li class="none"> + <a href="dev-provided-mailets.html" title="Mailets">Mailets</a> + </li> + <li class="none"> + <a href="dev-provided-matchers.html" title="Matchers">Matchers</a> + </li> + <li class="none"> + <a href="dev-provided-smtp-hooks.html" title="SMTP Hooks">SMTP Hooks</a> + </li> + </ul> + </li> + </ul> + <h5>References</h5> + <ul> + <li class="none"> + <a href="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> + </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="../../team-list.html" title="Who We Are">Who We Are</a> + </li> + <li class="none"> + <a href="../../license.html" title="License">License</a> + </li> + <li class="none"> + <a href="../../thanks.html" title="Thanks">Thanks</a> + </li> + <li class="none"> + <a href="../../support.html" title="Professional support">Professional support</a> + </li> + </ul> + <h5>Download</h5> + <ul> + <li class="none"> + <a href="../../download.cgi" title="Releases">Releases</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>James Provided Extensions<a name="James_Provided_Extensions"></a></h2> + + +<div class="section"> +<h3>Provided Mailet<a name="Provided_Mailet"></a></h3> + + +<p>See the <a href="dev-provided-mailets.html">provided mailets</a> page for more information.</p> + + </div> + + +<div class="section"> +<h3>Provided Matcher<a name="Provided__Matcher"></a></h3> + + +<p>See the <a href="dev-provided-mailets.html">provided matchers</a> page for more information.</p> + + </div> + + +<div class="section"> +<h3>Provided SMTP Hook<a name="Provided_SMTP_Hook"></a></h3> + + +<p>See the <a href="dev-provided-smtp-hooks.html">provided SMTP Hooks</a> page for more information.</p> + + </div> + +</div> + + + + + </div> + </div> + <div class="clear"> + <hr/> + </div> + <div id="footer"> + <div class="xright">Copyright © 2002-2016 + <a href="https://www.apache.org/">The Apache Software Foundation</a>. + All Rights Reserved. + + </div> + <div class="clear"> + <hr/> + </div> + </div> + </body> +</html> http://git-wip-us.apache.org/repos/asf/james-site/blob/f81a00ef/content/server/dev.html ---------------------------------------------------------------------- diff --git a/content/server/dev.html b/content/server/dev.html new file mode 100644 index 0000000..199c0c8 --- /dev/null +++ b/content/server/dev.html @@ -0,0 +1,528 @@ +<?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 2016-12-06 --> +<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 Server 3.0 - + Apache James Server 3 - Develop on James</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="20161206" /> + <meta http-equiv="Content-Language" content="en" /> + +<link title="DOAP" rel="meta" type="application/rdf+xml" href="http://james.apache.org//doap_james-project.rdf"/> + <script type="text/javascript" src="./js/dev.js"></script> + <!-- 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="Apache James Server 3.0" /> + </a> + <a href="http://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: 2016-12-06</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="../../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>Overview</h5> + <ul> + <li class="none"> + <a href="index.html" title="Introduction">Introduction</a> + </li> + <li class="none"> + <a href="release-notes.html" title="Release Notes">Release Notes</a> + </li> + </ul> + <h5>Features</h5> + <ul> + <li class="none"> + <a href="feature-mailetcontainer.html" title="Mailet Container">Mailet Container</a> + </li> + <li class="none"> + <a href="feature-queue-priority.html" title="Queue Priority">Queue Priority</a> + </li> + <li class="none"> + <a href="feature-persistence.html" title="Persistence">Persistence</a> + </li> + <li class="none"> + <a href="feature-protocols.html" title="Protocols">Protocols</a> + </li> + <li class="none"> + <a href="feature-smtp-hooks.html" title="SMTP Hooks">SMTP Hooks</a> + </li> + <li class="none"> + <a href="feature-performance.html" title="Performance">Performance</a> + </li> + <li class="none"> + <a href="feature-security.html" title="Security">Security</a> + </li> + </ul> + <h5>User Manual</h5> + <ul> + <li class="none"> + <a href="quick-start.html" title="1. Quick Start">1. Quick Start</a> + </li> + <li class="none"> + <a href="install.html" title="2. Install James">2. Install James</a> + </li> + <li class="collapsed"> + <a href="config.html" title="3. Configure James">3. Configure James</a> + </li> + <li class="collapsed"> + <a href="manage.html" title="4. Manage">4. Manage</a> + </li> + <li class="collapsed"> + <a href="monitor.html" title="5. Monitor">5. Monitor</a> + </li> + <li class="collapsed"> + <a href="upgrade.html" title="6. Upgrade">6. Upgrade</a> + </li> + </ul> + <h5>Developers Corner</h5> + <ul> + <li class="none"> + <strong>Architecture</strong> + </li> + <li class="none"> + <a href="dev-build.html" title="Build from source">Build from source</a> + </li> + <li class="none"> + <a href="dev-database-schema.html" title="Database Schema">Database Schema</a> + </li> + <li class="collapsed"> + <a href="dev-extend.html" title="Develop Extensions">Develop Extensions</a> + </li> + <li class="collapsed"> + <a href="dev-provided.html" title="Provided Extensions">Provided Extensions</a> + </li> + </ul> + <h5>References</h5> + <ul> + <li class="none"> + <a href="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> + </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="../../team-list.html" title="Who We Are">Who We Are</a> + </li> + <li class="none"> + <a href="../../license.html" title="License">License</a> + </li> + <li class="none"> + <a href="../../thanks.html" title="Thanks">Thanks</a> + </li> + <li class="none"> + <a href="../../support.html" title="Professional support">Professional support</a> + </li> + </ul> + <h5>Download</h5> + <ul> + <li class="none"> + <a href="../../download.cgi" title="Releases">Releases</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>High Level Architecture<a name="High_Level_Architecture"></a></h2> + + <a href="images/uml/org.apache.james-package_large.png" id="high-level-arch-img-id"><img src="images/uml/org.apache.james-package_small.png" alt="" /></a> + +<p><a href="images/uml/org.apache.james-package_large.png" id="high-level-arch-txt-id">Click to enlarge image</a></p> + + +<p>James is a multi-protocol message processing and storage engine. James + currently consists of: + </p> +<ul> + +<li>Four mail protocol services: SMTP, POP3, IMAP4 and LMTP.</li> + +<li>Support for SMTP Auth.</li> + +<li>A remote administration server.</li> + <!-- <li>an NNTP server,</li> --> + +<li>Support for TLS/SSL.</li> + +<li>A mail processing engine that supports the Mailet API.</li> + +<li>File-system message storage and a message storage interface to RDBMS's.</li> + +<li>File-system user record storage and an experimental interface to LDAP directories.</li> + </ul> + + + +<p>The mail protocol services use the mailbox librairies to fetch/store mails.</p> + + +<p>When a mail arrives via SMTP, it gets processed by the SMTP services and is placed + in a Apache ActiveMQ queue (ActiveMQ is the Java Messaging Service JMS implementation at Apache)</p> + + +<p>This allow to decouple mail spooling from the rest of the incoming traffic.</p> + + +<p>After being the put in the queue, the mailetcontainer is responsible to get the + next mail to process from the ActiveMQ queue.</p> + + +<p>The mailets defined in mailetcontainer.xml are applied to define if the mail is to be + treated as a Local or Remote delivery.</p> + + +<p>The Local and Remote deliveries are treated by their corresponding mailet.</p> + + +<p>The LocalDelivery mailet uses the SieveMailet which uses the mailbox/message manager to store the mail.</p> + + +<p>The result of the mail can be either:</p> + +<ul> + +<li>Gets stored in the mailbox.</li> + +<li>Gets relayed to another server.</li> + +<li>Gets relayed to another server.</li> + +<li>Gets bounced back if it can not be handle by the james instance (this may happen during a previous step)</li> + +<li>Gets stored in the "mailstore" which is a special format for spam, virus,... (in future release, we may also store those mails in the mailbox).</li> + </ul> + </div> + + +<div class="section"> +<h2>Technical Architecture<a name="Technical_Architecture"></a></h2> + + <a href="images/uml/org.apache.james-package-detail_large.png" id="arch-img-id"><img src="images/uml/org.apache.james-package-detail_small.png" alt="" /></a> + +<p><a href="images/uml/org.apache.james-package-detail_large.png" id="arch-txt-id">Click to enlarge image</a></p> + + +<p>James uses many other components: Spring, ActiveMQ, OpenJPA, Netty, Jackrabbit, Derby...</p> + + +<p>The modules can be classified into 3 categories:</p> + +<ul> + +<li>API: They do not include implementation details, they do not have dependencies (or at most they have very common dependencies like mailet-api, javamail, commons-logging).</li> + +<li>Library: They only depend on API modules or external jars. They don't depend on other internal libraries. These libraries should be shared by functions (no need to have a Library when it is used only by a function).</li> + +<li>Functions: Everything else. It is harder to see a case of "direct" reuse of a function jar. Most times we'll only have code reuse. It is preferable to limit Function to Functions dependencies.</li> + </ul> + + </div> + + +<div class="section"> +<h2>Server Coding Guidelines<a name="Server_Coding_Guidelines"></a></h2> + + +<p>LogEnabled interface as the preferred way, except for non-server code and classes that have no bean definition. + LogEnabled should be used wherever logging is needed and no "session-scoped" Log is provided.</p> + + </div> + + +<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.4 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="dev-provided-mailets.html">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 well known + frameworks such as Spring, ActiveMQ, OpenJPA, Netty,..., 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.</p> + + +<p>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.</p> + + +<p>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.</p> + + +<p>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 © 2002-2016 + <a href="https://www.apache.org/">The Apache Software Foundation</a>. + All Rights Reserved. + + </div> + <div class="clear"> + <hr/> + </div> + </div> + </body> +</html> http://git-wip-us.apache.org/repos/asf/james-site/blob/f81a00ef/content/server/feature-mailetcontainer.html ---------------------------------------------------------------------- diff --git a/content/server/feature-mailetcontainer.html b/content/server/feature-mailetcontainer.html new file mode 100644 index 0000000..d317619 --- /dev/null +++ b/content/server/feature-mailetcontainer.html @@ -0,0 +1,463 @@ +<?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 2016-12-06 --> +<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 Server 3.0 - + Apache James Server 3 - Mailet API</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="20161206" /> + <meta http-equiv="Content-Language" content="en" /> + +<link title="DOAP" rel="meta" type="application/rdf+xml" href="http://james.apache.org//doap_james-project.rdf"/> + + <!-- 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="Apache James Server 3.0" /> + </a> + <a href="http://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: 2016-12-06</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="../../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>Overview</h5> + <ul> + <li class="none"> + <a href="index.html" title="Introduction">Introduction</a> + </li> + <li class="none"> + <a href="release-notes.html" title="Release Notes">Release Notes</a> + </li> + </ul> + <h5>Features</h5> + <ul> + <li class="none"> + <strong>Mailet Container</strong> + </li> + <li class="none"> + <a href="feature-queue-priority.html" title="Queue Priority">Queue Priority</a> + </li> + <li class="none"> + <a href="feature-persistence.html" title="Persistence">Persistence</a> + </li> + <li class="none"> + <a href="feature-protocols.html" title="Protocols">Protocols</a> + </li> + <li class="none"> + <a href="feature-smtp-hooks.html" title="SMTP Hooks">SMTP Hooks</a> + </li> + <li class="none"> + <a href="feature-performance.html" title="Performance">Performance</a> + </li> + <li class="none"> + <a href="feature-security.html" title="Security">Security</a> + </li> + </ul> + <h5>User Manual</h5> + <ul> + <li class="none"> + <a href="quick-start.html" title="1. Quick Start">1. Quick Start</a> + </li> + <li class="none"> + <a href="install.html" title="2. Install James">2. Install James</a> + </li> + <li class="collapsed"> + <a href="config.html" title="3. Configure James">3. Configure James</a> + </li> + <li class="collapsed"> + <a href="manage.html" title="4. Manage">4. Manage</a> + </li> + <li class="collapsed"> + <a href="monitor.html" title="5. Monitor">5. Monitor</a> + </li> + <li class="collapsed"> + <a href="upgrade.html" title="6. Upgrade">6. Upgrade</a> + </li> + </ul> + <h5>Developers Corner</h5> + <ul> + <li class="none"> + <a href="dev.html" title="Architecture">Architecture</a> + </li> + <li class="none"> + <a href="dev-build.html" title="Build from source">Build from source</a> + </li> + <li class="none"> + <a href="dev-database-schema.html" title="Database Schema">Database Schema</a> + </li> + <li class="collapsed"> + <a href="dev-extend.html" title="Develop Extensions">Develop Extensions</a> + </li> + <li class="collapsed"> + <a href="dev-provided.html" title="Provided Extensions">Provided Extensions</a> + </li> + </ul> + <h5>References</h5> + <ul> + <li class="none"> + <a href="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> + </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="../../team-list.html" title="Who We Are">Who We Are</a> + </li> + <li class="none"> + <a href="../../license.html" title="License">License</a> + </li> + <li class="none"> + <a href="../../thanks.html" title="Thanks">Thanks</a> + </li> + <li class="none"> + <a href="../../support.html" title="Professional support">Professional support</a> + </li> + </ul> + <h5>Download</h5> + <ul> + <li class="none"> + <a href="../../download.cgi" title="Releases">Releases</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>MailetContainer<a name="MailetContainer"></a></h2> + + +<div class="section"> +<h3>Introduction<a name="Introduction"></a></h3> + + +<p>James separates the services that deliver mail to James (i.e. SMTP, FetchMail) + from the engine that processes mail after it is received by James. The + SpoolManager component is James' mail processing engine. James' SpoolManager component + is also called the Mailet container. It is these mailets and matchers that actually carry out mail processing.</p> + + +<p>More on the configuration of the SpoolManager and the Mailet API can be found <a href="config-mailetcontainer.html">here</a>.</p> + + </div> + + +<div class="section"> +<h3>Matchers and Mailets<a name="Matchers_and_Mailets"></a></h3> + + +<p>Core to the SpoolManager operation are Matchers and Mailets. A Matcher is a + simple object that checks whether a mail message matches a particular condition. + A mailet is another type object that processes an email message in some way. Some + typical tasks appropriate for a mailet would be adding a header, delivering the message + to a local repository, or handling remote delivery. Both the Matcher and Mailet APIs are + public, allowing James users to write their own custom matchers and mailets. James + comes with a large set of pre-built matchers and mailets.</p> + + +<p>Matchers and mailets are used in pairs. At each stage in processing a message is checked + against a matcher. The matcher will attempt to match the mail message. The match is not simply + a yes or no issue. Instead, the match method returns a collection of matched recipients. If the + this collection of matched recipients is empty, the mailet is not invoked. If the collection of + matched recipients is the entire set of original recipients, the mail is then processed by the + associated mailet. Finally, if the matcher only matches a proper subset of the original recipients, + the original mail is duplicated. The recipients for one message are set to the matched recipients, + and that message is processed by the mailet. The recipients for the other mail are set to the + non-matching recipients, and that message is not processed by the mailet.</p> + + </div> + + +<div class="section"> +<h3>Processors<a name="Processors"></a></h3> + + +<p>One level up from the matchers and mailets are the processors. Each processor + is a list of matcher/mailet pairs. During mail processing, mail messages will be + processed by each pair, in order. In most cases, the message will be processed by + all the pairs in the processor. However, it is possible for a mailet to change the + state of the mail message so it is immediately directed to another processor, and no + additional processing occurs in the current processor. Typically this occurs when the mailet + wants to prevent future processing of this message (i.e. the mail message has been delivered locally, + and hence requires no further processing) or when the mail message has been identified + as a candidate for special processing (i.e. the message is spam and thus should be + routed to the spam processor). Because of this redirection, the processors in the + SpoolManager form a tree. The root processor, which must be present, is the root of + this tree.</p> + + </div> + + +<div class="section"> +<h3>SpoolManager<a name="SpoolManager"></a></h3> + + +<p>The SpoolManager continually checks for mail in the spool repository. When + mail is first found in the repository, it is delivered to the root processor. + Mail can be placed on this spool from a number of sources (SMTP, FetchPOP, a + custom component). This spool repository is also used for storage of mail that is + being redirected from one processor to another. Mail messages are driven through + the processor tree until they reach the end of a processor or are marked completed + by a mailet.</p> + + +<p>More on configuration of the SpoolManager can be found <a href="config-mailetcontainer.html">here</a>.</p> + + +<p>Much of the power of James lies in the SpoolManager component. Custom matchers and + mailets can be easily developed to address an administrator's particular needs. The + processor tree can easily be configured to sort, filter, and deliver mail based on any + number of criteria. Mail administrators new to James should spend some time learning how + to configure the SpoolManager to meet their needs.</p> + + </div> + + +<div class="section"> +<h3>Mailet API<a name="Mailet_API"></a></h3> + + +<p>The Mailet API is a simple API used to build mail processing applications. James is a Mailet + container, allowing administrators to deploy Mailets (both custom and pre-made) to carry out a + variety of complex mail processing tasks. In the default configuration James uses Mailets to carry + out a number of tasks that are carried out deep in the source code of other mail servers (i.e. list + processing, remote and local delivery).</p> + + +<p>As it stands today, the Mailet API defines interfaces for both Matchers and Mailets.</p> + + +<ul> + +<li>Matchers, as their name would suggest, match mail messages against certain conditions. They + return some subset (possibly the entire set) of the original recipients of the message if there + is a match. An inherent part of the Matcher contract is that a Matcher should not induce any changes + in a message under evaluation.</li> + +<li>Mailets are responsible for actually processing the message. They may alter the message in any fashion, + or pass the message to an external API or component. This can include delivering a message to its destination + repository or SMTP server.</li> + </ul> + + +<p>The Mailet API is currently in its second revision. Although, the Mailet API is expected to undergo substantial changes in the near future, it is our aim that existing Mailets that abided purely by the prior Mailet API interfaces will continue to run with the revised specification.</p> + + +<p>The Javadoc for the Mailet API can be found <a class="externalLink" href="http://james.apache.org/mailet/api/apidocs/">here</a>.</p> + + +<p>James bundles a number of Matchers and Mailets in its distribution. Descriptions of provided matchers + can be found <a href="dev-provided-matchers.html">here</a>, while descriptions of provided mailets can be found + <a href="dev-provided-mailets.html">here</a>.</p> + + +<p>You can read more on mailets on following web sites:</p> + + +<ul> + +<li><a class="externalLink" href="http://james.apache.org/mailet/index.html">Mailet Site</a></li> + +<li><a class="externalLink" href="http://james.apache.org/mailet/api/index.html">Mailet API</a></li> + +<li><a class="externalLink" href="http://james.apache.org/mailet/base/index.html">Mailet Toolkit</a></li> + +<li><a class="externalLink" href="http://james.apache.org/mailet/crypto/index.html">Mailet Crypto</a></li> + +<li><a class="externalLink" href="http://james.apache.org/mailet/standard/index.html">Mailet Sieve</a></li> + +<li><a class="externalLink" href="http://james.apache.org/mailet/standard/index.html">Mailet Standard</a></li> + +<li><a class="externalLink" href="http://james.apache.org/mailet/maven-mailetdocs-plugin/index.html">Mailet Docs</a></li> + +<li><a href="/james-server-mailets-function/mailet-report.html">Server Mailets</a></li> + </ul> + + </div> + + </div> + + + + + </div> + </div> + <div class="clear"> + <hr/> + </div> + <div id="footer"> + <div class="xright">Copyright © 2002-2016 + <a href="https://www.apache.org/">The Apache Software Foundation</a>. + All Rights Reserved. + + </div> + <div class="clear"> + <hr/> + </div> + </div> + </body> +</html> --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
