Kind of.. I would try to refactor the code a bit more to make it easy to replace javamail Transport usage for SMTP later etc. Also I would try to hook in kind of plugins for postprocessing and jmx stats.
I think the memory/cpu is not really a problem. It should not be notable. The IO should also not be a big problem as we most times only need to move the envelop of the mail and nothing more.. Bye, Norman 2011/1/10 Eric Charles <[email protected]>: > So configuration and code would the same for now, simply export them to > separate components (additional conf file and maven module I guess) ? > > As side effect, we should have in mind: > - More resources (memory / cpu / I/O) for the delivery threads and queues. > - Additional delay for the mails to be delivered (it goes via additional > intermediate step) (Not very relevant, mail is store/forward, not real-time) > > Tks, > > Eric > > On 10/01/2011 10:35, Norman Maurer wrote: >> >> Hi there, >> >> comments inside... >> >> >> 2011/1/10 Eric Charles<[email protected]>: >>> >>> Hi Norman, >>> >>> I see two attention points there: >>> - Additional operational components to be managed/monitored (the >>> intermediate delivery queues, jms or whatever), but I see you already >>> began >>> to take it into account with JAMES-1180 (Allow to browse MaillQueue) >> >> And I would like to allow the monitoring / management of the >> RemoteDelivery and LocalDelivery service once they are core >> components/services.. Like get stats how many temporary errors we got >> (smtp 4xx code), how many permanent (smtp 5xx code) etc.. >> >> >>> - Which configuration/processing framework would be used to consume the >>> delivery queues: mailets api (we can let it evolve to take new >>> requirements >>> into account), camel-like routes, custom james-made,... ? >> >> We would just use threads which will call MailQueue.deQueue() and then >> dispatch them.. So its exactly the same as we do in JamesMailSpooler >> and RemoteDelivery mailet atm. >> >>> The good impacts are: >>> - We would have a better separation of concern: mailets to decide what to >>> do >>> with the delivery, and the delivery as such. >>> - Both concerns/aspects will have their own configuration and own >>> implementation, so not everything bloated in mailetconainer modules/conf >>> files. >>> - It may be more easy to route based on policies, scheduling,... and also >>> to >>> deliver spam/virus/... in mailbox. >>> >>> Tks, >>> >>> Eric >>> >>> >>> On 9/01/2011 10:07, Norman Maurer wrote: >>>> >>>> Could you explain what Problems you See here? >>>> >>>> Also the Queues would Be of the type MailQueue, so its not limited to >>>> jms. The configuration of the Services would Be Done by seperate >>>> config Files.... >>>> >>>> Bye >>>> Norman >>>> >>>> >>>> Am Sonntag, 9. Januar 2011 schrieb Eric >>>> Charles<[email protected]>: >>>>> >>>>> Hi, >>>>> >>>>> I also like the idea to have remote/local delivery as core service >>>>> implemented via JMS queues. >>>>> The decision to deliver should remain in the mailet processor. >>>>> >>>>> The way the local/remote delivery queues will be consumed will be >>>>> configured via separate mechanisms (xml files). >>>>> >>>>> The question is also "how to configure the local/remote delivery queues >>>>> consuming": via another mailet chain, via camel-like routes, >>>>> yet-another >>>>> ad-hoc config ? >>>>> Don't we simply move the problem from the current mailet processors to >>>>> an >>>>> other component, with JMS queues between ? >>>>> >>>>> But yes, I like the idea. >>>>> Tks, >>>>> >>>>> Eric >>>>> >>>>> On 8/01/2011 19:10, Norman Maurer wrote: >>>>> >>>>> Well I thought more about doing the splitting in the Delivery >>>>> dispatcher.. something like: >>>>> >>>>> * retrieve mail from queue >>>>> * check if mail attribute "prepared" set >>>>> * attribute not found: >>>>> * do the splitting if needed >>>>> * set attribute "prepared" >>>>> * store back in queue >>>>> * attribute found: >>>>> * start delivering >>>>> >>>>> This would allow is todo the configure of the gateway etc only one >>>>> time and all at the same place. >>>>> >>>>> The other think we could do is configure in the "ToRemoteDelivery" and >>>>> store the config stuff as mail attributes, but this is not so >>>>> "clean".. >>>>> >>>>> I would prefer 1) >>>>> >>>>> WDYT ? >>>>> Norman >>>>> >>>>> >>>>> 2011/1/8 Stefano Bagnara<[email protected]>: >>>>> >>>>> 2011/1/7 Norman Maurer<[email protected]>: >>>>> >>>>> Hi there, >>>>> >>>>> I spend the last weeks to think about RemoteDelivery and how it is >>>>> implemented. I think putting the remote deliver code in a Mailet is >>>>> not a good idea. It does not give us much control about it and makes >>>>> it harder to customize or extend. I think it would make more sense to >>>>> make the delivery code a "core service" which should allow some kind >>>>> of pluggable policy out-of-the-box. The Mailet should just move the >>>>> mail to the right queue then which the mail will get pulled of from >>>>> the new "core service" and tried to get delivered. >>>>> >>>>> Beside of that I think we should add some kind of policy support which >>>>> allow to register policies/listener which customize the following >>>>> things: >>>>> >>>>> * Calculate the next delay >>>>> * Force an other ip address as source for the next delivery attemp >>>>> * Force an other ip address as destionation for the next delivery >>>>> attemp >>>>> >>>>> After that is done I think it would be very easy to add JMX metrics to >>>>> the service as well... >>>>> >>>>> WDYT ? >>>>> >>>>> Do you think of simply using a ToRepository or something more specific? >>>>> The main issue with using a simple ToRepository is that currently >>>>> RemoteDelivery had some "logic" before writing to the outgoing spool. >>>>> In fact depending on the presence of a gateway conf or not it will >>>>> split the message for each recipient (or recipient group) depending on >>>>> the final domain. >>>>> >>>>> If we instead use a simple ToRepository then we'll have to do one more >>>>> processing in order to split the message in a following step. >>>>> >>>>> So, i think we should still have a ToRemoteDelivery mailet or something >>>>> similar. >>>>> >>>>> Stefano >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: [email protected] >>>>> For additional commands, e-mail: [email protected] >>>>> >>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: [email protected] >>>>> For additional commands, e-mail: [email protected] >>>>> >>>>> >>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: [email protected] >>>>> For additional commands, e-mail: [email protected] >>>>> >>>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: [email protected] >>>> For additional commands, e-mail: [email protected] >>>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: [email protected] >>> For additional commands, e-mail: [email protected] >>> >>> >> >> Bye, >> Norman >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
