[jira] [Commented] (JAMES-1835) James Beta 5 Unable to parse message error when sending emails

2020-06-17 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-1835?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17138762#comment-17138762
 ] 

Pau Pachés Leal commented on JAMES-1835:


I used the Docker image of James instead. Probably it does not make sense to 
try to use James on Windows if it is not really tested by developers.

> James Beta 5 Unable to parse message error when sending emails
> --
>
> Key: JAMES-1835
> URL: https://issues.apache.org/jira/browse/JAMES-1835
> Project: James Server
>  Issue Type: Bug
>  Components: James Core
>Affects Versions: 3.0.0-beta5
> Environment: Windows 7
>Reporter: Dan Huru
>Priority: Blocker
>
> 1) Build 3.0.0-beta5
> 2) Run James server. 
> 3) When sending an email to James I get the following:
> {noformat}
> INFO  15:03:03,073 | james.imapserver | ID=-449807885 Connection established 
> from fe80:0:0:0:4507:61af:cf94:17c%20
> INFO  15:03:04,910 | james.imapserver | ID=-806960204 Connection established 
> from fe80:0:0:0:4507:61af:cf94:17c%20
> INFO  15:03:28,036 | james.imapserver | ID=-806960204 Unable to append 
> message to mailbox #private:t...@ro00040402.ericsson.se:Sent
> org.apache.james.mailbox.exception.MailboxException: Unable to parse message
>   at 
> org.apache.james.mailbox.store.StoreMessageManager.appendMessage(StoreMessageManager.java:402)
>   at 
> org.apache.james.imap.processor.AppendProcessor.appendToMailbox(AppendProcessor.java:136)
>   at 
> org.apache.james.imap.processor.AppendProcessor.doProcess(AppendProcessor.java:73)
>   at 
> org.apache.james.imap.processor.AppendProcessor.doProcess(AppendProcessor.java:49)
>   at 
> org.apache.james.imap.processor.AbstractMailboxProcessor.doProcess(AbstractMailboxProcessor.java:98)
>   at 
> org.apache.james.imap.processor.AbstractMailboxProcessor.process(AbstractMailboxProcessor.java:87)
>   at 
> org.apache.james.imap.processor.AbstractMailboxProcessor.doProcess(AbstractMailboxProcessor.java:81)
>   at 
> org.apache.james.imap.processor.AbstractMailboxProcessor.doProcess(AbstractMailboxProcessor.java:69)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:52)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:54)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedPro

[jira] [Commented] (JAMES-3225) Provide automated builds for Apache James - (restore builds.apache.org ?)

2020-06-17 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3225?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17139026#comment-17139026
 ] 

René Cordier commented on JAMES-3225:
-

{{> Maybe Gradle cane help here. }}{{}}{{I think a POC was attempted some time 
ago for switching to Gradle and it looked promising.  }}{{Should we try to find 
that back and push it further?}}

> Provide automated builds for Apache James - (restore builds.apache.org ?) 
> --
>
> Key: JAMES-3225
> URL: https://issues.apache.org/jira/browse/JAMES-3225
> Project: James Server
>  Issue Type: Task
>Reporter: Ioan Eugen Stan
>Assignee: Ioan Eugen Stan
>Priority: Major
>
> For a long time we had builds that ran on the Apache Infrastructure 
> https://builds.apache.org/view/All/job/james-mailet/ .
> The build infrastructure is not running for ~ 3 years now. 
> I believe it is important for us to have automated builds. 
> This ticket should gather the work needed to make this a reality.
> There are lots of things to take into consideration.
> My ( [~ieugen] ) opinions on how to handle this.
> * builds should run automatically
> * builds should run fast < 10 min
> * there are several things they should do (not exhaustive)
> ** verify the source code
> ** compile the source code
> ** run the unit tests
> ** run the integration tests 
> ** publish SNAPSHOTS (only from master or develop ?!)
> ** run code analytics
> ** publish reports relating to build
> ** provide build status for other services
> For smaller projects this is a no-brainer.
> For the current state of Apache James this is a challange, especially in the 
> context of 
> - multiple git branches and PR's 
> - the distributed integration tests which take a long time
> Given the limited resources available for us on the Apache infrastructure we 
> will have to be selective of what we do.
> Personally I don't see how we can run the current (40mni +) integration suite 
> on each push / build. I'm pretty sure we will get banned :) or throttled. 
> So a discussion should be in order on how to solve these issues but some 
> options regarding what we can do:
> - make integration tests OPT-IN
> - run (distributed) integration tests once a day or once every 6h / 12h
> - have build profiles that build a common subset all the time and run 
> The nuclear option: prune some of the components we have in James and we 
> don't want to support or move them out of the common project. 
> This is something we should consider especially for buggy components or for 
> components that don't have a maintainer. 
> We have limited time and resources.
> We can't maintain everything for everybody.
> We should be mindful of this.
>  We can take inspiration from the OFBiz project 
> https://builds.apache.org/view/All/job/Apache%20OFBiz/ .



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Comment Edited] (JAMES-3225) Provide automated builds for Apache James - (restore builds.apache.org ?)

2020-06-17 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3225?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17139026#comment-17139026
 ] 

René Cordier edited comment on JAMES-3225 at 6/18/20, 4:12 AM:
---

> Maybe Gradle cane help here.

I think a POC was attempted some time ago for switching to Gradle and it looked 
promising. 

Should we try to find that back and push it further?


was (Author: rcordier):
{{> Maybe Gradle cane help here. }}{{}}{{I think a POC was attempted some time 
ago for switching to Gradle and it looked promising.  }}{{Should we try to find 
that back and push it further?}}

> Provide automated builds for Apache James - (restore builds.apache.org ?) 
> --
>
> Key: JAMES-3225
> URL: https://issues.apache.org/jira/browse/JAMES-3225
> Project: James Server
>  Issue Type: Task
>Reporter: Ioan Eugen Stan
>Assignee: Ioan Eugen Stan
>Priority: Major
>
> For a long time we had builds that ran on the Apache Infrastructure 
> https://builds.apache.org/view/All/job/james-mailet/ .
> The build infrastructure is not running for ~ 3 years now. 
> I believe it is important for us to have automated builds. 
> This ticket should gather the work needed to make this a reality.
> There are lots of things to take into consideration.
> My ( [~ieugen] ) opinions on how to handle this.
> * builds should run automatically
> * builds should run fast < 10 min
> * there are several things they should do (not exhaustive)
> ** verify the source code
> ** compile the source code
> ** run the unit tests
> ** run the integration tests 
> ** publish SNAPSHOTS (only from master or develop ?!)
> ** run code analytics
> ** publish reports relating to build
> ** provide build status for other services
> For smaller projects this is a no-brainer.
> For the current state of Apache James this is a challange, especially in the 
> context of 
> - multiple git branches and PR's 
> - the distributed integration tests which take a long time
> Given the limited resources available for us on the Apache infrastructure we 
> will have to be selective of what we do.
> Personally I don't see how we can run the current (40mni +) integration suite 
> on each push / build. I'm pretty sure we will get banned :) or throttled. 
> So a discussion should be in order on how to solve these issues but some 
> options regarding what we can do:
> - make integration tests OPT-IN
> - run (distributed) integration tests once a day or once every 6h / 12h
> - have build profiles that build a common subset all the time and run 
> The nuclear option: prune some of the components we have in James and we 
> don't want to support or move them out of the common project. 
> This is something we should consider especially for buggy components or for 
> components that don't have a maintainer. 
> We have limited time and resources.
> We can't maintain everything for everybody.
> We should be mindful of this.
>  We can take inspiration from the OFBiz project 
> https://builds.apache.org/view/All/job/Apache%20OFBiz/ .



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3016) Remote delivery modifies message breaking DKIM signature

2020-06-17 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3016?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17139108#comment-17139108
 ] 

René Cordier commented on JAMES-3016:
-

Not sure to remember why, was maybe a bad manipulation as well. Closing it again

> Remote delivery modifies message breaking DKIM signature
> 
>
> Key: JAMES-3016
> URL: https://issues.apache.org/jira/browse/JAMES-3016
> Project: James Server
>  Issue Type: Bug
>Affects Versions: 3.3.0
>Reporter: Sergey B.
>Priority: Major
> Fix For: 3.5.0
>
>
> Remote delivery modifies message and breaks its DKIM signature. This happens 
> when Content-Type is 'text/plain; charset=UTF-8' and body contains non-ascii 
> symbols.
> Here is an example. This message was about to be sent.
> {code:java}
> Date: Sun, 22 Dec 2019 12:42:43 + (GMT)
> From: mysen...@example.com
> To: myrecei...@example.org
> Message-ID: <1071314998.134.1577018563940.JavaMail.root@19084506dd1d>
> Subject: MySender email notification test
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: quoted-printable
> {code}
> This is how it looked like at receiver side.
> {code:java}
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
> DKIM-Signature: a=rsa-sha256; b=DKIMSIGNATURE=; s=mail; c=relaxed/relaxed; 
> d=example.com; v=1; bh=BHDATA=; 
> h=Message-ID:Date:Subject:From:To:MIME-Version:Content-Type;
> Date: Sun, 22 Dec 2019 12:42:43 + (GMT)
> From: mysen...@example.com
> To: myrecei...@example.org
> Message-ID: <1071314998.134.1577018563940.JavaMail.root@19084506dd1d>
> Subject: MySender email notification test{code}
> Mailet configuration is like this
> {code:java}
> 
> 
>  v=1; s=mail; d=example.com; 
> h=Message-ID:Date:Subject:From:To:MIME-Version:Content-Type; a=rsa-sha256; 
> bh=; b=; c=relaxed/relaxed;
>  true
>  
> 
> 
>  false
>  false
> {code}
> Adding property mail.smtp.allow8bitmime=false to configuration of 
> RemoteDelivery mailet solves the problem effectively.
> Disabling 8bit MIME extension, when DKIM signature is present, seems to be 
> the right solution.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3016) Remote delivery modifies message breaking DKIM signature

2020-06-17 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3016?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3016.
---
Resolution: Fixed

> Remote delivery modifies message breaking DKIM signature
> 
>
> Key: JAMES-3016
> URL: https://issues.apache.org/jira/browse/JAMES-3016
> Project: James Server
>  Issue Type: Bug
>Affects Versions: 3.3.0
>Reporter: Sergey B.
>Priority: Major
> Fix For: 3.5.0
>
>
> Remote delivery modifies message and breaks its DKIM signature. This happens 
> when Content-Type is 'text/plain; charset=UTF-8' and body contains non-ascii 
> symbols.
> Here is an example. This message was about to be sent.
> {code:java}
> Date: Sun, 22 Dec 2019 12:42:43 + (GMT)
> From: mysen...@example.com
> To: myrecei...@example.org
> Message-ID: <1071314998.134.1577018563940.JavaMail.root@19084506dd1d>
> Subject: MySender email notification test
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: quoted-printable
> {code}
> This is how it looked like at receiver side.
> {code:java}
> MIME-Version: 1.0
> Content-Type: text/plain; charset=UTF-8
> Content-Transfer-Encoding: 8bit
> DKIM-Signature: a=rsa-sha256; b=DKIMSIGNATURE=; s=mail; c=relaxed/relaxed; 
> d=example.com; v=1; bh=BHDATA=; 
> h=Message-ID:Date:Subject:From:To:MIME-Version:Content-Type;
> Date: Sun, 22 Dec 2019 12:42:43 + (GMT)
> From: mysen...@example.com
> To: myrecei...@example.org
> Message-ID: <1071314998.134.1577018563940.JavaMail.root@19084506dd1d>
> Subject: MySender email notification test{code}
> Mailet configuration is like this
> {code:java}
> 
> 
>  v=1; s=mail; d=example.com; 
> h=Message-ID:Date:Subject:From:To:MIME-Version:Content-Type; a=rsa-sha256; 
> bh=; b=; c=relaxed/relaxed;
>  true
>  
> 
> 
>  false
>  false
> {code}
> Adding property mail.smtp.allow8bitmime=false to configuration of 
> RemoteDelivery mailet solves the problem effectively.
> Disabling 8bit MIME extension, when DKIM signature is present, seems to be 
> the right solution.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Resolved] (JAMES-3080) Make messages persistent in rabbitmq task manager workqueue

2020-06-18 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3080?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rémi Kowalski resolved JAMES-3080.
--
Fix Version/s: 3.5.0
   Resolution: Fixed

> Make messages persistent in rabbitmq task manager workqueue
> ---
>
> Key: JAMES-3080
> URL: https://issues.apache.org/jira/browse/JAMES-3080
> Project: James Server
>  Issue Type: Improvement
>Reporter: Rémi Kowalski
>Priority: Major
> Fix For: 3.5.0
>
>
> Regarding the persistence of messages in rabbitmq : To achieve this there are 
> two steps :
>  * the queue must be declared as {{durable}} (the declaration of the queue is 
> persisted rabbitmq is restarted)
>  * when sending a message, it must have a property setting its 
> {{delivery_mode}} to persistent. (the messages with this property are 
> persisted in case of a restart of rabbitmq)
> At the time being the rabbitmq workqueue in james :
>  * the queue is declared durable => Good
>  * the delivery_mode property is not set => Not good
>  * the exchange is not declared durable => Seems not good, but need testing
> What should be done is :
>  - set the `delivery_mode` property to '2' ( see 
> [https://www.rabbitmq.com/releases/rabbitmq-java-client/v2.4.1/rabbitmq-java-client-javadoc-2.4.1/index.html?com/rabbitmq/client/MessageProperties.html]
>  )
>  - verify if the exchange need to be declared 'durable' too. if so it will 
> need an entry in the migration guide. As it will need to be deleted an 
> created back with the new properties.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3080) Make messages persistent in rabbitmq task manager workqueue

2020-06-18 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3080?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rémi Kowalski closed JAMES-3080.


> Make messages persistent in rabbitmq task manager workqueue
> ---
>
> Key: JAMES-3080
> URL: https://issues.apache.org/jira/browse/JAMES-3080
> Project: James Server
>  Issue Type: Improvement
>Reporter: Rémi Kowalski
>Priority: Major
> Fix For: 3.5.0
>
>
> Regarding the persistence of messages in rabbitmq : To achieve this there are 
> two steps :
>  * the queue must be declared as {{durable}} (the declaration of the queue is 
> persisted rabbitmq is restarted)
>  * when sending a message, it must have a property setting its 
> {{delivery_mode}} to persistent. (the messages with this property are 
> persisted in case of a restart of rabbitmq)
> At the time being the rabbitmq workqueue in james :
>  * the queue is declared durable => Good
>  * the delivery_mode property is not set => Not good
>  * the exchange is not declared durable => Seems not good, but need testing
> What should be done is :
>  - set the `delivery_mode` property to '2' ( see 
> [https://www.rabbitmq.com/releases/rabbitmq-java-client/v2.4.1/rabbitmq-java-client-javadoc-2.4.1/index.html?com/rabbitmq/client/MessageProperties.html]
>  )
>  - verify if the exchange need to be declared 'durable' too. if so it will 
> need an entry in the migration guide. As it will need to be deleted an 
> created back with the new properties.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-2830) Update changelog to include effective DKIM support

2020-06-18 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-2830?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rémi Kowalski closed JAMES-2830.

Resolution: Fixed

done in 
https://github.com/apache/james-project/commit/9e71475199624b80ee107a36b9f89de63101d27b

> Update changelog to include effective DKIM support
> --
>
> Key: JAMES-2830
> URL: https://issues.apache.org/jira/browse/JAMES-2830
> Project: James Server
>  Issue Type: Task
>Reporter: Rémi Kowalski
>Priority: Major
> Fix For: 3.4.0
>
>  Time Spent: 0.5h
>  Remaining Estimate: 0h
>




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3249) Fix documentations errors

2020-06-18 Thread Jira
Nguyễn Việt Đức created JAMES-3249:
--

 Summary: Fix documentations errors
 Key: JAMES-3249
 URL: https://issues.apache.org/jira/browse/JAMES-3249
 Project: James Server
  Issue Type: Improvement
Reporter: Nguyễn Việt Đức


A number of documentation-related issues have been created by the QA team, this 
is a meta issue, in order to track them at once:

* `DOCUMENT > Task management > Listing tasks query should be updated to fully 
form` a little fix in `webadmin-management.md`
 *`DOCUMENT > Even Dead Letter > Correcting the document` idem
 * `Administrating DLP Configuration > "ReIndexing a user mails" has incorrect 
request` idem
 * `DOCUMENT > Administrating mail repositories > returned value example is 
incorrect when retrieving email details with Accept header is "message/rfc822"` 
example fix
 * `Able to create an alias to non-handle destination domain`



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Updated] (JAMES-3249) Fix documentations errors

2020-06-18 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3249?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nguyễn Việt Đức updated JAMES-3249:
---
Description: 
A number of documentation-related issues have been created by the QA team, this 
is a meta issue, in order to track them at once:
 * `DOCUMENT > Task management > Listing tasks query should be updated to fully 
form` a little fix in `webadmin-management.md`
 * `DOCUMENT > Even Dead Letter > Correcting the document` idem
 * `Administrating DLP Configuration > "ReIndexing a user mails" has incorrect 
request` idem
 * `DOCUMENT > Administrating mail repositories > returned value example is 
incorrect when retrieving email details with Accept header is "message/rfc822"` 
example fix
 * `Able to create an alias to non-handle destination domain`

  was:
A number of documentation-related issues have been created by the QA team, this 
is a meta issue, in order to track them at once:

