james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Norman Maurer ...@byteaction.de>
Subject Proposal: SMTPServer api and add more support for be pluggable ( like mailets)
Date Mon, 19 Jun 2006 05:42:51 GMT
Hi guys,

when working on the greylist handler again i get stuck on the momentan
smtpserver api. It works with more then one handler per command, but how
it works is not the best thing anyway. So i started to think about how
we could make it more pluggable for developers to add new features of
the needed commandHandlers.

After  a while i thought about qpsmtpd (http://smtpd.develooper.com/)
and how it get managed there ( we used this in the past). And for me it
seems a very good api!. So maybe we could do some simalour. So here is
what i thought about in detail:

This whould be the simplies configuration:

<handler command="RCPT" class="org.apache.james.smtpserver.rcpt.RcptCmdHandler">
    <response_class ="org.org.apache.james.smtpserver.core.ResponseHandler">

Configuration with optinal filters:

<handler command="RCPT" class="org.apache.james.smtpserver.rcpt.RcptCmdHandler">
    <filter_class ="org.apache.james.smtpserver.rcpt.GreylistHandler">
    <filter_class ="org.apache.james.smtpserver.rcpt.MaxRcptHandler">
        <maxRcpt> 2 </maxRcpt>
    <filter_class ="org.apache.james.smtpserver.rcpt.TarpitHandler">
        <tarpitRcptCount> 0 </tarpitRcptCount>
        <tarpitSleepTime> 5000 </tarpitSleepTime>    
    <response_class ="org.apache.james.smtpserver.core.ResponseHandler">

And this is how it could work:

This class do exact the same thing it does yet. The only diffrence
should be that it set the response string in the STATE_MAP and not write
it by self or something simular.


Check if no blocking responseString is allready set, if noone is set it
get called. Otherwise it skip the handler.


See Above.


See Above.


This class get called as the last. It react based on the STATE_MAP. 

All filter_classes should be extend an abstract class which over the
needed core functions and the to implementate methods like the class
CommandHandler allready offer.

This is what i had in my mind last night. Any Feedback questions are
very welcome.


Ps: The good think is if we add a hardcoded smtpHandlerChain like
Stefano allready did for pop3Handler we could be change such thinks
without break most configs.


View raw message