Thx for the feedback.. I will prepare for M1 then!

Bye,
Norman


2010/10/15 Eric Charles <e...@apache.org>:
> Hi there,
>
> Today is an excellent step towards a more performant imap channel.
> With Norman's last commit, i re-stressed and analyzed the memory dumps (with
> eclipse mat), and everything is fine now: very low memory consumption per
> mailbox session.
>
> The "leaking" listeners (when other mailbox where selected) were the cause,
> and now they are "removed" (content set to null).
>
> Just before upcoming imap 0.2-M1 : that's really good news!! ;)
>
> Tks,
>
> Eric
>
>
> On 14/10/2010 14:09, Eric Charles wrote:
>>
>> Total Retained Heap: 341.033.584
>> where top is OpenJPAMailboxManager: 266.079.320 which references
>> 266.068.064 of DelegatingMailboxListeners.
>>
>> In DelegatingMailboxListerners, there is the Map<MailboxPath,
>> List<MailboxListener>> listeners.
>>
>> I can see there the 25 map entries, where
>> - first one is 105.017.544
>> - second one is 71.025
>> -...
>> for the total of 266.068.064
>>
>> The first map entry for the MailboxPath being of large subfolder of my
>> inbox has
>> - 301 instances of UidToMsnConverter in a list for 87.229.424
>> - 200 instances of UidToMsnConverter in a list (which is it self in a map)
>> for 17.788.032
>>
>> Each UidToMsnConverter contains 2 TreeMap (msnToUid and uidToMsn), each
>> having 1.037.984.
>>
>> Have to replay it, but could we have one instance of UidToMsnConverter per
>> session to spare some memory?
>>
>> Tks,
>>
>> Eric
>>
>>
>> On 14/10/2010 13:44, Norman wrote:
>>>
>>>  Hi Eric,
>>>
>>> how big was the memory usage of the Map which holds the MailboxPath ?
>>> Just to get an idea if we need to improve it.
>>>
>>> Bye,
>>> Norman
>>>
>>>
>>> Am 14.10.2010 13:35, schrieb Eric Charles:
>>>>
>>>> Hi Norman,
>>>>
>>>> Yes, it solved oom atm.
>>>> I was not able to reproduce it while fetching mails from 2 clients.
>>>> However, I saw very fast fetching at start, slowing down at the end.
>>>> So, I fear that launching many clients in // to my mailbox would still
>>>> slow it, and probably give oom (but it's true that I use the default
>>>> -Xmx512M).
>>>>
>>>> I took a mem dump, and at first look, jpaheader,... object do not eat
>>>> the memory anymore.
>>>> The largest memory usage is OpenJpaManager which references a Map with
>>>> many MailboxPath.
>>>>
>>>> Yes, gc logs should be activated, and we should also find the best
>>>> configs (there's many one).
>>>> I also would like to test the G1 gc that seems more stable now than it
>>>> was last year.
>>>>
>>>> But i will stop monitoring/analyzing gc/memory for now to concentrate on
>>>> M1 release.
>>>> We should take this between M1 and M2, especially with automated stress
>>>> tests on all protocols (stmp/imap/pop3/...).
>>>>
>>>> Tks,
>>>>
>>>> Eric
>>>>
>>>>
>>>> On 14/10/2010 13:12, Norman wrote:
>>>>>
>>>>>  Hi Eric,
>>>>>
>>>>> so the patch solves the OOM for you ? Did you have a look at the heap
>>>>> (via jconsole;) ) while do the action ? Would be interesting to see how 
>>>>> the
>>>>> GC kicks in..
>>>>>
>>>>> And yes I think we can have it in M1 ;)
>>>>>
>>>>> Bye
>>>>> Norman
>>>>>
>>>>>
>>>>> Am 14.10.2010 12:10, schrieb Eric Charles:
>>>>>>
>>>>>> Hi Norman,
>>>>>>
>>>>>> I tested with the patch you sent me off-ml, and it rebuilding index on
>>>>>> a large index goes 10 ways faster :)
>>>>>> I still didn't succeed to get the oom synchronizing.
>>>>>>
>>>>>> Do you think we could have this patch in the coming imap 0.2-M1
>>>>>> release?
>>>>>>
>>>>>> For later releases, we could still talk about ways to enhance the
>>>>>> FETCH performance (full streaming solution for example).
>>>>>>
>>>>>> Tks,
>>>>>>
>>>>>> Eric
>>>>>>
>>>>>>
>>>>>> On 12/10/2010 10:27, Eric Charles wrote:
>>>>>>>
>>>>>>> - read "raw mail" instead of "raw content"
>>>>>>> - to have added value, "streaming from store to socket via listener"
>>>>>>> goes with "store raw mail".
>>>>>>>
>>>>>>>
>>>>>>> On 12/10/2010 10:10, Eric Charles wrote:
>>>>>>>>
>>>>>>>> Hi Norman,
>>>>>>>>
>>>>>>>> Yes, Iterator<MessageResult> getMessages(MessageRange set, ...) is
>>>>>>>> really the place where we have to  act to reduce the memory 
>>>>>>>> consumption.
>>>>>>>>
>>>>>>>> I also though about some ways to better scale.
>>>>>>>> I didn't really think to a batch way, but this can help, even if we
>>>>>>>> will have to go to the repository (database for example) 10 times in 
>>>>>>>> your
>>>>>>>> example.
>>>>>>>> Also I'm not sure the gc will act before the end of the batch
>>>>>>>> processing (depends on the gc config), so you could still have memory
>>>>>>>> growing very fast to serve a huge fetch, without being really garbaged.
>>>>>>>>
>>>>>>>> But this could be a quite quick fix (if easy to implement ?)
>>>>>>>>
>>>>>>>> I thought here on "streaming" and "raw content".
>>>>>>>>
>>>>>>>> - Streaming: I worked on a project where the http socket was
>>>>>>>> directly streamed to the jdbc driver for file upload,  and the inverse 
>>>>>>>> for
>>>>>>>> file download. For mail, upload is more smtp and is managed by jms 
>>>>>>>> queue
>>>>>>>> (with  eventual claim-check pattern if needed). The download part is 
>>>>>>>> imap,
>>>>>>>> and we load everything in memory before writing the response. We could
>>>>>>>> imagine some kind of listener that would be notified of each mail 
>>>>>>>> reading
>>>>>>>> (reading done via stream). The listener would write the response via 
>>>>>>>> stream
>>>>>>>> also, without storing it in memory.
>>>>>>>>
>>>>>>>> - "raw content". The store API forces to work with MailboxMembership
>>>>>>>> that clearly isolates the headers from the content,... This is good to 
>>>>>>>> map
>>>>>>>> the IMAP RFC that allows a client to ask  for headers only for 
>>>>>>>> example. With
>>>>>>>> the current API, we "impose" the store to structure the mails in
>>>>>>>> content/header/... and if the store can not structure the mail (for 
>>>>>>>> example
>>>>>>>> MailDir), we impose it to parse it, even if we have to return the raw
>>>>>>>> content in case of a classical plain FETCH command... I was wondering 
>>>>>>>> if we
>>>>>>>> could not add a raw content storage obligation for all stores, and if 
>>>>>>>> we
>>>>>>>> need to return the raw content, simply use it. This could play nice 
>>>>>>>> with the
>>>>>>>> stream option above.
>>>>>>>>
>>>>>>>> But yes, the batch approach is quicker to implement.
>>>>>>>>
>>>>>>>> Tks,
>>>>>>>>
>>>>>>>> Eric
>>>>>>>>
>>>>>>>>
>>>>>>>> On 11/10/2010 19:28, Norman Maurer wrote:
>>>>>>>>>
>>>>>>>>> Hi there,
>>>>>>>>>
>>>>>>>>> I tried to get my head around the cause of the OOM and I think I
>>>>>>>>> found
>>>>>>>>> a good solution. Let me outline the idea...
>>>>>>>>>
>>>>>>>>> The MessageManager interface expose many methods which expose kinds
>>>>>>>>> of
>>>>>>>>> Iterator<...>  objects. So the idea is to build up some "batch
>>>>>>>>> retrieve
>>>>>>>>> Iterator" which then retrieve the needed data in batches. So the GC
>>>>>>>>> has a chance to kick in and free up resources. So here is an
>>>>>>>>> example..
>>>>>>>>>
>>>>>>>>> When call MessageManager.getMessages(...) (which returns
>>>>>>>>> Iterator<MessageResult>  ) and use a MessageRange of 1:1000 we
>>>>>>>>> would
>>>>>>>>> fetch the MessagResult 1:100 as starting point. Then wait till
>>>>>>>>> Iterator.hasNext() or Iterator.next() is called and we have no
>>>>>>>>> MessageResult left we would fetch 101:200 and so on..
>>>>>>>>>
>>>>>>>>> I think this should work and will be much more efficient in terms
>>>>>>>>> of
>>>>>>>>> memory. All this could get done in the "store" implementations and
>>>>>>>>> could be configurable. Like use 100 as default batch count and be
>>>>>>>>> able
>>>>>>>>> to set it via a setter.
>>>>>>>>>
>>>>>>>>> WDYT ?
>>>>>>>>>
>>>>>>>>> Bye,
>>>>>>>>> Norman
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> 2010/10/11 Norman Maurer<nor...@apache.org>:
>>>>>>>>>>
>>>>>>>>>> Hi Eric,
>>>>>>>>>>
>>>>>>>>>> Did you also have a look with wireshark what the exact command and
>>>>>>>>>> argument was which triggered the OOM?
>>>>>>>>>>
>>>>>>>>>> Thx
>>>>>>>>>> Norman
>>>>>>>>>>
>>>>>>>>>> 2010/10/11, Eric Charles<e...@apache.org>:
>>>>>>>>>>>
>>>>>>>>>>> Hi Norman,
>>>>>>>>>>>
>>>>>>>>>>> There were 2 main problems:
>>>>>>>>>>> 1. The amq one which is now resolved tks to your last commit
>>>>>>>>>>> 2. James no more responding on imap which is always caused by OOM
>>>>>>>>>>> (I
>>>>>>>>>>> missed some log the first time).
>>>>>>>>>>>
>>>>>>>>>>> For the second one, analysis of memory dump shows oom comes from
>>>>>>>>>>> huge
>>>>>>>>>>> usage of memory due to loading of message, headers,... (in case
>>>>>>>>>>> of
>>>>>>>>>>> 10.000 message fetch for example).
>>>>>>>>>>> I don't benefit from Lob streaming on derby database, but it
>>>>>>>>>>> won't help
>>>>>>>>>>> much because jpaheader for example also take much memory.
>>>>>>>>>>>
>>>>>>>>>>> Tks,
>>>>>>>>>>>
>>>>>>>>>>> Eric
>>>>>>>>>>>
>>>>>>>>>>> On 11/10/2010 13:10, Norman Maurer wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> Ok 4/5 is fixed now... Just to keep you updated..
>>>>>>>>>>>>
>>>>>>>>>>>> Bye.
>>>>>>>>>>>> Norman
>>>>>>>>>>>>
>>>>>>>>>>>> 2010/10/11 Norman Maurer<nor...@apache.org>:
>>>>>>>>>>>>>
>>>>>>>>>>>>> Ok at least you can reproduce it, thats good ;) Did you take a
>>>>>>>>>>>>>  thread
>>>>>>>>>>>>> dump ?
>>>>>>>>>>>>>
>>>>>>>>>>>>> Bye,
>>>>>>>>>>>>> Norman
>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>> 2010/10/11 Eric Charles<e...@apache.org>:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> It's the same with latest thunderbird
>>>>>>>>>>>>>> I restarted disabling 'Check for new messages on startup on
>>>>>>>>>>>>>> all my
>>>>>>>>>>>>>> accounts.
>>>>>>>>>>>>>> If I go quickly from one folder to another, I fall back in the
>>>>>>>>>>>>>> endless
>>>>>>>>>>>>>> 'downloading'/'indexing'...
>>>>>>>>>>>>>> However, if I quietly click on 'Get Mail' folder per folder,
>>>>>>>>>>>>>> it's ok.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I think we are still with Bug 1 (Bug 2 and 3 should be
>>>>>>>>>>>>>> resolved if 1 is
>>>>>>>>>>>>>> resolved) for IMAP, fetching simultaneously some folders.
>>>>>>>>>>>>>> Bug 4 is for amq.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Tks,
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Eric
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On 10/10/2010 20:03, Eric Charles wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I tried to resync thunderbird without clicking on any folder.
>>>>>>>>>>>>>>> Still the same behaviour : "downloading xxx on yyy", www on
>>>>>>>>>>>>>>> zzz,...
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Wireshark tells me more: I never saw such red/black lines in
>>>>>>>>>>>>>>> the tcp
>>>>>>>>>>>>>>> stream (one red/black on every 5/10 tcp packet: "segment
>>>>>>>>>>>>>>> lost").
>>>>>>>>>>>>>>> 1783    8.626604    91.183.38.48    192.168.1.12    IMAP
>>>>>>>>>>>>>>>  [TCP
>>>>>>>>>>>>>>> Previous
>>>>>>>>>>>>>>> segment lost] Response:
>>>>>>>>>>>>>>> ss.properties?rev=1005079&r1=1005078&r2=1005079&view=diff
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I was wondering if my cable was right:
>>>>>>>>>>>>>>> - tested plain http via cable: wireshark is green.
>>>>>>>>>>>>>>> - tested thunderbird/james via wifi : same black/red lines in
>>>>>>>>>>>>>>> wireshark.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> I have saved the dump and will analyze further tomorrow, but
>>>>>>>>>>>>>>> a tcp
>>>>>>>>>>>>>>> conversation selected from a "segment lost" seems ok.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> So for now (this may change), I think we have:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> 1. A client is in a stage that causes the "segment lost" tcp
>>>>>>>>>>>>>>> errors ==>
>>>>>>>>>>>>>>> Bug 1
>>>>>>>>>>>>>>> 2. Client/server conversation loops endless ==>    Bug 2
>>>>>>>>>>>>>>> 3.1. James finally hangs ==>    Bug 3
>>>>>>>>>>>>>>> 3.2. James finally gets oom ==>    Bug 3
>>>>>>>>>>>>>>> 4. Manual stop is needed.
>>>>>>>>>>>>>>> 5. After manual stop in state 3.1 or 3.2, there's a activemq
>>>>>>>>>>>>>>> java.io.EOFException: Chunk stream does not exist at page: 0
>>>>>>>>>>>>>>> ==>    Bug 4
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> So 4 bugs ?
>>>>>>>>>>>>>>> I will upgrade my thunderbird 3.0.3 on linux to the latest
>>>>>>>>>>>>>>> version and
>>>>>>>>>>>>>>> see
>>>>>>>>>>>>>>> if bug 1 is not resolved.
>>>>>>>>>>>>>>> Bug 4 may be resolved with 5.4.1 and latest commits for the
>>>>>>>>>>>>>>> james stop
>>>>>>>>>>>>>>> procedure.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Tks,
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Eric
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On 10/10/2010 18:31, Eric Charles wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Hi,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I have on James 3 (trunk of 2 week ago) my INBOX with 10
>>>>>>>>>>>>>>>> subfolders,
>>>>>>>>>>>>>>>> some
>>>>>>>>>>>>>>>> of these subfolders having more than 10.000 mails.
>>>>>>>>>>>>>>>> I mainly use a PC, so the IMAP sync is done regulary along
>>>>>>>>>>>>>>>> the day.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I also have another PC I synchronize once a week.
>>>>>>>>>>>>>>>> During the IMAP sync of that PC, I selected randomly some
>>>>>>>>>>>>>>>> subfolders
>>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>> saw (this occured twice, but not always...):
>>>>>>>>>>>>>>>> - Thunderbird syncs well during a some minutes (10?)
>>>>>>>>>>>>>>>> - After, Thunderbird begins to say "downloading xx of yy
>>>>>>>>>>>>>>>> mails"..
>>>>>>>>>>>>>>>> .when
>>>>>>>>>>>>>>>> yy is reached, he says "downloading ww of zz" where zz is a
>>>>>>>>>>>>>>>> little
>>>>>>>>>>>>>>>> greater
>>>>>>>>>>>>>>>> than yy.
>>>>>>>>>>>>>>>> - I wait, wait, and finally have timeout, and the mails are
>>>>>>>>>>>>>>>> no more
>>>>>>>>>>>>>>>> viewable in thunderbird.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> James is stucked.
>>>>>>>>>>>>>>>> The first time I had OOM (I think), today, I had no OOM, but
>>>>>>>>>>>>>>>> James was
>>>>>>>>>>>>>>>> no
>>>>>>>>>>>>>>>> more reachable via IMAP, though accepting mails via SMTP.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I stopped, and when restarting, I had the following
>>>>>>>>>>>>>>>> exception (James
>>>>>>>>>>>>>>>> was
>>>>>>>>>>>>>>>> not usable anymore):
>>>>>>>>>>>>>>>> INFO  18:16:37,646 |
>>>>>>>>>>>>>>>> org.apache.activemq.store.kahadb.plist.PListStore
>>>>>>>>>>>>>>>> |
>>>>>>>>>>>>>>>> PListStore:activemq-data/localhost/tmp_storage started
>>>>>>>>>>>>>>>> INFO  18:16:37,648 |
>>>>>>>>>>>>>>>> org.apache.activemq.broker.BrokerService | Using
>>>>>>>>>>>>>>>> Persistence Adapter:
>>>>>>>>>>>>>>>> KahaDBPersistenceAdapter[activemq-data/localhost/KahaDB]
>>>>>>>>>>>>>>>> INFO  18:16:38,248 |
>>>>>>>>>>>>>>>> org.apache.activemq.store.kahadb.plist.PListStore
>>>>>>>>>>>>>>>> |
>>>>>>>>>>>>>>>> PListStore:../data/localhost/tmp_storage started
>>>>>>>>>>>>>>>> ERROR 18:16:38,301 |
>>>>>>>>>>>>>>>> org.apache.activemq.broker.BrokerService | Failed
>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>> start ActiveMQ JMS Message Broker. Reason:
>>>>>>>>>>>>>>>> java.io.EOFException: Chunk
>>>>>>>>>>>>>>>> stream does not exist at page: 0
>>>>>>>>>>>>>>>> java.io.EOFException: Chunk stream does not exist at page: 0
>>>>>>>>>>>>>>>>         at
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> org.apache.kahadb.page.Transaction$2.readPage(Transaction.java:454)
>>>>>>>>>>>>>>>>         at
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> org.apache.kahadb.page.Transaction$2.<init>(Transaction.java:431)
>>>>>>>>>>>>>>>>         at
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> org.apache.kahadb.page.Transaction.openInputStream(Transaction.java:428)
>>>>>>>>>>>>>>>>         at
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> org.apache.kahadb.page.Transaction.load(Transaction.java:404)
>>>>>>>>>>>>>>>>         at
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> org.apache.kahadb.page.Transaction.load(Transaction.java:361)
>>>>>>>>>>>>>>>>         at
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> org.apache.activemq.store.kahadb.MessageDatabase$1.execute(MessageDatabase.java:243)
>>>>>>>>>>>>>>>>         at
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> org.apache.kahadb.page.Transaction.execute(Transaction.java:728)
>>>>>>>>>>>>>>>>         at
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> org.apache.activemq.store.kahadb.MessageDatabase.loadPageFile(MessageDatabase.java:230)
>>>>>>>>>>>>>>>>         at
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> org.apache.activemq.store.kahadb.MessageDatabase.open(MessageDatabase.java:309)
>>>>>>>>>>>>>>>>         at
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> org.apache.activemq.store.kahadb.MessageDatabase.load(MessageDatabase.java:353)
>>>>>>>>>>>>>>>>         at
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> org.apache.activemq.store.kahadb.MessageDatabase.doStart(MessageDatabase.java:217)
>>>>>>>>>>>>>>>>         at
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> org.apache.activemq.store.kahadb.KahaDBStore.doStart(KahaDBStore.java:178)
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Sounds l ike
>>>>>>>>>>>>>>>> https://issues.apache.org/activemq/browse/AMQ-2935.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> To solve it, I had to remove the activemq-data directory
>>>>>>>>>>>>>>>> (btw, 2 weeks
>>>>>>>>>>>>>>>> ago was activemq 5.4.0 with 2 brokers started and
>>>>>>>>>>>>>>>> activemq-data in bin
>>>>>>>>>>>>>>>> directory).
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I made a test to restart from scratch my account in
>>>>>>>>>>>>>>>> thunderbird, and
>>>>>>>>>>>>>>>> it
>>>>>>>>>>>>>>>> was OK.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Is it because it does a incremental sync and I select
>>>>>>>>>>>>>>>> different
>>>>>>>>>>>>>>>> folders
>>>>>>>>>>>>>>>> (just to make things complicated :) ) during the download ?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Anyway, it is not easy to reproduce.
>>>>>>>>>>>>>>>> Activemq 5.4.1. may be worth to try, but I'm not sure it the
>>>>>>>>>>>>>>>> the
>>>>>>>>>>>>>>>> cause...
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Tks,
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Eric
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>>> To unsubscribe, e-mail:
>>>>>>>>>>>>>>>> server-dev-unsubscr...@james.apache.org
>>>>>>>>>>>>>>>> For additional commands, e-mail:
>>>>>>>>>>>>>>>> server-dev-h...@james.apache.org
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>>> To unsubscribe, e-mail:
>>>>>>>>>>>>>>> server-dev-unsubscr...@james.apache.org
>>>>>>>>>>>>>>> For additional commands, e-mail:
>>>>>>>>>>>>>>> server-dev-h...@james.apache.org
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>>>> To unsubscribe, e-mail:
>>>>>>>>>>>>>> server-dev-unsubscr...@james.apache.org
>>>>>>>>>>>>>> For additional commands, e-mail:
>>>>>>>>>>>>>> server-dev-h...@james.apache.org
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
>>>>>>>>>>>> For additional commands, e-mail:
>>>>>>>>>>>> server-dev-h...@james.apache.org
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
>>>>>>>>>>> For additional commands, e-mail: server-dev-h...@james.apache.org
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
>>>>>>>>> For additional commands, e-mail: server-dev-h...@james.apache.org
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> ---------------------------------------------------------------------
>>>>>>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
>>>>>>>> For additional commands, e-mail: server-dev-h...@james.apache.org
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
>>>>>>> For additional commands, e-mail: server-dev-h...@james.apache.org
>>>>>>>
>>>>>>
>>>>>>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
>>>>>> For additional commands, e-mail: server-dev-h...@james.apache.org
>>>>>>
>>>>>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
>>>>> For additional commands, e-mail: server-dev-h...@james.apache.org
>>>>>
>>>>
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
>>>> For additional commands, e-mail: server-dev-h...@james.apache.org
>>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
>>> For additional commands, e-mail: server-dev-h...@james.apache.org
>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
>> For additional commands, e-mail: server-dev-h...@james.apache.org
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
> For additional commands, e-mail: server-dev-h...@james.apache.org
>
>

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

Reply via email to