[jira] [Commented] (JAMES-1835) James Beta 5 Unable to parse message error when sending emails
[ 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 ?)
[ 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 ?)
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
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
[ 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
[ 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
[ 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
[ 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
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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
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
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
[ 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
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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
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
[ 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
[ 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
[ 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
[ 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 +)
[ 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
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
[ 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
[ 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
[ 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
[ 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?
[ 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?
[ 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
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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
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
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
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
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
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.
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.
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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
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
[ 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
[ 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
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
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
[ 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
[ 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
[ 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
[ 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
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
[ 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
[ 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
[ 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
[ 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.
[ 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.
[ 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
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
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
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
[ 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
[ 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
[ 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
[ 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
[ 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
[ 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