<?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 Dec 28, 2012 -->
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>mailets - Team list</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="20121228" />
    <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-mailets-logo.gif">
              
                                                                            
        <img src="images/logos/james-mailets-logo.gif" alt="Apache James Project" />
                </a>
                              <a href="http://www.apache.org/index.html" id="bannerRight">
              
                                        
        <img src="images/logos/asf-logo-reduced.gif" alt="The Apache Software Foundation" />
                </a>
            <div class="clear">
        <hr/>
      </div>
    </div>
    <div id="breadcrumbs">
            
                
                <div class="xleft">
        <span id="publishDate">Last Published: 2012-12-28</span>
                      </div>
            <div class="xright">                    <a href="../index.html" title="Home">Home</a>
            |
                        <a href="../server/index.html" title="Server">Server</a>
            |
                        <a href="../hupa/index.html" title="Hupa">Hupa</a>
            |
                        <a href="../protocols/index.html" title="Protocols">Protocols</a>
            |
                        <a href="../imap/index.html" title="IMAP">IMAP</a>
            |
                        <a href="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>Mailet</h5>
                  <ul>
                  <li class="none">
                          <a href="api" title="Mailet API">Mailet API</a>
            </li>
                  <li class="none">
                          <a href="ai" title="Mailet AI">Mailet AI</a>
            </li>
                  <li class="none">
                          <a href="base" title="Basic Mailet Toolkit">Basic Mailet Toolkit</a>
            </li>
                  <li class="none">
                          <a href="crypto" title="Crypto Mailets">Crypto Mailets</a>
            </li>
                  <li class="none">
                          <a href="mailetdocs-maven-plugin" title="MailetDocs">MailetDocs</a>
            </li>
                  <li class="none">
                          <a href="../jsieve/mailet/" title="Sieve Mailet">Sieve Mailet</a>
            </li>
                  <li class="none">
                          <a href="standard" title="Standard Mailets">Standard Mailets</a>
            </li>
          </ul>
                       <h5>Useful Information</h5>
                  <ul>
                  <li class="none">
                          <a href="apidocs" title="Java Docs">Java Docs</a>
            </li>
                  <li class="none">
                          <a href="quickstart.html" title="Quick Start">Quick Start</a>
            </li>
                  <li class="none">
                          <a href="release-notes.html" title="Release Notes">Release Notes</a>
            </li>
          </ul>
                       <h5>Project Documentation</h5>
                  <ul>
                                                                                                <li class="expanded">
                          <a href="project-info.html" title="Project Information">Project Information</a>
                    <ul>
                      <li class="none">
                          <a href="license.html" title="Project License">Project License</a>
            </li>
                      <li class="none">
            <strong>Project Team</strong>
          </li>
              </ul>
        </li>
                                                                    <li class="collapsed">
                          <a href="project-reports.html" title="Project Reports">Project Reports</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>
          </ul>
                       <h5>Download</h5>
                  <ul>
                  <li class="none">
                          <a href="../download.cgi" title="Releases">Releases</a>
            </li>
                  <li class="none">
                          <a href="https://repository.apache.org/content/repositories/snapshots/org/apache/james/" title=""></a>
            </li>
          </ul>
        <h5>Apache Software Foundation</h5>
  <ul>
    <li>
      <strong>
        <a title="ASF" href="http://www.apache.org/">ASF</a>
      </strong>
    </li>
    <li>
      <a title="Get Involved" href="http://www.apache.org/foundation/getinvolved.html">Get Involved</a>
    </li>
    <li>
      <a title="FAQ" href="http://www.apache.org/foundation/faq.html">FAQ</a>
    </li>
    <li>
      <a title="License" href="http://www.apache.org/licenses/" >License</a>
    </li>
    <li>
      <a title="Sponsorship" href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
    </li>
    <li>
      <a title="Thanks" href="http://www.apache.org/foundation/thanks.html">Thanks</a>
    </li>
    <li>
      <a title="Security" href="http://www.apache.org/security/">Security</a>
    </li>
  </ul>
                       <a href="http://maven.apache.org/" title="Built by Maven" class="poweredBy">
        <img class="poweredBy" alt="Built by Maven" src="./images/logos/maven-feather.png" />
      </a>
                   
                
            </div>
    </div>
    <div id="bodyColumn">
      <div id="contentBox">
        <div class="section"><h2>The Team<a name="The_Team"></a></h2><a name="The_Team"></a><p>A successful project requires many people to play many roles. Some members write code or documentation, while others are valuable as testers, submitting patches and suggestions.</p><p>The team is comprised of Members and Contributors. Members have direct access to the source of a project and actively evolve the code-base. Contributors improve the project through submission of patches and suggestions to the Members. The number of Contributors to the project is unbounded. Get involved today. All contributions to the project are greatly appreciated.</p><div class="section"><h3>Members<a name="Members"></a></h3><a name="Members"></a><p>The following is a list of developers with commit privileges that have directly contributed to the project in one way or another.</p><table border="0" class="bodyTable"><tr class="a"><th>Id</th><th>Name</th><th>Email</th><th>Organization</th><th>Organization URL</th><th>Roles</th><th>Time Zone</th><th>Actual Time (GMT)</th><th>Properties</th></tr><tr class="b"><td><a name="bago"></a>bago</td><td>Stefano Bagnara</td><td><a class="externalLink" href="mailto:bago@apache.org">bago@apache.org</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>2</td><td><span id="developer-0">2</span></td><td>-</td></tr><tr class="a"><td><a name="norman"></a>norman</td><td>Norman Maurer</td><td><a class="externalLink" href="mailto:norman@apache.org">norman@apache.org</a></td><td>-</td><td>-</td><td>Developer, PMC Chair</td><td>2</td><td><span id="developer-1">2</span></td><td>-</td></tr><tr class="b"><td><a name="serge"></a>serge</td><td>Serge Knystautas</td><td><a class="externalLink" href="mailto:sergek@lokitech.com">sergek@lokitech.com</a></td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-2">-</span></td><td>Donator=Serge was the original donator of the James code, which has since been massively
                    improved by people smarter than him. He tries to answer questions on the listserv and make
                    code
                    contributions when he does get a rare bit of free time.</td></tr><tr class="a"><td><a name="benrdf"></a>benrdf</td><td>Bernd Fondermann</td><td><a class="externalLink" href="mailto:bf_jak@brainlounge.de">bf_jak@brainlounge.de</a></td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-3">-</span></td><td>-</td></tr><tr class="b"><td><a name="sbrewin"></a>sbrewin</td><td>Steve Brewin</td><td><a class="externalLink" href="mailto:sbrewin@synsys.com">sbrewin@synsys.com</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-4">-</span></td><td>-</td></tr><tr class="a"><td><a name="hilmer"></a>hilmer</td><td>S&#xf8;ren Hilmer</td><td><a class="externalLink" href="mailto:sh@widetrail.dk">sh@widetrail.dk</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-5">-</span></td><td>-</td></tr><tr class="b"><td><a name="noel"></a>noel</td><td>Noel J. Bergman</td><td><a class="externalLink" href="mailto:noel@devtech.com">noel@devtech.com</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-6">-</span></td><td>-</td></tr><tr class="a"><td><a name="danny"></a>danny</td><td>Danny Angus</td><td><a class="externalLink" href="mailto:danny@apache.org">danny@apache.org</a></td><td>Student Loans Company ltd</td><td><a class="externalLink" href="http://www.slc.co.uk">http://www.slc.co.uk</a></td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-7">-</span></td><td>Description=Danny is a member of the Apache Software Foundation and married father
                    of two by night, and by day works as lead technical consultant for the Student Loans
                    Company ltd.</td></tr><tr class="b"><td><a name="adc"></a>adc</td><td>Alan D. Cabrera</td><td><a class="externalLink" href="mailto:list@toolazydogs.com">list@toolazydogs.com</a></td><td>-</td><td>-</td><td>Developer</td><td>-8</td><td><span id="developer-8">-8</span></td><td>-</td></tr><tr class="a"><td><a name="hbedi"></a>hbedi</td><td>Harmeet Bedi</td><td><a class="externalLink" href="mailto:harmeet@kodemuse.com">harmeet@kodemuse.com</a></td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-9">-</span></td><td>-</td></tr><tr class="b"><td><a name="jasonw"></a>jasonw</td><td>Jason Webb</td><td><a class="externalLink" href="mailto:jw@inovem.com">jw@inovem.com</a></td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-10">-</span></td><td>-</td></tr><tr class="a"><td><a name="vincenzo"></a>vincenzo</td><td>Vincenzo Gianferrari Pini</td><td><a class="externalLink" href="mailto:vincenzo.gianferraripini@praxis.it">vincenzo.gianferraripini@praxis.it</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-11">-</span></td><td>-</td></tr><tr class="b"><td><a name="rdonkin"></a>rdonkin</td><td>Robert Burrell Donkin</td><td><a class="externalLink" href="mailto:rdonkin@apache.org">rdonkin@apache.org</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-12">-</span></td><td>-</td></tr><tr class="a"><td><a name="niklas"></a>niklas</td><td>Niklas Therning</td><td><a class="externalLink" href="mailto:niklas@apache.org">niklas@apache.org</a></td><td>Trillian AB</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-13">-</span></td><td>-</td></tr><tr class="b"><td><a name="jcheng"></a>jcheng</td><td>Joe Cheng</td><td><a class="externalLink" href="mailto:joe@joecheng.com">joe@joecheng.com</a></td><td>-</td><td>-</td><td>-</td><td>-</td><td><span id="developer-14">-</span></td><td>Description=Former author to the mime4j product</td></tr><tr class="a"><td><a name="mwiederkehr"></a>mwiederkehr</td><td>Markus Wiederkehr</td><td><a class="externalLink" href="mailto:mwiederkehr@apache.org">mwiederkehr@apache.org</a></td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-15">-</span></td><td>-</td></tr><tr class="b"><td><a name="olegk"></a>olegk</td><td>Oleg Kalnichevski</td><td><a class="externalLink" href="mailto:olegk@apache.org">olegk@apache.org</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-16">-</span></td><td>-</td></tr><tr class="a"><td><a name="manolo"></a>manolo</td><td>Manuel Carrasco Monino</td><td><a class="externalLink" href="mailto:manolo@apache.org">manolo@apache.org</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-17">-</span></td><td>-</td></tr><tr class="b"><td><a name="eric"></a>eric</td><td>Eric Charles</td><td><a class="externalLink" href="mailto:eric@apache.org">eric@apache.org</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>-</td><td><span id="developer-18">-</span></td><td>-</td></tr><tr class="a"><td><a name="felixk"></a>felixk</td><td>Felix Knecht</td><td><a class="externalLink" href="mailto:felixk@apache.org">felixk@apache.org</a></td><td>-</td><td>-</td><td>Developer, PMC Member</td><td>1</td><td><span id="developer-19">1</span></td><td>-</td></tr><tr class="b"><td><a name="ieugen"></a>ieugen</td><td>Ioan Eugen Stan</td><td><a class="externalLink" href="mailto:ieugen@apache.org">ieugen@apache.org</a></td><td>-</td><td>-</td><td>Developer</td><td>-</td><td><span id="developer-20">-</span></td><td>-</td></tr></table></div><div class="section"><h3>Contributors<a name="Contributors"></a></h3><a name="Contributors"></a><p>The following additional people have contributed to this project through the way of suggestions, patches or documentation.</p><table border="0" class="bodyTable"><tr class="a"><th>Name</th><th>Email</th><th>Properties</th></tr><tr class="b"><td>Rob Oxspring</td><td>-</td><td>Contribution=Contributed to the mime4j product</td></tr><tr class="a"><td>Roger Fullerton</td><td>-</td><td>Contribution=Wrote spfjava, the first spf implementation in java</td></tr><tr class="b"><td>Alan D. Cabrera [ADC]</td><td><a class="externalLink" href="mailto:list@toolazydogs.com">list@toolazydogs.com</a></td><td>-</td></tr><tr class="a"><td>Darrell DeBoer (DD)</td><td>-</td><td>-</td></tr><tr class="b"><td>Stephen J. McConnell (SJM)</td><td><a class="externalLink" href="mailto:mcconnell@apache.org">mcconnell@apache.org</a></td><td>-</td></tr><tr class="a"><td>Peter M. Goldstein (PG)</td><td><a class="externalLink" href="mailto:farsight@alum.mit.edu">farsight@alum.mit.edu</a></td><td>-</td></tr><tr class="b"><td>Pete Donald (PD)</td><td>-</td><td>-</td></tr><tr class="a"><td>Charles Benett (CB)</td><td><a class="externalLink" href="mailto:charles@benett1.demon.co.uk">charles@benett1.demon.co.uk</a></td><td>-</td></tr><tr class="b"><td>Federico Barbieri (FB)</td><td><a class="externalLink" href="mailto:scoobie@systemy.it">scoobie@systemy.it</a></td><td>-</td></tr><tr class="a"><td>Stuart Roebuck (SR)</td><td><a class="externalLink" href="mailto:stuart.roebuck@adolos.co.uk">stuart.roebuck@adolos.co.uk</a></td><td>-</td></tr><tr class="b"><td>Ivan Seskar (IS)</td><td><a class="externalLink" href="mailto:iseskar@upsideweb.com">iseskar@upsideweb.com</a></td><td>-</td></tr><tr class="a"><td>Prasanna Uppaladadium (PU)</td><td><a class="externalLink" href="mailto:prasanna@vayusphere.com">prasanna@vayusphere.com</a></td><td>-</td></tr><tr class="b"><td>Gabriel Bucher (GB)</td><td><a class="externalLink" href="mailto:gabriel.bucher@razor.ch">gabriel.bucher@razor.ch</a></td><td>-</td></tr><tr class="a"><td>Matthew Pangaro (MP)</td><td><a class="externalLink" href="mailto:mattp@lokitech.com">mattp@lokitech.com</a></td><td>-</td></tr><tr class="b"><td>Jason Borden (JB)</td><td><a class="externalLink" href="mailto:jborden@javasense.com">jborden@javasense.com</a></td><td>-</td></tr><tr class="a"><td>Randy Stanard (RS)</td><td><a class="externalLink" href="mailto:rstanard@lokitech.com">rstanard@lokitech.com</a></td><td>Contribution=Contributed the James logo</td></tr><tr class="b"><td>Samuel Sadek (SS)</td><td><a class="externalLink" href="mailto:Samuel.Sadek@kpmg.co.uk">Samuel.Sadek@kpmg.co.uk</a></td><td>-</td></tr><tr class="a"><td>Stephan Schiessling (SS2)</td><td><a class="externalLink" href="mailto:s@rapi.com">s@rapi.com</a></td><td>-</td></tr><tr class="b"><td>Eung-ju Park (EP)</td><td><a class="externalLink" href="mailto:colus@apache.org">colus@apache.org</a></td><td>-</td></tr><tr class="a"><td>Paul Hammant (PH)</td><td><a class="externalLink" href="mailto:Paul_Hammant@yahoo.com">Paul_Hammant@yahoo.com</a></td><td>-</td></tr><tr class="b"><td>Jeff Keyser (JK)</td><td><a class="externalLink" href="mailto:JKeyser@telocity.com">JKeyser@telocity.com</a></td><td>-</td></tr><tr class="a"><td>Andrei Ivanov (AI)</td><td><a class="externalLink" href="mailto:myfam@surfeu.fi">myfam@surfeu.fi</a></td><td>-</td></tr><tr class="b"><td>Brad Walker (BW)</td><td><a class="externalLink" href="mailto:bwalker@studentadvantage.com">bwalker@studentadvantage.com</a></td><td>-</td></tr><tr class="a"><td>Christian Buchegger (CB2)</td><td>-</td><td>email=christian.buchegger@planet-interkom.de</td></tr><tr class="b"><td>Shilpa Dalmia (SD)</td><td><a class="externalLink" href="mailto:shilpa@postx.com">shilpa@postx.com</a></td><td>-</td></tr><tr class="a"><td>Steve Short (SS3)</td><td><a class="externalLink" href="mailto:sshort@postx.com">sshort@postx.com</a></td><td>-</td></tr><tr class="b"><td>Aaron Knauf (AK)</td><td><a class="externalLink" href="mailto:aknauf@xtra.co.nz">aknauf@xtra.co.nz</a></td><td>-</td></tr><tr class="a"><td>Serge &quot;Sergei&quot; Sozonoff (SS4)</td><td><a class="externalLink" href="mailto:serge@globalbeach.com">serge@globalbeach.com</a></td><td>-</td></tr><tr class="b"><td>Kai Londenberg [KL]</td><td>-</td><td>email=kai.londenberg@my-vwclub.de</td></tr><tr class="a"><td>Mark Imel [MI]</td><td><a class="externalLink" href="mailto:james@imelshire.com">james@imelshire.com</a></td><td>-</td></tr><tr class="b"><td>Kevin Schmidt [KS]</td><td><a class="externalLink" href="mailto:ktschmidt@earthlink.net">ktschmidt@earthlink.net</a></td><td>-</td></tr><tr class="a"><td>Hontvari Jozsef [HJ]</td><td><a class="externalLink" href="mailto:hontvari2@solware.com">hontvari2@solware.com</a></td><td>-</td></tr><tr class="b"><td>Cesar Bonadio [CB3]</td><td><a class="externalLink" href="mailto:bonadio@picture.com.br">bonadio@picture.com.br</a></td><td>-</td></tr><tr class="a"><td>Marco Tedone [MT]</td><td><a class="externalLink" href="mailto:mtedone@jemos.org">mtedone@jemos.org</a></td><td>-</td></tr><tr class="b"><td>Tim Stephenson [TS]</td><td><a class="externalLink" href="mailto:tim@thestephensons.me.uk">tim@thestephensons.me.uk</a></td><td>-</td></tr><tr class="a"><td>Richard O. Hammer [ROH]</td><td><a class="externalLink" href="mailto:rohammer@earthlink.net">rohammer@earthlink.net</a></td><td>-</td></tr></table><script type="text/javascript">
function offsetDate(id, offset) {
    var now = new Date();
    var nowTime = now.getTime();
    var localOffset = now.getTimezoneOffset();
    var developerTime = nowTime + ( offset * 60 * 60 * 1000 )+ ( localOffset * 60 * 1000 );
    var developerDate = new Date(developerTime);

    document.getElementById(id).innerHTML = developerDate;
}

function init(){
    offsetDate('developer-0', '2');
    offsetDate('developer-1', '2');
    offsetDate('developer-8', '-8');
    offsetDate('developer-19', '1');
}

window.onLoad = init();
</script></div></div>
      </div>
    </div>
    <div class="clear">
      <hr/>
    </div>
    <div id="footer">
      <div class="xright">Copyright &#169;                    2008-2012
                        <a href="http://www.apache.org/">The Apache Software Foundation</a>.
            All Rights Reserved.      
                
      </div>
      <div class="clear">
        <hr/>
      </div>
    </div>
  </body>
</html>