* `DOCUMENT > Task management > Listing tasks query should be updated to fully 
form` a little fix in `webadmin-management.md`
 *`DOCUMENT > Even Dead Letter > Correcting the document` idem
 * `Administrating DLP Configuration > "ReIndexing a user mails" has incorrect 
request` idem
 * `DOCUMENT > Administrating mail repositories > returned value example is 
incorrect when retrieving email details with Accept header is "message/rfc822"` 
example fix
 * `Able to create an alias to non-handle destination domain`


> Fix documentations errors
> -----
>
> Key: JAMES-3249
> URL: https://issues.apache.org/jira/browse/JAMES-3249
> Project: James Server
>  Issue Type: Improvement
>Reporter: Nguyễn Việt Đức
>Priority: Major
>
> A number of documentation-related issues have been created by the QA team, 
> this is a meta issue, in order to track them at once:
>  * `DOCUMENT > Task management > Listing tasks query should be updated to 
> fully form` a little fix in `webadmin-management.md`
>  * `DOCUMENT > Even Dead Letter > Correcting the document` idem
>  * `Administrating DLP Configuration > "ReIndexing a user mails" has 
> incorrect request` idem
>  * `DOCUMENT > Administrating mail repositories > returned value example is 
> incorrect when retrieving email details with Accept header is 
> "message/rfc822"` example fix
>  * `Able to create an alias to non-handle destination domain`



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Updated] (JAMES-3249) Fix documentations errors

2020-06-18 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3249?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nguyễn Việt Đức updated JAMES-3249:
---
Description: 
A number of documentation-related issues have been created by the QA team, this 
is a meta issue, in order to track them at once:
 * DOCUMENT > Task management > Listing tasks query should be updated to fully 
form a little fix in webadmin-management.md
 * DOCUMENT > Even Dead Letter > Correcting the document idem
 * Administrating DLP Configuration > "ReIndexing a user mails" has incorrect 
request idem
 * DOCUMENT > Administrating mail repositories > returned value example is 
incorrect when retrieving email details with Accept header is "message/rfc822" 
example fix
 * Able to create an alias to non-handle destination domain

  was:
A number of documentation-related issues have been created by the QA team, this 
is a meta issue, in order to track them at once:
 * `DOCUMENT > Task management > Listing tasks query should be updated to fully 
form` a little fix in `webadmin-management.md`
 * `DOCUMENT > Even Dead Letter > Correcting the document` idem
 * `Administrating DLP Configuration > "ReIndexing a user mails" has incorrect 
request` idem
 * `DOCUMENT > Administrating mail repositories > returned value example is 
incorrect when retrieving email details with Accept header is "message/rfc822"` 
example fix
 * `Able to create an alias to non-handle destination domain`


> Fix documentations errors
> -----
>
> Key: JAMES-3249
> URL: https://issues.apache.org/jira/browse/JAMES-3249
> Project: James Server
>  Issue Type: Improvement
>Reporter: Nguyễn Việt Đức
>Priority: Major
>
> A number of documentation-related issues have been created by the QA team, 
> this is a meta issue, in order to track them at once:
>  * DOCUMENT > Task management > Listing tasks query should be updated to 
> fully form a little fix in webadmin-management.md
>  * DOCUMENT > Even Dead Letter > Correcting the document idem
>  * Administrating DLP Configuration > "ReIndexing a user mails" has incorrect 
> request idem
>  * DOCUMENT > Administrating mail repositories > returned value example is 
> incorrect when retrieving email details with Accept header is 
> "message/rfc822" example fix
>  * Able to create an alias to non-handle destination domain



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3223) Bump guava and bean-utils to fix vulnerability

2020-06-19 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3223?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rémi Kowalski closed JAMES-3223.

Fix Version/s: 3.5.0
   Resolution: Fixed

