You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2022/02/08 02:02:23 UTC
[james-project] 01/02: JAMES-3712 Bounce should prefix bounced message
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 <bt...@linagora.com>
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: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org