This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit d80a694824a849c685044faf67472fbeeeeceac0 Author: Benoit Tellier <[email protected]> AuthorDate: Thu Feb 3 22:44:42 2022 +0700 JAMES-3712 Bounce should prefix bounced message --- .../org/apache/james/transport/mailets/Bounce.java | 2 +- .../james/transport/mailets/NotifyPostmaster.java | 2 +- .../james/transport/mailets/NotifySender.java | 2 +- .../apache/james/transport/mailets/BounceTest.java | 29 ++++++++++++- .../transport/mailets/NotifyPostmasterTest.java | 48 +++++++++++++++++----- .../james/transport/mailets/NotifySenderTest.java | 48 +++++++++++++++++----- upgrade-instructions.md | 34 +++++++++++++++ 7 files changed, 138 insertions(+), 27 deletions(-) diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java index 436d910..ab1eefe 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/Bounce.java @@ -260,6 +260,6 @@ public class Bounce extends GenericMailet implements RedirectNotify { @Override public MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { - return new MimeMessageModifier(originalMail.getMessage()); + return new MimeMessageModifier(newMail.getMessage()); } } diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java index 58035e4..ddaae14 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifyPostmaster.java @@ -255,7 +255,7 @@ public class NotifyPostmaster extends GenericMailet implements RedirectNotify { @Override public MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { - return new MimeMessageModifier(originalMail.getMessage()); + return new MimeMessageModifier(newMail.getMessage()); } @Override diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java index eae9b49..942261d 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/NotifySender.java @@ -255,7 +255,7 @@ public class NotifySender extends GenericMailet implements RedirectNotify { @Override public MimeMessageModifier getMimeMessageModifier(Mail newMail, Mail originalMail) throws MessagingException { - return new MimeMessageModifier(originalMail.getMessage()); + return new MimeMessageModifier(newMail.getMessage()); } @Override diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java index 6c5d782..fc9ea26 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/BounceTest.java @@ -210,7 +210,7 @@ public class BounceTest { } @Test - void bounceShouldAddPrefixToSubjectWhenPrefixIsConfigured() throws Exception { + void bounceShouldNotAddPrefixToSubjectOfInFlightMailWhenPrefixIsConfigured() throws Exception { FakeMailetConfig mailetConfig = FakeMailetConfig.builder() .mailetName(MAILET_NAME) .mailetContext(fakeMailContext) @@ -228,6 +228,31 @@ public class BounceTest { bounce.service(mail); - assertThat(mail.getMessage().getSubject()).isEqualTo("pre My subject"); + assertThat(mail.getMessage().getSubject()).isEqualTo("My subject"); + } + + @Test + void bounceShouldAddPrefixToSubjectOfSentEmailWhenPrefixIsConfigured() throws Exception { + FakeMailetConfig mailetConfig = FakeMailetConfig.builder() + .mailetName(MAILET_NAME) + .mailetContext(fakeMailContext) + .setProperty("prefix", "pre") + .build(); + bounce.init(mailetConfig); + + FakeMail mail = FakeMail.builder() + .name(MAILET_NAME) + .sender(MailAddressFixture.ANY_AT_JAMES) + .recipient(MailAddressFixture.ANY_AT_JAMES2) + .mimeMessage(MimeMessageBuilder.mimeMessageBuilder() + .setSubject("My subject")) + .build(); + + bounce.service(mail); + + assertThat(fakeMailContext.getSentMails()) + .first() + .extracting(s -> s.getSubject().get()) + .isEqualTo("pre My subject"); } } diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/NotifyPostmasterTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/NotifyPostmasterTest.java index f2c12b6..1b713af 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/NotifyPostmasterTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/NotifyPostmasterTest.java @@ -140,23 +140,49 @@ public class NotifyPostmasterTest { } @Test - void notifyPostmasterShouldAddPrefixToSubjectWhenPrefixIsConfigured() throws Exception { + void notifyPostmasterShouldNotAddPrefixToSubjectOfInFlightMailWhenPrefixIsConfigured() throws Exception { FakeMailetConfig mailetConfig = FakeMailetConfig.builder() - .mailetName(MAILET_NAME) - .mailetContext(fakeMailContext) - .setProperty("prefix", "pre") - .build(); + .mailetName(MAILET_NAME) + .mailetContext(fakeMailContext) + .setProperty("prefix", "pre") + .build(); notifyPostmaster.init(mailetConfig); FakeMail mail = FakeMail.builder() - .name(MAILET_NAME) - .sender(MailAddressFixture.ANY_AT_JAMES) - .mimeMessage(MimeMessageBuilder.mimeMessageBuilder() - .setSubject("My subject")) - .build(); + .name(MAILET_NAME) + .sender(MailAddressFixture.ANY_AT_JAMES) + .recipient(MailAddressFixture.ANY_AT_JAMES2) + .mimeMessage(MimeMessageBuilder.mimeMessageBuilder() + .setSubject("My subject")) + .build(); + + notifyPostmaster.service(mail); + + assertThat(mail.getMessage().getSubject()).isEqualTo("My subject"); + } + + @Test + void notifyPostmasterShouldAddPrefixToSubjectOfSentEmailWhenPrefixIsConfigured() throws Exception { + FakeMailetConfig mailetConfig = FakeMailetConfig.builder() + .mailetName(MAILET_NAME) + .mailetContext(fakeMailContext) + .setProperty("prefix", "pre") + .build(); + notifyPostmaster.init(mailetConfig); + + FakeMail mail = FakeMail.builder() + .name(MAILET_NAME) + .sender(MailAddressFixture.ANY_AT_JAMES) + .recipient(MailAddressFixture.ANY_AT_JAMES2) + .mimeMessage(MimeMessageBuilder.mimeMessageBuilder() + .setSubject("My subject")) + .build(); notifyPostmaster.service(mail); - assertThat(mail.getMessage().getSubject()).isEqualTo("pre My subject"); + assertThat(fakeMailContext.getSentMails()) + .first() + .extracting(s -> s.getSubject().get()) + .isEqualTo("pre My subject"); } } diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/NotifySenderTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/NotifySenderTest.java index 36ad41e..72fedfc 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/NotifySenderTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/NotifySenderTest.java @@ -150,23 +150,49 @@ public class NotifySenderTest { } @Test - void notifySenderShouldAddPrefixToSubjectWhenPrefixIsConfigured() throws Exception { + void notifySenderShouldNotAddPrefixToSubjectOfInFlightMailWhenPrefixIsConfigured() throws Exception { FakeMailetConfig mailetConfig = FakeMailetConfig.builder() - .mailetName(MAILET_NAME) - .mailetContext(fakeMailContext) - .setProperty("prefix", "pre") - .build(); + .mailetName(MAILET_NAME) + .mailetContext(fakeMailContext) + .setProperty("prefix", "pre") + .build(); notifySender.init(mailetConfig); FakeMail mail = FakeMail.builder() - .name(MAILET_NAME) - .sender(MailAddressFixture.ANY_AT_JAMES) - .mimeMessage(MimeMessageBuilder.mimeMessageBuilder() - .setSubject("My subject")) - .build(); + .name(MAILET_NAME) + .sender(MailAddressFixture.ANY_AT_JAMES) + .recipient(MailAddressFixture.ANY_AT_JAMES2) + .mimeMessage(MimeMessageBuilder.mimeMessageBuilder() + .setSubject("My subject")) + .build(); + + notifySender.service(mail); + + assertThat(mail.getMessage().getSubject()).isEqualTo("My subject"); + } + + @Test + void notifySenderShouldAddPrefixToSubjectOfSentEmailWhenPrefixIsConfigured() throws Exception { + FakeMailetConfig mailetConfig = FakeMailetConfig.builder() + .mailetName(MAILET_NAME) + .mailetContext(fakeMailContext) + .setProperty("prefix", "pre") + .build(); + notifySender.init(mailetConfig); + + FakeMail mail = FakeMail.builder() + .name(MAILET_NAME) + .sender(MailAddressFixture.ANY_AT_JAMES) + .recipient(MailAddressFixture.ANY_AT_JAMES2) + .mimeMessage(MimeMessageBuilder.mimeMessageBuilder() + .setSubject("My subject")) + .build(); notifySender.service(mail); - assertThat(mail.getMessage().getSubject()).isEqualTo("pre My subject"); + assertThat(fakeMailContext.getSentMails()) + .first() + .extracting(s -> s.getSubject().get()) + .isEqualTo("pre My subject"); } } \ No newline at end of file diff --git a/upgrade-instructions.md b/upgrade-instructions.md index 088f1bc..2fefc57 100644 --- a/upgrade-instructions.md +++ b/upgrade-instructions.md @@ -27,7 +27,41 @@ Change list: - [MailDir removal](#maildir-removal) - [Change defaults for JPA UsersRepository hash function](#change-defaults-for-jpa-usersrepository-hash-function) - [Restrict listening interface to loopback by default for webadmin](#restrict-listening-interface-to-loopback-by-default-for-webadmin) + - +### Change in behaviour for Bounce, NotifyPostmaster, NotifySender + +Date: 03/02/2022 + +JIRA: https://issues.apache.org/jira/browse/JAMES-3712 + +These mailets uses the mail being processed to send a new email to a third party. + +Prior to this change, the `prefix` property was prepended to the processed email and not to the one sent to the third party. +Ie: the bounce recipient will not have the prefix. + +We changed that so that the `prefix` property is prepended to the new email and not to the processed one. +Ie: the bounce recipient will now have the prefix. + +Users willing to retain the previous behaviour can do so by removing the `prefix` property from their mailet and add a +`AddSubjectPrefix` after their mailet. Please note that most user can (and likely should) omit those +modifications that are only mentioned here for the sake of completeness. + +Here is an example of how to retain the strict behaviour applied prior this change for `Bounce`: + +``` +<!-- what was --> +<mailet matcher="All" class="Bounce> + <prefix>[OUPS] </prefix> +</mailet> + +<!-- can now be written --> +<mailet matcher="All" class="Bounce/> +<mailet matcher="All" class="AddSubjectPrefix> + <subjectPrefix>[OUPS] </subjectPrefix> +</mailet> +``` + ### Restrict listening interface to loopback by default for webadmin Date: 11/01/2022 --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
