http://git-wip-us.apache.org/repos/asf/james-site/blob/f81a00ef/content/server/dev-extend-mailet.html
----------------------------------------------------------------------
diff --git a/content/server/dev-extend-mailet.html 
b/content/server/dev-extend-mailet.html
new file mode 100644
index 0000000..0cc0a9e
--- /dev/null
+++ b/content/server/dev-extend-mailet.html
@@ -0,0 +1,523 @@
+<?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 - Writing a Custom Mailet</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="expanded">
+                          <a href="dev-extend.html" title="Develop 
Extensions">Develop Extensions</a>
+                    <ul>
+                      <li class="none">
+            <strong>Mailet</strong>
+          </li>
+                      <li class="none">
+                          <a href="dev-extend-matcher.html" 
title="Matcher">Matcher</a>
+            </li>
+                      <li class="none">
+                          <a href="dev-extend-smtp-hook.html" title="SMTP 
Hook">SMTP Hook</a>
+            </li>
+              </ul>
+        </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>Writing a Custom Mailet<a name="Writing_a_Custom_Mailet"></a></h2>
+
+  
+<p>
+    Implementing a custom mailet is generally a simple task, most of whose 
complexity 
+    lies in coding the actual work to be done by the mailet.  This is largely 
due to the 
+    simplicity of the Mailet interface and the fact that a GenericMailet class 
is provided 
+    as part of the Mailet package.
+  </p>
+  
+  
+<p>
+    In this discussion we will assume that any mailet being implemented is a 
subclass of 
+    GenericMailet.  The GenericMailet class serves to abstract away of the 
configuration and 
+    logging details.  While it provides a noop implementation of the init() 
and destroy() methods, 
+    these can be easily overridden to provide useful functionality.
+  </p>
+  
+  
+<p>
+    In general, the only four methods that you should need to implement are 
init(), destroy(), 
+    getMailetInfo(), and service(Mail).  And only the last is required in all 
cases.
+  </p>
+  
+  
+<div class="section">
+<h3>Configuration<a name="Configuration"></a></h3>
+    
+<p>
+      As described in the <a href="config-mailetcontainer.html">SpoolManager 
configuration 
+      section</a>, mailets are configured with a set of String (name, value) 
pairs.  These values are
+      passed into the Mailet upon initialization (although the details of this 
process are hidden by 
+      the GenericMailet implementation).  GenericMailet provides access to 
this configuration 
+      information through use of the getInitParameter(String) method.  Passing 
in the name of the 
+      requested configuration value will yield the value if set, and null 
otherwise.  Configuration 
+      values are available inside the init(), destroy(), and service(Mail) 
methods.
+    </p>
+  </div>
+  
+  
+<div class="section">
+<h3>Logging<a name="Logging"></a></h3>
+  
+    
+<p>
+      There is a simple logging mechanism provided by the Mailet API.  It does 
not support 
+      logging levels, so any log filtering will have to be implemented in the 
Mailet code.  
+      Logging is done by calling one of the two logging methods on 
GenericMailet - log(String) 
+      or log(String,Throwable).  Logging is available inside the init(), 
destroy(), and service(Mail)
+      methods.
+    </p>
+    
+<p>
+      Please note that the log() method logs with DEBUG level. You will need 
to define that DEBUG level
+      in the log4j.properties.
+    </p>
+    
+<p>
+      The value of getMailetInfo() for the Mailet is prepended to the log 
entries for that 
+      Mailet.  So it may be desirable for you to override this method so you 
can distinguish mailet
+      log entries by Mailet.
+    </p>
+    
+<p>
+      Alternatively, you can instanciate your own logger and log with 
different level, as show in the
+      following snippet (don't forget to update the log4j.properties so you 
log are taken into account).
+    </p>
+
+
+<div class="source">
+<pre>
+package com.test;
+
+import javax.mail.MessagingException;
+
+import org.apache.mailet.Mail;
+import org.apache.mailet.base.GenericMailet;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class MyMailet extends GenericMailet{
+  private static final Logger logger = LoggerFactory.getLogger(MyMailet.class);
+  @Override
+  public void service(Mail mail) throws MessagingException {
+    log(&quot;log via mailet logger with INFO level&quot;);
+    logger.info(&quot;Log via slf4j with INFO level !!! Add 
log4j.logger.com.test=INFO, CONS, FILE in the log4j.properties&quot;);
+    logger.debug(&quot;Log via slf4j with DEBUG level !!! Add 
log4j.logger.com.test=DEBUG, CONS, FILE in the log4j.properties&quot;);
+  }
+}
+</pre></div>
+</div>
+
+
+<div class="section">
+<h3>Initialization<a name="Initialization"></a></h3>
+  
+<p>
+    As part of the Mailet lifecycle, a Mailet is guaranteed to be initialized 
immediately after 
+    being instantiated.  This happens once and only once for each Mailet 
instance.  The 
+    Initialization phase is where configuration parsing and per-Mailet 
resource creation generally 
+    take place.  Depending on your Mailet, it may or may not be necessary to 
do any initialization 
+    of the mailet.  Initialization logic is implemented by overriding the 
init() method of 
+    GenericMailet.
+  </p>
+</div>
+
+
+<div class="section">
+<h3>Servicing<a name="Servicing"></a></h3>
+  
+<p>
+    The bulk of the Mailet logic is expected to be invoked from the 
service(Mail) method.  This 
+    method is invoked each time a mail message is to be processed by the 
mailet.  The message is 
+    passed in as an instance of the Mail interface, which is part of the 
Mailet API.</p>
+    
+<p>The Mail interface is essentially a light wrapper around JavaMail's 
MimeMessage class with a 
+    few important differences.  See the Javadoc for the interface for a 
description of the additional
+    methods available on this wrapper.
+  </p>
+</div>
+
+
+<div class="section">
+<h3>Destruction<a name="Destruction"></a></h3>
+  
+<p>
+    As part of the Mailet lifecycle, a Mailet is guaranteed to be destroyed 
when the container 
+    cleans up the Mailet.  This happens once and only once for each Mailet 
instance.  The 
+    Destruction phase is where per-Mailet resource release generally takes 
place.  Depending 
+    on your Mailet, it may or may not be necessary to do any destruction 
+    of the mailet.  Destruction logic is implemented by overriding the 
destroy() method of 
+    GenericMailet.
+  </p>
+</div>
+
+</div>
+
+
+<div class="section">
+<h2>Deploying a Custom Mailet<a name="Deploying_a_Custom_Mailet"></a></h2>
+
+  
+<p>
+    Once a Mailet has been successfully implemented there are only a couple of 
+    additional steps necessary to actually deploy the Mailet.
+  </p>
+  
+  
+<div class="section">
+<h3>Adding Your Mailet to the Classpath<a 
name="Adding_Your_Mailet_to_the_Classpath"></a></h3>
+    
+<p>
+      The Mailet must be added to James' classpath so that the Mailet can be 
loaded by James.  There 
+      are two ways to add a custom Mailet to the classpath so that James will 
be able to load the 
+      Mailet.  These are:
+    </p>
+    
+<p>
+      1a. Download the source distribution, add a jar file containing the 
custom files to the lib 
+      directory of the unpacked source distribution, and build a new 
.tar.gz/zip file by following the 
+      directions <a href="build-instructions.html">here</a>.  This new 
tar.gz/zip file will now 
+      include your custom classes.
+    </p>
+    
+<p>
+    or
+    </p>
+    
+<p>
+      1b. Place a jar file containing the custom class files in
+      /path/to/james/conf/lib/ subdirectory.
+    </p>
+    
+<p>
+      2. The mailetpackages entity is no longer required, the class attribute 
of mailets and matchers now takes a fully qualified class name e.g.
+    
+<p>
+</p>
+<div class="source">
+<pre>
+&lt;mailet match=&quot;All&quot; 
class=&quot;com.your.company.MyMailet&quot;/&gt;
+</pre></div>
+    
+    After that, restart James server.
+    
+  </div>
+
+  
+<div class="section">
+<h3>James Configuration<a name="James_Configuration"></a></h3>
+    
+<p>Configuration of the processor chain is discussed 
+    <a href="config-mailetcontainer.html">elsewhere</a> in this documentation. 
 The 
