JAMES-2616 SpamAssassin learns james User not String
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/372930cd Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/372930cd Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/372930cd Branch: refs/heads/master Commit: 372930cd3f64cb9e65cac0d52527feee7656e6f1 Parents: 262e206 Author: tran tien duc <[email protected]> Authored: Tue Dec 4 15:44:03 2018 +0700 Committer: Benoit Tellier <[email protected]> Committed: Fri Dec 7 07:52:51 2018 +0700 ---------------------------------------------------------------------- .../james/mailbox/spamassassin/SpamAssassin.java | 5 +++-- .../mailbox/spamassassin/SpamAssassinListener.java | 7 +++---- .../apache/james/transport/mailets/SpamAssassin.java | 3 ++- third-party/spamassassin/pom.xml | 4 ++++ .../apache/james/spamassassin/SpamAssassinInvoker.java | 13 +++++++------ .../james/spamassassin/SpamAssassinInvokerTest.java | 3 ++- 6 files changed, 21 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/372930cd/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassin.java ---------------------------------------------------------------------- diff --git a/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassin.java b/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassin.java index b86fe28..a654666 100644 --- a/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassin.java +++ b/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassin.java @@ -23,6 +23,7 @@ import java.util.List; import javax.inject.Inject; +import org.apache.james.core.User; import org.apache.james.metrics.api.MetricFactory; import org.apache.james.spamassassin.SpamAssassinInvoker; import org.apache.james.util.Host; @@ -40,7 +41,7 @@ public class SpamAssassin { this.spamAssassinConfiguration = spamAssassinConfiguration; } - public void learnSpam(List<InputStream> messages, String user) { + public void learnSpam(List<InputStream> messages, User user) { if (spamAssassinConfiguration.isEnable()) { Host host = spamAssassinConfiguration.getHost().get(); SpamAssassinInvoker invoker = new SpamAssassinInvoker(metricFactory, host.getHostName(), host.getPort()); @@ -49,7 +50,7 @@ public class SpamAssassin { } } - public void learnHam(List<InputStream> messages, String user) { + public void learnHam(List<InputStream> messages, User user) { if (spamAssassinConfiguration.isEnable()) { Host host = spamAssassinConfiguration.getHost().get(); SpamAssassinInvoker invoker = new SpamAssassinInvoker(metricFactory, host.getHostName(), host.getPort()); http://git-wip-us.apache.org/repos/asf/james-project/blob/372930cd/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java ---------------------------------------------------------------------- diff --git a/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java b/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java index 9bf3657..74443c9 100644 --- a/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java +++ b/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java @@ -68,17 +68,16 @@ public class SpamAssassinListener implements SpamEventListener { @Override public void event(Event event) { - String username = event.getUser().asString(); if (event instanceof MessageMoveEvent) { MessageMoveEvent messageMoveEvent = (MessageMoveEvent) event; if (isMessageMovedToSpamMailbox(messageMoveEvent)) { LOGGER.debug("Spam event detected"); ImmutableList<InputStream> messages = retrieveMessages(messageMoveEvent); - spamAssassin.learnSpam(messages, username); + spamAssassin.learnSpam(messages, event.getUser()); } if (isMessageMovedOutOfSpamMailbox(messageMoveEvent)) { ImmutableList<InputStream> messages = retrieveMessages(messageMoveEvent); - spamAssassin.learnHam(messages, username); + spamAssassin.learnHam(messages, event.getUser()); } } if (event instanceof EventFactory.AddedImpl) { @@ -89,7 +88,7 @@ public class SpamAssassinListener implements SpamEventListener { .stream() .map(Throwing.function(MailboxMessage::getFullContent)) .collect(Guavate.toImmutableList()); - spamAssassin.learnHam(contents, username); + spamAssassin.learnHam(contents, event.getUser()); } } } http://git-wip-us.apache.org/repos/asf/james-project/blob/372930cd/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SpamAssassin.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SpamAssassin.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SpamAssassin.java index f9f2634..adda4b7 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SpamAssassin.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/SpamAssassin.java @@ -26,6 +26,7 @@ import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.apache.james.core.MailAddress; +import org.apache.james.core.User; import org.apache.james.metrics.api.MetricFactory; import org.apache.james.spamassassin.SpamAssassinInvoker; import org.apache.james.spamassassin.SpamAssassinResult; @@ -106,7 +107,7 @@ public class SpamAssassin extends GenericMailet { } private void querySpamAssassin(Mail mail, MimeMessage message, SpamAssassinInvoker sa, MailAddress recipient) throws MessagingException, UsersRepositoryException { - SpamAssassinResult result = sa.scanMail(message, usersRepository.getUser(recipient)); + SpamAssassinResult result = sa.scanMail(message, User.fromUsername(usersRepository.getUser(recipient))); // Add headers per recipient to mail object for (String key : result.getHeadersAsAttribute().keySet()) { http://git-wip-us.apache.org/repos/asf/james-project/blob/372930cd/third-party/spamassassin/pom.xml ---------------------------------------------------------------------- diff --git a/third-party/spamassassin/pom.xml b/third-party/spamassassin/pom.xml index 3079b24..06a0576 100644 --- a/third-party/spamassassin/pom.xml +++ b/third-party/spamassassin/pom.xml @@ -31,6 +31,10 @@ <dependencies> <dependency> <groupId>${james.groupId}</groupId> + <artifactId>james-core</artifactId> + </dependency> + <dependency> + <groupId>${james.groupId}</groupId> <artifactId>james-server-testing</artifactId> <scope>test</scope> </dependency> http://git-wip-us.apache.org/repos/asf/james-project/blob/372930cd/third-party/spamassassin/src/main/java/org/apache/james/spamassassin/SpamAssassinInvoker.java ---------------------------------------------------------------------- diff --git a/third-party/spamassassin/src/main/java/org/apache/james/spamassassin/SpamAssassinInvoker.java b/third-party/spamassassin/src/main/java/org/apache/james/spamassassin/SpamAssassinInvoker.java index 1a97bf8..0a686b1 100644 --- a/third-party/spamassassin/src/main/java/org/apache/james/spamassassin/SpamAssassinInvoker.java +++ b/third-party/spamassassin/src/main/java/org/apache/james/spamassassin/SpamAssassinInvoker.java @@ -35,6 +35,7 @@ import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import org.apache.commons.io.IOUtils; +import org.apache.james.core.User; import org.apache.james.metrics.api.MetricFactory; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -92,12 +93,12 @@ public class SpamAssassinInvoker { * @throws MessagingException * if an error on scanning is detected */ - public SpamAssassinResult scanMail(MimeMessage message, String user) throws MessagingException { + public SpamAssassinResult scanMail(MimeMessage message, User user) throws MessagingException { return metricFactory.runPublishingTimerMetric( "spamAssassin-check", Throwing.supplier( () -> scanMailWithAdditionalHeaders(message, - "User: " + user)) + "User: " + user.asString())) .sneakyThrow()); } @@ -187,7 +188,7 @@ public class SpamAssassinInvoker { * @throws MessagingException * if an error occured during learning. */ - public boolean learnAsSpam(InputStream message, String user) throws MessagingException { + public boolean learnAsSpam(InputStream message, User user) throws MessagingException { return metricFactory.runPublishingTimerMetric( "spamAssassin-spam-report", Throwing.supplier( @@ -203,7 +204,7 @@ public class SpamAssassinInvoker { * @throws MessagingException * if an error occured during learning. */ - public boolean learnAsHam(InputStream message, String user) throws MessagingException { + public boolean learnAsHam(InputStream message, User user) throws MessagingException { return metricFactory.runPublishingTimerMetric( "spamAssassin-ham-report", Throwing.supplier( @@ -211,7 +212,7 @@ public class SpamAssassinInvoker { .sneakyThrow()); } - private boolean reportMessageAs(InputStream message, String user, MessageClass messageClass) throws MessagingException { + private boolean reportMessageAs(InputStream message, User user, MessageClass messageClass) throws MessagingException { try (Socket socket = new Socket(spamdHost, spamdPort); OutputStream out = socket.getOutputStream(); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(out); @@ -227,7 +228,7 @@ public class SpamAssassinInvoker { writer.write(CRLF); writer.write("Set: local, remote"); writer.write(CRLF); - writer.write("User: " + user); + writer.write("User: " + user.asString()); writer.write(CRLF); writer.write(CRLF); writer.flush(); http://git-wip-us.apache.org/repos/asf/james-project/blob/372930cd/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinInvokerTest.java ---------------------------------------------------------------------- diff --git a/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinInvokerTest.java b/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinInvokerTest.java index 473c6bf..f712572 100644 --- a/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinInvokerTest.java +++ b/third-party/spamassassin/src/test/java/org/apache/james/spamassassin/SpamAssassinInvokerTest.java @@ -25,6 +25,7 @@ import java.nio.charset.StandardCharsets; import javax.mail.internet.MimeMessage; +import org.apache.james.core.User; import org.apache.james.metrics.api.NoopMetricFactory; import org.apache.james.spamassassin.SpamAssassinExtension.SpamAssassin; import org.apache.james.util.MimeMessageUtil; @@ -35,7 +36,7 @@ import org.junit.jupiter.api.extension.ExtendWith; @ExtendWith(SpamAssassinExtension.class) public class SpamAssassinInvokerTest { - public static final String USER = "any@james"; + public static final User USER = User.fromUsername("any@james"); private SpamAssassin spamAssassin; private SpamAssassinInvoker testee; --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