> Bump guava and bean-utils to fix vulnerability
> --
>
> Key: JAMES-3223
> URL: https://issues.apache.org/jira/browse/JAMES-3223
> Project: James Server
>  Issue Type: Bug
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Priority: Major
> Fix For: 3.5.0
>
>
> h5. [CVE-2018-10237|https://github.com/advisories/GHSA-mvr2-9pj6-7w5j]
> moderate severity
> *Vulnerable versions:* > 11.0, < 24.1.1
> *Patched version:* 24.1.1
> Unbounded memory allocation in Google Guava 11.0 through 24.x before 24.1.1 
> allows remote attackers to conduct denial of service attacks against servers 
> that depend on this library and deserialize attacker-provided data, because 
> the AtomicDoubleArray class (when serialized with Java serialization) and the 
> CompoundOrdering class (when serialized with GWT serialization) perform eager 
> allocation without appropriate checks on what a client has sent and whether 
> the data size is reasonable.
> h5. [CVE-2019-10086|https://github.com/advisories/GHSA-6phf-73q6-gh87]
> high severity
> *Vulnerable versions:* < 1.9.4
> *Patched version:* 1.9.4
> In Apache Commons Beanutils 1.9.2, a special BeanIntrospector class was added 
> which allows suppressing the ability for an attacker to access the 
> classloader via the class property available on all Java objects. We, however 
> were not using this by default characteristic of the PropertyUtilsBean.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3210) Handle Return-Path header in DSNBounce mailet

2020-06-19 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3210?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rémi Kowalski closed JAMES-3210.

Fix Version/s: 3.5.0
   Resolution: Fixed

> Handle Return-Path header in DSNBounce mailet
> -
>
> Key: JAMES-3210
> URL: https://issues.apache.org/jira/browse/JAMES-3210
> Project: James Server
>  Issue Type: Bug
>  Components: Matchers/Mailets (bundled)
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Priority: Major
> Fix For: 3.5.0
>
>
> ```
> At the origin of the complain:
> ```
> This message was created automatically by mail delivery software.
> A message that you sent could not be delivered to one or more of its
> recipients. This is a permanent error. The following address(es) failed:
> 0102016ca8bd7b6d-b28772f6-6c71-4676-8834-c48740efb2a8-000...@eu-west-1.amazonses.com
> (generated from 
> SRS0=78Gj=WP=eu-west-1.amazonses.com=0102016ca8bd7b6d-b28772f6-6c71-4676-8834-c48740efb2a8-000...@ik2.com)
> host feedback-smtp.eu-west-1.amazonses.com [54.239.37.176]
> SMTP error from remote mail server after end of data:
> 554 DSN is not RFC 3464 compliant. MSGID: (FleYRCEogpaDtH6q8Ml2-1):
> The DSN MUST be addressed (in both the message header and the transport 
> envelope) to the return address from the transport envelope which accompanied 
> the original message for which the DSN was generated. 
> https://tools.ietf.org/html/rfc3464
> ```
> DOD:
> handle the Return-Path header in the DSNBounce mailet and add an integration 
> test



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3262) Cannot run fix mailboxes inconsistencies task

2020-06-21 Thread Jira
René Cordier created JAMES-3262:
---

 Summary: Cannot run fix mailboxes inconsistencies task
 Key: JAMES-3262
 URL: https://issues.apache.org/jira/browse/JAMES-3262
 Project: James Server
  Issue Type: Bug
Reporter: René Cordier


Some user reported that when trying to run the fixing mailboxes inconsistencies 
task 
[https://github.com/apache/james-project/blob/master/src/site/markdown/server/manage-webadmin.md#fixing-mailboxes-inconsistencies]

 

They got this as a response:
{code:java}
{
  "statusCode": 500,
  "type": "ServerError",
  "message": "WebAdmin encountered an unexpected internal error",
  "details": null
}
{code}
A first investigation reveals that they might have forgotten to add the 
`{{I-KNOW-WHAT-I-M-DOING}}` header, leading to a 500 response. However, we 
should not return 500 in this case.

 

*DoD* :
 * Reproduce the error with a unit test
 * fix it: upon missing header we should return 400
 * eventually rework the webadmin documentation to make it more clear that this 
header is needed



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Updated] (JAMES-3262) Cannot run fix mailboxes inconsistencies task

2020-06-22 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3262?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier updated JAMES-3262:

Description: 
Some user reported that when trying to run the fixing mailboxes inconsistencies 
task 
[https://github.com/apache/james-project/blob/master/src/site/markdown/server/manage-webadmin.md#fixing-mailboxes-inconsistencies]

 

They got this as a response:
{code:java}
{
  "statusCode": 500,
  "type": "ServerError",
  "message": "WebAdmin encountered an unexpected internal error",
  "details": null
}
{code}
A first investigation reveals that they might have forgotten to add the 
`{{I-KNOW-WHAT-I-M-DOING}}` header, leading to a 500 response. However, we 
should not return 500 in this case. Copy of the stacktrace to support this 
theory:
{code:java}
james-68b98ddd79-dp2mh james 01:18:56.382 [ERROR] s.h.m.GeneralError - 
james-68b98ddd79-dp2mh james java.lang.NullPointerException: null
james-68b98ddd79-dp2mh jamesat 
org.apache.james.webadmin.routes.SolveMailboxInconsistenciesRequestToTask.lambda$new$0(SolveMailboxInconsistenciesRequestToTask.java:39)
james-68b98ddd79-dp2mh jamesat 
org.apache.james.webadmin.tasks.TaskFromRequestRegistry$TaskRegistration.fromRequest(TaskFromRequestRegistry.java:115)
james-68b98ddd79-dp2mh jamesat 
org.apache.james.webadmin.tasks.TaskFromRequestRegistry.lambda$fromRequest$0(TaskFromRequestRegistry.java:141)
james-68b98ddd79-dp2mh jamesat 
com.github.fge.lambdas.functions.FunctionChainer.lambda$sneakyThrow$49(FunctionChainer.java:74)
james-68b98ddd79-dp2mh jamesat java.base/java.util.Optional.map(Unknown 
Source)
james-68b98ddd79-dp2mh jamesat 
org.apache.james.webadmin.tasks.TaskFromRequestRegistry.fromRequest(TaskFromRequestRegistry.java:141)
james-68b98ddd79-dp2mh jamesat 
org.apache.james.webadmin.tasks.TaskFromRequest$TaskRoute.handle(TaskFromRequest.java:46)
james-68b98ddd79-dp2mh jamesat 
org.apache.james.webadmin.tasks.TaskFromRequest$TaskRoute.handle(TaskFromRequest.java:35)
james-68b98ddd79-dp2mh jamesat 
spark.ResponseTransformerRouteImpl$1.handle(ResponseTransformerRouteImpl.java:47)
james-68b98ddd79-dp2mh jamesat 
spark.http.matching.Routes.execute(Routes.java:61)
james-68b98ddd79-dp2mh jamesat 
spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:134)
james-68b98ddd79-dp2mh jamesat 
spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50)
james-68b98ddd79-dp2mh jamesat 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1671)
james-68b98ddd79-dp2mh jamesat 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
james-68b98ddd79-dp2mh jamesat 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
james-68b98ddd79-dp2mh jamesat 
org.eclipse.jetty.server.Server.handle(Server.java:505)
james-68b98ddd79-dp2mh jamesat 
org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
james-68b98ddd79-dp2mh jamesat 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
james-68b98ddd79-dp2mh jamesat 
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
james-68b98ddd79-dp2mh jamesat 
org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
james-68b98ddd79-dp2mh jamesat 
org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
james-68b98ddd79-dp2mh jamesat 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
james-68b98ddd79-dp2mh jamesat 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
james-68b98ddd79-dp2mh jamesat 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
james-68b98ddd79-dp2mh jamesat 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
james-68b98ddd79-dp2mh jamesat 
org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
james-68b98ddd79-dp2mh jamesat 
org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:698)
james-68b98ddd79-dp2mh jamesat 
org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:804)
james-68b98ddd79-dp2mh jamesat java.base/java.lang.Thread.run(Unknown 
Source)
{code}
*DoD* :
 * Reproduce the error with a unit test
 * fix it: upon missing header we should return 400
 * eventually rework the webadmin documentation to make it more clear that this 
header is needed

  was:
Some user reported that when trying to run the fixing mailboxes inconsistencies 
task 
[https://github.com/apache/james-project/blob/master/src/site/markdown/server/manage-webadmin.md#fixing-mailboxes-inconsistencies]

 

They got this as a response:
{code:java}
{
  "

[jira] [Commented] (JAMES-3262) Cannot run fix mailboxes inconsistencies task

2020-06-22 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3262?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17142544#comment-17142544
 ] 

René Cordier commented on JAMES-3262:
-

[https://github.com/linagora/james-project/pull/3462] contributed to solve the 
issue

> Cannot run fix mailboxes inconsistencies task
> -
>
> Key: JAMES-3262
> URL: https://issues.apache.org/jira/browse/JAMES-3262
> Project: James Server
>  Issue Type: Bug
>Reporter: René Cordier
>Priority: Major
>
> Some user reported that when trying to run the fixing mailboxes 
> inconsistencies task 
> [https://github.com/apache/james-project/blob/master/src/site/markdown/server/manage-webadmin.md#fixing-mailboxes-inconsistencies]
>  
> They got this as a response:
> {code:java}
> {
>   "statusCode": 500,
>   "type": "ServerError",
>   "message": "WebAdmin encountered an unexpected internal error",
>   "details": null
> }
> {code}
> A first investigation reveals that they might have forgotten to add the 
> `{{I-KNOW-WHAT-I-M-DOING}}` header, leading to a 500 response. However, we 
> should not return 500 in this case. Copy of the stacktrace to support this 
> theory:
> {code:java}
> james-68b98ddd79-dp2mh james 01:18:56.382 [ERROR] s.h.m.GeneralError - 
> james-68b98ddd79-dp2mh james java.lang.NullPointerException: null
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.routes.SolveMailboxInconsistenciesRequestToTask.lambda$new$0(SolveMailboxInconsistenciesRequestToTask.java:39)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequestRegistry$TaskRegistration.fromRequest(TaskFromRequestRegistry.java:115)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequestRegistry.lambda$fromRequest$0(TaskFromRequestRegistry.java:141)
> james-68b98ddd79-dp2mh james  at 
> com.github.fge.lambdas.functions.FunctionChainer.lambda$sneakyThrow$49(FunctionChainer.java:74)
> james-68b98ddd79-dp2mh james  at java.base/java.util.Optional.map(Unknown 
> Source)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequestRegistry.fromRequest(TaskFromRequestRegistry.java:141)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequest$TaskRoute.handle(TaskFromRequest.java:46)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequest$TaskRoute.handle(TaskFromRequest.java:35)
> james-68b98ddd79-dp2mh james  at 
> spark.ResponseTransformerRouteImpl$1.handle(ResponseTransformerRouteImpl.java:47)
> james-68b98ddd79-dp2mh james  at 
> spark.http.matching.Routes.execute(Routes.java:61)
> james-68b98ddd79-dp2mh james  at 
> spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:134)
> james-68b98ddd79-dp2mh james  at 
> spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1671)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.Server.handle(Server.java:505)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
> james-68b9

[jira] [Resolved] (JAMES-3262) Cannot run fix mailboxes inconsistencies task

2020-06-22 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3262?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier resolved JAMES-3262.
-
Fix Version/s: 3.5.0
   Resolution: Fixed

> Cannot run fix mailboxes inconsistencies task
> -
>
> Key: JAMES-3262
> URL: https://issues.apache.org/jira/browse/JAMES-3262
> Project: James Server
>  Issue Type: Bug
>Reporter: René Cordier
>Priority: Major
> Fix For: 3.5.0
>
>
> Some user reported that when trying to run the fixing mailboxes 
> inconsistencies task 
> [https://github.com/apache/james-project/blob/master/src/site/markdown/server/manage-webadmin.md#fixing-mailboxes-inconsistencies]
>  
> They got this as a response:
> {code:java}
> {
>   "statusCode": 500,
>   "type": "ServerError",
>   "message": "WebAdmin encountered an unexpected internal error",
>   "details": null
> }
> {code}
> A first investigation reveals that they might have forgotten to add the 
> `{{I-KNOW-WHAT-I-M-DOING}}` header, leading to a 500 response. However, we 
> should not return 500 in this case. Copy of the stacktrace to support this 
> theory:
> {code:java}
> james-68b98ddd79-dp2mh james 01:18:56.382 [ERROR] s.h.m.GeneralError - 
> james-68b98ddd79-dp2mh james java.lang.NullPointerException: null
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.routes.SolveMailboxInconsistenciesRequestToTask.lambda$new$0(SolveMailboxInconsistenciesRequestToTask.java:39)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequestRegistry$TaskRegistration.fromRequest(TaskFromRequestRegistry.java:115)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequestRegistry.lambda$fromRequest$0(TaskFromRequestRegistry.java:141)
> james-68b98ddd79-dp2mh james  at 
> com.github.fge.lambdas.functions.FunctionChainer.lambda$sneakyThrow$49(FunctionChainer.java:74)
> james-68b98ddd79-dp2mh james  at java.base/java.util.Optional.map(Unknown 
> Source)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequestRegistry.fromRequest(TaskFromRequestRegistry.java:141)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequest$TaskRoute.handle(TaskFromRequest.java:46)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequest$TaskRoute.handle(TaskFromRequest.java:35)
> james-68b98ddd79-dp2mh james  at 
> spark.ResponseTransformerRouteImpl$1.handle(ResponseTransformerRouteImpl.java:47)
> james-68b98ddd79-dp2mh james  at 
> spark.http.matching.Routes.execute(Routes.java:61)
> james-68b98ddd79-dp2mh james  at 
> spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:134)
> james-68b98ddd79-dp2mh james  at 
> spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1671)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.Server.handle(Server.java:505)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.Q

[jira] [Commented] (JAMES-3262) Cannot run fix mailboxes inconsistencies task

2020-06-22 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3262?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17142543#comment-17142543
 ] 

René Cordier commented on JAMES-3262:
-

[~btellier]: yes there is, the description has been updated with it, thanks for 
asking !

> Cannot run fix mailboxes inconsistencies task
> -
>
> Key: JAMES-3262
> URL: https://issues.apache.org/jira/browse/JAMES-3262
> Project: James Server
>  Issue Type: Bug
>Reporter: René Cordier
>Priority: Major
>
> Some user reported that when trying to run the fixing mailboxes 
> inconsistencies task 
> [https://github.com/apache/james-project/blob/master/src/site/markdown/server/manage-webadmin.md#fixing-mailboxes-inconsistencies]
>  
> They got this as a response:
> {code:java}
> {
>   "statusCode": 500,
>   "type": "ServerError",
>   "message": "WebAdmin encountered an unexpected internal error",
>   "details": null
> }
> {code}
> A first investigation reveals that they might have forgotten to add the 
> `{{I-KNOW-WHAT-I-M-DOING}}` header, leading to a 500 response. However, we 
> should not return 500 in this case. Copy of the stacktrace to support this 
> theory:
> {code:java}
> james-68b98ddd79-dp2mh james 01:18:56.382 [ERROR] s.h.m.GeneralError - 
> james-68b98ddd79-dp2mh james java.lang.NullPointerException: null
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.routes.SolveMailboxInconsistenciesRequestToTask.lambda$new$0(SolveMailboxInconsistenciesRequestToTask.java:39)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequestRegistry$TaskRegistration.fromRequest(TaskFromRequestRegistry.java:115)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequestRegistry.lambda$fromRequest$0(TaskFromRequestRegistry.java:141)
> james-68b98ddd79-dp2mh james  at 
> com.github.fge.lambdas.functions.FunctionChainer.lambda$sneakyThrow$49(FunctionChainer.java:74)
> james-68b98ddd79-dp2mh james  at java.base/java.util.Optional.map(Unknown 
> Source)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequestRegistry.fromRequest(TaskFromRequestRegistry.java:141)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequest$TaskRoute.handle(TaskFromRequest.java:46)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequest$TaskRoute.handle(TaskFromRequest.java:35)
> james-68b98ddd79-dp2mh james  at 
> spark.ResponseTransformerRouteImpl$1.handle(ResponseTransformerRouteImpl.java:47)
> james-68b98ddd79-dp2mh james  at 
> spark.http.matching.Routes.execute(Routes.java:61)
> james-68b98ddd79-dp2mh james  at 
> spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:134)
> james-68b98ddd79-dp2mh james  at 
> spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1671)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.Server.handle(Server.java:505)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
> 

[jira] [Commented] (JAMES-3249) Fix some webadmin documentations errors

2020-06-22 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3249?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17142546#comment-17142546
 ] 

René Cordier commented on JAMES-3249:
-

[https://github.com/linagora/james-project/pull/3461] contributed some fixes to 
the webadmin documentation

> Fix some webadmin documentations errors
> ---
>
> Key: JAMES-3249
> URL: https://issues.apache.org/jira/browse/JAMES-3249
> Project: James Server
>  Issue Type: Improvement
>Reporter: Nguyễn Việt Đức
>Priority: Major
>
> A number of documentation-related issues have been created by the QA team, 
> this is a meta issue, in order to track them at once:
>  * DOCUMENT > Task management > Listing tasks query should be updated to 
> fully form a little fix in webadmin-management.md
>  * DOCUMENT > Even Dead Letter > Correcting the document idem
>  * Administrating DLP Configuration > "ReIndexing a user mails" has incorrect 
> request idem
>  * DOCUMENT > Administrating mail repositories > returned value example is 
> incorrect when retrieving email details with Accept header is 
> "message/rfc822" example fix
>  * Able to create an alias to non-handle destination domain



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Comment Edited] (JAMES-3249) Fix some webadmin documentations errors

2020-06-22 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3249?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17142546#comment-17142546
 ] 

René Cordier edited comment on JAMES-3249 at 6/23/20, 2:26 AM:
---

[https://github.com/linagora/james-project/pull/3461] contributed those fixes 
to the webadmin documentation


was (Author: rcordier):
[https://github.com/linagora/james-project/pull/3461] contributed some fixes to 
the webadmin documentation

> Fix some webadmin documentations errors
> ---
>
> Key: JAMES-3249
> URL: https://issues.apache.org/jira/browse/JAMES-3249
> Project: James Server
>  Issue Type: Improvement
>Reporter: Nguyễn Việt Đức
>Priority: Major
>
> A number of documentation-related issues have been created by the QA team, 
> this is a meta issue, in order to track them at once:
>  * DOCUMENT > Task management > Listing tasks query should be updated to 
> fully form a little fix in webadmin-management.md
>  * DOCUMENT > Even Dead Letter > Correcting the document idem
>  * Administrating DLP Configuration > "ReIndexing a user mails" has incorrect 
> request idem
>  * DOCUMENT > Administrating mail repositories > returned value example is 
> incorrect when retrieving email details with Accept header is 
> "message/rfc822" example fix
>  * Able to create an alias to non-handle destination domain



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3262) Cannot run fix mailboxes inconsistencies task

2020-06-22 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3262?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3262.
---

> Cannot run fix mailboxes inconsistencies task
> -
>
> Key: JAMES-3262
> URL: https://issues.apache.org/jira/browse/JAMES-3262
> Project: James Server
>  Issue Type: Bug
>Reporter: René Cordier
>Priority: Major
> Fix For: 3.5.0
>
>
> Some user reported that when trying to run the fixing mailboxes 
> inconsistencies task 
> [https://github.com/apache/james-project/blob/master/src/site/markdown/server/manage-webadmin.md#fixing-mailboxes-inconsistencies]
>  
> They got this as a response:
> {code:java}
> {
>   "statusCode": 500,
>   "type": "ServerError",
>   "message": "WebAdmin encountered an unexpected internal error",
>   "details": null
> }
> {code}
> A first investigation reveals that they might have forgotten to add the 
> `{{I-KNOW-WHAT-I-M-DOING}}` header, leading to a 500 response. However, we 
> should not return 500 in this case. Copy of the stacktrace to support this 
> theory:
> {code:java}
> james-68b98ddd79-dp2mh james 01:18:56.382 [ERROR] s.h.m.GeneralError - 
> james-68b98ddd79-dp2mh james java.lang.NullPointerException: null
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.routes.SolveMailboxInconsistenciesRequestToTask.lambda$new$0(SolveMailboxInconsistenciesRequestToTask.java:39)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequestRegistry$TaskRegistration.fromRequest(TaskFromRequestRegistry.java:115)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequestRegistry.lambda$fromRequest$0(TaskFromRequestRegistry.java:141)
> james-68b98ddd79-dp2mh james  at 
> com.github.fge.lambdas.functions.FunctionChainer.lambda$sneakyThrow$49(FunctionChainer.java:74)
> james-68b98ddd79-dp2mh james  at java.base/java.util.Optional.map(Unknown 
> Source)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequestRegistry.fromRequest(TaskFromRequestRegistry.java:141)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequest$TaskRoute.handle(TaskFromRequest.java:46)
> james-68b98ddd79-dp2mh james  at 
> org.apache.james.webadmin.tasks.TaskFromRequest$TaskRoute.handle(TaskFromRequest.java:35)
> james-68b98ddd79-dp2mh james  at 
> spark.ResponseTransformerRouteImpl$1.handle(ResponseTransformerRouteImpl.java:47)
> james-68b98ddd79-dp2mh james  at 
> spark.http.matching.Routes.execute(Routes.java:61)
> james-68b98ddd79-dp2mh james  at 
> spark.http.matching.MatcherFilter.doFilter(MatcherFilter.java:134)
> james-68b98ddd79-dp2mh james  at 
> spark.embeddedserver.jetty.JettyHandler.doHandle(JettyHandler.java:50)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1671)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.Server.handle(Server.java:505)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:267)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
> james-68b98ddd79-dp2mh james  at 
> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:698)
>

[jira] [Closed] (JAMES-3249) Fix some webadmin documentations errors

2020-06-22 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3249?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3249.
---
Fix Version/s: 3.5.0
   Resolution: Done

> Fix some webadmin documentations errors
> ---
>
> Key: JAMES-3249
> URL: https://issues.apache.org/jira/browse/JAMES-3249
> Project: James Server
>  Issue Type: Improvement
>Reporter: Nguyễn Việt Đức
>Priority: Major
> Fix For: 3.5.0
>
>
> A number of documentation-related issues have been created by the QA team, 
> this is a meta issue, in order to track them at once:
>  * DOCUMENT > Task management > Listing tasks query should be updated to 
> fully form a little fix in webadmin-management.md
>  * DOCUMENT > Even Dead Letter > Correcting the document idem
>  * Administrating DLP Configuration > "ReIndexing a user mails" has incorrect 
> request idem
>  * DOCUMENT > Administrating mail repositories > returned value example is 
> incorrect when retrieving email details with Accept header is 
> "message/rfc822" example fix
>  * Able to create an alias to non-handle destination domain



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3264) MAILBOX details are read 3 times upon indexing

2020-06-22 Thread Jira
Nguyễn Việt Đức created JAMES-3264:
--

 Summary: MAILBOX details are read 3 times upon indexing
 Key: JAMES-3264
 URL: https://issues.apache.org/jira/browse/JAMES-3264
 Project: James Server
  Issue Type: Improvement
Reporter: Nguyễn Việt Đức


!https://ci.linagora.com/linagora/lgs/openpaas/james/uploads/e66e59cdfb7bf1e09e103a71ebad7b89/Capture_d_%C3%A9cran_de_2020-06-22_12-05-54.png!

We can notice 3 mailbox reads for each indexed message

This is too much, we should reduce this to a single mailbox read.

*Definition of done*
 * Indexing a mail do the same count (or less) of mailbox reads (compared to 
messages reads)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3268) Reactivate MOVE and ACL capabilities in docker image

2020-06-23 Thread Jira
Rémi Kowalski created JAMES-3268:


 Summary: Reactivate MOVE and ACL capabilities in docker image
 Key: JAMES-3268
 URL: https://issues.apache.org/jira/browse/JAMES-3268
 Project: James Server
  Issue Type: Bug
  Components: docker
Affects Versions: 3.5.0
Reporter: Rémi Kowalski


On the docker image IMAP configuration, the `MOVE` and `ACL` capabilities are 
disabled.
This could have an impact on integration testing as the imap client will use 
`COPY` + `EXPUNGED` in place of `MOVE` which could lead to Quota limit when the 
quota limit is reached and we try to move a mail to the trash.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3268) Reactivate MOVE and ACL capabilities in docker image

2020-06-24 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3268?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17143633#comment-17143633
 ] 

Rémi Kowalski commented on JAMES-3268:
--

PR fixing this : https://github.com/linagora/james-project/pull/3470

> Reactivate MOVE and ACL capabilities in docker image
> 
>
> Key: JAMES-3268
> URL: https://issues.apache.org/jira/browse/JAMES-3268
> Project: James Server
>  Issue Type: Bug
>  Components: docker
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Priority: Major
>
> On the docker image IMAP configuration, the `MOVE` and `ACL` capabilities are 
> disabled.
> This could have an impact on integration testing as the imap client will use 
> `COPY` + `EXPUNGED` in place of `MOVE` which could lead to Quota limit when 
> the quota limit is reached and we try to move a mail to the trash.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3277) Don't read outbox mailbox for each message in SetMessagesUpdateProcessor

2020-06-24 Thread Jira
Rémi Kowalski created JAMES-3277:


 Summary: Don't read outbox mailbox for each message in 
SetMessagesUpdateProcessor
 Key: JAMES-3277
 URL: https://issues.apache.org/jira/browse/JAMES-3277
 Project: James Server
  Issue Type: Bug
  Components: JMAP
Affects Versions: 3.5.0
Reporter: Rémi Kowalski
Assignee: Antoine Duprat


{{}}
We are reading system mailboxes to validate each updates. 
*DoD*
it should be done only once



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3273) Acceptance criteria checklist

2020-06-24 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3273?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17144587#comment-17144587
 ] 

René Cordier commented on JAMES-3273:
-

For verifying that we have similar artifacts generated from Maven and Gradle, I 
saw you can do scans for maven too (which I think you did in the PR [~ieugen] 
). Comparing both scans could help no I guess?

> Acceptance criteria checklist
> -
>
> Key: JAMES-3273
> URL: https://issues.apache.org/jira/browse/JAMES-3273
> Project: James Server
>  Issue Type: Sub-task
>Reporter: Ioan Eugen Stan
>Assignee: Benoit Tellier
>Priority: Major
>
> We need a list of acceptance criteria for making the gradle migration.
> We need a checklist so we know when we are ready for the merge.
> Please add this checklist here. 
> Some items are sub-tasks of https://issues.apache.org/jira/browse/JAMES-3260 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Assigned] (JAMES-3271) Implement checkstyle and code formatting for gradle

2020-06-24 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3271?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier reassigned JAMES-3271:
---

Assignee: René Cordier

> Implement checkstyle and code formatting for gradle
> ---
>
> Key: JAMES-3271
> URL: https://issues.apache.org/jira/browse/JAMES-3271
> Project: James Server
>  Issue Type: Sub-task
>Reporter: Ioan Eugen Stan
>Assignee: René Cordier
>Priority: Major
>
> Gradle has nice support for this. 
> See https://newsletter.gradle.com/2020/06 :
> Rewrite - a new plugin aiming to automatically refactor code by, for example, 
> applying Checkstyle rules
> Spotless - the popular plugin published a new major release that supports 
> local build cache
> https://github.com/apache/james-project/pull/217#issuecomment-648642120



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3202) ReIndexing "filtering" for only outdated indexed data

2020-06-24 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3202?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17144633#comment-17144633
 ] 

René Cordier commented on JAMES-3202:
-

[https://github.com/linagora/james-project/pull/3452] was the first part of 
this work

> ReIndexing "filtering" for only outdated indexed data
> -
>
> Key: JAMES-3202
> URL: https://issues.apache.org/jira/browse/JAMES-3202
> Project: James Server
>  Issue Type: Improvement
>Reporter: René Cordier
>Priority: Major
> Fix For: 3.6.0
>
>
> *Why?*
> ReIndexing can be slow, and requires to read all messages in the DB, then 
> trigger the full reIndexing, even when the document is not outdated.
> All these document changes creates a lot of deleted documents. Lucene "marks 
> them as deleted", polluting the entire index until segment merging happens 
> (yet another costly operation). The less we do updates the better. To be 
> noted that partial updates still leads to a full new document in Lucene, and 
> just optimises bandwith + avoids reads.
> *Need specification*
> As an admin, I want to run a reIndex.
> We furtermore handle `RunningOptions` allowing to specify the message rate 
> attempted. See [https://github.com/linagora/james-project/pull/3394]
> We still need, given a message, get it's search index representation (at 
> least for its mutable data). From this we will be able to condition the 
> reindexing to outdated/non exsting data, significantly fasting up the 
> reindexing process on mostly valid indexes. The admin could then mention via 
> query parameter this option (carried over in running options).
> *MessageSearchIndex API changes*:
> {code:java}
> inderface MessageSearchIndex {
>//...
>Mono retrieveIndexedFlags(MailboxId mailboxId, MessageUid uid);
>//...
> }
> {code}
> ElasticSearch will rely on the _GET_ verb (not search).
> Unit test will be written for this new method.
> ReIndexing `RunningOptions` will then carry over the option, that 
> ReIndexerPerformer will need to take into account.
> Sample webadmin API:
> {code:bash}
> curl -XPOST http://james:8000/mailboxes?action=reindex&filter=outdatedIndex
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Updated] (JAMES-3277) Don't read outbox mailbox for each message in SetMessagesUpdateProcessor

2020-06-25 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3277?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rémi Kowalski updated JAMES-3277:
-
Attachment: Capture_d_écran_de_2020-06-22_12-10-11.png

> Don't read outbox mailbox for each message in SetMessagesUpdateProcessor
> 
>
> Key: JAMES-3277
> URL: https://issues.apache.org/jira/browse/JAMES-3277
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Assignee: Antoine Duprat
>Priority: Major
> Attachments: Capture_d_écran_de_2020-06-22_12-10-11.png, 
> Capture_d_écran_de_2020-06-22_12-11-46.png
>
>
> {{}}
> We are reading system mailboxes to validate each updates. 
> *DoD*
> it should be done only once



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Updated] (JAMES-3277) Don't read outbox mailbox for each message in SetMessagesUpdateProcessor

2020-06-25 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3277?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rémi Kowalski updated JAMES-3277:
-
Description: 
{{}}
 We are reading system mailboxes to validate each updates. 


What is surprising is the high amount of mailbox reads: we are reading system 
mailboxes to validate each updates.



 *DoD*
 it should be done only once

  was:
{{}}
We are reading system mailboxes to validate each updates. 
*DoD*
it should be done only once


> Don't read outbox mailbox for each message in SetMessagesUpdateProcessor
> 
>
> Key: JAMES-3277
> URL: https://issues.apache.org/jira/browse/JAMES-3277
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Assignee: Antoine Duprat
>Priority: Major
> Attachments: Capture_d_écran_de_2020-06-22_12-10-11.png, 
> Capture_d_écran_de_2020-06-22_12-11-46.png
>
>
> {{}}
>  We are reading system mailboxes to validate each updates. 
> What is surprising is the high amount of mailbox reads: we are reading system 
> mailboxes to validate each updates.
>  *DoD*
>  it should be done only once



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Updated] (JAMES-3277) Don't read outbox mailbox for each message in SetMessagesUpdateProcessor

2020-06-25 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3277?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rémi Kowalski updated JAMES-3277:
-
Attachment: Capture_d_écran_de_2020-06-22_12-11-46.png

> Don't read outbox mailbox for each message in SetMessagesUpdateProcessor
> 
>
> Key: JAMES-3277
> URL: https://issues.apache.org/jira/browse/JAMES-3277
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Assignee: Antoine Duprat
>Priority: Major
> Attachments: Capture_d_écran_de_2020-06-22_12-10-11.png, 
> Capture_d_écran_de_2020-06-22_12-11-46.png
>
>
> {{}}
>  We are reading system mailboxes to validate each updates. 
> What is surprising is the high amount of mailbox reads: we are reading system 
> mailboxes to validate each updates.
>  *DoD*
>  it should be done only once



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Updated] (JAMES-3277) Don't read outbox mailbox for each message in SetMessagesUpdateProcessor

2020-06-25 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3277?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Rémi Kowalski updated JAMES-3277:
-
Description: 
{{}}
 We are reading system mailboxes to validate each updates.

What is surprising is the high amount of mailbox reads: we are reading system 
mailboxes to validate each updates.

The flamegraph correlates positively with the above assertion.
(see attachments)

*DoD*
 it should be done only once

  was:
{{}}
 We are reading system mailboxes to validate each updates. 


What is surprising is the high amount of mailbox reads: we are reading system 
mailboxes to validate each updates.



 *DoD*
 it should be done only once


> Don't read outbox mailbox for each message in SetMessagesUpdateProcessor
> 
>
> Key: JAMES-3277
> URL: https://issues.apache.org/jira/browse/JAMES-3277
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Assignee: Antoine Duprat
>Priority: Major
> Attachments: Capture_d_écran_de_2020-06-22_12-10-11.png, 
> Capture_d_écran_de_2020-06-22_12-11-46.png
>
>
> {{}}
>  We are reading system mailboxes to validate each updates.
> What is surprising is the high amount of mailbox reads: we are reading system 
> mailboxes to validate each updates.
> The flamegraph correlates positively with the above assertion.
> (see attachments)
> *DoD*
>  it should be done only once



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3271) Implement checkstyle and code formatting for gradle

2020-06-26 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17146225#comment-17146225
 ] 

René Cordier commented on JAMES-3271:
-

An attempt for the checkstyle with Gradle: 
https://github.com/apache/james-project/pull/226

> Implement checkstyle and code formatting for gradle
> ---
>
> Key: JAMES-3271
> URL: https://issues.apache.org/jira/browse/JAMES-3271
> Project: James Server
>  Issue Type: Sub-task
>Reporter: Ioan Eugen Stan
>Assignee: René Cordier
>Priority: Major
>  Time Spent: 10m
>  Remaining Estimate: 0h
>
> Gradle has nice support for this. 
> See https://newsletter.gradle.com/2020/06 :
> Rewrite - a new plugin aiming to automatically refactor code by, for example, 
> applying Checkstyle rules
> Spotless - the popular plugin published a new major release that supports 
> local build cache
> https://github.com/apache/james-project/pull/217#issuecomment-648642120



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3269) MessageFastView should be using moving averages

2020-06-30 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3269?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17148404#comment-17148404
 ] 

René Cordier commented on JAMES-3269:
-

[https://github.com/linagora/james-project/pull/3439] contributed to this

> MessageFastView should be using moving averages
> ---
>
> Key: JAMES-3269
> URL: https://issues.apache.org/jira/browse/JAMES-3269
> Project: James Server
>  Issue Type: Improvement
>Reporter: Lan Khuat
>Priority: Major
>
> MessageFastViewProjection health check currently relies on total count since 
> last reboot and thus, does not correctly reflect latest server state,  
> especially for a long running server instance.
> *DOD:* Replace the current metric with a  counter keeping track of events 
> that happen within a 5 minutes time window.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3269) MessageFastView should be using moving averages

2020-06-30 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3269?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3269.
---
Fix Version/s: 3.6.0
   Resolution: Fixed

> MessageFastView should be using moving averages
> ---
>
> Key: JAMES-3269
> URL: https://issues.apache.org/jira/browse/JAMES-3269
> Project: James Server
>  Issue Type: Improvement
>Reporter: Lan Khuat
>Priority: Major
> Fix For: 3.6.0
>
>
> MessageFastViewProjection health check currently relies on total count since 
> last reboot and thus, does not correctly reflect latest server state,  
> especially for a long running server instance.
> *DOD:* Replace the current metric with a  counter keeping track of events 
> that happen within a 5 minutes time window.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3277) Don't read outbox mailbox for each message in SetMessagesUpdateProcessor

2020-06-30 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3277?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17148408#comment-17148408
 ] 

René Cordier commented on JAMES-3277:
-

[https://github.com/linagora/james-project/pull/3478] has been merged

> Don't read outbox mailbox for each message in SetMessagesUpdateProcessor
> 
>
> Key: JAMES-3277
> URL: https://issues.apache.org/jira/browse/JAMES-3277
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Assignee: Antoine Duprat
>Priority: Major
> Attachments: Capture_d_écran_de_2020-06-22_12-10-11.png, 
> Capture_d_écran_de_2020-06-22_12-11-46.png
>
>
> {{}}
>  We are reading system mailboxes to validate each updates.
> What is surprising is the high amount of mailbox reads: we are reading system 
> mailboxes to validate each updates.
> The flamegraph correlates positively with the above assertion.
> (see attachments)
> *DoD*
>  it should be done only once



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3289) Flux.merge bugs lead to build instability

2020-06-30 Thread Jira
Rémi Kowalski created JAMES-3289:


 Summary: Flux.merge bugs lead to build instability
 Key: JAMES-3289
 URL: https://issues.apache.org/jira/browse/JAMES-3289
 Project: James Server
  Issue Type: Bug
  Components: tests
Affects Versions: 3.5.0
Reporter: Rémi Kowalski


This reactor bug :
[https://github.com/reactor/reactor-core/issues/1941]
is the source of instability in our tests, as in the case of a first failing 
first publisher in a merge operation, its error would not be propagated and the 
result of the merge will be a successful Publisher instead of the expected 
failing one.

This behavior is reproductible in :
ConsistencyTasksIntegrationTest.shouldRecomputeMailboxCounters
Where the merge operation in CassandraMessageIdMapper.insertIds is impacted by 
this bug.

This bug should not be a real problem in real usage as it fails only when the 
failure is immediate. Which should not be the case with Publisher doing IOs in 
production usage.

So we will add a delay in the throwing behavior in the integration tests and 
wait for this bug to be fixed in reactor.

{color:#00627a} {color}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3271) Implement checkstyle and code formatting for gradle

2020-06-30 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3271?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17148529#comment-17148529
 ] 

René Cordier commented on JAMES-3271:
-

[https://github.com/apache/james-project/pull/228] allowed to fix checkstyle 
issues on test classes

> Implement checkstyle and code formatting for gradle
> ---
>
> Key: JAMES-3271
> URL: https://issues.apache.org/jira/browse/JAMES-3271
> Project: James Server
>  Issue Type: Sub-task
>Reporter: Ioan Eugen Stan
>Assignee: René Cordier
>Priority: Major
>  Time Spent: 2.5h
>  Remaining Estimate: 0h
>
> Gradle has nice support for this. 
> See https://newsletter.gradle.com/2020/06 :
> Rewrite - a new plugin aiming to automatically refactor code by, for example, 
> applying Checkstyle rules
> Spotless - the popular plugin published a new major release that supports 
> local build cache
> https://github.com/apache/james-project/pull/217#issuecomment-648642120



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3277) Don't read outbox mailbox for each message in SetMessagesUpdateProcessor

2020-06-30 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3277?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17148531#comment-17148531
 ] 

René Cordier commented on JAMES-3277:
-

[https://github.com/linagora/james-project/pull/3481] has been merged

> Don't read outbox mailbox for each message in SetMessagesUpdateProcessor
> 
>
> Key: JAMES-3277
> URL: https://issues.apache.org/jira/browse/JAMES-3277
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Assignee: Antoine Duprat
>Priority: Major
> Attachments: Capture_d_écran_de_2020-06-22_12-10-11.png, 
> Capture_d_écran_de_2020-06-22_12-11-46.png
>
>
> {{}}
>  We are reading system mailboxes to validate each updates.
> What is surprising is the high amount of mailbox reads: we are reading system 
> mailboxes to validate each updates.
> The flamegraph correlates positively with the above assertion.
> (see attachments)
> *DoD*
>  it should be done only once



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3277) Don't read outbox mailbox for each message in SetMessagesUpdateProcessor

2020-06-30 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3277?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3277.
---
Fix Version/s: 3.6.0
   Resolution: Fixed

> Don't read outbox mailbox for each message in SetMessagesUpdateProcessor
> 
>
> Key: JAMES-3277
> URL: https://issues.apache.org/jira/browse/JAMES-3277
> Project: James Server
>  Issue Type: Bug
>  Components: JMAP
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Assignee: Antoine Duprat
>Priority: Major
> Fix For: 3.6.0
>
> Attachments: Capture_d_écran_de_2020-06-22_12-10-11.png, 
> Capture_d_écran_de_2020-06-22_12-11-46.png
>
>
> {{}}
>  We are reading system mailboxes to validate each updates.
> What is surprising is the high amount of mailbox reads: we are reading system 
> mailboxes to validate each updates.
> The flamegraph correlates positively with the above assertion.
> (see attachments)
> *DoD*
>  it should be done only once



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3295) Integration tests : SMTP out - retry back off leveraging MailRepositrories and reprocessing

2020-07-07 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17153181#comment-17153181
 ] 

René Cordier commented on JAMES-3295:
-

[https://github.com/linagora/james-project/pull/3543] introduced integration 
tests to demonstrate the issues

> Integration tests : SMTP out - retry back off leveraging MailRepositrories 
> and reprocessing
> ---
>
> Key: JAMES-3295
> URL: https://issues.apache.org/jira/browse/JAMES-3295
> Project: James Server
>  Issue Type: New Feature
>  Components: Queue, rabbitmq, Remote Delivery, tests
>Reporter: Benoit Tellier
>Priority: Major
> Attachments: aca6e77b-c720-42a2-b78e-0e74d77aa424.png
>
>
> *Context*
> Distributed James do not support MailQueue delays making it unusable as a MX 
> server.
> However given a fixed network of suppliers to work with, delays are not an 
> issues, SMTP error just need to be correctly handled.
> retrying without delay could enhance the situation by working around some 
> transient remote server errors. It’s better than not retrying at all (or 
> doing all the retries without delays).
> Given manual intervention, it is possible to correctly 
> *Requirements*
> Such a solution should:
>  - Attempt delivery a single time
>  - Store transient and permanent failure in different mail repository
>  - After a given number of tries, transient failures should be considered 
> permanent
> *Definition of done*
> Write potentially failing mailet integration tests demonstrating the above 
> proposed RemoteDelivery error handling.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3265) Investigate Slow IMAP SELECT (26 minutes +)

2020-07-07 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3265?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17153182#comment-17153182
 ] 

René Cordier commented on JAMES-3265:
-

[https://github.com/linagora/james-project/pull/3556] has been merged

> Investigate Slow IMAP SELECT (26 minutes +)
> ---
>
> Key: JAMES-3265
> URL: https://issues.apache.org/jira/browse/JAMES-3265
> Project: James Server
>  Issue Type: Task
>  Components: cassandra, IMAPServer
>Affects Versions: master
>Reporter: Benoit Tellier
>Priority: Major
>  Labels: perf
> Fix For: 3.6.0
>
> Attachments: Capture_d_écran_de_2020-06-22_11-42-01.png, 
> Capture_d_écran_de_2020-06-22_11-48-28.png
>
>
> Using glowroot APM on Linagora run instances, I noticed some select commands 
> takes around 20 minutes.
> A performance review shows thousands of MODSEQ updates undermines the 
> performance.
> {code:java}
> Transaction type: IMAP
> Transaction name: IMAP processor : 
> org.apache.james.imap.processor.SelectProcessor
> Start: 2020-06-22 2:28:04.433 am (+07:00)
> Duration: 1,618,718.3 milliseconds
> {code}
> I noticed a high allocation of new ModSeq (28.000 instead of 1) due to uid 
> set disjonction.
> I believe a solution would be to implement a new MessageMapper method:
> Mono removeRecentFlags(Mailbox mbox);
> That would enable some Cassandra query optimizations...
> # DOD 
>  - unlock significant performance improvments for such queries (x100)
> Attached you will find the query stats and flame graph backing up the 
> analysis.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3305) RabbitMQ EventBus deserialization error handling

2020-07-10 Thread Jira
René Cordier created JAMES-3305:
---

 Summary: RabbitMQ EventBus deserialization error handling
 Key: JAMES-3305
 URL: https://issues.apache.org/jira/browse/JAMES-3305
 Project: James Server
  Issue Type: Bug
Reporter: René Cordier


h2. Why ?

https://issues.apache.org/jira/browse/JAMES-3290 proved a non deserializable 
message caused the entire MailQueue processing to crash.

[https://github.com/linagora/james-project/pull/3532] solved this by doing an 
explicit nack on such messages, relying on RabbitMQ dead-letter exchanges to 
not loose data. The message is thus effectively ignored.

Following this, we need to further investigate RabbitMQ related code and 
evaluate if there is similar issues.

A quick study proved the EventBus is subject to the same class of bugs.
h2. Acceptance criteria
 * If a message cannot be deserialized, following legitimate events can still 
be processed.
 * Discarded messages are stored in a dead-letter queue and not lost

Note that both group registration and key registration needs to be tested: 
Regarding key registration, dropping events is OK.
h2. Definition of done
 * Write tests to reproduce the issue and the expected behaviour
 * Implement the fix leveraging dead-letter and nack



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3295) Integration tests : SMTP out - retry back off leveraging MailRepositrories and reprocessing

2020-07-10 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17155261#comment-17155261
 ] 

René Cordier commented on JAMES-3295:
-

[https://github.com/linagora/james-project/pull/3564] added the above mentioned 
matcher for matching RemoteDelivery temporary failure

[https://github.com/linagora/james-project/pull/3558] added some enhancements 
for the generic AtMost matcher

> Integration tests : SMTP out - retry back off leveraging MailRepositrories 
> and reprocessing
> ---
>
> Key: JAMES-3295
> URL: https://issues.apache.org/jira/browse/JAMES-3295
> Project: James Server
>  Issue Type: New Feature
>  Components: Queue, rabbitmq, Remote Delivery, tests
>Reporter: Benoit Tellier
>Priority: Major
> Attachments: aca6e77b-c720-42a2-b78e-0e74d77aa424.png
>
>
> *Context*
> Distributed James do not support MailQueue delays making it unusable as a MX 
> server.
> However given a fixed network of suppliers to work with, delays are not an 
> issues, SMTP error just need to be correctly handled.
> retrying without delay could enhance the situation by working around some 
> transient remote server errors. It’s better than not retrying at all (or 
> doing all the retries without delays).
> Given manual intervention, it is possible to correctly 
> *Requirements*
> Such a solution should:
>  - Attempt delivery a single time
>  - Store transient and permanent failure in different mail repository
>  - After a given number of tries, transient failures should be considered 
> permanent
> *Definition of done*
> Write potentially failing mailet integration tests demonstrating the above 
> proposed RemoteDelivery error handling.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3295) Integration tests : SMTP out - retry back off leveraging MailRepositrories and reprocessing

2020-07-10 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3295?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3295.
---
Fix Version/s: 3.6.0
   Resolution: Fixed

> Integration tests : SMTP out - retry back off leveraging MailRepositrories 
> and reprocessing
> ---
>
> Key: JAMES-3295
> URL: https://issues.apache.org/jira/browse/JAMES-3295
> Project: James Server
>  Issue Type: New Feature
>  Components: Queue, rabbitmq, Remote Delivery, tests
>Reporter: Benoit Tellier
>Priority: Major
> Fix For: 3.6.0
>
> Attachments: aca6e77b-c720-42a2-b78e-0e74d77aa424.png
>
>
> *Context*
> Distributed James do not support MailQueue delays making it unusable as a MX 
> server.
> However given a fixed network of suppliers to work with, delays are not an 
> issues, SMTP error just need to be correctly handled.
> retrying without delay could enhance the situation by working around some 
> transient remote server errors. It’s better than not retrying at all (or 
> doing all the retries without delays).
> Given manual intervention, it is possible to correctly 
> *Requirements*
> Such a solution should:
>  - Attempt delivery a single time
>  - Store transient and permanent failure in different mail repository
>  - After a given number of tries, transient failures should be considered 
> permanent
> *Definition of done*
> Write potentially failing mailet integration tests demonstrating the above 
> proposed RemoteDelivery error handling.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3295) Integration tests : SMTP out - retry back off leveraging MailRepositrories and reprocessing

2020-07-14 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17157871#comment-17157871
 ] 

René Cordier commented on JAMES-3295:
-

[https://github.com/linagora/james-project/pull/3569] contributed a wider use 
of {{MessageManager::listMessagesMetadata}}

> Integration tests : SMTP out - retry back off leveraging MailRepositrories 
> and reprocessing
> ---
>
> Key: JAMES-3295
> URL: https://issues.apache.org/jira/browse/JAMES-3295
> Project: James Server
>  Issue Type: New Feature
>  Components: Queue, rabbitmq, Remote Delivery, tests
>Reporter: Benoit Tellier
>Priority: Major
> Fix For: 3.6.0
>
> Attachments: aca6e77b-c720-42a2-b78e-0e74d77aa424.png
>
>
> *Context*
> Distributed James do not support MailQueue delays making it unusable as a MX 
> server.
> However given a fixed network of suppliers to work with, delays are not an 
> issues, SMTP error just need to be correctly handled.
> retrying without delay could enhance the situation by working around some 
> transient remote server errors. It’s better than not retrying at all (or 
> doing all the retries without delays).
> Given manual intervention, it is possible to correctly 
> *Requirements*
> Such a solution should:
>  - Attempt delivery a single time
>  - Store transient and permanent failure in different mail repository
>  - After a given number of tries, transient failures should be considered 
> permanent
> *Definition of done*
> Write potentially failing mailet integration tests demonstrating the above 
> proposed RemoteDelivery error handling.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3305) RabbitMQ EventBus deserialization error handling

2020-07-14 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3305?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17157875#comment-17157875
 ] 

René Cordier commented on JAMES-3305:
-

[https://github.com/linagora/james-project/pull/3567] contributed to add 
RabbitMQ eventBus deserialization error handling

> RabbitMQ EventBus deserialization error handling
> 
>
> Key: JAMES-3305
> URL: https://issues.apache.org/jira/browse/JAMES-3305
> Project: James Server
>  Issue Type: Bug
>Reporter: René Cordier
>Priority: Major
>
> h2. Why ?
> https://issues.apache.org/jira/browse/JAMES-3290 proved a non deserializable 
> message caused the entire MailQueue processing to crash.
> [https://github.com/linagora/james-project/pull/3532] solved this by doing an 
> explicit nack on such messages, relying on RabbitMQ dead-letter exchanges to 
> not loose data. The message is thus effectively ignored.
> Following this, we need to further investigate RabbitMQ related code and 
> evaluate if there is similar issues.
> A quick study proved the EventBus is subject to the same class of bugs.
> h2. Acceptance criteria
>  * If a message cannot be deserialized, following legitimate events can still 
> be processed.
>  * Discarded messages are stored in a dead-letter queue and not lost
> Note that both group registration and key registration needs to be tested: 
> Regarding key registration, dropping events is OK.
> h2. Definition of done
>  * Write tests to reproduce the issue and the expected behaviour
>  * Implement the fix leveraging dead-letter and nack



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3266) Distributed James: make ElasticSearch indexing optional?

2020-07-14 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3266?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3266.
---
Resolution: Fixed

> Distributed James: make ElasticSearch indexing optional?
> 
>
> Key: JAMES-3266
> URL: https://issues.apache.org/jira/browse/JAMES-3266
> Project: James Server
>  Issue Type: New Feature
>  Components: elasticsearch, guice
>Affects Versions: master
>Reporter: Benoit Tellier
>Priority: Major
> Fix For: 3.6.0
>
>
> {code:java}
> Raphaël Ouazana-Sustowski Thu, 11 Jun 2020 09:02:24 -0700
> Hi,
> Here is a proposal to make ElasticSearch optional in our distributed 
> product/flavor/server.
> Comments are welcome.
> ## Why?
> Some people have expressed the need of using a distributed James without 
> ElasticSearch:
> - in some comment here: https://issues.apache.org/jira/browse/JAMES-3086
> - one of our customers plan to deploy a distributed James server for serving 
> POP3 encrypted emails. This deployment does not rely on searching features. 
> However as part of current Distributed James server he is forced to rely on 
> ElasticSearch email indexing.
> This results in wasted resources as maintaining an ElasticSearch cluster to 
> keep up with the volume is expensive. Maintaining an ElasticSearch cluster 
> when not needed is costly at several levels:
> - cost of infrastructure to deploy it
> - cost of people having to maintain it
> - performance cost on James to unnecessarily index data
> ## How ?
> Scanning search is a search implementation that is running on top of any 
> mailbox implementation, even distributed ones and does not require to index 
> data.
> Scanning Search is tested both at the component level (unit test) but also 
> passes IMAP (MPT) tests on top of Cassandra implementation, as well as JMAP 
> memory tests, thus delivers correct results. Of course it does not support 
> full text search.
> We should allow Distributed James to optionally rely on scanning search 
> instead of ElasticSearch.
>  - Scanning search should be advised for deployments rarely searching data
>  - ElasticSearch should be advised when search is frequent or requires high 
> performance
> We could use module choosing [1] to choose between scanning search and 
> ElasticSearch.
> To be noted that scanning search introduces no other dependencies as it is 
> part of mailbox-store thus causes no risk of library clashes.
> To be noted also that metric collection and log collection using 
> ElasticSearch is unaffected.
> ## Alternative
> The alternative would be to build a different product/flavor/server than the 
> distributed one, where the only difference with the distributed one is that 
> indexing will rely on scanning instead of ElasticSearch.
> The maintenance cost of such a product/flavor/server is higher than of a 
> configuration option (Docker images to release, time and energy to run 
> integration tests on it).
> Such a product/flavor is hard to brand because even if it answers a need, it 
> is not so far of the distributed one, and does not answer needs that are very 
> far from it neither.
> The advantage is that is would allow to more fine tune this solution to 
> answer to the exact needs.
> ## Work in Progress
> See pull request: https://github.com/linagora/james-project/pull/3425
> Regards,
> Raphaël.
> [1] 
> https://github.com/apache/james-project/blob/master/src/adr/0036-against-use-of-conditional-statements-in-guice-modules.md
> {code}
> Mailing list thread: 
> https://www.mail-archive.com/server-dev@james.apache.org/msg66319.html
> PR: https://github.com/linagora/james-project/pull/3425



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3266) Distributed James: make ElasticSearch indexing optional?

2020-07-14 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3266?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17157879#comment-17157879
 ] 

René Cordier commented on JAMES-3266:
-

[https://github.com/linagora/james-project/pull/3425] contributed to disable ES 
in distributed James

> Distributed James: make ElasticSearch indexing optional?
> 
>
> Key: JAMES-3266
> URL: https://issues.apache.org/jira/browse/JAMES-3266
> Project: James Server
>  Issue Type: New Feature
>  Components: elasticsearch, guice
>Affects Versions: master
>Reporter: Benoit Tellier
>Priority: Major
> Fix For: 3.6.0
>
>
> {code:java}
> Raphaël Ouazana-Sustowski Thu, 11 Jun 2020 09:02:24 -0700
> Hi,
> Here is a proposal to make ElasticSearch optional in our distributed 
> product/flavor/server.
> Comments are welcome.
> ## Why?
> Some people have expressed the need of using a distributed James without 
> ElasticSearch:
> - in some comment here: https://issues.apache.org/jira/browse/JAMES-3086
> - one of our customers plan to deploy a distributed James server for serving 
> POP3 encrypted emails. This deployment does not rely on searching features. 
> However as part of current Distributed James server he is forced to rely on 
> ElasticSearch email indexing.
> This results in wasted resources as maintaining an ElasticSearch cluster to 
> keep up with the volume is expensive. Maintaining an ElasticSearch cluster 
> when not needed is costly at several levels:
> - cost of infrastructure to deploy it
> - cost of people having to maintain it
> - performance cost on James to unnecessarily index data
> ## How ?
> Scanning search is a search implementation that is running on top of any 
> mailbox implementation, even distributed ones and does not require to index 
> data.
> Scanning Search is tested both at the component level (unit test) but also 
> passes IMAP (MPT) tests on top of Cassandra implementation, as well as JMAP 
> memory tests, thus delivers correct results. Of course it does not support 
> full text search.
> We should allow Distributed James to optionally rely on scanning search 
> instead of ElasticSearch.
>  - Scanning search should be advised for deployments rarely searching data
>  - ElasticSearch should be advised when search is frequent or requires high 
> performance
> We could use module choosing [1] to choose between scanning search and 
> ElasticSearch.
> To be noted that scanning search introduces no other dependencies as it is 
> part of mailbox-store thus causes no risk of library clashes.
> To be noted also that metric collection and log collection using 
> ElasticSearch is unaffected.
> ## Alternative
> The alternative would be to build a different product/flavor/server than the 
> distributed one, where the only difference with the distributed one is that 
> indexing will rely on scanning instead of ElasticSearch.
> The maintenance cost of such a product/flavor/server is higher than of a 
> configuration option (Docker images to release, time and energy to run 
> integration tests on it).
> Such a product/flavor is hard to brand because even if it answers a need, it 
> is not so far of the distributed one, and does not answer needs that are very 
> far from it neither.
> The advantage is that is would allow to more fine tune this solution to 
> answer to the exact needs.
> ## Work in Progress
> See pull request: https://github.com/linagora/james-project/pull/3425
> Regards,
> Raphaël.
> [1] 
> https://github.com/apache/james-project/blob/master/src/adr/0036-against-use-of-conditional-statements-in-guice-modules.md
> {code}
> Mailing list thread: 
> https://www.mail-archive.com/server-dev@james.apache.org/msg66319.html
> PR: https://github.com/linagora/james-project/pull/3425



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3308) RabbitMQ deserialization error handling for the Distributed Task Manager

2020-07-15 Thread Jira
Nguyễn Việt Đức created JAMES-3308:
--

 Summary: RabbitMQ deserialization error handling for the 
Distributed Task Manager 
 Key: JAMES-3308
 URL: https://issues.apache.org/jira/browse/JAMES-3308
 Project: James Server
  Issue Type: Improvement
Reporter: Nguyễn Việt Đức


A non deserializable message caused the entire MailQueue processing to crash.
Solved this by doing an explicit nack on such messages, relying on RabbitMQ 
dead-letter exchanges to not loose data. The messqge is thus effectively 
ignored.

Following this, we need to further investigate RabbitMQ related code and 
evaluate if there is similar issues.

We need to evaluate the impact on the RabbitMQ code for the distributed task 
manager.
Acceptance criteria

If a message cannot be deserialized, following legitimate events can still 
be processed.
Discarded messages are stored in a dead-letter queue and not lost
Both job submission and cancellation needs to be tested

Definition of done

Write tests to reproduce the issue and the expected behaviour
Implement the fix leveraging dead-letter and nack




--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3155) Reactify mailbox listeners

2020-07-15 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3155?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17158864#comment-17158864
 ] 

René Cordier commented on JAMES-3155:
-

[https://github.com/linagora/james-project/pull/3573]  limits the number of 
flags updated at the same time

> Reactify mailbox listeners
> --
>
> Key: JAMES-3155
> URL: https://issues.apache.org/jira/browse/JAMES-3155
> Project: James Server
>  Issue Type: Improvement
>Affects Versions: 3.6.0
>Reporter: Benoit Tellier
>Priority: Major
> Fix For: 3.6.0
>
>
> Mailbox listener execution is synchronous.
> Wiring them with the eventBus using reactor will enable us to achieve a 
> better thread usage by avoiding needless "block()" calls.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3308) RabbitMQ deserialization error handling for the Distributed Task Manager

2020-07-15 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3308?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17158865#comment-17158865
 ] 

René Cordier commented on JAMES-3308:
-

[https://github.com/linagora/james-project/pull/3571] contributed to add a test 
in RabbitMQTerminationSubscriberTest to prove there is no issue on that part of 
the code

> RabbitMQ deserialization error handling for the Distributed Task Manager 
> -
>
> Key: JAMES-3308
> URL: https://issues.apache.org/jira/browse/JAMES-3308
> Project: James Server
>  Issue Type: Improvement
>Reporter: Nguyễn Việt Đức
>Priority: Major
>
> A non deserializable message caused the entire MailQueue processing to crash.
> Solved this by doing an explicit nack on such messages, relying on RabbitMQ 
> dead-letter exchanges to not loose data. The messqge is thus effectively 
> ignored.
> Following this, we need to further investigate RabbitMQ related code and 
> evaluate if there is similar issues.
> We need to evaluate the impact on the RabbitMQ code for the distributed task 
> manager.
> Acceptance criteria
> If a message cannot be deserialized, following legitimate events can 
> still be processed.
> Discarded messages are stored in a dead-letter queue and not lost
> Both job submission and cancellation needs to be tested
> Definition of done
> Write tests to reproduce the issue and the expected behaviour
> Implement the fix leveraging dead-letter and nack



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3305) RabbitMQ EventBus deserialization error handling

2020-07-15 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3305?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3305.
---
Fix Version/s: 3.6.0
   Resolution: Done

> RabbitMQ EventBus deserialization error handling
> 
>
> Key: JAMES-3305
> URL: https://issues.apache.org/jira/browse/JAMES-3305
> Project: James Server
>  Issue Type: Bug
>Reporter: René Cordier
>Priority: Major
> Fix For: 3.6.0
>
>
> h2. Why ?
> https://issues.apache.org/jira/browse/JAMES-3290 proved a non deserializable 
> message caused the entire MailQueue processing to crash.
> [https://github.com/linagora/james-project/pull/3532] solved this by doing an 
> explicit nack on such messages, relying on RabbitMQ dead-letter exchanges to 
> not loose data. The message is thus effectively ignored.
> Following this, we need to further investigate RabbitMQ related code and 
> evaluate if there is similar issues.
> A quick study proved the EventBus is subject to the same class of bugs.
> h2. Acceptance criteria
>  * If a message cannot be deserialized, following legitimate events can still 
> be processed.
>  * Discarded messages are stored in a dead-letter queue and not lost
> Note that both group registration and key registration needs to be tested: 
> Regarding key registration, dropping events is OK.
> h2. Definition of done
>  * Write tests to reproduce the issue and the expected behaviour
>  * Implement the fix leveraging dead-letter and nack



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Comment Edited] (JAMES-3098) mailboxes/get with properties filtering

2020-07-17 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3098?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17159756#comment-17159756
 ] 

Rémi Kowalski edited comment on JAMES-3098 at 7/17/20, 7:52 AM:


done in :

 

[https://github.com/linagora/james-project/pull/3582]


was (Author: remi_kowalski):
https://github.com/linagora/james-project/pull/3582

> mailboxes/get with properties filtering
> ---
>
> Key: JAMES-3098
> URL: https://issues.apache.org/jira/browse/JAMES-3098
> Project: James Server
>  Issue Type: Sub-task
>Reporter: René Cordier
>Priority: Major
>
> Implement these constrains:
>  - return only requested `properties`, except that the id property should be 
> always provided by the server.
> *DOD*
>  unit tests + integration tests



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3098) mailboxes/get with properties filtering

2020-07-17 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3098?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17159756#comment-17159756
 ] 

Rémi Kowalski commented on JAMES-3098:
--

https://github.com/linagora/james-project/pull/3582

> mailboxes/get with properties filtering
> ---
>
> Key: JAMES-3098
> URL: https://issues.apache.org/jira/browse/JAMES-3098
> Project: James Server
>  Issue Type: Sub-task
>Reporter: René Cordier
>Priority: Major
>
> Implement these constrains:
>  - return only requested `properties`, except that the id property should be 
> always provided by the server.
> *DOD*
>  unit tests + integration tests



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3098) mailboxes/get with properties filtering

2020-07-17 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3098?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3098.
---
Resolution: Done

> mailboxes/get with properties filtering
> ---
>
> Key: JAMES-3098
> URL: https://issues.apache.org/jira/browse/JAMES-3098
> Project: James Server
>  Issue Type: Sub-task
>Reporter: René Cordier
>Priority: Major
>
> Implement these constrains:
>  - return only requested `properties`, except that the id property should be 
> always provided by the server.
> *DOD*
>  unit tests + integration tests



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3098) mailboxes/get with properties filtering

2020-07-17 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3098?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3098.
---
Fix Version/s: 3.6.0
   Resolution: Done

> mailboxes/get with properties filtering
> ---
>
> Key: JAMES-3098
> URL: https://issues.apache.org/jira/browse/JAMES-3098
> Project: James Server
>  Issue Type: Sub-task
>Reporter: René Cordier
>Priority: Major
> Fix For: 3.6.0
>
>
> Implement these constrains:
>  - return only requested `properties`, except that the id property should be 
> always provided by the server.
> *DOD*
>  unit tests + integration tests



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Reopened] (JAMES-3098) mailboxes/get with properties filtering

2020-07-17 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3098?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier reopened JAMES-3098:
-

> mailboxes/get with properties filtering
> ---
>
> Key: JAMES-3098
> URL: https://issues.apache.org/jira/browse/JAMES-3098
> Project: James Server
>  Issue Type: Sub-task
>Reporter: René Cordier
>Priority: Major
>
> Implement these constrains:
>  - return only requested `properties`, except that the id property should be 
> always provided by the server.
> *DOD*
>  unit tests + integration tests



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3309) NPE when unselecting during a FETCH

2020-07-17 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3309?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3309.
---
Fix Version/s: 3.6.0
   Resolution: Fixed

> NPE when unselecting during a FETCH
> ---
>
> Key: JAMES-3309
> URL: https://issues.apache.org/jira/browse/JAMES-3309
> Project: James Server
>  Issue Type: Bug
>  Components: IMAPServer
>Affects Versions: master
>Reporter: Benoit Tellier
>Priority: Major
>  Labels: bug
> Fix For: 3.6.0
>
>
> We encountered the following error:
> {code:java}
> t action  FETCH
> ? fetchedData FetchData{flags=true, uid=true, internalDate=false, 
> size=false, envelope=false, body=false, bodyStructure=false, setSeen=false, 
> bodyElements=[], modSeq=false, changedSince=-1, vanished=false}
> t hostjames-69956575bc-jlsgx
> ? idSet   Optional[[IdRange ( 1->9223372036854775807 )]]
> t ip  10.2.0.0
> t logger  org.apache.james.imap.processor.AbstractMailboxProcessor
> t message Unexpected error during IMAP processing
> t protocolIMAP
> t selectedMailbox 1e54f590-49a4-11ea-b268-5bd54f0fe5f2
> t sessionId   SID-rxzyjwusjzrc
> t severityERROR
> t stacktrace  java.lang.NullPointerException: null
>   at 
> org.apache.james.imap.processor.fetch.FetchResponseBuilder.build(FetchResponseBuilder.java:117)
>   at 
> org.apache.james.imap.processor.fetch.FetchProcessor.processMessageRanges(FetchProcessor.java:153)
>   at 
> org.apache.james.imap.processor.fetch.FetchProcessor.processRequest(FetchProcessor.java:107)
>   at 
> org.apache.james.imap.processor.fetch.FetchProcessor.processRequest(FetchProcessor.java:53)
>   at 
> org.apache.james.imap.processor.AbstractMailboxProcessor.doProcess(AbstractMailboxProcessor.java:100)
>   at 
> org.apache.james.imap.processor.AbstractMailboxProcessor.doProcess(AbstractMailboxProcessor.java:77)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:58)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
>   at 
> org.apache.james.imap.processor.base.AbstractChainedProcessor.process(AbstractChainedProcessor.java:67)
>   at 
> org.apache.james.imapserver.netty.ImapChannelUpstreamHandler.messageReceived(ImapChannelUpstreamHandler.java:198)
>   at 
> org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleChannelUpstreamHandler.java:70)
>   at 
> org.jboss.netty.channel.DefaultChannelPipeline.sendUpstream(DefaultChannelPipeline.java:564)
>   at 
> org.jboss.netty.channel.DefaultChannelPipeline$DefaultChannelHandlerContext.sendUpstream(DefaultChannelPipeline.java:791)
>   at 
> org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:296)
>   at 
> org.jboss.netty.handler.codec.frame.FrameDecoder.unfoldAndFireMessageReceived(FrameDecoder.java:462)
>   at 
> org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:443)
>   at 
> org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303)
>   at 
> org.jboss.netty.channel.SimpleChannelUpstreamHandler.handleUpstream(SimpleCha

[jira] [Created] (JAMES-3312) Integration tests for GET endpoint to retrieve the Session object

2020-07-20 Thread Jira
Nguyễn Việt Đức created JAMES-3312:
--

 Summary: Integration tests for GET endpoint to retrieve the 
Session object
 Key: JAMES-3312
 URL: https://issues.apache.org/jira/browse/JAMES-3312
 Project: James Server
  Issue Type: Improvement
Reporter: Nguyễn Việt Đức


See https://jmap.io/spec-core.html#example

We already have unit test in place for the session route.

DOD Write integration tests for Session route



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3314) Implement a PassThrougthBlobStore

2020-07-21 Thread Jira
Rémi Kowalski created JAMES-3314:


 Summary: Implement a PassThrougthBlobStore
 Key: JAMES-3314
 URL: https://issues.apache.org/jira/browse/JAMES-3314
 Project: James Server
  Issue Type: New Feature
  Components: Blob
Reporter: Rémi Kowalski
 Fix For: 3.6.0


## Why

- Deduplication adds complexity eg by requiring garbage collection for 
deduplication
 - Garbage collection is still a work in progress

## Goal

Provide an alternative BlobStore without deduplication, that can delete mails 
directly.

## DOD

- Implement a PassThrough blobStore
 - Two identical blobs needs to be stored two times
 - Using memory dumbBlobStore pass the BlobStore contract



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3316) Configure session hardcoded prefixes

2020-07-22 Thread Jira
Nguyễn Việt Đức created JAMES-3316:
--

 Summary: Configure session hardcoded prefixes
 Key: JAMES-3316
 URL: https://issues.apache.org/jira/browse/JAMES-3316
 Project: James Server
  Issue Type: Improvement
Reporter: Nguyễn Việt Đức


WHY

In SessionSupplier.scala:


{code:java}
apiUrl = new URL(s"$HARD_CODED_URL_PREFIX/jmap"),
downloadUrl = new URL(s"$HARD_CODED_URL_PREFIX/download"),
uploadUrl = new URL(s"$HARD_CODED_URL_PREFIX/upload"),
eventSourceUrl = new URL(s"$HARD_CODED_URL_PREFIX/eventSource")))

{code}

We hard coded with a costant the URL prefix for JMAP service endpoint 
advertised via the session object.

This of course should be adapted to the running server domain/URL
How

We should be able to parse and configure this prefix reading jmap.properties

DOD We should be able to get HARD_CODED_URL_PREFIX from JMAP server 
configuration.

Write (or adapt) an integration test where the session route relies on the 
configured parameters.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3317) Configuration option: choosing between PassThroughBlobStore & DeDuplicatingBlobStore

2020-07-22 Thread Jira
Rémi Kowalski created JAMES-3317:


 Summary: Configuration option: choosing between 
PassThroughBlobStore & DeDuplicatingBlobStore
 Key: JAMES-3317
 URL: https://issues.apache.org/jira/browse/JAMES-3317
 Project: James Server
  Issue Type: New Feature
  Components: Blob
Reporter: Rémi Kowalski
 Fix For: 3.6.0


As an operator, I want to be able to choose between the PassThrough blob Store 
and de deduplicating one.
h2. DOD

I am able to start a Distributed server with a PassThrough blob store.

IMAP APPENDing 2 time the same mail to "bob" on top of such a server should 
result in the body being stored 2 times (so 4 objects in the blobStore).
h2. How

Add a {{duplication.enable}} option within {{blobstore.properties}} (default to 
false)

BlobStoreConfiguration will allow a {{duplicationEnabled()}} method call.

BlobStoreModulesChooser need bind either PassThroughBlobStore or 
DeDuplicatingBlobStore depending on {{duplicationEnabled()}} result.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3320) Expose supported private extension in Session object

2020-07-23 Thread Jira
Nguyễn Việt Đức created JAMES-3320:
--

 Summary: Expose supported private extension in Session object
 Key: JAMES-3320
 URL: https://issues.apache.org/jira/browse/JAMES-3320
 Project: James Server
  Issue Type: Improvement
Reporter: Nguyễn Việt Đức


The session object shows the extensions supported by the server.

Here are the extensions being specific to James:


{code:java}
urn:apache:james:params:jmap:mail:quota :

quotas field on the mailbox object.

urn:apache:james:params:jmap:mail:shares :

rights field on the mailbox object.
namespace field on the mailbox object.
Including objects accross accounts for /get, /set, /query commands.

urn:apache:james:params:jmap:mail:filters :

Filter object, Filter/get + Filter/set methods

urn:apache:james:params:jmap:mail:mdn :

MDN object, MDN/send method
{code}

Knowing that for the moment only *urn:apache:james:params:jmap:mail:quota* and 
*urn:apache:james:params:jmap:mail:shares* are implemented.

DoD:
When a user get a session object, *urn:apache:james:params:jmap:mail:quota* and 
urn:apache:james:params:jmap:mail:shares shoud appear next to 
*urn:ietf:params:jmap:core and urn:ietf:params:jmap:mail*



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3343) Configuration safety: disabling deduplication should not be allowed.

2020-07-27 Thread Jira
Rémi Kowalski created JAMES-3343:


 Summary: Configuration safety: disabling deduplication should not 
be allowed.
 Key: JAMES-3343
 URL: https://issues.apache.org/jira/browse/JAMES-3343
 Project: James Server
  Issue Type: New Feature
  Components: Blob
Affects Versions: 3.5.0
Reporter: Rémi Kowalski
 Fix For: 3.6.0


h2. Why

Deduplication allow the use of a single object for several business entities.

Turning it off, the Duplicating blob store can, upon entity deletes, delete 
blobs used by other entities, jeoparadizing the data integrity of the server.

Note that enabling deduplication brings no bad consequences.
h2. DOD

 

{{Given a James server with deduplication enabled
When I reconfigure this James server and turn off deduplication
Then this James server fails}}
h2. How

Write a {{StartUpCheck}} checking this property.

Keep track of the value of "deduplication.enable" value via an event sourcing 
system.

The aggregate will ensure the rule that "deduplication should not be disabled", 
and your start up check will update the aggregate with the new configuration 
value, if it changed, effectively triggering the check.

Note that this ticket can be handled separately, only the final integration 
test requires dependency to other work



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3343) Configuration safety: disabling deduplication should not be allowed.

2020-07-27 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3343?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17165652#comment-17165652
 ] 

Rémi Kowalski commented on JAMES-3343:
--

Issue : [https://github.com/linagora/james-project/issues/3596]
PR : https://github.com/linagora/james-project/pull/3611

> Configuration safety: disabling deduplication should not be allowed.
> 
>
> Key: JAMES-3343
> URL: https://issues.apache.org/jira/browse/JAMES-3343
> Project: James Server
>  Issue Type: New Feature
>  Components: Blob
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Priority: Major
> Fix For: 3.6.0
>
>
> h2. Why
> Deduplication allow the use of a single object for several business entities.
> Turning it off, the Duplicating blob store can, upon entity deletes, delete 
> blobs used by other entities, jeoparadizing the data integrity of the server.
> Note that enabling deduplication brings no bad consequences.
> h2. DOD
>  
> {{Given a James server with deduplication enabled
> When I reconfigure this James server and turn off deduplication
> Then this James server fails}}
> h2. How
> Write a {{StartUpCheck}} checking this property.
> Keep track of the value of "deduplication.enable" value via an event sourcing 
> system.
> The aggregate will ensure the rule that "deduplication should not be 
> disabled", and your start up check will update the aggregate with the new 
> configuration value, if it changed, effectively triggering the check.
> Note that this ticket can be handled separately, only the final integration 
> test requires dependency to other work



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3344) Upgrade Bouncy Castle

2020-07-27 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3344?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17166116#comment-17166116
 ] 

René Cordier commented on JAMES-3344:
-

[https://github.com/linagora/james-project/pull/3623] has been merged

> Upgrade Bouncy Castle
> -
>
> Key: JAMES-3344
> URL: https://issues.apache.org/jira/browse/JAMES-3344
> Project: James Server
>  Issue Type: Improvement
>Reporter: Raphael Ouazana
>Priority: Major
>
> As stated on the mailing list, it seems the current used BC version 1.6.2 has 
> some issue: https://github.com/bcgit/bc-java/issues/586
> Let's upgrade it to the last version



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3344) Upgrade Bouncy Castle

2020-07-27 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3344?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3344.
---
Fix Version/s: 3.6.0
   Resolution: Fixed

> Upgrade Bouncy Castle
> -
>
> Key: JAMES-3344
> URL: https://issues.apache.org/jira/browse/JAMES-3344
> Project: James Server
>  Issue Type: Improvement
>Reporter: Raphael Ouazana
>Priority: Major
> Fix For: 3.6.0
>
>
> As stated on the mailing list, it seems the current used BC version 1.6.2 has 
> some issue: https://github.com/bcgit/bc-java/issues/586
> Let's upgrade it to the last version



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3318) DeletedMessageVault::deleteMessage should call directly DumbBlobStore::delete

2020-07-27 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3318?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17166119#comment-17166119
 ] 

René Cordier commented on JAMES-3318:
-

[https://github.com/linagora/james-project/pull/3614] contributed to this

> DeletedMessageVault::deleteMessage should call directly DumbBlobStore::delete
> -
>
> Key: JAMES-3318
> URL: https://issues.apache.org/jira/browse/JAMES-3318
> Project: James Server
>  Issue Type: Improvement
>  Components: Blob
>Reporter: Benoit Tellier
>Priority: Major
>
> == Why
> DeletedMessage vault needs to delete related content. We need the deletion to 
> take place immediately.
> However appending into the vault is a common operation and we want to have 
> metrics for it.
> We want to keep the BlobStore API simple and easy to use.
> == DOD
> `DeDuplicationBlobStore::delete` is a noop.
> All code for `BlobStore::delete` is moved into `PassThroughBlobStoreTest`.
> DeletedMessage functionality of the DeletedMessageVault keeps unaffected.
> == How
> Implement `DeletedMessageVault::deleteMessage` via direct access to the 
> DumbBlobStore.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3318) DeletedMessageVault::deleteMessage should call directly DumbBlobStore::delete

2020-07-27 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3318?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3318.
---
Fix Version/s: 3.6.0
   Resolution: Done

> DeletedMessageVault::deleteMessage should call directly DumbBlobStore::delete
> -
>
> Key: JAMES-3318
> URL: https://issues.apache.org/jira/browse/JAMES-3318
> Project: James Server
>  Issue Type: Improvement
>  Components: Blob
>Reporter: Benoit Tellier
>Priority: Major
> Fix For: 3.6.0
>
>
> == Why
> DeletedMessage vault needs to delete related content. We need the deletion to 
> take place immediately.
> However appending into the vault is a common operation and we want to have 
> metrics for it.
> We want to keep the BlobStore API simple and easy to use.
> == DOD
> `DeDuplicationBlobStore::delete` is a noop.
> All code for `BlobStore::delete` is moved into `PassThroughBlobStoreTest`.
> DeletedMessage functionality of the DeletedMessageVault keeps unaffected.
> == How
> Implement `DeletedMessageVault::deleteMessage` via direct access to the 
> DumbBlobStore.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3319) Actual blob deletion

2020-07-27 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3319?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17166120#comment-17166120
 ] 

René Cordier commented on JAMES-3319:
-

[https://github.com/linagora/james-project/pull/3618] added the blob deletion 
in Cassandra mailbox

[https://github.com/linagora/james-project/pull/3615] added the blob deletion 
in CassandraMailRepository

> Actual blob deletion
> 
>
> Key: JAMES-3319
> URL: https://issues.apache.org/jira/browse/JAMES-3319
> Project: James Server
>  Issue Type: Improvement
>  Components: Blob, mailbox, MailStore & MailRepository, Queue
>Reporter: Benoit Tellier
>Priority: Major
>
> Thanks to JAMES-3318 the deduplication blobStore delete method no longer 
> aggressively deletes data (that could be references in another context).
> We can now safely delete data in :
>  - [ ] CassandraMailRepository
>  - [ ] Cassandra MailQueueView
>  - [ ] Cassandra mailbox (message content & attachments)
> For each usage, we need to ensure that :
>  - Data is deleted straight away on top of the passthrough blobStore
>  - Data with similar blobs being deleted have no impact when using 
> deduplication blobStore.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3310) DeletedMessageVaultHook is brittle

2020-07-27 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3310?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3310.
---
Fix Version/s: 3.6.0
   Resolution: Fixed

> DeletedMessageVaultHook is brittle
> --
>
> Key: JAMES-3310
> URL: https://issues.apache.org/jira/browse/JAMES-3310
> Project: James Server
>  Issue Type: Improvement
>  Components: Blob
>Reporter: Gautier DI FOLCO
>Priority: Major
> Fix For: 3.6.0
>
>
> When DeletedMessageVaultHook cannot load back a message it silently continue 
> while it should fail in order to avoid message loss.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3310) DeletedMessageVaultHook is brittle

2020-07-27 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3310?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17166122#comment-17166122
 ] 

René Cordier commented on JAMES-3310:
-

[https://github.com/linagora/james-project/pull/3583] contributed to solve this

> DeletedMessageVaultHook is brittle
> --
>
> Key: JAMES-3310
> URL: https://issues.apache.org/jira/browse/JAMES-3310
> Project: James Server
>  Issue Type: Improvement
>  Components: Blob
>Reporter: Gautier DI FOLCO
>Priority: Major
>
> When DeletedMessageVaultHook cannot load back a message it silently continue 
> while it should fail in order to avoid message loss.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3157) Inject blobs credentials

2020-07-27 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3157?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17166126#comment-17166126
 ] 

René Cordier commented on JAMES-3157:
-

[https://github.com/linagora/james-project/pull/3587] adds some improvements to 
it

> Inject blobs credentials
> 
>
> Key: JAMES-3157
> URL: https://issues.apache.org/jira/browse/JAMES-3157
> Project: James Server
>  Issue Type: Improvement
>Reporter: Gautier DI FOLCO
>Priority: Major
>
> When running the benchmarks, we should be able to target different profiles, 
> targeting or not an external blobs store.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3347) Configure session hardcoded prefixes

2020-07-28 Thread Jira
Nguyễn Việt Đức created JAMES-3347:
--

 Summary: Configure session hardcoded prefixes
 Key: JAMES-3347
 URL: https://issues.apache.org/jira/browse/JAMES-3347
 Project: James Server
  Issue Type: Improvement
Reporter: Nguyễn Việt Đức


# WHY 

In *SessionSupplier.scala*: 

{code:java}
apiUrl = new URL(s"$HARD_CODED_URL_PREFIX/jmap"),
downloadUrl = new URL(s"$HARD_CODED_URL_PREFIX/download"),
uploadUrl = new URL(s"$HARD_CODED_URL_PREFIX/upload"),
eventSourceUrl = new URL(s"$HARD_CODED_URL_PREFIX/eventSource")))
{code}

We hard coded with a costant the URL prefix for JMAP service endpoint 
advertised via the session object.

This of course should be adapted to the running server domain/URL

# How

We should be able to parse and configure this prefix reading `jmap.properties`

**DOD** We should be able to get HARD_CODED_URL_PREFIX from JMAP server 
configuration. 

Write (or adapt) an integration test where the session route relies on the 
configured parameters.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3347) Configure session hardcoded prefixes

2020-07-28 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3347?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17166258#comment-17166258
 ] 

Nguyễn Việt Đức commented on JAMES-3347:


duplicated https://issues.apache.org/jira/browse/JAMES-3316

> Configure session hardcoded prefixes
> 
>
> Key: JAMES-3347
> URL: https://issues.apache.org/jira/browse/JAMES-3347
> Project: James Server
>  Issue Type: Improvement
>Reporter: Nguyễn Việt Đức
>Priority: Major
>
> # WHY 
> In *SessionSupplier.scala*: 
> {code:java}
> apiUrl = new URL(s"$HARD_CODED_URL_PREFIX/jmap"),
> downloadUrl = new URL(s"$HARD_CODED_URL_PREFIX/download"),
> uploadUrl = new URL(s"$HARD_CODED_URL_PREFIX/upload"),
> eventSourceUrl = new URL(s"$HARD_CODED_URL_PREFIX/eventSource")))
> {code}
> We hard coded with a costant the URL prefix for JMAP service endpoint 
> advertised via the session object.
> This of course should be adapted to the running server domain/URL
> # How
> We should be able to parse and configure this prefix reading `jmap.properties`
> **DOD** We should be able to get HARD_CODED_URL_PREFIX from JMAP server 
> configuration. 
> Write (or adapt) an integration test where the session route relies on the 
> configured parameters.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3347) Configure session hardcoded prefixes

2020-07-28 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3347?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Nguyễn Việt Đức closed JAMES-3347.
--
Resolution: Duplicate

> Configure session hardcoded prefixes
> 
>
> Key: JAMES-3347
> URL: https://issues.apache.org/jira/browse/JAMES-3347
> Project: James Server
>  Issue Type: Improvement
>Reporter: Nguyễn Việt Đức
>Priority: Major
>
> # WHY 
> In *SessionSupplier.scala*: 
> {code:java}
> apiUrl = new URL(s"$HARD_CODED_URL_PREFIX/jmap"),
> downloadUrl = new URL(s"$HARD_CODED_URL_PREFIX/download"),
> uploadUrl = new URL(s"$HARD_CODED_URL_PREFIX/upload"),
> eventSourceUrl = new URL(s"$HARD_CODED_URL_PREFIX/eventSource")))
> {code}
> We hard coded with a costant the URL prefix for JMAP service endpoint 
> advertised via the session object.
> This of course should be adapted to the running server domain/URL
> # How
> We should be able to parse and configure this prefix reading `jmap.properties`
> **DOD** We should be able to get HARD_CODED_URL_PREFIX from JMAP server 
> configuration. 
> Write (or adapt) an integration test where the session route relies on the 
> configured parameters.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3349) [JMAP] Method level error handling

2020-07-29 Thread Jira
Nguyễn Việt Đức created JAMES-3349:
--

 Summary: [JMAP] Method level error handling
 Key: JAMES-3349
 URL: https://issues.apache.org/jira/browse/JAMES-3349
 Project: James Server
  Issue Type: Improvement
Reporter: Nguyễn Việt Đức


Once we handle GetMailboxes, we can start managing method level errors.

*https://jmap.io/spec-core.html#errors*
{code:java}
An error response looks like this:
[ "error", {
 "type": "unknownMethod"
}, "call-id" ]
The response name is error, and it MUST have a type property. Other properties 
may be present with further information; these are detailed in the error type 
descriptions where appropriate.
serverFail: An unexpected or unknown error occurred during the processing of 
the call. A description property should provide more details about the error. 
The method call made no changes to the server’s state. Attempting the same 
operation again is expected to fail again. Contacting the service administrator 
is likely necessary to resolve this problem if it is persistent.
unknownMethod: The server does not recognise this method name.
invalidArguments: One of the arguments is of the wrong type or is otherwise 
invalid, or a required argument is missing. A description property MAY be 
present to help debug with an explanation of what the problem was. This is a 
non-localised string, and it is not intended to be shown directly to end users.
accountNotFound: The accountId does not correspond to a valid account. {code}
See the error registry.

Handle these errors correctly with `Mailboxes/get`

*DOD* memory integration tests



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3352) Rename DumbBlobStore into BlobStoreDAO

2020-07-30 Thread Jira
René Cordier created JAMES-3352:
---

 Summary: Rename DumbBlobStore into BlobStoreDAO
 Key: JAMES-3352
 URL: https://issues.apache.org/jira/browse/JAMES-3352
 Project: James Server
  Issue Type: Improvement
Reporter: René Cordier


The name `DumbBlobStore` is too confusing regarding its purpose. It has been 
decided that `BlobStoreDAO` would be more appropriated



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3319) Actual blob deletion

2020-07-30 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3319?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17167745#comment-17167745
 ] 

René Cordier commented on JAMES-3319:
-

[https://github.com/linagora/james-project/pull/3622] added the blob deletion 
in MailQueueView

> Actual blob deletion
> 
>
> Key: JAMES-3319
> URL: https://issues.apache.org/jira/browse/JAMES-3319
> Project: James Server
>  Issue Type: Improvement
>  Components: Blob, mailbox, MailStore & MailRepository, Queue
>Reporter: Benoit Tellier
>Priority: Major
>
> Thanks to JAMES-3318 the deduplication blobStore delete method no longer 
> aggressively deletes data (that could be references in another context).
> We can now safely delete data in :
>  - [ ] CassandraMailRepository
>  - [ ] Cassandra MailQueueView
>  - [ ] Cassandra mailbox (message content & attachments)
> For each usage, we need to ensure that :
>  - Data is deleted straight away on top of the passthrough blobStore
>  - Data with similar blobs being deleted have no impact when using 
> deduplication blobStore.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3099) [Documentation] Website doc update and annotated RFCs

2020-07-30 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3099?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17167746#comment-17167746
 ] 

René Cordier commented on JAMES-3099:
-

[https://github.com/linagora/james-project/pull/3627] contributed to this

> [Documentation] Website doc update and annotated RFCs
> -
>
> Key: JAMES-3099
> URL: https://issues.apache.org/jira/browse/JAMES-3099
> Project: James Server
>  Issue Type: Sub-task
>Reporter: René Cordier
>Priority: Major
>
> You will need to update the apache documentation on how to configure and use 
> the new `jmap` implementation: 
> https://james.apache.org/server/config-jmap.html
> You might need to create a new page, as we should keep the old doc for the 
> versions of James implementing `jmap-draft`. You should as well redirect to 
> proper JMAP RFCs (https://tools.ietf.org/html/rfc8620 and 
> https://tools.ietf.org/html/rfc8621) and add annotated RFCs as part of 
> `server/protocols/jmap-rfc-8621` folder.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3319) Actual blob deletion

2020-07-30 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3319?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3319.
---
Fix Version/s: 3.6.0
   Resolution: Done

> Actual blob deletion
> 
>
> Key: JAMES-3319
> URL: https://issues.apache.org/jira/browse/JAMES-3319
> Project: James Server
>  Issue Type: Improvement
>  Components: Blob, mailbox, MailStore & MailRepository, Queue
>Reporter: Benoit Tellier
>Priority: Major
> Fix For: 3.6.0
>
>
> Thanks to JAMES-3318 the deduplication blobStore delete method no longer 
> aggressively deletes data (that could be references in another context).
> We can now safely delete data in :
>  - [ ] CassandraMailRepository
>  - [ ] Cassandra MailQueueView
>  - [ ] Cassandra mailbox (message content & attachments)
> For each usage, we need to ensure that :
>  - Data is deleted straight away on top of the passthrough blobStore
>  - Data with similar blobs being deleted have no impact when using 
> deduplication blobStore.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3099) [Documentation] Website doc update and annotated RFCs

2020-07-30 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3099?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3099.
---
Fix Version/s: 3.6.0
   Resolution: Done

> [Documentation] Website doc update and annotated RFCs
> -
>
> Key: JAMES-3099
> URL: https://issues.apache.org/jira/browse/JAMES-3099
> Project: James Server
>  Issue Type: Sub-task
>Reporter: René Cordier
>Priority: Major
> Fix For: 3.6.0
>
>
> You will need to update the apache documentation on how to configure and use 
> the new `jmap` implementation: 
> https://james.apache.org/server/config-jmap.html
> You might need to create a new page, as we should keep the old doc for the 
> versions of James implementing `jmap-draft`. You should as well redirect to 
> proper JMAP RFCs (https://tools.ietf.org/html/rfc8620 and 
> https://tools.ietf.org/html/rfc8621) and add annotated RFCs as part of 
> `server/protocols/jmap-rfc-8621` folder.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3353) [Specification] Write down James JMAP extensions

2020-07-30 Thread Jira
René Cordier created JAMES-3353:
---

 Summary: [Specification] Write down James JMAP extensions
 Key: JAMES-3353
 URL: https://issues.apache.org/jira/browse/JAMES-3353
 Project: James Server
  Issue Type: Improvement
Reporter: René Cordier


We need to write RFC-like specification for the extensions being specific to 
James.
 * {{urn:apache:james:params:jmap:mail:quota}} :
 ** {{quotas}} field on the mailbox object.
 * {{urn:apache:james:params:jmap:mail:shares}} :
 ** {{rights}} field on the mailbox object.
 ** {{namespace}} field on the mailbox object.
 ** Including objects accross accounts for {{/get}}, {{/set}}, {{/query}} 
commands.
 * {{urn:apache:james:params:jmap:mail:filters}} :
 ** {{Filter}} object, {{Filter/get}} + {{Filter/set}} methods
 * {{urn:apache:james:params:jmap:mail:mdn}} :
 ** {{MDN}} object, {{MDN/send}} method

 

*DOD*: an ASCII DOC file per extension, commited as part of 
{{server/protocols/jmap-rfc-8620}} folder.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3316) Configure session hardcoded prefixes

2020-08-09 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3316?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17174035#comment-17174035
 ] 

René Cordier commented on JAMES-3316:
-

[https://github.com/linagora/james-project/pull/3644] fixed a buggy test with 
SessionRoutesTest

> Configure session hardcoded prefixes
> 
>
> Key: JAMES-3316
> URL: https://issues.apache.org/jira/browse/JAMES-3316
> Project: James Server
>  Issue Type: Improvement
>  Components: JMAP
>Reporter: Nguyễn Việt Đức
>Priority: Major
>
> WHY
> In SessionSupplier.scala:
> 
> {code:java}
> apiUrl = new URL(s"$HARD_CODED_URL_PREFIX/jmap"),
> downloadUrl = new URL(s"$HARD_CODED_URL_PREFIX/download"),
> uploadUrl = new URL(s"$HARD_CODED_URL_PREFIX/upload"),
> eventSourceUrl = new URL(s"$HARD_CODED_URL_PREFIX/eventSource")))
> {code}
> We hard coded with a costant the URL prefix for JMAP service endpoint 
> advertised via the session object.
> This of course should be adapted to the running server domain/URL
> How
> We should be able to parse and configure this prefix reading jmap.properties
> DOD We should be able to get HARD_CODED_URL_PREFIX from JMAP server 
> configuration.
> Write (or adapt) an integration test where the session route relies on the 
> configured parameters.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-2629) Migrate CassandraAsyncExecutor to Reactor

2020-08-09 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-2629?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17174037#comment-17174037
 ] 

René Cordier commented on JAMES-2629:
-

[https://github.com/linagora/james-project/pull/3643] contributed the use of a 
future supplier in CassandraAsynExecutor

> Migrate CassandraAsyncExecutor to Reactor
> -
>
> Key: JAMES-2629
> URL: https://issues.apache.org/jira/browse/JAMES-2629
> Project: James Server
>  Issue Type: Improvement
>Reporter: Gautier DI FOLCO
>Priority: Trivial
> Fix For: 3.3.0
>
>
> Migrate CassandraAsyncExecutor to Reactor



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3098) mailboxes/get with properties filtering

2020-08-09 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3098?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17174039#comment-17174039
 ] 

René Cordier commented on JAMES-3098:
-

[https://github.com/linagora/james-project/pull/3638] contributed a fix to not 
return delegated mailboxes when no sharing extensions

> mailboxes/get with properties filtering
> ---
>
> Key: JAMES-3098
> URL: https://issues.apache.org/jira/browse/JAMES-3098
> Project: James Server
>  Issue Type: Sub-task
>Reporter: René Cordier
>Priority: Major
> Fix For: 3.6.0
>
>
> Implement these constrains:
>  - return only requested `properties`, except that the id property should be 
> always provided by the server.
> *DOD*
>  unit tests + integration tests



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3317) Configuration option: choosing between PassThroughBlobStore & DeDuplicatingBlobStore

2020-08-10 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3317?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17174209#comment-17174209
 ] 

René Cordier commented on JAMES-3317:
-

[https://github.com/linagora/james-project/pull/3642] contributed more explicit 
integration tests for this work

> Configuration option: choosing between PassThroughBlobStore & 
> DeDuplicatingBlobStore
> 
>
> Key: JAMES-3317
> URL: https://issues.apache.org/jira/browse/JAMES-3317
> Project: James Server
>  Issue Type: New Feature
>  Components: Blob
>Reporter: Rémi Kowalski
>Priority: Major
> Fix For: 3.6.0
>
>
> As an operator, I want to be able to choose between the PassThrough blob 
> Store and de deduplicating one.
> h2. DOD
> I am able to start a Distributed server with a PassThrough blob store.
> IMAP APPENDing 2 time the same mail to "bob" on top of such a server should 
> result in the body being stored 2 times (so 4 objects in the blobStore).
> h2. How
> Add a {{duplication.enable}} option within {{blobstore.properties}} (default 
> to false)
> BlobStoreConfiguration will allow a {{duplicationEnabled()}} method call.
> BlobStoreModulesChooser need bind either PassThroughBlobStore or 
> DeDuplicatingBlobStore depending on {{duplicationEnabled()}} result.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3343) Configuration safety: disabling deduplication should not be allowed.

2020-08-10 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3343?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17174210#comment-17174210
 ] 

René Cordier commented on JAMES-3343:
-

[https://github.com/linagora/james-project/pull/3611] has been merged

> Configuration safety: disabling deduplication should not be allowed.
> 
>
> Key: JAMES-3343
> URL: https://issues.apache.org/jira/browse/JAMES-3343
> Project: James Server
>  Issue Type: New Feature
>  Components: Blob
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Priority: Major
> Fix For: 3.6.0
>
>
> h2. Why
> Deduplication allow the use of a single object for several business entities.
> Turning it off, the Duplicating blob store can, upon entity deletes, delete 
> blobs used by other entities, jeoparadizing the data integrity of the server.
> Note that enabling deduplication brings no bad consequences.
> h2. DOD
>  
> {{Given a James server with deduplication enabled
> When I reconfigure this James server and turn off deduplication
> Then this James server fails}}
> h2. How
> Write a {{StartUpCheck}} checking this property.
> Keep track of the value of "deduplication.enable" value via an event sourcing 
> system.
> The aggregate will ensure the rule that "deduplication should not be 
> disabled", and your start up check will update the aggregate with the new 
> configuration value, if it changed, effectively triggering the check.
> Note that this ticket can be handled separately, only the final integration 
> test requires dependency to other work



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3343) Configuration safety: disabling deduplication should not be allowed.

2020-08-10 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3343?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3343.
---
Resolution: Done

> Configuration safety: disabling deduplication should not be allowed.
> 
>
> Key: JAMES-3343
> URL: https://issues.apache.org/jira/browse/JAMES-3343
> Project: James Server
>  Issue Type: New Feature
>  Components: Blob
>Affects Versions: 3.5.0
>Reporter: Rémi Kowalski
>Priority: Major
> Fix For: 3.6.0
>
>
> h2. Why
> Deduplication allow the use of a single object for several business entities.
> Turning it off, the Duplicating blob store can, upon entity deletes, delete 
> blobs used by other entities, jeoparadizing the data integrity of the server.
> Note that enabling deduplication brings no bad consequences.
> h2. DOD
>  
> {{Given a James server with deduplication enabled
> When I reconfigure this James server and turn off deduplication
> Then this James server fails}}
> h2. How
> Write a {{StartUpCheck}} checking this property.
> Keep track of the value of "deduplication.enable" value via an event sourcing 
> system.
> The aggregate will ensure the rule that "deduplication should not be 
> disabled", and your start up check will update the aggregate with the new 
> configuration value, if it changed, effectively triggering the check.
> Note that this ticket can be handled separately, only the final integration 
> test requires dependency to other work



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3354) Mailbox/set creation: parentId handling

2020-08-12 Thread Jira
Nguyễn Việt Đức created JAMES-3354:
--

 Summary: Mailbox/set creation: parentId handling
 Key: JAMES-3354
 URL: https://issues.apache.org/jira/browse/JAMES-3354
 Project: James Server
  Issue Type: Improvement
Reporter: Nguyễn Việt Đức


Property: *parentId : String* The Mailbox id for the parent of this Mailbox 

- *Null* if this Mailbox is at the top level.
- Mailboxes form acyclic graphs (forests) directed by the child-to-parent 
relationship. There MUST NOT be a loop.
- There MUST NOT be two sibling Mailboxes with both the same parent and the 
same name.

**Request**

{code:java}
{
   "using": [ "urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail" ],
   "methodCalls": [
   [
   "Mailbox/set", 
   {
"accountId": "JMAP-ID",
"ifInState": null,
"create": {
"CHILD-MAILBOX-1": {
"name": "mailbox_name",
"role": "Inbox",
"namespace": "Personal",
"parentId": "0001"
...
}
}
   }
   ]
   ]
}
{code}
**Response**
{code:java}
{
   "methodResponses": [
   [
   "Mailbox/set", 
   {
"accountId": "JMAP-ID", // the requested accountId
"oldState": null,
"newState": null,
"created": {
"CHILD-MAILBOX-1": {
"id": "0002",
"parentId": "0001",
"sortOrder": 10,
"totalEmails": 0,
"unreadEmails": 0,
"totalThreads": 0,
"unreadThreads": 0,
"myRights": {
"mayReadItems":false,
"mayAddItems":true,
"mayRemoveItems":false,
"maySetSeen":true,
"maySetKeywords":false,
"mayCreateChild":true,
"mayRename":true,
"mayDelete":false,
"maySubmit":false
}
}
}
   }
   ]
   ], 
   "sessionState": "abc"
}
{code}
**DOD:** Unit + integration tests to show user can create a child mailbox of 
existing mailbox.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3355) Mailbox/set delete: simple implementation

2020-08-13 Thread Jira
Nguyễn Việt Đức created JAMES-3355:
--

 Summary: Mailbox/set delete: simple implementation
 Key: JAMES-3355
 URL: https://issues.apache.org/jira/browse/JAMES-3355
 Project: James Server
  Issue Type: Improvement
Reporter: Nguyễn Việt Đức


This should be a simple implementation of the deletion for `Mailbox/set`. It 
should follow the JMAP core specification section /set 
https://jmap.io/spec-core.html#set

**JSON request**

You will need to add to the existing `Mailbox/set` request the following 
property:
* **destroy**: `Id[]|null` A list of ids for Mailbox objects to permanently 
delete, or null if no objects are to be destroyed.

{code:java}
json
{
 "using": [ "urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail" ],
 "methodCalls": [
 [
 "Mailbox/set", 
 {
 "accountId": "JMAP-ID",
 "ifInState": "123",
 "create": null,
 "destroy": [ "0001", "0002" ]
 }
 ]
 ]
}
{code}

Notes:
* `onDestroyRemoveEmails` will be handled in #1741 . It should not be possible 
to delete a mailbox if it still has some emails in it for the moment, as it's 
the default behavior.
* we need to handle the case of deleting multiple mailboxes in one request

**JSON response**

The existing response should add the following property:
* **destroyed**: `Id[]|null` A list of Mailbox ids for records that were 
successfully destroyed, or null if none.

{code:java}json
{
 "methodResponses": [
 [
 "Mailbox/set", 
 {
 "accountId": "JMAP-ID", // the requested accountId
 "oldState": "123",
 "newState": "124",
 "created": null,
 "destroyed": [ "0001", "0002" ]
 }
 ]
 ], 
 "sessionState": "abc"
}
{code}

Note:
* `notDestroyed` and error handling will be handled in #1742

**DoD**: unit and integration tests (memory and distributed james) + proof of 
deletion of multiple objects in a single request



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Created] (JAMES-3357) Mailbox/set creation: simple implementation

2020-08-14 Thread Jira
René Cordier created JAMES-3357:
---

 Summary: Mailbox/set creation: simple implementation
 Key: JAMES-3357
 URL: https://issues.apache.org/jira/browse/JAMES-3357
 Project: James Server
  Issue Type: New Feature
Reporter: René Cordier
 Fix For: 3.6.0


This is a first simple implementation of the creation part of Mailbox/set. It 
should follow the JMAP core specification section /set 
https://jmap.io/spec-core.html#set

*Request*

{code:json}
{
   "using": [ "urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail" ],
   "methodCalls": [
   [
   "Mailbox/set", 
   {
"accountId": "JMAP-ID",
"ifInState": null,
"create": {
"TEMP-MAILBOX-ID": {
"name": "mailbox_name",
"namespace": "Personal"
}
}
   }
   ]
   ]
}
{code}


For now, this should be enough. Few notes:

* ifInState is a State and is not managed at the moment, so it should be null
* the Roles will be the ones we already have defined in james, knowing we 
probably miss others at the moment (see #1750)
* parentId will be handled in #1737
* isSubscribed will be handled in #1739
* sortOrder is not handled yet, we attribute default values depending of the 
role (see #1749 )
* other missing fields are server-set
* namespace is not part of the specs
* rights are handled in #1759
* for now we can consider role and sortOrder server-set, regarding our current 
implementation

*Response*

{code:json}
{
   "methodResponses": [
   [
   "Mailbox/set", 
   {
"accountId": "JMAP-ID", // the requested accountId
"oldState": null,
"newState": null,
"created": {
"TEMP-MAILBOX-ID": {
"id": "0001",
"sortOrder": 10,
"role": "Inbox",
"totalEmails": 0,
"unreadEmails": 0,
"totalThreads": 0,
"unreadThreads": 0,
"myRights": {
"mayReadItems":false,
"mayAddItems":true,
"mayRemoveItems":false,
"maySetSeen":true,
"maySetKeywords":false,
"mayCreateChild":true,
"mayRename":true,
"mayDelete":false,
"maySubmit":false
},
"quotas":{
   "quotaRoot":{
   "Message":{"used":18,"max":42},
   "Storage":{"used":12}
}
}
}
}
   }
   ]
   ], 
   "sessionState": "abc"
}
{code}

Notes:
* notCreated will be handled in #1736
 * the core specs say that the response should return in created a map of Ids 
to their Mailbox object with the real id, including any properties not sent by 
the client (default values ommited by client and server-set values)
 * oldState and newState should be null for now, as we don't manage it atm

*DoD* : POJO and serialization of the request and response Mailbox/set for 
creation + unit and integration tests



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3308) RabbitMQ deserialization error handling for the Distributed Task Manager

2020-08-17 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3308?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17178860#comment-17178860
 ] 

René Cordier commented on JAMES-3308:
-

https://github.com/linagora/james-project/pull/3654 contributed thread-safety 
on RabbitMQTerminationSubscriberTest

> RabbitMQ deserialization error handling for the Distributed Task Manager 
> -
>
> Key: JAMES-3308
> URL: https://issues.apache.org/jira/browse/JAMES-3308
> Project: James Server
>  Issue Type: Improvement
>Reporter: Nguyễn Việt Đức
>Priority: Major
>
> A non deserializable message caused the entire MailQueue processing to crash.
> Solved this by doing an explicit nack on such messages, relying on RabbitMQ 
> dead-letter exchanges to not loose data. The messqge is thus effectively 
> ignored.
> Following this, we need to further investigate RabbitMQ related code and 
> evaluate if there is similar issues.
> We need to evaluate the impact on the RabbitMQ code for the distributed task 
> manager.
> Acceptance criteria
> If a message cannot be deserialized, following legitimate events can 
> still be processed.
> Discarded messages are stored in a dead-letter queue and not lost
> Both job submission and cancellation needs to be tested
> Definition of done
> Write tests to reproduce the issue and the expected behaviour
> Implement the fix leveraging dead-letter and nack



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3358) Mailbox/set delete: onDestroyRemoveEmails argument implementation

2020-08-20 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3358?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17181537#comment-17181537
 ] 

René Cordier commented on JAMES-3358:
-

https://github.com/linagora/james-project/pull/3664 contributed this

> Mailbox/set delete: onDestroyRemoveEmails argument implementation
> -
>
> Key: JAMES-3358
> URL: https://issues.apache.org/jira/browse/JAMES-3358
> Project: James Server
>  Issue Type: Improvement
>Reporter: Lan Khuat
>Priority: Major
>
> Property:  {{*onDestroyRemoveEmails*: Boolean}}
> Determine whether the emails in a mailbox should be removed/destroyed when 
> that mailbox got destroyed.
>  * SHOULD default to *{{false}}*
>  * If *{{false}}*, any attempt to destroy a Mailbox that still has Emails in 
> it will be rejected with a \{{mailboxHasEmail}}SetError.
>  * If *{{true}}*, any Emails that were in the Mailbox will be removed from 
> it, and if in no other Mailboxes, they will be destroyed when the Mailbox is 
> destroyed.
> *Request*
> {code:java}
> {
>"using": [ "urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail" ],
>"methodCalls": [
>[
>"Mailbox/set", 
>{
> "accountId": "JMAP-ID",
> "ifInState": "123",
> "create": null,
> "destroy": [ "0001" ],
> "onDestroyRemoveEmails": true
>}
>]
>]
> }
> {code}
> *Response*
>  
> {code:java}
> {
>"methodResponses": [
>[
>"Mailbox/set", 
>{
> "accountId": "JMAP-ID", // the requested accountId
> "oldState": "123",
> "newState": "124",
> "created": null,
> "destroyed": [ "0001" ]
>}
>]
>], 
>"sessionState": "abc"
> }
> {code}
>  *DOD:*
>  Integration tests + proof of email deletion when the property is *{{true}}*
> Proof of reject of the request if the property is *{{false}}* (with emails 
> still present in the mailbox)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3357) Mailbox/set creation: simple implementation

2020-08-20 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3357?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17181536#comment-17181536
 ] 

René Cordier commented on JAMES-3357:
-

https://github.com/linagora/james-project/pull/3663 contributed to add 
sortOrder as part of the created reponse

> Mailbox/set creation: simple implementation
> ---
>
> Key: JAMES-3357
> URL: https://issues.apache.org/jira/browse/JAMES-3357
> Project: James Server
>  Issue Type: New Feature
>Reporter: René Cordier
>Priority: Major
> Fix For: 3.6.0
>
>
> This is a first simple implementation of the creation part of Mailbox/set. It 
> should follow the JMAP core specification section /set 
> https://jmap.io/spec-core.html#set
> *Request*
> {code:json}
> {
>"using": [ "urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail" ],
>"methodCalls": [
>[
>"Mailbox/set", 
>{
> "accountId": "JMAP-ID",
> "ifInState": null,
> "create": {
> "TEMP-MAILBOX-ID": {
> "name": "mailbox_name",
> "namespace": "Personal"
> }
> }
>}
>]
>]
> }
> {code}
> For now, this should be enough. Few notes:
> * ifInState is a State and is not managed at the moment, so it should be null
> * the Roles will be the ones we already have defined in james, knowing we 
> probably miss others at the moment (see #1750)
> * parentId will be handled in #1737
> * isSubscribed will be handled in #1739
> * sortOrder is not handled yet, we attribute default values depending of the 
> role (see #1749 )
> * other missing fields are server-set
> * namespace is not part of the specs
> * rights are handled in #1759
> * for now we can consider role and sortOrder server-set, regarding our 
> current implementation
> *Response*
> {code:json}
> {
>"methodResponses": [
>[
>"Mailbox/set", 
>{
> "accountId": "JMAP-ID", // the requested accountId
> "oldState": null,
> "newState": null,
> "created": {
> "TEMP-MAILBOX-ID": {
> "id": "0001",
> "sortOrder": 10,
> "role": "Inbox",
> "totalEmails": 0,
> "unreadEmails": 0,
> "totalThreads": 0,
> "unreadThreads": 0,
> "myRights": {
> "mayReadItems":false,
> "mayAddItems":true,
> "mayRemoveItems":false,
> "maySetSeen":true,
> "maySetKeywords":false,
> "mayCreateChild":true,
> "mayRename":true,
> "mayDelete":false,
> "maySubmit":false
> },
> "quotas":{
>"quotaRoot":{
>"Message":{"used":18,"max":42},
>"Storage":{"used":12}
> }
> }
> }
> }
>}
>]
>], 
>"sessionState": "abc"
> }
> {code}
> Notes:
> * notCreated will be handled in #1736
>  * the core specs say that the response should return in created a map of Ids 
> to their Mailbox object with the real id, including any properties not sent 
> by the client (default values ommited by client and server-set values)
>  * oldState and newState should be null for now, as we don't manage it atm
> *DoD* : POJO and serialization of the request and response Mailbox/set for 
> creation + unit and integration tests



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Commented] (JAMES-3359) Mailbox/set update: name implementation

2020-08-20 Thread Jira


[ 
https://issues.apache.org/jira/browse/JAMES-3359?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17181538#comment-17181538
 ] 

René Cordier commented on JAMES-3359:
-

https://github.com/linagora/james-project/pull/3665 contributed this

> Mailbox/set update: name implementation
> ---
>
> Key: JAMES-3359
> URL: https://issues.apache.org/jira/browse/JAMES-3359
> Project: James Server
>  Issue Type: Improvement
>Reporter: Benoit Tellier
>Priority: Major
> Fix For: 3.6.0
>
>
> This is a first simple implementation of the update part of Mailbox/set. It 
> should follow the JMAP core specification section /set 
> https://jmap.io/spec-core.html#set
> For this time, we just focus here on being able to update the name of a 
> mailbox. The rest will follow up in other tickets.
> **JSON request**
> You will need to add to the existing `Mailbox/set` request the following 
> property:
> * **update**: `Id[PatchObject]|null` A map of an id to a Patch object to 
> apply to the current Foo object with that id, or null if no objects are to be 
> updated.
> For now, only the `name` property is allowed to be updated.
> {code:json}
> {
>"using": [ "urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail" ],
>"methodCalls": [
>[
>"Mailbox/set", 
>{
> "accountId": "JMAP-ID",
> "ifInState": "123",
> "create": null,
> "update": {
> "001": {
> "name": "new mailbox"
> }
> },
> "destroy": null
>}
>]
>]
> }
> {code}
> **JSON response**
> The existing response should add the following property:
> * **updated**: `Id[Mailbox|null]|null` The keys in this map are the ids of 
> all Mailboxes that were successfully updated.
> The value for each id is a Mailbox object containing any property that 
> changed in a way not explicitly requested by the PatchObject sent to the 
> server, or null if none. This lets the client know of any changes to 
> server-set or computed properties.
> This argument is null if no Mailbox objects were successfully updated.
> {code:json}
> {
>"methodResponses": [
>[
>"Mailbox/set", 
>{
> "accountId": "JMAP-ID", // the requested accountId
> "oldState": "123",
> "newState": "124",
> "created": null,
> "updated": {
>"001": null
> }
> "destroyed": null
>}
>]
>], 
>"sessionState": "abc"
> }
> {code}
> Notes:
> * `notUpdated` and errors will be handled in #1747 
> **DoD**: unit and integration tests (memory and distributed james)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3358) Mailbox/set delete: onDestroyRemoveEmails argument implementation

2020-08-20 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3358?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3358.
---
Fix Version/s: 3.6.0
   Resolution: Done

> Mailbox/set delete: onDestroyRemoveEmails argument implementation
> -
>
> Key: JAMES-3358
> URL: https://issues.apache.org/jira/browse/JAMES-3358
> Project: James Server
>  Issue Type: Improvement
>Reporter: Lan Khuat
>Priority: Major
> Fix For: 3.6.0
>
>
> Property:  {{*onDestroyRemoveEmails*: Boolean}}
> Determine whether the emails in a mailbox should be removed/destroyed when 
> that mailbox got destroyed.
>  * SHOULD default to *{{false}}*
>  * If *{{false}}*, any attempt to destroy a Mailbox that still has Emails in 
> it will be rejected with a \{{mailboxHasEmail}}SetError.
>  * If *{{true}}*, any Emails that were in the Mailbox will be removed from 
> it, and if in no other Mailboxes, they will be destroyed when the Mailbox is 
> destroyed.
> *Request*
> {code:java}
> {
>"using": [ "urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail" ],
>"methodCalls": [
>[
>"Mailbox/set", 
>{
> "accountId": "JMAP-ID",
> "ifInState": "123",
> "create": null,
> "destroy": [ "0001" ],
> "onDestroyRemoveEmails": true
>}
>]
>]
> }
> {code}
> *Response*
>  
> {code:java}
> {
>"methodResponses": [
>[
>"Mailbox/set", 
>{
> "accountId": "JMAP-ID", // the requested accountId
> "oldState": "123",
> "newState": "124",
> "created": null,
> "destroyed": [ "0001" ]
>}
>]
>], 
>"sessionState": "abc"
> }
> {code}
>  *DOD:*
>  Integration tests + proof of email deletion when the property is *{{true}}*
> Proof of reject of the request if the property is *{{false}}* (with emails 
> still present in the mailbox)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



[jira] [Closed] (JAMES-3359) Mailbox/set update: name implementation

2020-08-20 Thread Jira


 [ 
https://issues.apache.org/jira/browse/JAMES-3359?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

René Cordier closed JAMES-3359.
---
Resolution: Done

> Mailbox/set update: name implementation
> ---
>
> Key: JAMES-3359
> URL: https://issues.apache.org/jira/browse/JAMES-3359
> Project: James Server
>  Issue Type: Improvement
>Reporter: Benoit Tellier
>Priority: Major
> Fix For: 3.6.0
>
>
> This is a first simple implementation of the update part of Mailbox/set. It 
> should follow the JMAP core specification section /set 
> https://jmap.io/spec-core.html#set
> For this time, we just focus here on being able to update the name of a 
> mailbox. The rest will follow up in other tickets.
> **JSON request**
> You will need to add to the existing `Mailbox/set` request the following 
> property:
> * **update**: `Id[PatchObject]|null` A map of an id to a Patch object to 
> apply to the current Foo object with that id, or null if no objects are to be 
> updated.
> For now, only the `name` property is allowed to be updated.
> {code:json}
> {
>"using": [ "urn:ietf:params:jmap:core", "urn:ietf:params:jmap:mail" ],
>"methodCalls": [
>[
>"Mailbox/set", 
>{
> "accountId": "JMAP-ID",
> "ifInState": "123",
> "create": null,
> "update": {
> "001": {
> "name": "new mailbox"
> }
> },
> "destroy": null
>}
>]
>]
> }
> {code}
> **JSON response**
> The existing response should add the following property:
> * **updated**: `Id[Mailbox|null]|null` The keys in this map are the ids of 
> all Mailboxes that were successfully updated.
> The value for each id is a Mailbox object containing any property that 
> changed in a way not explicitly requested by the PatchObject sent to the 
> server, or null if none. This lets the client know of any changes to 
> server-set or computed properties.
> This argument is null if no Mailbox objects were successfully updated.
> {code:json}
> {
>"methodResponses": [
>[
>"Mailbox/set", 
>{
> "accountId": "JMAP-ID", // the requested accountId
> "oldState": "123",
> "newState": "124",
> "created": null,
> "updated": {
>"001": null
> }
> "destroyed": null
>}
>]
>], 
>"sessionState": "abc"
> }
> {code}
> Notes:
> * `notUpdated` and errors will be handled in #1747 
> **DoD**: unit and integration tests (memory and distributed james)



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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



  1   2   3   4   5   6   7   8   9   10   >