+    details of configuring mailet deployment is discussed at length.  Here we 
will only comment 
+    that it is important to add the appropriate mailet package for your custom 
mailet to the 
+    &lt;mailetpackages&gt; list and that the name of your mailet should not 
conflict with any of 
+    the mailets described <a href="dev-provided-mailets.html">here</a>.
+    </p>
+  </div>
+
+</div>
+
+
+
+
+      </div>
+    </div>
+    <div class="clear">
+      <hr/>
+    </div>
+    <div id="footer">
+      <div class="xright">Copyright &#169;                    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-extend-matcher.html
----------------------------------------------------------------------
diff --git a/content/server/dev-extend-matcher.html 
b/content/server/dev-extend-matcher.html
new file mode 100644
index 0000000..bacc806
--- /dev/null
+++ b/content/server/dev-extend-matcher.html
@@ -0,0 +1,493 @@
+<?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 - Writing a Custom Matcher</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="expanded">
+                          <a href="dev-extend.html" title="Develop 
Extensions">Develop Extensions</a>
+                    <ul>
+                      <li class="none">
+                          <a href="dev-extend-mailet.html" 
title="Mailet">Mailet</a>
+            </li>
+                      <li class="none">
+            <strong>Matcher</strong>
+          </li>
+                      <li class="none">
+                          <a href="dev-extend-smtp-hook.html" title="SMTP 
Hook">SMTP Hook</a>
+            </li>
+              </ul>
+        </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>Writing a Custom Matcher<a name="Writing_a_Custom_Matcher"></a></h2>
+
+
+<p>Implementing a custom matcher is generally a simple task, most of whose 
complexity 
+lies in coding the actual work to be done by the matcher.  This is largely due 
to the 
+simplicity of the Matcher interface and the fact that a couple of abstract 
Matcher template
+classes are provided in the Mailet package.  These two classes, GenericMatcher 
and 
+GenericRecipientMatcher, greatly simplfy the task of Matcher authoring.</p>
+
+<p>As discussed elsewhere in this manual, the Matcher interface does not 
simply match 
+or not match a particular message.  Rather, it returns some subset of the 
original message
+recipients as a result of the match(Mail) method.  This leads to the two 
different abstract
+Matcher implementations.</p>
+
+<p>The first, GenericMatcher, is intended for matchers where recipient 
evaluation is not 
+necessary.  Basically, you should subclass this implementation if your matcher 
is going to 
+return all or none of the recipients.</p>
+
+<p>When subclassing this class, there are four methods that potentially need 
to be 
+overridden.  These are getMatcherInfo(), init(), match(Mail), and destroy().  
More on these 
+anon.</p>
+
+<p>The second implementation, GenericRecipientMatcher, is intended for those 
matchers where 
+each recipient is evaluated individually.  It is a subclass of GenericMatcher, 
and inherits 
+most of its behavior from that class.  The only major difference is that 
subclasses are 
+expected to override matchRecipient(MailAddress) rather than match(Mail).</p>
+
+
+<div class="section">
+<h3>Configuration<a name="Configuration"></a></h3>
+
+<p>Matchers are passed a single String as part of their configuration.  
Interpretation of this 
+list is left entirely to the body of the Matcher.  This String value is 
available in 
+the body of the Matcher through use of the getCondition() method of the 
+GenericMatcher class.  This method returns the String value passed to the 
Matcher, and returns 
+null if no value is set.  The method getCondition() is available inside the 
init(), destroy(), match(Mail), 
+and matchRecipient(MailAddress) methods.</p>
+</div>
+
+
+<div class="section">
+<h3>Logging<a name="Logging"></a></h3>
+
+<p>There is a simple logging mechanism provided by the Mailet API.  It does 
not support 
+logging levels, so any log filtering will have to be implemented in the 
Matcher code.  
+Logging is done by calling one of the two logging methods on 
GenericMatcher/GenericRecipientMatcher - log(String) 
+or log(String,Throwable).  Logging is available inside the init(), destroy(), 
match(Mail), 
+and matchRecipient(MailAddress) methods.</p>
+
+<p>The value of getMatcherInfo() for the Matcher is prepended to the log 
entries for that 
+Matcher.  So it may be desirable for you to override this method so you can 
distinguish Matcher
+log entries by Matcher.</p>
+</div>
+
+
+<div class="section">
+<h3>Initialization<a name="Initialization"></a></h3>
+
+<p>As part of the Matcher lifecycle, a Matcher is guaranteed to be initialized 
immediately after 
+being instantiated.  This happens once and only once for each Matcher 
instance.  The 
+Initialization phase is where configuration parsing and per-Matcher resource 
creation generally 
+take place.  Depending on your Matcher, it may or may not be necessary to do 
any initialization 
+of the Matcher.  Initialization logic is implemented by overriding the init() 
method of 
+GenericMatcher/GenericRecipientMatcher.</p>
+</div>
+
+
+<div class="section">
+<h3>Matching<a name="Matching"></a></h3>
+
+<p>It is the matching phase where the Matcher's work is done.  The exact form 
of this phase largely 
+depends on which Matcher superclass is subclassed.</p>
+
+<p>If GenericMatcher is being subclassed, it is the match(Mail) that is 
implemented.  As described 
+above, this method returns a Collection of MailAddresses that is a subset of 
the original 
+recipients for the Mail object.</p>
+
+<p>If it is a purely recipient-filtering Matcher, then the 
GenericRecipientMatcher should be
+subclassed.  In this case, developers must provide an implementation of the 
+matchRecipient(MailAddress) method.  This method returns true if the recipient 
matches,
+and false otherwise.</p>
+</div>
+
+
+<div class="section">
+<h3>Destruction<a name="Destruction"></a></h3>
+
+<p>As part of the Matcher lifecycle, a Matcher is guaranteed to be destroyed 
when the container 
+cleans up the Matcher.  This happens once and only once for each Matcher 
instance.  The 
+Destruction phase is where per-Matcher resource release generally takes place. 
 Depending 
