JAMES-2352 MailAddress object should rely on Domain object
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ae85899a Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ae85899a Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ae85899a Branch: refs/heads/master Commit: ae85899af4c22c396161963d4cf8100d66440604 Parents: 3d98a4b Author: benwa <btell...@linagora.com> Authored: Mon Mar 19 13:46:52 2018 +0700 Committer: benwa <btell...@linagora.com> Committed: Tue Mar 27 15:13:47 2018 +0700 ---------------------------------------------------------------------- .../main/java/org/apache/james/core/Domain.java | 13 ++++- .../java/org/apache/james/core/MailAddress.java | 28 +++++------ .../org/apache/james/core/MailAddressTest.java | 3 +- .../apache/james/domainlist/api/DomainTest.java | 45 ++++++++++++++++++ .../james/ai/classic/BayesianAnalysis.java | 3 +- .../transport/mailets/PostmasterAlias.java | 3 +- .../apache/james/transport/matchers/HostIs.java | 10 ++-- .../james/transport/matchers/HostIsLocal.java | 3 +- .../james/transport/matchers/SenderHostIs.java | 22 ++++----- .../transport/matchers/SenderHostIsLocal.java | 3 +- .../transport/matchers/SenderHostIsTest.java | 50 +++++++++++++++----- .../AbstractAuthRequiredToRelayRcptHook.java | 7 +-- ...tSenderAuthIdentifyVerificationRcptHook.java | 2 +- .../protocols/smtp/core/MailCmdHandler.java | 2 +- .../core/fastfail/AbstractValidRcptHandler.java | 3 +- .../core/fastfail/ValidSenderDomainHandler.java | 2 +- .../impl/JamesMailetContext.java | 4 +- .../mailets/AbstractRecipientRewriteTable.java | 3 +- .../transport/mailets/BayesianAnalysis.java | 3 +- .../mailets/JDBCRecipientRewriteTable.java | 4 +- .../mailets/RecipientRewriteTableProcessor.java | 6 +-- .../james/transport/mailets/RemoteDelivery.java | 16 +++---- .../transport/mailets/WhiteListManager.java | 28 +++++------ .../mailets/XMLRecipientRewriteTable.java | 2 +- .../mailets/managesieve/ManageSieveMailet.java | 5 +- .../mailets/redirect/ProcessRedirectNotify.java | 6 ++- .../mailets/redirect/SpecialAddress.java | 7 +-- .../mailets/remote/delivery/MailDelivrer.java | 11 +++-- .../matchers/AbstractSQLWhitelistMatcher.java | 6 +-- .../james/transport/matchers/IsInWhiteList.java | 21 ++++---- .../matchers/NetworkIsInWhitelist.java | 2 +- .../transport/matchers/SenderInFakeDomain.java | 5 +- .../samples/mailets/InstrumentationMailet.java | 4 +- .../james/fetchmail/MessageProcessor.java | 3 +- .../smtpserver/AuthRequiredToRelayRcptHook.java | 4 +- .../james/smtpserver/MailPriorityHandler.java | 7 +-- .../smtpserver/fastfail/ValidRcptHandler.java | 6 +-- .../james/smtpserver/fastfail/ValidRcptMX.java | 9 ++-- .../james/webadmin/routes/GroupsRoutes.java | 7 +-- 39 files changed, 224 insertions(+), 144 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/core/src/main/java/org/apache/james/core/Domain.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/james/core/Domain.java b/core/src/main/java/org/apache/james/core/Domain.java index c2d081e..22b48a0 100644 --- a/core/src/main/java/org/apache/james/core/Domain.java +++ b/core/src/main/java/org/apache/james/core/Domain.java @@ -19,14 +19,23 @@ package org.apache.james.core; +import java.io.Serializable; import java.util.Locale; import java.util.Objects; import com.google.common.base.Preconditions; -public class Domain { +public class Domain implements Serializable { public static final Domain LOCALHOST = Domain.of("localhost"); + public static final Domain NULL = new Domain(""); + + private static String removeBrackets(String domainName) { + if (!(domainName.startsWith("[") && domainName.endsWith("]"))) { + return domainName; + } + return domainName.substring(1, domainName.length() - 1); + } public static Domain of(String domain) { Preconditions.checkNotNull(domain); @@ -39,7 +48,7 @@ public class Domain { protected Domain(String domainName) { this.domainName = domainName; - this.normalizedDomainName = domainName.toLowerCase(Locale.US); + this.normalizedDomainName = removeBrackets(domainName.toLowerCase(Locale.US)); } public String name() { http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/core/src/main/java/org/apache/james/core/MailAddress.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/james/core/MailAddress.java b/core/src/main/java/org/apache/james/core/MailAddress.java index c177b26..1a7540e 100644 --- a/core/src/main/java/org/apache/james/core/MailAddress.java +++ b/core/src/main/java/org/apache/james/core/MailAddress.java @@ -17,7 +17,6 @@ * under the License. * ****************************************************************/ - package org.apache.james.core; import java.util.Locale; @@ -76,8 +75,8 @@ public class MailAddress implements java.io.Serializable { private static final MailAddress NULL_SENDER = new MailAddress() { @Override - public String getDomain() { - return ""; + public Domain getDomain() { + return Domain.NULL; } @Override @@ -103,7 +102,7 @@ public class MailAddress implements java.io.Serializable { } private String localPart = null; - private String domain = null; + private Domain domain = null; private MailAddress() { @@ -200,7 +199,7 @@ public class MailAddress implements java.io.Serializable { } localPart = localPartSB.toString(); - domain = domainSB.toString(); + domain = Domain.of(domainSB.toString()); } private int parseUnquotedLocalPartOrThrowException(StringBuffer localPartSB, String address, int pos) @@ -237,6 +236,10 @@ public class MailAddress implements java.io.Serializable { this(new InternetAddress(localPart + "@" + domain)); } + public MailAddress(String localPart, Domain domain) throws AddressException { + this(new InternetAddress(localPart + "@" + domain.name())); + } + /** * Constructs a MailAddress from an InternetAddress, using only the * email address portion (an "addr-spec", not "name-addr", as @@ -259,7 +262,7 @@ public class MailAddress implements java.io.Serializable { */ @Deprecated public String getHost() { - return getDomain(); + return domain.asString(); } /** @@ -270,11 +273,8 @@ public class MailAddress implements java.io.Serializable { * have been stripped returning the raw IP address. * @since Mailet API 2.4 */ - public String getDomain() { - if (!(domain.startsWith("[") && domain.endsWith("]"))) { - return domain; - } - return domain.substring(1, domain.length() - 1); + public Domain getDomain() { + return domain; } /** @@ -305,12 +305,12 @@ public class MailAddress implements java.io.Serializable { } public String asString() { - return localPart + "@" + domain; + return localPart + "@" + domain.asString(); } @Override public String toString() { - return localPart + "@" + domain; + return localPart + "@" + domain.asString(); } public String asPrettyString() { @@ -351,7 +351,7 @@ public class MailAddress implements java.io.Serializable { return toString().equalsIgnoreCase(theString); } else if (obj instanceof MailAddress) { MailAddress addr = (MailAddress) obj; - return getLocalPart().equalsIgnoreCase(addr.getLocalPart()) && getDomain().equalsIgnoreCase(addr.getDomain()); + return getLocalPart().equalsIgnoreCase(addr.getLocalPart()) && getDomain().equals(addr.getDomain()); } return false; } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/core/src/test/java/org/apache/james/core/MailAddressTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/james/core/MailAddressTest.java b/core/src/test/java/org/apache/james/core/MailAddressTest.java index cba3fc3..edb1cfa 100644 --- a/core/src/test/java/org/apache/james/core/MailAddressTest.java +++ b/core/src/test/java/org/apache/james/core/MailAddressTest.java @@ -22,7 +22,6 @@ package org.apache.james.core; import javax.mail.internet.AddressException; import javax.mail.internet.InternetAddress; -import org.apache.james.core.MailAddress; import org.assertj.core.api.Assertions; import org.junit.Assert; import org.junit.Test; @@ -32,7 +31,7 @@ public class MailAddressTest { private static final String GOOD_LOCAL_PART = "\"quoted@local part\""; private static final String GOOD_QUOTED_LOCAL_PART = "\"quoted@local part\"@james.apache.org"; private static final String GOOD_ADDRESS = "server-dev@james.apache.org"; - private static final String GOOD_DOMAIN = "james.apache.org"; + private static final Domain GOOD_DOMAIN = Domain.of("james.apache.org"); private static final String[] GOOD_ADDRESSES = { GOOD_ADDRESS, http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/core/src/test/java/org/apache/james/domainlist/api/DomainTest.java ---------------------------------------------------------------------- diff --git a/core/src/test/java/org/apache/james/domainlist/api/DomainTest.java b/core/src/test/java/org/apache/james/domainlist/api/DomainTest.java index 4428f96..ef2821c 100644 --- a/core/src/test/java/org/apache/james/domainlist/api/DomainTest.java +++ b/core/src/test/java/org/apache/james/domainlist/api/DomainTest.java @@ -40,6 +40,51 @@ public class DomainTest { } @Test + public void shouldRemoveBrackets() { + assertThat(Domain.of("[domain]")).isEqualTo(Domain.of("domain")); + } + + @Test + public void openBracketWithTextShouldNotBeRemoved() { + assertThat(Domain.of("[domain")).isEqualTo(Domain.of("[Domain")); + } + + @Test + public void singleOpenBracketShouldNotBeRemoved() { + assertThat(Domain.of("[")).isEqualTo(Domain.of("[")); + } + + @Test + public void singleClosingBracketShouldNotBeRemoved() { + assertThat(Domain.of("]")).isEqualTo(Domain.of("]")); + } + + @Test + public void closeBracketWithTextShouldNotBeRemoved() { + assertThat(Domain.of("aaa]")).isEqualTo(Domain.of("aaa]")); + } + + @Test + public void bracketSurroundedWithTextShouldNotBeRemoved() { + assertThat(Domain.of("a[aaa]a")).isEqualTo(Domain.of("a[aaa]a")); + } + + @Test + public void bracketWithTextSuffixShouldNotBeRemoved() { + assertThat(Domain.of("[aaa]a")).isEqualTo(Domain.of("[aaa]a")); + } + + @Test + public void bracketWithTextPrefixShouldNotBeRemoved() { + assertThat(Domain.of("a[aaa]")).isEqualTo(Domain.of("a[aaa]")); + } + + @Test + public void singleBracketShouldNotBeRemoved() { + assertThat(Domain.of("[]")).isEqualTo(Domain.of("[]")); + } + + @Test public void shouldThrowWhenDomainContainAtSymbol() { assertThatThrownBy(() -> Domain.of("Dom@in")).isInstanceOf(IllegalArgumentException.class); } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/mailet/ai/src/main/java/org/apache/james/ai/classic/BayesianAnalysis.java ---------------------------------------------------------------------- diff --git a/mailet/ai/src/main/java/org/apache/james/ai/classic/BayesianAnalysis.java b/mailet/ai/src/main/java/org/apache/james/ai/classic/BayesianAnalysis.java index de77a83..c4be663 100644 --- a/mailet/ai/src/main/java/org/apache/james/ai/classic/BayesianAnalysis.java +++ b/mailet/ai/src/main/java/org/apache/james/ai/classic/BayesianAnalysis.java @@ -32,7 +32,6 @@ import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import javax.sql.DataSource; -import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.mailet.Experimental; import org.apache.mailet.Mail; @@ -344,7 +343,7 @@ public class BayesianAnalysis extends GenericMailet { } private boolean isSenderLocal(Mail mail) { - return mail.getSender() != null && getMailetContext().isLocalServer(Domain.of(mail.getSender().getDomain())); + return mail.getSender() != null && getMailetContext().isLocalServer(mail.getSender().getDomain()); } void loadData(Connection conn) throws java.sql.SQLException { http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/mailet/standard/src/main/java/org/apache/james/transport/mailets/PostmasterAlias.java ---------------------------------------------------------------------- diff --git a/mailet/standard/src/main/java/org/apache/james/transport/mailets/PostmasterAlias.java b/mailet/standard/src/main/java/org/apache/james/transport/mailets/PostmasterAlias.java index 481ec1a..9a539d9 100644 --- a/mailet/standard/src/main/java/org/apache/james/transport/mailets/PostmasterAlias.java +++ b/mailet/standard/src/main/java/org/apache/james/transport/mailets/PostmasterAlias.java @@ -24,7 +24,6 @@ import java.util.stream.Stream; import javax.mail.MessagingException; -import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.mailet.Mail; import org.apache.mailet.base.GenericMailet; @@ -67,7 +66,7 @@ public class PostmasterAlias extends GenericMailet { private boolean isPostmasterAlias(MailAddress addr) { return addr.getLocalPart().equalsIgnoreCase("postmaster") - && getMailetContext().isLocalServer(Domain.of(addr.getDomain())) + && getMailetContext().isLocalServer(addr.getDomain()) && !getMailetContext().isLocalEmail(addr); } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/mailet/standard/src/main/java/org/apache/james/transport/matchers/HostIs.java ---------------------------------------------------------------------- diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/HostIs.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/HostIs.java index 5225255..ec61434 100644 --- a/mailet/standard/src/main/java/org/apache/james/transport/matchers/HostIs.java +++ b/mailet/standard/src/main/java/org/apache/james/transport/matchers/HostIs.java @@ -17,15 +17,13 @@ * under the License. * ****************************************************************/ - - package org.apache.james.transport.matchers; import java.util.Collection; -import java.util.Locale; import java.util.StringTokenizer; import java.util.Vector; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.mailet.base.GenericRecipientMatcher; @@ -34,19 +32,19 @@ import org.apache.mailet.base.GenericRecipientMatcher; */ public class HostIs extends GenericRecipientMatcher { - private Collection<String> hosts; + private Collection<Domain> hosts; @Override public void init() { StringTokenizer st = new StringTokenizer(getCondition(), ", ", false); hosts = new Vector<>(); while (st.hasMoreTokens()) { - hosts.add(st.nextToken().toLowerCase(Locale.US)); + hosts.add(Domain.of(st.nextToken())); } } @Override public boolean matchRecipient(MailAddress recipient) { - return hosts.contains(recipient.getDomain().toLowerCase(Locale.US)); + return hosts.contains(recipient.getDomain()); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/mailet/standard/src/main/java/org/apache/james/transport/matchers/HostIsLocal.java ---------------------------------------------------------------------- diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/HostIsLocal.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/HostIsLocal.java index 46d0c7c..46763a9 100644 --- a/mailet/standard/src/main/java/org/apache/james/transport/matchers/HostIsLocal.java +++ b/mailet/standard/src/main/java/org/apache/james/transport/matchers/HostIsLocal.java @@ -21,7 +21,6 @@ package org.apache.james.transport.matchers; -import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.mailet.base.GenericRecipientMatcher; @@ -33,6 +32,6 @@ public class HostIsLocal extends GenericRecipientMatcher { @Override public boolean matchRecipient(MailAddress recipient) { - return getMailetContext().isLocalServer(Domain.of(recipient.getDomain())); + return getMailetContext().isLocalServer(recipient.getDomain()); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderHostIs.java ---------------------------------------------------------------------- diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderHostIs.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderHostIs.java index 3fcfb26..6c83b85 100755 --- a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderHostIs.java +++ b/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderHostIs.java @@ -17,23 +17,21 @@ * under the License. * ****************************************************************/ - - package org.apache.james.transport.matchers; import java.util.Collection; -import java.util.Locale; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.mailet.Mail; import org.apache.mailet.base.GenericMatcher; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.github.steveash.guavate.Guavate; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.base.Splitter; -import com.google.common.collect.ImmutableSet; /** * <p>Checkes the sender's displayed domain name against a supplied list.</p> @@ -50,7 +48,7 @@ import com.google.common.collect.ImmutableSet; public class SenderHostIs extends GenericMatcher { private static final Logger LOGGER = LoggerFactory.getLogger(SenderHostIs.class); - private Collection<String> senderHosts; + private Collection<Domain> senderHosts; @Override public void init() { @@ -60,11 +58,13 @@ public class SenderHostIs extends GenericMatcher { senderHosts = parseDomainsList(condition); } - @VisibleForTesting Collection<String> parseDomainsList(String condition) { - return ImmutableSet - .copyOf(Splitter.onPattern("(, |,| )") - .omitEmptyStrings() - .split(condition)); + @VisibleForTesting Collection<Domain> parseDomainsList(String condition) { + return Splitter.onPattern("(, |,| )") + .omitEmptyStrings() + .splitToList(condition) + .stream() + .map(Domain::of) + .collect(Guavate.toImmutableList()); } /** @@ -78,7 +78,7 @@ public class SenderHostIs extends GenericMatcher { @Override public Collection<MailAddress> match(Mail mail) { try { - if (mail.getSender() != null && senderHosts.contains(mail.getSender().getDomain().toLowerCase(Locale.US))) { + if (mail.getSender() != null && senderHosts.contains(mail.getSender().getDomain())) { return mail.getRecipients(); } } catch (Exception e) { http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderHostIsLocal.java ---------------------------------------------------------------------- diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderHostIsLocal.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderHostIsLocal.java index 735efae..1500aed 100644 --- a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderHostIsLocal.java +++ b/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderHostIsLocal.java @@ -22,7 +22,6 @@ package org.apache.james.transport.matchers; import java.util.Collection; -import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.mailet.Mail; import org.apache.mailet.base.GenericMatcher; @@ -48,7 +47,7 @@ public class SenderHostIsLocal extends GenericMatcher { } private boolean isLocalServer(Mail mail) { - return this.getMailetContext().isLocalServer(Domain.of(mail.getSender().getDomain())); + return this.getMailetContext().isLocalServer(mail.getSender().getDomain()); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderHostIsTest.java ---------------------------------------------------------------------- diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderHostIsTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderHostIsTest.java index 0be03f0..a80dcba 100644 --- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderHostIsTest.java +++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderHostIsTest.java @@ -29,6 +29,7 @@ import java.util.Collection; import javax.mail.MessagingException; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.mailet.Mail; import org.apache.mailet.MailetContext; @@ -141,48 +142,73 @@ public class SenderHostIsTest { @Test void parseDomainsListShouldParseWhenOnlyOneDomain() { //When - Collection<String> senderHosts = matcher.parseDomainsList("james.apache.org"); + Collection<Domain> senderHosts = matcher.parseDomainsList("james.apache.org"); //Then - assertThat(senderHosts).containsOnly("james.apache.org"); + assertThat(senderHosts).containsOnly(Domain.of("james.apache.org")); } @Test void parseDomainsListShouldParseWhenCommaSpacePattern() { //When - Collection<String> senderHosts = matcher.parseDomainsList("james.apache.org, james2.apache.org, james3.apache.org, james4.apache.org, james5.apache.org"); + Collection<Domain> senderHosts = matcher.parseDomainsList("james.apache.org, james2.apache.org, james3.apache.org, james4.apache.org, james5.apache.org"); //Then - assertThat(senderHosts).containsOnly("james.apache.org", "james2.apache.org", "james3.apache.org", "james4.apache.org", "james5.apache.org"); + assertThat(senderHosts).containsOnly( + Domain.of("james.apache.org"), + Domain.of("james2.apache.org"), + Domain.of("james3.apache.org"), + Domain.of("james4.apache.org"), + Domain.of("james5.apache.org")); } @Test void parseDomainsListShouldParseWhenCommaPattern() { //When - Collection<String> senderHosts = matcher.parseDomainsList("james.apache.org,james2.apache.org,james3.apache.org,james4.apache.org,james5.apache.org"); + Collection<Domain> senderHosts = matcher.parseDomainsList("james.apache.org,james2.apache.org,james3.apache.org,james4.apache.org,james5.apache.org"); //Then - assertThat(senderHosts).containsOnly("james.apache.org", "james2.apache.org", "james3.apache.org", "james4.apache.org", "james5.apache.org"); + assertThat(senderHosts).containsOnly( + Domain.of("james.apache.org"), + Domain.of("james2.apache.org"), + Domain.of("james3.apache.org"), + Domain.of("james4.apache.org"), + Domain.of( "james5.apache.org")); } @Test void parseDomainsListShouldParseWhenSpacePattern() { //When - Collection<String> senderHosts = matcher.parseDomainsList("james.apache.org james2.apache.org james3.apache.org james4.apache.org james5.apache.org"); + Collection<Domain> senderHosts = matcher.parseDomainsList("james.apache.org james2.apache.org james3.apache.org james4.apache.org james5.apache.org"); //Then - assertThat(senderHosts).containsOnly("james.apache.org", "james2.apache.org", "james3.apache.org", "james4.apache.org", "james5.apache.org"); + assertThat(senderHosts).containsOnly( + Domain.of("james.apache.org"), + Domain.of("james2.apache.org"), + Domain.of("james3.apache.org"), + Domain.of("james4.apache.org"), + Domain.of("james5.apache.org")); } @Test void parseDomainsListShouldParseWhenMixedPatterns() { //When - Collection<String> senderHosts = matcher.parseDomainsList("james.apache.org james2.apache.org,james3.apache.org, james4.apache.org james5.apache.org"); + Collection<Domain> senderHosts = matcher.parseDomainsList("james.apache.org james2.apache.org,james3.apache.org, james4.apache.org james5.apache.org"); //Then - assertThat(senderHosts).containsOnly("james.apache.org", "james2.apache.org", "james3.apache.org", "james4.apache.org", "james5.apache.org"); + assertThat(senderHosts).containsOnly( + Domain.of("james.apache.org"), + Domain.of("james2.apache.org"), + Domain.of("james3.apache.org"), + Domain.of("james4.apache.org"), + Domain.of("james5.apache.org")); } @Test void parseDomainsListShouldIgnoreEmptyDomains() { //When - Collection<String> senderHosts = matcher.parseDomainsList("james.apache.org james2.apache.org james3.apache.org , james4.apache.org,,,james5.apache.org"); + Collection<Domain> senderHosts = matcher.parseDomainsList("james.apache.org james2.apache.org james3.apache.org , james4.apache.org,,,james5.apache.org"); //Then - assertThat(senderHosts).containsOnly("james.apache.org", "james2.apache.org", "james3.apache.org", "james4.apache.org", "james5.apache.org"); + assertThat(senderHosts).containsOnly( + Domain.of("james.apache.org"), + Domain.of("james2.apache.org"), + Domain.of("james3.apache.org"), + Domain.of("james4.apache.org"), + Domain.of("james5.apache.org")); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAuthRequiredToRelayRcptHook.java ---------------------------------------------------------------------- diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAuthRequiredToRelayRcptHook.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAuthRequiredToRelayRcptHook.java index b0e1165..5c3f880 100644 --- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAuthRequiredToRelayRcptHook.java +++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractAuthRequiredToRelayRcptHook.java @@ -18,6 +18,7 @@ ****************************************************************/ package org.apache.james.protocols.smtp.core; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.protocols.smtp.SMTPRetCode; import org.apache.james.protocols.smtp.SMTPSession; @@ -49,8 +50,8 @@ public abstract class AbstractAuthRequiredToRelayRcptHook implements RcptHook { public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) { if (!session.isRelayingAllowed()) { - String toDomain = rcpt.getDomain(); - if (isLocalDomain(toDomain) == false) { + Domain toDomain = rcpt.getDomain(); + if (!isLocalDomain(toDomain)) { if (session.isAuthSupported()) { return AUTH_REQUIRED; } else { @@ -69,6 +70,6 @@ public abstract class AbstractAuthRequiredToRelayRcptHook implements RcptHook { * @param domain * @return isLocal */ - protected abstract boolean isLocalDomain(String domain); + protected abstract boolean isLocalDomain(Domain domain); } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java ---------------------------------------------------------------------- diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java index eeeb6b2..4c386c6 100644 --- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java +++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/AbstractSenderAuthIdentifyVerificationRcptHook.java @@ -62,7 +62,7 @@ public abstract class AbstractSenderAuthIdentifyVerificationRcptHook implements // the user was already authenticated if ((senderAddress == null) || (!authUser.equalsIgnoreCase(username)) - || (!isLocalDomain(Domain.of(senderAddress.getDomain())))) { + || (!isLocalDomain(senderAddress.getDomain()))) { return INVALID_AUTH; } } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java ---------------------------------------------------------------------- diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java index 3afe738..806d730 100644 --- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java +++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/MailCmdHandler.java @@ -239,7 +239,7 @@ public class MailCmdHandler extends AbstractHookableCmdHandler<MailHook> { } } if ((senderAddress == null) || - ((senderAddress.getLocalPart().length() == 0) && (senderAddress.getDomain().length() == 0))) { + ((senderAddress.getLocalPart().length() == 0) && (senderAddress.getDomain().name().length() == 0))) { senderAddress = MailAddress.nullSender(); } // Store the senderAddress in session map http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java ---------------------------------------------------------------------- diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java index 79246e0..ff35f0c 100644 --- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java +++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/AbstractValidRcptHandler.java @@ -19,6 +19,7 @@ package org.apache.james.protocols.smtp.core.fastfail; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.protocols.smtp.SMTPRetCode; import org.apache.james.protocols.smtp.SMTPSession; @@ -83,5 +84,5 @@ public abstract class AbstractValidRcptHandler implements RcptHook { * @param domain * @return local */ - protected abstract boolean isLocalDomain(SMTPSession session, String domain); + protected abstract boolean isLocalDomain(SMTPSession session, Domain domain); } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java ---------------------------------------------------------------------- diff --git a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java index 58d1042..4e3f57e 100644 --- a/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java +++ b/protocols/smtp/src/main/java/org/apache/james/protocols/smtp/core/fastfail/ValidSenderDomainHandler.java @@ -35,7 +35,7 @@ public abstract class ValidSenderDomainHandler implements MailHook { @Override public HookResult doMail(SMTPSession session, MailAddress sender) { - if (sender != null && !hasMXRecord(session,sender.getDomain())) { + if (sender != null && !hasMXRecord(session,sender.getDomain().name())) { return new HookResult(HookReturnCode.DENY,SMTPRetCode.SYNTAX_ERROR_ARGUMENTS,DSNStatus.getStatus(DSNStatus.PERMANENT,DSNStatus.ADDRESS_SYNTAX_SENDER) + " sender " + sender + " contains a domain with no valid MX records"); } else { return HookResult.declined(); http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java index 210a848..5c979e1 100644 --- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java +++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/JamesMailetContext.java @@ -250,7 +250,7 @@ public class JamesMailetContext implements MailetContext, Configurable { @Override public boolean isLocalEmail(MailAddress mailAddress) { if (mailAddress != null) { - if (!isLocalServer(Domain.of(mailAddress.getDomain()))) { + if (!isLocalServer(mailAddress.getDomain())) { return false; } try { @@ -465,7 +465,7 @@ public class JamesMailetContext implements MailetContext, Configurable { } try { this.postmaster = new MailAddress(postMasterAddress); - if (!domains.containsDomain(Domain.of(postmaster.getDomain()))) { + if (!domains.containsDomain(postmaster.getDomain())) { LOGGER.warn("The specified postmaster address ( {} ) is not a local " + "address. This is not necessarily a problem, but it does mean that emails addressed to " + "the postmaster will be routed to another server. For some configurations this may " + http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java index e048835..44044e3 100755 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java @@ -32,7 +32,6 @@ import javax.inject.Inject; import javax.mail.MessagingException; import javax.mail.internet.ParseException; -import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.domainlist.api.DomainList; @@ -136,7 +135,7 @@ public abstract class AbstractRecipientRewriteTable extends GenericMailet { // We need to separate local and remote // recipients. This is explained below. - if (getMailetContext().isLocalServer(Domain.of(target.getDomain()))) { + if (getMailetContext().isLocalServer(target.getDomain())) { recipientsToAddLocal.add(target); } else { recipientsToAddForward.add(target); http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java index 60249a6..7e9c29a 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/BayesianAnalysis.java @@ -31,7 +31,6 @@ import javax.mail.MessagingException; import javax.mail.internet.MimeMessage; import javax.sql.DataSource; -import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.filesystem.api.FileSystem; import org.apache.james.util.bayesian.JDBCBayesianAnalyzer; @@ -295,7 +294,7 @@ public class BayesianAnalysis extends GenericMailet { if (ignoreLocalSender) { // ignore the message if the sender is local - if (mail.getSender() != null && getMailetContext().isLocalServer(Domain.of(mail.getSender().getDomain()))) { + if (mail.getSender() != null && getMailetContext().isLocalServer(mail.getSender().getDomain())) { return; } } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/JDBCRecipientRewriteTable.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/JDBCRecipientRewriteTable.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/JDBCRecipientRewriteTable.java index 4da4680..30058ea 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/JDBCRecipientRewriteTable.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/JDBCRecipientRewriteTable.java @@ -188,8 +188,8 @@ public class JDBCRecipientRewriteTable extends AbstractRecipientRewriteTable { ResultSet mappingRS = null; try { mappingStmt.setString(1, recipient.getLocalPart()); - mappingStmt.setString(2, recipient.getDomain()); - mappingStmt.setString(3, recipient.getDomain()); + mappingStmt.setString(2, recipient.getDomain().asString()); + mappingStmt.setString(3, recipient.getDomain().asString()); mappingRS = mappingStmt.executeQuery(); if (mappingRS.next()) { String targetString = mappingRS.getString(1); http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java index d2d3165..293a297 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RecipientRewriteTableProcessor.java @@ -118,7 +118,7 @@ public class RecipientRewriteTableProcessor { private RrtExecutionResult getRrtExecutionResult(Mail mail, MailAddress recipient) { try { - Mappings mappings = virtualTableStore.getMappings(recipient.getLocalPart(), Domain.of(recipient.getDomain())); + Mappings mappings = virtualTableStore.getMappings(recipient.getLocalPart(), recipient.getDomain()); if (mappings != null) { List<MailAddress> newMailAddresses = handleMappings(mappings, mail.getSender(), recipient, mail.getMessage()); @@ -155,7 +155,7 @@ public class RecipientRewriteTableProcessor { private ImmutableList<MailAddress> getLocalAddresses(ImmutableList<MailAddress> mailAddresses) { return mailAddresses.stream() - .filter(mailAddress -> mailetContext.isLocalServer(Domain.of(mailAddress.getDomain()))) + .filter(mailAddress -> mailetContext.isLocalServer(mailAddress.getDomain())) .collect(Guavate.toImmutableList()); } @@ -184,7 +184,7 @@ public class RecipientRewriteTableProcessor { private void forwardToRemoteAddress(MailAddress sender, MailAddress recipient, MimeMessage message, ImmutableList<MailAddress> mailAddresses) throws MessagingException { ImmutableList<MailAddress> remoteAddress = mailAddresses.stream() - .filter(mailAddress -> !mailetContext.isLocalServer(Domain.of(mailAddress.getDomain()))) + .filter(mailAddress -> !mailetContext.isLocalServer(mailAddress.getDomain())) .collect(Guavate.toImmutableList()); if (!remoteAddress.isEmpty()) { http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java index cdf1b57..17e2ce8 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/RemoteDelivery.java @@ -21,7 +21,6 @@ package org.apache.james.transport.mailets; import java.net.UnknownHostException; import java.util.Collection; -import java.util.Locale; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -30,6 +29,7 @@ import java.util.concurrent.atomic.AtomicBoolean; import javax.inject.Inject; import javax.mail.MessagingException; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.domainlist.api.DomainList; @@ -222,18 +222,18 @@ public class RemoteDelivery extends GenericMailet { private void serviceNoGateway(Mail mail) { String mailName = mail.getName(); - Map<String, Collection<MailAddress>> targets = groupByServer(mail.getRecipients()); - for (Map.Entry<String, Collection<MailAddress>> entry : targets.entrySet()) { + Map<Domain, Collection<MailAddress>> targets = groupByServer(mail.getRecipients()); + for (Map.Entry<Domain, Collection<MailAddress>> entry : targets.entrySet()) { serviceSingleServer(mail, mailName, entry); } } - private void serviceSingleServer(Mail mail, String originalName, Map.Entry<String, Collection<MailAddress>> entry) { + private void serviceSingleServer(Mail mail, String originalName, Map.Entry<Domain, Collection<MailAddress>> entry) { if (configuration.isDebug()) { LOGGER.debug("Sending mail to {} on host {}", entry.getValue(), entry.getKey()); } mail.setRecipients(entry.getValue()); - mail.setName(originalName + NAME_JUNCTION + entry.getKey()); + mail.setName(originalName + NAME_JUNCTION + entry.getKey().name()); try { queue.enQueue(mail); } catch (MailQueueException e) { @@ -241,11 +241,11 @@ public class RemoteDelivery extends GenericMailet { } } - private Map<String, Collection<MailAddress>> groupByServer(Collection<MailAddress> recipients) { + private Map<Domain, Collection<MailAddress>> groupByServer(Collection<MailAddress> recipients) { // Must first organize the recipients into distinct servers (name made case insensitive) - HashMultimap<String, MailAddress> groupByServerMultimap = HashMultimap.create(); + HashMultimap<Domain, MailAddress> groupByServerMultimap = HashMultimap.create(); for (MailAddress recipient : recipients) { - groupByServerMultimap.put(recipient.getDomain().toLowerCase(Locale.US), recipient); + groupByServerMultimap.put(recipient.getDomain(), recipient); } return groupByServerMultimap.asMap(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WhiteListManager.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WhiteListManager.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WhiteListManager.java index 96bc35d..58b0418 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WhiteListManager.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/WhiteListManager.java @@ -293,7 +293,7 @@ public class WhiteListManager extends GenericMailet { */ private void checkAndInsert(MailAddress senderMailAddress, Collection<MailAddress> recipients) throws MessagingException { String senderUser = senderMailAddress.getLocalPart().toLowerCase(Locale.US); - String senderHost = senderMailAddress.getDomain().toLowerCase(Locale.US); + Domain senderHost = senderMailAddress.getDomain(); senderUser = getPrimaryName(senderUser); @@ -308,7 +308,7 @@ public class WhiteListManager extends GenericMailet { ResultSet selectRS = null; try { String recipientUser = recipient.getLocalPart().toLowerCase(Locale.US); - Domain recipientHost = Domain.of(recipient.getDomain()); + Domain recipientHost = recipient.getDomain(); if (getMailetContext().isLocalServer(recipientHost)) { // not a remote recipient, so skip @@ -323,7 +323,7 @@ public class WhiteListManager extends GenericMailet { selectStmt = conn.prepareStatement(selectByPK); } selectStmt.setString(1, senderUser); - selectStmt.setString(2, senderHost); + selectStmt.setString(2, senderHost.asString()); selectStmt.setString(3, recipientUser); selectStmt.setString(4, recipientHost.asString()); selectRS = selectStmt.executeQuery(); @@ -336,7 +336,7 @@ public class WhiteListManager extends GenericMailet { insertStmt = conn.prepareStatement(insert); } insertStmt.setString(1, senderUser); - insertStmt.setString(2, senderHost); + insertStmt.setString(2, senderHost.asString()); insertStmt.setString(3, recipientUser); insertStmt.setString(4, recipientHost.asString()); insertStmt.executeUpdate(); @@ -377,7 +377,7 @@ public class WhiteListManager extends GenericMailet { private void manageDisplayRequest(Mail mail) throws MessagingException { MailAddress senderMailAddress = mail.getSender(); String senderUser = senderMailAddress.getLocalPart().toLowerCase(Locale.US); - String senderHost = senderMailAddress.getDomain().toLowerCase(Locale.US); + Domain senderHost = senderMailAddress.getDomain(); senderUser = getPrimaryName(senderUser); @@ -396,7 +396,7 @@ public class WhiteListManager extends GenericMailet { conn = datasource.getConnection(); selectStmt = conn.prepareStatement(selectBySender); selectStmt.setString(1, senderUser); - selectStmt.setString(2, senderHost); + selectStmt.setString(2, senderHost.asString()); selectRS = selectStmt.executeQuery(); while (selectRS.next()) { MailAddress mailAddress = new MailAddress(selectRS.getString(1), selectRS.getString(2)); @@ -425,7 +425,7 @@ public class WhiteListManager extends GenericMailet { private void manageInsertRequest(Mail mail) throws MessagingException { MailAddress senderMailAddress = mail.getSender(); String senderUser = senderMailAddress.getLocalPart().toLowerCase(Locale.US); - String senderHost = senderMailAddress.getDomain().toLowerCase(Locale.US); + Domain senderHost = senderMailAddress.getDomain(); senderUser = getPrimaryName(senderUser); @@ -458,7 +458,7 @@ public class WhiteListManager extends GenericMailet { continue; } String recipientUser = recipientMailAddress.getLocalPart().toLowerCase(Locale.US); - Domain recipientHost = Domain.of(recipientMailAddress.getDomain()); + Domain recipientHost = recipientMailAddress.getDomain(); if (getMailetContext().isLocalServer(recipientHost)) { // not a remote recipient, so skip @@ -473,7 +473,7 @@ public class WhiteListManager extends GenericMailet { selectStmt = conn.prepareStatement(selectByPK); } selectStmt.setString(1, senderUser); - selectStmt.setString(2, senderHost); + selectStmt.setString(2, senderHost.asString()); selectStmt.setString(3, recipientUser); selectStmt.setString(4, recipientHost.asString()); selectRS = selectStmt.executeQuery(); @@ -487,7 +487,7 @@ public class WhiteListManager extends GenericMailet { insertStmt = conn.prepareStatement(insert); } insertStmt.setString(1, senderUser); - insertStmt.setString(2, senderHost); + insertStmt.setString(2, senderHost.asString()); insertStmt.setString(3, recipientUser); insertStmt.setString(4, recipientHost.asString()); insertStmt.executeUpdate(); @@ -546,7 +546,7 @@ public class WhiteListManager extends GenericMailet { private void manageRemoveRequest(Mail mail) throws MessagingException { MailAddress senderMailAddress = mail.getSender(); String senderUser = senderMailAddress.getLocalPart().toLowerCase(Locale.US); - String senderHost = senderMailAddress.getDomain().toLowerCase(Locale.US); + Domain senderHost = senderMailAddress.getDomain(); senderUser = getPrimaryName(senderUser); @@ -579,7 +579,7 @@ public class WhiteListManager extends GenericMailet { continue; } String recipientUser = recipientMailAddress.getLocalPart().toLowerCase(Locale.US); - Domain recipientHost = Domain.of(recipientMailAddress.getDomain()); + Domain recipientHost = recipientMailAddress.getDomain(); if (getMailetContext().isLocalServer(recipientHost)) { // not a remote recipient, so skip @@ -594,7 +594,7 @@ public class WhiteListManager extends GenericMailet { selectStmt = conn.prepareStatement(selectByPK); } selectStmt.setString(1, senderUser); - selectStmt.setString(2, senderHost); + selectStmt.setString(2, senderHost.asString()); selectStmt.setString(3, recipientUser); selectStmt.setString(4, recipientHost.asString()); selectRS = selectStmt.executeQuery(); @@ -608,7 +608,7 @@ public class WhiteListManager extends GenericMailet { deleteStmt = conn.prepareStatement(deleteByPK); } deleteStmt.setString(1, senderUser); - deleteStmt.setString(2, senderHost); + deleteStmt.setString(2, senderHost.asString()); deleteStmt.setString(3, recipientUser); deleteStmt.setString(4, recipientHost.asString()); deleteStmt.executeUpdate(); http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/XMLRecipientRewriteTable.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/XMLRecipientRewriteTable.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/XMLRecipientRewriteTable.java index 84aeb0c..9fea7da 100755 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/XMLRecipientRewriteTable.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/XMLRecipientRewriteTable.java @@ -104,7 +104,7 @@ public class XMLRecipientRewriteTable extends AbstractRecipientRewriteTable { for (MailAddress source : recipients) { String user = source.getLocalPart().toLowerCase(Locale.US); - Domain domain = Domain.of(source.getDomain()); + Domain domain = source.getDomain(); String targetString = RecipientRewriteTableUtil.getTargetString(user, domain, mappings); http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java index e705a48..cd9bd4e 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/managesieve/ManageSieveMailet.java @@ -127,7 +127,7 @@ public class ManageSieveMailet extends GenericMailet implements MessageToCoreToM LOGGER.error("Sender is null"); return; } - if (!getMailetContext().isLocalServer(Domain.of(mail.getSender().getDomain()))) { + if (!getMailetContext().isLocalServer(mail.getSender().getDomain())) { LOGGER.error("Sender not local"); return; } @@ -139,7 +139,8 @@ public class ManageSieveMailet extends GenericMailet implements MessageToCoreToM } else { session.setState(Session.State.UNAUTHENTICATED); } - session.setUser(mail.getSender().getLocalPart() + '@' + (mail.getSender().getDomain() == null ? "localhost" : mail.getSender().getDomain())); + Domain domain = mail.getSender().getDomain() == null ? Domain.LOCALHOST : mail.getSender().getDomain(); + session.setUser(mail.getSender().getLocalPart() + '@' + domain.name()); getMailetContext().sendMail(mail.getRecipients().iterator().next(), Lists.newArrayList(mail.getSender()),transcoder.execute(session, mail.getMessage())); mail.setState(Mail.GHOST); http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java index 0a585aa..8099966 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java @@ -178,6 +178,10 @@ public class ProcessRedirectNotify { private boolean senderDomainIsValid(Mail mail) throws MessagingException { return !mailet.getInitParameters().getFakeDomainCheck() || mail.getSender() == null - || !mailet.getMailetContext().getMailServers(mail.getSender().getDomain()).isEmpty(); + || !mailet.getMailetContext() + .getMailServers(mail.getSender() + .getDomain() + .name()) + .isEmpty(); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/SpecialAddress.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/SpecialAddress.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/SpecialAddress.java index 4fb0d9f..aae6405 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/SpecialAddress.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/SpecialAddress.java @@ -19,6 +19,7 @@ package org.apache.james.transport.mailets.redirect; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import com.google.common.base.Throwables; @@ -37,7 +38,7 @@ public class SpecialAddress { public static class AddressMarker { - public static final String ADDRESS_MARKER = "address.marker"; + public static final Domain ADDRESS_MARKER = Domain.of("address.marker"); public static final MailAddress SENDER = mailAddressUncheckedException(SpecialAddressKind.SENDER, ADDRESS_MARKER); public static final MailAddress REVERSE_PATH = mailAddressUncheckedException(SpecialAddressKind.REVERSE_PATH, ADDRESS_MARKER); public static final MailAddress FROM = mailAddressUncheckedException(SpecialAddressKind.FROM, ADDRESS_MARKER); @@ -48,7 +49,7 @@ public class SpecialAddress { public static final MailAddress UNALTERED = mailAddressUncheckedException(SpecialAddressKind.UNALTERED, ADDRESS_MARKER); public static final MailAddress NULL = mailAddressUncheckedException(SpecialAddressKind.NULL, ADDRESS_MARKER); - private static MailAddress mailAddressUncheckedException(SpecialAddressKind kind, String domain) { + private static MailAddress mailAddressUncheckedException(SpecialAddressKind kind, Domain domain) { try { return new MailAddress(kind.getValue(), domain); } catch (Exception e) { @@ -58,6 +59,6 @@ public class SpecialAddress { } public static boolean isSpecialAddress(MailAddress mailAddress) { - return mailAddress.getDomain().equalsIgnoreCase(AddressMarker.ADDRESS_MARKER); + return mailAddress.getDomain().equals(AddressMarker.ADDRESS_MARKER); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/MailDelivrer.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/MailDelivrer.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/MailDelivrer.java index 9fbb4ba..2999338 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/MailDelivrer.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/remote/delivery/MailDelivrer.java @@ -28,6 +28,7 @@ import javax.mail.MessagingException; import javax.mail.SendFailedException; import javax.mail.internet.InternetAddress; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.dnsservice.api.TemporaryResolutionException; @@ -96,11 +97,11 @@ public class MailDelivrer { LOGGER.debug("Attempting to deliver {}", mail.getName()); } - String host = retrieveTargetHostname(mail); + Domain host = retrieveTargetHostname(mail); try { // Figure out which servers to try to send to. This collection // will hold all the possible target servers - Iterator<HostAddress> targetServers = dnsHelper.retrieveHostAddressIterator(host); + Iterator<HostAddress> targetServers = dnsHelper.retrieveHostAddressIterator(host.asString()); if (!targetServers.hasNext()) { return handleNoTargetServer(mail, host); } @@ -111,7 +112,7 @@ public class MailDelivrer { } } - private String retrieveTargetHostname(Mail mail) { + private Domain retrieveTargetHostname(Mail mail) { Preconditions.checkArgument(!mail.getRecipients().isEmpty(), "Mail should have recipients to attempt delivery"); MailAddress rcpt = Iterables.getFirst(mail.getRecipients(), null); return rcpt.getDomain(); @@ -234,8 +235,8 @@ public class MailDelivrer { } } - private ExecutionResult handleNoTargetServer(Mail mail, String host) { - LOGGER.info("No mail server found for: {}", host); + private ExecutionResult handleNoTargetServer(Mail mail, Domain host) { + LOGGER.info("No mail server found for: {}", host.name()); MessagingException messagingException = new MessagingException("There are no DNS entries for the hostname " + host + ". I cannot determine where to send this message."); int retry = DeliveryRetriesHelper.retrieveRetries(mail); if (retry >= configuration.getDnsProblemRetry()) { http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/AbstractSQLWhitelistMatcher.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/AbstractSQLWhitelistMatcher.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/AbstractSQLWhitelistMatcher.java index 36df391..c35812d 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/AbstractSQLWhitelistMatcher.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/AbstractSQLWhitelistMatcher.java @@ -145,10 +145,8 @@ public abstract class AbstractSQLWhitelistMatcher extends GenericMatcher { } String senderUser = senderMailAddress.getLocalPart(); - String senderHost = senderMailAddress.getDomain(); senderUser = senderUser.toLowerCase(Locale.US); - senderHost = senderHost.toLowerCase(Locale.US); Collection<MailAddress> recipients = mail.getRecipients(); @@ -156,9 +154,9 @@ public abstract class AbstractSQLWhitelistMatcher extends GenericMatcher { for (MailAddress recipientMailAddress : recipients) { String recipientUser = recipientMailAddress.getLocalPart().toLowerCase(Locale.US); - String recipientHost = recipientMailAddress.getDomain(); + Domain recipientHost = recipientMailAddress.getDomain(); - if (!getMailetContext().isLocalServer(Domain.of(recipientHost))) { + if (!getMailetContext().isLocalServer(recipientHost)) { // not a local recipient, so skip continue; } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/IsInWhiteList.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/IsInWhiteList.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/IsInWhiteList.java index 5022879..ba2f413 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/IsInWhiteList.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/IsInWhiteList.java @@ -27,6 +27,7 @@ import java.util.Locale; import javax.mail.MessagingException; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.mailet.Experimental; import org.apache.mailet.Mail; @@ -80,14 +81,14 @@ public class IsInWhiteList extends AbstractSQLWhitelistMatcher { protected boolean matchedWhitelist(MailAddress recipientMailAddress, Mail mail) throws MessagingException { MailAddress senderMailAddress = mail.getSender(); String senderUser = senderMailAddress.getLocalPart().toLowerCase(Locale.US); - String senderHost = senderMailAddress.getDomain().toLowerCase(Locale.US); + Domain senderHost = senderMailAddress.getDomain(); Connection conn = null; PreparedStatement selectStmt = null; ResultSet selectRS = null; try { String recipientUser = recipientMailAddress.getLocalPart().toLowerCase(Locale.US); - String recipientHost = recipientMailAddress.getDomain().toLowerCase(Locale.US); + Domain recipientHost = recipientMailAddress.getDomain(); if (conn == null) { conn = datasource.getConnection(); @@ -98,9 +99,9 @@ public class IsInWhiteList extends AbstractSQLWhitelistMatcher { selectStmt = conn.prepareStatement(selectByPK); } selectStmt.setString(1, recipientUser); - selectStmt.setString(2, recipientHost); + selectStmt.setString(2, recipientHost.asString()); selectStmt.setString(3, senderUser); - selectStmt.setString(4, senderHost); + selectStmt.setString(4, senderHost.asString()); selectRS = selectStmt.executeQuery(); if (selectRS.next()) { // This address was already in the list @@ -116,9 +117,9 @@ public class IsInWhiteList extends AbstractSQLWhitelistMatcher { selectStmt = conn.prepareStatement(selectByPK); selectStmt.setString(1, recipientUser); - selectStmt.setString(2, recipientHost); + selectStmt.setString(2, recipientHost.asString()); selectStmt.setString(3, "*"); - selectStmt.setString(4, senderHost); + selectStmt.setString(4, senderHost.asString()); selectRS = selectStmt.executeQuery(); if (selectRS.next()) { // This address was already in the list @@ -134,9 +135,9 @@ public class IsInWhiteList extends AbstractSQLWhitelistMatcher { selectStmt = conn.prepareStatement(selectByPK); selectStmt.setString(1, "*"); - selectStmt.setString(2, recipientHost); + selectStmt.setString(2, recipientHost.asString()); selectStmt.setString(3, senderUser); - selectStmt.setString(4, senderHost); + selectStmt.setString(4, senderHost.asString()); selectRS = selectStmt.executeQuery(); if (selectRS.next()) { // This address was already in the list @@ -152,9 +153,9 @@ public class IsInWhiteList extends AbstractSQLWhitelistMatcher { selectStmt = conn.prepareStatement(selectByPK); selectStmt.setString(1, "*"); - selectStmt.setString(2, recipientHost); + selectStmt.setString(2, recipientHost.asString()); selectStmt.setString(3, "*"); - selectStmt.setString(4, senderHost); + selectStmt.setString(4, senderHost.asString()); selectRS = selectStmt.executeQuery(); if (selectRS.next()) { // This address was already in the list http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/NetworkIsInWhitelist.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/NetworkIsInWhitelist.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/NetworkIsInWhitelist.java index 8b0f20c..7be16f1 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/NetworkIsInWhitelist.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/NetworkIsInWhitelist.java @@ -85,7 +85,7 @@ public class NetworkIsInWhitelist extends AbstractSQLWhitelistMatcher { ResultSet selectRS = null; try { String recipientUser = recipientMailAddress.getLocalPart().toLowerCase(Locale.US); - String recipientHost = recipientMailAddress.getDomain().toLowerCase(Locale.US); + String recipientHost = recipientMailAddress.getDomain().asString(); if (conn == null) { conn = datasource.getConnection(); http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/SenderInFakeDomain.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/SenderInFakeDomain.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/SenderInFakeDomain.java index 2ad4291..87b17e7 100644 --- a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/SenderInFakeDomain.java +++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/SenderInFakeDomain.java @@ -21,6 +21,7 @@ package org.apache.james.transport.matchers; import java.util.Collection; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.mailet.Experimental; import org.apache.mailet.Mail; @@ -40,10 +41,10 @@ public class SenderInFakeDomain extends AbstractNetworkMatcher { if (mail.getSender() == null) { return null; } - String domain = mail.getSender().getDomain(); + Domain domain = mail.getSender().getDomain(); // DNS Lookup for this domain @SuppressWarnings("deprecation") - Collection<String> servers = getMailetContext().getMailServers(domain); + Collection<String> servers = getMailetContext().getMailServers(domain.name()); if (servers.size() == 0) { // No records...could not deliver to this domain, so matches // criteria. http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/mailet/mailets/src/test/java/org/apache/james/samples/mailets/InstrumentationMailet.java ---------------------------------------------------------------------- diff --git a/server/mailet/mailets/src/test/java/org/apache/james/samples/mailets/InstrumentationMailet.java b/server/mailet/mailets/src/test/java/org/apache/james/samples/mailets/InstrumentationMailet.java index 2b798ac..eee8fd2 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/samples/mailets/InstrumentationMailet.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/samples/mailets/InstrumentationMailet.java @@ -88,11 +88,11 @@ public class InstrumentationMailet implements Mailet { LOGGER.info("Remote Address: " + mail.getRemoteAddr()); LOGGER.info("Remote Host: " + mail.getRemoteHost()); LOGGER.info("State: " + mail.getState()); - LOGGER.info("Sender host: " + mail.getSender().getDomain()); + LOGGER.info("Sender host: " + mail.getSender().getDomain().name()); LOGGER.info("Sender user: " + mail.getSender().getLocalPart()); Collection<MailAddress> recipients = mail.getRecipients(); for (MailAddress address : recipients) { - LOGGER.info("Recipient: " + address.getLocalPart() + "@" + address.getDomain()); + LOGGER.info("Recipient: " + address.getLocalPart() + "@" + address.getDomain().name()); } LOGGER.info("Subject: " + message.getSubject()); http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java ---------------------------------------------------------------------- diff --git a/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java b/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java index c1e84ce..313b9d6 100644 --- a/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java +++ b/server/protocols/fetchmail/src/main/java/org/apache/james/fetchmail/MessageProcessor.java @@ -32,7 +32,6 @@ import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import javax.mail.internet.ParseException; -import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.domainlist.api.DomainListException; import org.apache.james.server.core.MailImpl; @@ -850,7 +849,7 @@ public class MessageProcessor extends ProcessorAbstract { */ protected boolean isLocalServer(MailAddress recipient) { try { - return getConfiguration().getDomainList().containsDomain(Domain.of(recipient.getDomain())); + return getConfiguration().getDomainList().containsDomain(recipient.getDomain()); } catch (DomainListException e) { LOGGER.error("Unable to access DomainList", e); return false; http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AuthRequiredToRelayRcptHook.java ---------------------------------------------------------------------- diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AuthRequiredToRelayRcptHook.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AuthRequiredToRelayRcptHook.java index 69fb9d6..f577632 100644 --- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AuthRequiredToRelayRcptHook.java +++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/AuthRequiredToRelayRcptHook.java @@ -47,9 +47,9 @@ public class AuthRequiredToRelayRcptHook extends AbstractAuthRequiredToRelayRcpt } @Override - protected boolean isLocalDomain(String domain) { + protected boolean isLocalDomain(Domain domain) { try { - return domains.containsDomain(Domain.of(domain)); + return domains.containsDomain(domain); } catch (DomainListException e) { return false; } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/MailPriorityHandler.java ---------------------------------------------------------------------- diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/MailPriorityHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/MailPriorityHandler.java index 61b986b..ce8f348 100644 --- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/MailPriorityHandler.java +++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/MailPriorityHandler.java @@ -27,6 +27,7 @@ import java.util.Map; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.HierarchicalConfiguration; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.protocols.api.handler.ProtocolHandler; import org.apache.james.protocols.smtp.SMTPSession; @@ -43,7 +44,7 @@ import org.apache.mailet.Mail; */ public class MailPriorityHandler implements JamesMessageHook, ProtocolHandler { - private final Map<String, Integer> prioMap = new HashMap<>(); + private final Map<Domain, Integer> prioMap = new HashMap<>(); @Override public HookResult onMessage(SMTPSession session, Mail mail) { @@ -52,7 +53,7 @@ public class MailPriorityHandler implements JamesMessageHook, ProtocolHandler { Integer p = null; while (rcpts.hasNext()) { - String domain = rcpts.next().getDomain(); + Domain domain = rcpts.next().getDomain(); Integer prio; if (domain != null) { prio = prioMap.get(domain); @@ -80,7 +81,7 @@ public class MailPriorityHandler implements JamesMessageHook, ProtocolHandler { public void init(Configuration config) throws ConfigurationException { List<HierarchicalConfiguration> entries = ((HierarchicalConfiguration)config).configurationsAt("priorityEntries.priorityEntry"); for (HierarchicalConfiguration prioConf : entries) { - String domain = prioConf.getString("domain"); + Domain domain = Domain.of(prioConf.getString("domain")); int prio = prioConf.getInt("priority", MailPrioritySupport.NORMAL_PRIORITY); if (prio > MailPrioritySupport.HIGH_PRIORITY || prio < MailPrioritySupport.LOW_PRIORITY) { throw new ConfigurationException("configured priority must be >= " + MailPrioritySupport.LOW_PRIORITY + " and <= " + MailPrioritySupport.HIGH_PRIORITY); http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java ---------------------------------------------------------------------- diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java index 3a1cdf8..d79ac4c 100644 --- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java +++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptHandler.java @@ -112,7 +112,7 @@ public class ValidRcptHandler extends AbstractValidRcptHandler implements Protoc LOGGER.debug("Unknown user {} check if it's an alias", username); try { - Mappings targetString = vut.getMappings(recipient.getLocalPart(), Domain.of(recipient.getDomain())); + Mappings targetString = vut.getMappings(recipient.getLocalPart(), recipient.getDomain()); if (targetString != null && !targetString.isEmpty()) { return true; @@ -135,9 +135,9 @@ public class ValidRcptHandler extends AbstractValidRcptHandler implements Protoc } @Override - protected boolean isLocalDomain(SMTPSession session, String domain) { + protected boolean isLocalDomain(SMTPSession session, Domain domain) { try { - return domains.containsDomain(Domain.of(domain)); + return domains.containsDomain(domain); } catch (DomainListException e) { LOGGER.error("Unable to get domains", e); return false; http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptMX.java ---------------------------------------------------------------------- diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptMX.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptMX.java index 04a2600..4cdfb89 100644 --- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptMX.java +++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/fastfail/ValidRcptMX.java @@ -27,6 +27,7 @@ import javax.inject.Inject; import org.apache.commons.configuration.Configuration; import org.apache.commons.configuration.ConfigurationException; +import org.apache.james.core.Domain; import org.apache.james.core.MailAddress; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.dnsservice.api.TemporaryResolutionException; @@ -53,8 +54,6 @@ public class ValidRcptMX implements RcptHook, ProtocolHandler { private DNSService dnsService = null; - private static final String LOCALHOST = "localhost"; - private NetMatcher bNetwork = null; /** @@ -90,14 +89,14 @@ public class ValidRcptMX implements RcptHook, ProtocolHandler { @Override public HookResult doRcpt(SMTPSession session, MailAddress sender, MailAddress rcpt) { - String domain = rcpt.getDomain(); + Domain domain = rcpt.getDomain(); // Email should be deliver local - if (!domain.equals(LOCALHOST)) { + if (!domain.equals(Domain.LOCALHOST)) { Iterator<String> mx; try { - mx = dnsService.findMXRecords(domain).iterator(); + mx = dnsService.findMXRecords(domain.name()).iterator(); } catch (TemporaryResolutionException e1) { return new HookResult(HookReturnCode.DENYSOFT); } http://git-wip-us.apache.org/repos/asf/james-project/blob/ae85899a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java ---------------------------------------------------------------------- diff --git a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java index 0817f16..7699a63 100644 --- a/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java +++ b/server/protocols/webadmin/webadmin-data/src/main/java/org/apache/james/webadmin/routes/GroupsRoutes.java @@ -62,6 +62,7 @@ import org.slf4j.LoggerFactory; import com.github.steveash.guavate.Guavate; import com.google.common.annotations.VisibleForTesting; import com.google.common.collect.ImmutableSortedSet; + import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; @@ -154,7 +155,7 @@ public class GroupsRoutes implements Routes { }) public HaltException addToGroup(Request request, Response response) throws JsonExtractException, AddressException, RecipientRewriteTableException, UsersRepositoryException, DomainListException { MailAddress groupAddress = parseMailAddress(request.params(GROUP_ADDRESS)); - Domain domain = Domain.of(groupAddress.getDomain()); + Domain domain = groupAddress.getDomain(); ensureRegisteredDomain(domain); ensureNotShadowingAnotherAddress(groupAddress); MailAddress userAddress = parseMailAddress(request.params(USER_ADDRESS)); @@ -202,7 +203,7 @@ public class GroupsRoutes implements Routes { MailAddress userAddress = parseMailAddress(request.params(USER_ADDRESS)); recipientRewriteTable.removeAddressMapping( groupAddress.getLocalPart(), - Domain.of(groupAddress.getDomain()), + groupAddress.getDomain(), userAddress.asString()); return halt(HttpStatus.OK_200); } @@ -222,7 +223,7 @@ public class GroupsRoutes implements Routes { }) public ImmutableSortedSet<String> listGroupMembers(Request request, Response response) throws RecipientRewriteTable.ErrorMappingException, RecipientRewriteTableException { MailAddress groupAddress = parseMailAddress(request.params(GROUP_ADDRESS)); - Mappings mappings = recipientRewriteTable.getMappings(groupAddress.getLocalPart(), Domain.of(groupAddress.getDomain())); + Mappings mappings = recipientRewriteTable.getMappings(groupAddress.getLocalPart(), groupAddress.getDomain()); ensureNonEmptyMappings(mappings); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org