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 cf210183f70705f7b86ca709442f474b32ef741e Author: Matthieu Baechler <[email protected]> AuthorDate: Fri Dec 6 08:57:35 2019 +0100 [JAMES-3001] add some debug logs for SpamAssassin client --- .../james/spamassassin/SpamAssassinInvoker.java | 22 ++++++++++++++++----- .../james/spamassassin/SpamAssassinResult.java | 23 ++++++++++++++++++++-- 2 files changed, 38 insertions(+), 7 deletions(-) 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 ff67c82..bf3d4b7 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 @@ -110,13 +110,15 @@ public class SpamAssassinInvoker { .sneakyThrow()); } - public SpamAssassinResult scanMailWithAdditionalHeaders(MimeMessage message, String... additionalHeaders) throws MessagingException { + private SpamAssassinResult scanMailWithAdditionalHeaders(MimeMessage message, String... additionalHeaders) throws MessagingException { try (Socket socket = new Socket(spamdHost, spamdPort); OutputStream out = socket.getOutputStream(); BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(out); PrintWriter writer = new PrintWriter(bufferedOutputStream); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) { + LOGGER.debug("Sending email {} for spam check", message.getMessageID()); + writer.write("CHECK SPAMC/1.2"); writer.write(CRLF); @@ -134,11 +136,14 @@ public class SpamAssassinInvoker { out.flush(); socket.shutdownOutput(); - return in.lines() + SpamAssassinResult spamAssassinResult = in.lines() .filter(this::isSpam) .map(this::processSpam) .findFirst() .orElse(SpamAssassinResult.empty()); + + LOGGER.debug("spam check result: {}", spamAssassinResult); + return spamAssassinResult; } catch (UnknownHostException e) { throw new MessagingException("Error communicating with spamd. Unknown host: " + spamdHost); } catch (IOException | MessagingException e) { @@ -146,7 +151,7 @@ public class SpamAssassinInvoker { } } - public SpamAssassinResult scanMailWithoutAdditionalHeaders(MimeMessage message) throws MessagingException { + private SpamAssassinResult scanMailWithoutAdditionalHeaders(MimeMessage message) throws MessagingException { return scanMailWithAdditionalHeaders(message); } @@ -219,6 +224,8 @@ public class SpamAssassinInvoker { PrintWriter writer = new PrintWriter(bufferedOutputStream); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()))) { + LOGGER.debug("Report mail as {}", messageClass); + byte[] byteArray = IOUtils.toByteArray(message); writer.write("TELL SPAMC/1.2"); writer.write(CRLF); @@ -237,8 +244,13 @@ public class SpamAssassinInvoker { out.flush(); socket.shutdownOutput(); - return in.lines() - .anyMatch(this::hasBeenSet); + boolean hasBeenSet = in.lines().anyMatch(this::hasBeenSet); + if (hasBeenSet) { + LOGGER.debug("Reported mail as {} succeeded", messageClass); + } else { + LOGGER.debug("Reported mail as {} failed", messageClass); + } + return hasBeenSet; } catch (UnknownHostException e) { throw new MessagingException("Error communicating with spamd. Unknown host: " + spamdHost); } catch (IOException e) { diff --git a/third-party/spamassassin/src/main/java/org/apache/james/spamassassin/SpamAssassinResult.java b/third-party/spamassassin/src/main/java/org/apache/james/spamassassin/SpamAssassinResult.java index b246249..e01464c 100644 --- a/third-party/spamassassin/src/main/java/org/apache/james/spamassassin/SpamAssassinResult.java +++ b/third-party/spamassassin/src/main/java/org/apache/james/spamassassin/SpamAssassinResult.java @@ -24,6 +24,7 @@ import org.apache.mailet.Attribute; import org.apache.mailet.AttributeName; import org.apache.mailet.AttributeValue; +import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; @@ -84,15 +85,24 @@ public class SpamAssassinResult { headersAsAttributes.add(new Attribute(STATUS_MAIL, AttributeValue.of("No, hits=" + hits + " required=" + requiredHits))); } - return new SpamAssassinResult(hits, requiredHits, headersAsAttributes.build()); + SpamStatus status = isSpam ? SpamStatus.Spam : SpamStatus.Ham; + + return new SpamAssassinResult(status, hits, requiredHits, headersAsAttributes.build()); } } + enum SpamStatus { + Spam, + Ham + } + + private final SpamStatus status; private final String hits; private final String requiredHits; private final List<Attribute> headersAsAttributes; - private SpamAssassinResult(String hits, String requiredHits, List<Attribute> headersAsAttributes) { + private SpamAssassinResult(SpamStatus status, String hits, String requiredHits, List<Attribute> headersAsAttributes) { + this.status = status; this.hits = hits; this.requiredHits = requiredHits; this.headersAsAttributes = headersAsAttributes; @@ -110,4 +120,13 @@ public class SpamAssassinResult { return headersAsAttributes; } + @Override + public String toString() { + return MoreObjects.toStringHelper(this) + .add("status", status) + .add("hits", hits) + .add("requiredHits", requiredHits) + .add("headersAsAttributes", headersAsAttributes) + .toString(); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