+on your Matcher, it may or may not be necessary to do any destruction 
+of the Matcher.  Destruction logic is implemented by overriding the destroy() 
method of 
+GenericMatcher/GenericRecipientMatcher.</p>
+</div>
+
+</div>
+
+
+<div class="section">
+<h2>Deploying a Custom Matcher<a name="Deploying_a_Custom_Matcher"></a></h2>
+
+<p>Once a Matcher has been successfully implemented there are only a couple of 
+additional steps necessary to actually deploy the Matcher.</p>
+
+<div class="section">
+<h3>Adding Your Matcher to the Classpath<a 
name="Adding_Your_Matcher_to_the_Classpath"></a></h3>
+
+<p>
+The Matcher must be added to James' classpath so that the Matcher can be 
loaded by James.  There 
+are two ways to add a custom Matcher to the classpath so that James will be 
able to load the 
+Matcher.  These are:
+</p>
+
+<p>
+1a. Download the source distribution, add a jar file containing the custom 
files to the lib 
+directory of the unpacked source distribution, and build a new .sar file by 
following the 
+directions <a href="build-instructions.html">here</a>.  This new .sar file 
will now 
+include your custom classes.
+</p>
+
+<p>
+or
+</p>
+
+<p>
+1b. Place a jar file containing the custom class files in the lib subdirectory 
of the James
+installation.  It will also be necessary to unpack the JavaMail and James jar 
files from 
+the provided .sar file and add them to this directory.
+</p>
+
+<p>
+or
+</p>
+
+<p>
+1c. Place a jar file containing the custom class files in
+/path/to/james/conf/lib/ subdirectory.
+</p>
+
+<p>
+2. After this is done get sure you add the matcher package to the 
mailetcontainer.xml. For example: 
+
+<p>
+</p>
+<div class="source">
+<pre>
+&lt;!-- Set the Java packages from which to load mailets and matchers --&gt;
+&lt;matcherpackages&gt;
+    
&lt;matcherpackage&gt;org.apache.james.transport.matchers&lt;/matcherpackage&gt;
+    
&lt;matcherpackage&gt;org.apache.james.transport.matchers.smime&lt;/matcherpackage&gt;
+    
&lt;matcherpackage&gt;your.costum.package.transport-matchers&lt;/matcherpackage&gt;
+&lt;/matcherpackages&gt;
+</pre></div>
+
+After that restart james.
+
+</div>
+
+
+<div class="section">
+<h3>James Configuration<a name="James_Configuration"></a></h3>
+
+<p>Configuration of the processor chain is discussed 
+<a href="config-mailetcontainer.html">elsewhere</a> in this documentation.  
The 
+details of configuring matcher deployment is discussed at length.  Here we 
will only comment 
+that it is important to add the appropriate matcher package for your custom 
matcher to the 
+&lt;matcherpackages&gt; list and that the name of your matcher should not 
conflict with any of 
+the matchers described <a href="dev-provided-matchers.html">here</a>.
+</p>
+</div>
+
+</div>
+
+
+
+      </div>
+    </div>
+    <div class="clear">
+      <hr/>
+    </div>
+    <div id="footer">
+      <div class="xright">Copyright &#169;                    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-extend-smtp-hook.html
----------------------------------------------------------------------
diff --git a/content/server/dev-extend-smtp-hook.html 
b/content/server/dev-extend-smtp-hook.html
new file mode 100644
index 0000000..a2a327f
--- /dev/null
+++ b/content/server/dev-extend-smtp-hook.html
@@ -0,0 +1,385 @@
+<?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 - James - Extend James - 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="expanded">
+                          <a href="dev-extend.html" title="Develop 
Extensions">Develop Extensions</a>
+                    <ul>
+                      <li class="none">
+                          <a href="dev-extend-mailet.html" 
title="Mailet">Mailet</a>
+            </li>
+                      <li class="none">
+                          <a href="dev-extend-matcher.html" 
title="Matcher">Matcher</a>
+            </li>
+                      <li class="none">
+            <strong>SMTP Hook</strong>
+          </li>
+              </ul>
+        </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>Custom SMTP Hooks Implementations<a 
name="Custom_SMTP_Hooks_Implementations"></a></h2>
+
+    
+<div class="section">
+<h3>Why a Custom SMTP Hook<a name="Why_a_Custom_SMTP_Hook"></a></h3>
+
+      
+<p>What to do if the Hook API is not enough for you ? You want for example 
+         to write a code which handles a new command like 
&quot;YOURCOOLCOMMAND: whatever@example&quot;.</p>
+    
+      
+<p>For this kind of needs you should implement the CommandHandler interface. 
+         This gives you a lower-level API to handle this kind of tasks. If you 
want 
+         to support a custom Hook in your <tt>CommandHandler</tt> its the best
+         to just extend <tt>AbstractHookableCmdHandler</tt>.</p>
+         
+    </div>
+
+    
+<div class="section">
+<h3>Things to Remember <a name="Things_to_Remember"></a></h3>
+
+      
+<p>Be aware that your implementation needs to be thread-safe as it will get 
used as singleton. 
+         If you need to store temporary informations within the SMTP 
Transaction/Session you should
+         use the <tt>SMTPSession.getState().put(...)</tt> 
+         and <tt>SMTPSession.getConnectionState().put(...)</tt> methods.</p>
+ 
+      
+<p>For a more explanation see the <a class="externalLink" 
href="http://james.apache.org/protocols/apidocs/index.html";>apidocs</a> 
+        for the protocols library which is used by James SMTP Server.</p>
+
+    </div>
+
+    
+<div class="section">
+<h3>Get your Hook implementations loaded<a 
name="Get_your_Hook_implementations_loaded"></a></h3>
+  
+      
+<p>Just create a jar file which contains your code and put it in 
/path/to/james/conf/lib/ 
+      folder. The jar will get picked up by the ClassLoader automatic then.</p>
+    
+      
+<p>After that open the smtpserver.xml file and add your hook to the 
<tt>&lt;handlers&gt;&lt;/handlers&gt;</tt> block in the order you 
+       want to have it executed. So if you have 2 MailHook implementation make 
sure the first one 
+       which is listed in smtpserver.xml is the one you want to call first.</p>
+
+    </div>
+
+    
+<div class="section">
+<h3>Return-Codes<a name="Return-Codes"></a></h3>
+
+      
+<p>Each of the Hooks need to return a HookResult to tell the SMTPServer 
+        if the next registered Hook should get called or not.</p>
+    
+      
+<p>For this the HookReturnCode is used.</p>
+
+    </div>
+    
+  </div>
+ 
+
+
+
+      </div>
+    </div>
+    <div class="clear">
+      <hr/>
+    </div>
+    <div id="footer">
+      <div class="xright">Copyright &#169;                    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-extend.html
----------------------------------------------------------------------
diff --git a/content/server/dev-extend.html b/content/server/dev-extend.html
new file mode 100644
index 0000000..7768748
--- /dev/null
+++ b/content/server/dev-extend.html
@@ -0,0 +1,383 @@
+<?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"/>
+                      <script type="text/javascript" 
src="./js/dev-extend.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">
+                          <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="expanded">
+            <strong>Develop Extensions</strong>
+                  <ul>
+                      <li class="none">
+                          <a href="dev-extend-mailet.html" 
title="Mailet">Mailet</a>
+            </li>
+                      <li class="none">
+                          <a href="dev-extend-matcher.html" 
title="Matcher">Matcher</a>
+            </li>
+                      <li class="none">
+                          <a href="dev-extend-smtp-hook.html" title="SMTP 
Hook">SMTP Hook</a>
+            </li>
+              </ul>
+        </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>Extend James<a name="Extend_James"></a></h2>
+
+  
+<div class="section">
+<h3>Custom Mailet<a name="Custom_Mailet"></a></h3>
+  
+    
+<p>See the <a href="dev-extend-mailet.html">mailet</a> page for more 
information.</p>
+  
+  </div>
+ 
+  
+<div class="section">
+<h3>Custom Matcher<a name="Custom_Matcher"></a></h3>
+  
+    
+<p>See the <a href="dev-extend-mailet.html">matcher</a> page for more 
information.</p>
+  
+  </div>
+ 
+  
+<div class="section">
+<h3>SMTP Hook<a name="SMTP_Hook"></a></h3>
+  
+    
+<p>See the <a href="dev-extend-hook-smtp.html">SMTP Hook</a> page for more 
information.</p>
+  
+  </div>
+ 
+  
+<div class="section">
+<h3>Mailbox Store<a name="Mailbox_Store"></a></h3>
+  
+    
+<p>See the <a class="externalLink" 
href="http://james.apache.org/mailbox";>mailbox</a> project for more 
information.</p>
+  
+  </div>
+ 
+  
+<div class="section">
+<h3>Mailbox Listeners<a name="Mailbox_Listeners"></a></h3>
+  
+    
+<p>See the <a class="externalLink" 
href="http://james.apache.org/mailbox";>mailbox</a> project for more 
information.</p>
+  
+  </div>
+ 
+  
+<div class="section">
+<h3>Queue<a name="Queue"></a></h3>
+  
+  </div>
+ 
+  
+<div class="section">
+<h3>Queue Listeners<a name="Queue_Listeners"></a></h3>
+  
+  </div>
+
+</div>
+
+
+
+
+      </div>
+    </div>
+    <div class="clear">
+      <hr/>
+    </div>
+    <div id="footer">
+      <div class="xright">Copyright &#169;                    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]

Reply via email to