JAMES-1790 don't detect mailing lists on sender when none

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/a8d2de92
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a8d2de92
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a8d2de92

Branch: refs/heads/master
Commit: a8d2de92a8a3e7a09ddd08b8dd10f418183729e5
Parents: 2a7c50f
Author: Matthieu Baechler <[email protected]>
Authored: Mon Jul 4 12:08:44 2016 +0200
Committer: Antoine Duprat <[email protected]>
Committed: Fri Jul 8 14:24:55 2016 +0200

----------------------------------------------------------------------
 .../base/AutomaticallySentMailDetectorImpl.java | 37 ++++++++++++++------
 1 file changed, 27 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/a8d2de92/mailet/base/src/main/java/org/apache/mailet/base/AutomaticallySentMailDetectorImpl.java
----------------------------------------------------------------------
diff --git 
a/mailet/base/src/main/java/org/apache/mailet/base/AutomaticallySentMailDetectorImpl.java
 
b/mailet/base/src/main/java/org/apache/mailet/base/AutomaticallySentMailDetectorImpl.java
index 72fad65..b6360fb 100644
--- 
a/mailet/base/src/main/java/org/apache/mailet/base/AutomaticallySentMailDetectorImpl.java
+++ 
b/mailet/base/src/main/java/org/apache/mailet/base/AutomaticallySentMailDetectorImpl.java
@@ -32,9 +32,19 @@ import org.apache.james.mime4j.parser.MimeStreamParser;
 import org.apache.james.mime4j.stream.BodyDescriptor;
 import org.apache.james.mime4j.stream.MimeConfig;
 import org.apache.mailet.Mail;
+import org.apache.mailet.MailAddress;
 
 public class AutomaticallySentMailDetectorImpl implements 
AutomaticallySentMailDetector {
 
+    private static final String[] MAILING_LIST_HEADERS = new String[] {
+            "List-Help",
+            "List-Subscribe",
+            "List-Unsubscribe",
+            "List-Owner",
+            "List-Post",
+            "List-Id",
+            "List-Archive" };
+
     public boolean isAutomaticallySent(Mail mail) throws MessagingException {
         return isMailingList(mail) ||
             isAutoSubmitted(mail) ||
@@ -42,20 +52,27 @@ public class AutomaticallySentMailDetectorImpl implements 
AutomaticallySentMailD
     }
 
     public boolean isMailingList(Mail mail) throws MessagingException {
-        String localPart = mail.getSender().getLocalPart();
+        return senderIsMailingList(mail)
+            || headerIsMailingList(mail);
+    }
+
+    private boolean senderIsMailingList(Mail mail) {
+        MailAddress sender = mail.getSender();
+        if (sender == null) {
+            return false;
+        }
+
+        String localPart = sender.getLocalPart();
         return localPart.startsWith("owner-")
             || localPart.endsWith("-request")
             || localPart.equalsIgnoreCase("MAILER-DAEMON")
             || localPart.equalsIgnoreCase("LISTSERV")
-            || localPart.equalsIgnoreCase("majordomo")
-            || mail.getMessage()
-            .getMatchingHeaders(new String[]{"List-Help",
-                "List-Subscribe",
-                "List-Unsubscribe",
-                "List-Owner",
-                "List-Post",
-                "List-Id",
-                "List-Archive"})
+            || localPart.equalsIgnoreCase("majordomo");
+    }
+
+    private boolean headerIsMailingList(Mail mail) throws MessagingException {
+        return mail.getMessage()
+            .getMatchingHeaders(MAILING_LIST_HEADERS)
             .hasMoreElements();
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to