You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by Jerry Tian <je...@gmail.com> on 2012/05/11 09:35:46 UTC

Fwd: Want to extends James 3.x

Hi, James developers,

I need some advices on how to extend James 3.x server.

I am trying to use James as a component in a future product/service,
which James acts like a data bridge of two different services.

Service A is used by legacy mobile clients and based on IMAP protocol,
and Service B is a web service exported by a third party. I can not
change any interface/logic of these clients/services.

This is my initial thoughts on how to make all this work:

1. By intercepting IMAP commands from mobile clients, I can detect the
change made by users of service A.
2. By reading/writing data in mailbox, I can manipulate the data to
keep it in sync with service B.

I have experience with mailet development in the past, but for this
task, mailet is not sufficient, maybe even not related at all. Because
the data exchanged is not exactly normal email, send from one guy to
another: they are objects saved in a specific sub-folder of this
account's mailbox, have no recipients, more like a draft mail. And all
these operations are done  through IMAP commands. Actually, I have
written a mailet to capture all mails in the processor chain to prove
myself, and it turned out true.

I have already set up a running instance of James 3 beta 4 and a
working build environment for James 3.x, using beta 4 tag checked out
from SVN, and reading the source code of the project. The technical
architecture chat on this page(
http://james.apache.org/server/3/dev.html ) is of some help.

But I am still confused the right point to put my logic in, and so
far, I don't find there is mechanism provided in intercepting IMAP
commands and manipulating mailbox at this early stage of James 3.x.
For example, should I put the interceptors logic using classes in IMAP
processor package? How to get hold of the instances of mailbox
persistence layer? Questions like this.

Any suggestion is much appreciated.

Regards,
Jerry Tian

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


Re: Fwd: Want to extends James 3.x

Posted by Jerry Tian <je...@gmail.com>.
Hi, Eric,

These mails are very helpful, I am following some leads there.

Thank for your help.

On Fri, May 11, 2012 at 4:35 PM, Eric Charles <er...@apache.org> wrote:
> Hi Jerry,
>
> Welcome to James devs!
>
> You are not the first to ask for IMAP proxy:
> http://markmail.org/message/t44hwzrzyo3ddcel (Fabio Petagna)
> http://markmail.org/message/ecqr5klblzpmjtob (Gabe)
>
> I could repeat what said in those previous threads, and that we really need
> to come with a out-of-the-box solution to avoid that everyone spend time on
> this...
>
> The indirect, but correct, road to the solution is
> https://issues.apache.org/jira/browse/PROTOCOLS-73 where we need more
> integration on the IMAP code with the our protocols framework (beta4 upon
> which you rely has still a completely separated IMAP module).
>
> Thx, Eric
>
>
>
> On 05/11/2012 09:35 AM, Jerry Tian wrote:
>>
>> Hi, James developers,
>>
>> I need some advices on how to extend James 3.x server.
>>
>> I am trying to use James as a component in a future product/service,
>> which James acts like a data bridge of two different services.
>>
>> Service A is used by legacy mobile clients and based on IMAP protocol,
>> and Service B is a web service exported by a third party. I can not
>> change any interface/logic of these clients/services.
>>
>> This is my initial thoughts on how to make all this work:
>>
>> 1. By intercepting IMAP commands from mobile clients, I can detect the
>> change made by users of service A.
>> 2. By reading/writing data in mailbox, I can manipulate the data to
>> keep it in sync with service B.
>>
>> I have experience with mailet development in the past, but for this
>> task, mailet is not sufficient, maybe even not related at all. Because
>> the data exchanged is not exactly normal email, send from one guy to
>> another: they are objects saved in a specific sub-folder of this
>> account's mailbox, have no recipients, more like a draft mail. And all
>> these operations are done  through IMAP commands. Actually, I have
>> written a mailet to capture all mails in the processor chain to prove
>> myself, and it turned out true.
>>
>> I have already set up a running instance of James 3 beta 4 and a
>> working build environment for James 3.x, using beta 4 tag checked out
>> from SVN, and reading the source code of the project. The technical
>> architecture chat on this page(
>> http://james.apache.org/server/3/dev.html ) is of some help.
>>
>> But I am still confused the right point to put my logic in, and so
>> far, I don't find there is mechanism provided in intercepting IMAP
>> commands and manipulating mailbox at this early stage of James 3.x.
>> For example, should I put the interceptors logic using classes in IMAP
>> processor package? How to get hold of the instances of mailbox
>> persistence layer? Questions like this.
>>
>> Any suggestion is much appreciated.
>>
>> Regards,
>> Jerry Tian
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
>> For additional commands, e-mail: server-dev-help@james.apache.org
>>
>
> --
> eric | http://about.echarles.net | @echarles
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
> For additional commands, e-mail: server-dev-help@james.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


Re: Fwd: Want to extends James 3.x

Posted by Eric Charles <er...@apache.org>.
Hi Jerry,

Welcome to James devs!

You are not the first to ask for IMAP proxy:
http://markmail.org/message/t44hwzrzyo3ddcel (Fabio Petagna)
http://markmail.org/message/ecqr5klblzpmjtob (Gabe)

I could repeat what said in those previous threads, and that we really 
need to come with a out-of-the-box solution to avoid that everyone spend 
time on this...

The indirect, but correct, road to the solution is 
https://issues.apache.org/jira/browse/PROTOCOLS-73 where we need more 
integration on the IMAP code with the our protocols framework (beta4 
upon which you rely has still a completely separated IMAP module).

Thx, Eric


On 05/11/2012 09:35 AM, Jerry Tian wrote:
> Hi, James developers,
>
> I need some advices on how to extend James 3.x server.
>
> I am trying to use James as a component in a future product/service,
> which James acts like a data bridge of two different services.
>
> Service A is used by legacy mobile clients and based on IMAP protocol,
> and Service B is a web service exported by a third party. I can not
> change any interface/logic of these clients/services.
>
> This is my initial thoughts on how to make all this work:
>
> 1. By intercepting IMAP commands from mobile clients, I can detect the
> change made by users of service A.
> 2. By reading/writing data in mailbox, I can manipulate the data to
> keep it in sync with service B.
>
> I have experience with mailet development in the past, but for this
> task, mailet is not sufficient, maybe even not related at all. Because
> the data exchanged is not exactly normal email, send from one guy to
> another: they are objects saved in a specific sub-folder of this
> account's mailbox, have no recipients, more like a draft mail. And all
> these operations are done  through IMAP commands. Actually, I have
> written a mailet to capture all mails in the processor chain to prove
> myself, and it turned out true.
>
> I have already set up a running instance of James 3 beta 4 and a
> working build environment for James 3.x, using beta 4 tag checked out
> from SVN, and reading the source code of the project. The technical
> architecture chat on this page(
> http://james.apache.org/server/3/dev.html ) is of some help.
>
> But I am still confused the right point to put my logic in, and so
> far, I don't find there is mechanism provided in intercepting IMAP
> commands and manipulating mailbox at this early stage of James 3.x.
> For example, should I put the interceptors logic using classes in IMAP
> processor package? How to get hold of the instances of mailbox
> persistence layer? Questions like this.
>
> Any suggestion is much appreciated.
>
> Regards,
> Jerry Tian
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
> For additional commands, e-mail: server-dev-help@james.apache.org
>

-- 
eric | http://about.echarles.net | @echarles

---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org