You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by ma...@apache.org on 2018/04/05 13:37:35 UTC
[1/2] james-project git commit: JAMES-1854 Conversion User ->
MailAddress
Repository: james-project
Updated Branches:
refs/heads/master 5fbaeba92 -> 9866ac382
JAMES-1854 Conversion User -> MailAddress
This allows containing virtual hosting definition in the UsersRepository
by allowing calling an helper method.
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9866ac38
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9866ac38
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9866ac38
Branch: refs/heads/master
Commit: 9866ac382bd67b6cfd8efbc8e605ffdafdbddeb7
Parents: 34b2f98
Author: benwa <bt...@linagora.com>
Authored: Tue Apr 3 09:41:01 2018 +0700
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Thu Apr 5 15:32:08 2018 +0200
----------------------------------------------------------------------
.../apache/james/user/api/UsersRepository.java | 7 +++++
.../data/data-ldap-integration-testing/pom.xml | 5 +++
.../ldap/ReadOnlyUsersLDAPRepositoryTest.java | 15 +++++----
server/data/data-ldap/pom.xml | 5 +++
.../user/ldap/ReadOnlyUsersLDAPRepository.java | 25 ++++++++++++---
.../ldap/ReadOnlyUsersLDAPRepositoryTest.java | 17 ++++++++---
.../james/user/lib/AbstractUsersRepository.java | 12 ++++++++
.../domainlist/api/mock/SimpleDomainList.java | 4 +--
.../user/lib/AbstractUsersRepositoryTest.java | 32 ++++++++++++++++++--
9 files changed, 102 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/9866ac38/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java b/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java
index db8cc3a..cfc9c8f 100644
--- a/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java
+++ b/server/data/data-api/src/main/java/org/apache/james/user/api/UsersRepository.java
@@ -136,6 +136,13 @@ public interface UsersRepository {
* @throws UsersRepositoryException
*/
String getUser(MailAddress mailAddress) throws UsersRepositoryException;
+
+ /**
+ * Returns one of the possible mail addresses to be used to send a mail to that user
+ *
+ * This makes sense as it handles virtual-hosting logic.
+ */
+ MailAddress getMailAddressFor(org.apache.james.core.User user) throws UsersRepositoryException;
/**
* Return true if the user is an admin for this repository
http://git-wip-us.apache.org/repos/asf/james-project/blob/9866ac38/server/data/data-ldap-integration-testing/pom.xml
----------------------------------------------------------------------
diff --git a/server/data/data-ldap-integration-testing/pom.xml b/server/data/data-ldap-integration-testing/pom.xml
index e99bd77..9e037ba 100644
--- a/server/data/data-ldap-integration-testing/pom.xml
+++ b/server/data/data-ldap-integration-testing/pom.xml
@@ -70,6 +70,11 @@
<scope>test</scope>
</dependency>
<dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/9866ac38/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java b/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
index bd8ed52..e78f976 100644
--- a/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
+++ b/server/data/data-ldap-integration-testing/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
@@ -19,11 +19,12 @@
package org.apache.james.user.ldap;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
-import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.commons.configuration.plist.PropertyListConfiguration;
import org.apache.james.core.MailAddress;
+import org.apache.james.domainlist.api.DomainList;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -43,10 +44,12 @@ public class ReadOnlyUsersLDAPRepositoryTest {
private LdapGenericContainer ldapContainer;
private ReadOnlyUsersLDAPRepository ldapRepository;
+ private DomainList domainList;
@Before
- public void setup() throws Exception {
+ public void setup() {
startLdapContainer();
+ domainList = mock(DomainList.class);
}
private void startLdapContainer() {
@@ -57,13 +60,13 @@ public class ReadOnlyUsersLDAPRepositoryTest {
ldapContainer.start();
}
- private void startUsersRepository(HierarchicalConfiguration ldapRepositoryConfiguration) throws ConfigurationException, Exception {
- ldapRepository = new ReadOnlyUsersLDAPRepository();
+ private void startUsersRepository(HierarchicalConfiguration ldapRepositoryConfiguration) throws Exception {
+ ldapRepository = new ReadOnlyUsersLDAPRepository(domainList);
ldapRepository.configure(ldapRepositoryConfiguration);
ldapRepository.init();
}
- private HierarchicalConfiguration ldapRepositoryConfiguration() throws ConfigurationException {
+ private HierarchicalConfiguration ldapRepositoryConfiguration() {
PropertyListConfiguration configuration = new PropertyListConfiguration();
configuration.addProperty("[@ldapHost]", ldapContainer.getLdapHost());
configuration.addProperty("[@principal]", "cn=admin\\,dc=james\\,dc=org");
@@ -78,7 +81,7 @@ public class ReadOnlyUsersLDAPRepositoryTest {
return configuration;
}
- private HierarchicalConfiguration ldapRepositoryConfigurationWithVirtualHosting() throws ConfigurationException {
+ private HierarchicalConfiguration ldapRepositoryConfigurationWithVirtualHosting() {
PropertyListConfiguration configuration = new PropertyListConfiguration();
configuration.addProperty("[@ldapHost]", ldapContainer.getLdapHost());
configuration.addProperty("[@principal]", "cn=admin\\,dc=james\\,dc=org");
http://git-wip-us.apache.org/repos/asf/james-project/blob/9866ac38/server/data/data-ldap/pom.xml
----------------------------------------------------------------------
diff --git a/server/data/data-ldap/pom.xml b/server/data/data-ldap/pom.xml
index cc3c26c..9f39be1 100644
--- a/server/data/data-ldap/pom.xml
+++ b/server/data/data-ldap/pom.xml
@@ -71,6 +71,11 @@
<artifactId>assertj-core</artifactId>
</dependency>
<dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</dependency>
http://git-wip-us.apache.org/repos/asf/james-project/blob/9866ac38/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
index c7e2764..3007d85 100644
--- a/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
+++ b/server/data/data-ldap/src/main/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepository.java
@@ -30,6 +30,7 @@ import java.util.Properties;
import java.util.Set;
import javax.annotation.PostConstruct;
+import javax.inject.Inject;
import javax.naming.Context;
import javax.naming.NamingEnumeration;
import javax.naming.NamingException;
@@ -45,6 +46,7 @@ import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.commons.lang.StringUtils;
import org.apache.directory.api.ldap.model.filter.FilterEncoder;
import org.apache.james.core.MailAddress;
+import org.apache.james.domainlist.api.DomainList;
import org.apache.james.lifecycle.api.Configurable;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.api.UsersRepositoryException;
@@ -338,12 +340,12 @@ public class ReadOnlyUsersLDAPRepository implements UsersRepository, Configurabl
// retries.
private int maxRetries = 0;
- /**
- * Creates a new instance of ReadOnlyUsersLDAPRepository.
- *
- */
- public ReadOnlyUsersLDAPRepository() {
+ private final DomainList domainList;
+
+ @Inject
+ public ReadOnlyUsersLDAPRepository(DomainList domainList) {
super();
+ this.domainList = domainList;
}
/**
@@ -784,4 +786,17 @@ public class ReadOnlyUsersLDAPRepository implements UsersRepository, Configurabl
public boolean isReadOnly() {
return true;
}
+
+
+ @Override
+ public MailAddress getMailAddressFor(org.apache.james.core.User user) throws UsersRepositoryException {
+ try {
+ if (supportVirtualHosting()) {
+ return new MailAddress(user.asString());
+ }
+ return new MailAddress(user.getLocalPart(), domainList.getDefaultDomain());
+ } catch (Exception e) {
+ throw new UsersRepositoryException("Failed to compute mail address associated with the user", e);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/9866ac38/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
index 517b9b2..f7b7a6b 100644
--- a/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
+++ b/server/data/data-ldap/src/test/java/org/apache/james/user/ldap/ReadOnlyUsersLDAPRepositoryTest.java
@@ -20,11 +20,14 @@
package org.apache.james.user.ldap;
import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.Mockito.mock;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.ConversionException;
import org.apache.commons.configuration.HierarchicalConfiguration;
import org.apache.commons.configuration.plist.PropertyListConfiguration;
+import org.apache.james.domainlist.api.DomainList;
+import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;
@@ -33,10 +36,16 @@ public class ReadOnlyUsersLDAPRepositoryTest {
@Rule
public ExpectedException expectedException = ExpectedException.none();
+ private DomainList domainList;
+
+ @Before
+ public void setUp() {
+ domainList = mock(DomainList.class);
+ }
@Test
public void supportVirtualHostingShouldReturnFalseByDefault() throws Exception {
- ReadOnlyUsersLDAPRepository usersLDAPRepository = new ReadOnlyUsersLDAPRepository();
+ ReadOnlyUsersLDAPRepository usersLDAPRepository = new ReadOnlyUsersLDAPRepository(domainList);
usersLDAPRepository.configure(ldapRepositoryConfiguration());
assertThat(usersLDAPRepository.supportVirtualHosting()).isFalse();
@@ -47,7 +56,7 @@ public class ReadOnlyUsersLDAPRepositoryTest {
HierarchicalConfiguration configuration = ldapRepositoryConfiguration();
configuration.addProperty(ReadOnlyUsersLDAPRepository.SUPPORTS_VIRTUAL_HOSTING, "true");
- ReadOnlyUsersLDAPRepository usersLDAPRepository = new ReadOnlyUsersLDAPRepository();
+ ReadOnlyUsersLDAPRepository usersLDAPRepository = new ReadOnlyUsersLDAPRepository(domainList);
usersLDAPRepository.configure(configuration);
assertThat(usersLDAPRepository.supportVirtualHosting()).isTrue();
@@ -58,7 +67,7 @@ public class ReadOnlyUsersLDAPRepositoryTest {
HierarchicalConfiguration configuration = ldapRepositoryConfiguration();
configuration.addProperty(ReadOnlyUsersLDAPRepository.SUPPORTS_VIRTUAL_HOSTING, "false");
- ReadOnlyUsersLDAPRepository usersLDAPRepository = new ReadOnlyUsersLDAPRepository();
+ ReadOnlyUsersLDAPRepository usersLDAPRepository = new ReadOnlyUsersLDAPRepository(domainList);
usersLDAPRepository.configure(configuration);
assertThat(usersLDAPRepository.supportVirtualHosting()).isFalse();
@@ -69,7 +78,7 @@ public class ReadOnlyUsersLDAPRepositoryTest {
HierarchicalConfiguration configuration = ldapRepositoryConfiguration();
configuration.addProperty(ReadOnlyUsersLDAPRepository.SUPPORTS_VIRTUAL_HOSTING, "bad");
- ReadOnlyUsersLDAPRepository usersLDAPRepository = new ReadOnlyUsersLDAPRepository();
+ ReadOnlyUsersLDAPRepository usersLDAPRepository = new ReadOnlyUsersLDAPRepository(domainList);
expectedException.expect(ConversionException.class);
http://git-wip-us.apache.org/repos/asf/james-project/blob/9866ac38/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
index 895f623..dad5f8d 100644
--- a/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
+++ b/server/data/data-library/src/main/java/org/apache/james/user/lib/AbstractUsersRepository.java
@@ -144,4 +144,16 @@ public abstract class AbstractUsersRepository implements UsersRepository, Config
public boolean isReadOnly() {
return false;
}
+
+ @Override
+ public MailAddress getMailAddressFor(User user) throws UsersRepositoryException {
+ try {
+ if (supportVirtualHosting()) {
+ return new MailAddress(user.asString());
+ }
+ return new MailAddress(user.getLocalPart(), domainList.getDefaultDomain());
+ } catch (Exception e) {
+ throw new UsersRepositoryException("Failed to compute mail address associated with the user", e);
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/9866ac38/server/data/data-library/src/test/java/org/apache/james/domainlist/api/mock/SimpleDomainList.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/domainlist/api/mock/SimpleDomainList.java b/server/data/data-library/src/test/java/org/apache/james/domainlist/api/mock/SimpleDomainList.java
index e48f21c..f754bd3 100644
--- a/server/data/data-library/src/test/java/org/apache/james/domainlist/api/mock/SimpleDomainList.java
+++ b/server/data/data-library/src/test/java/org/apache/james/domainlist/api/mock/SimpleDomainList.java
@@ -35,12 +35,12 @@ public class SimpleDomainList implements DomainList {
private final List<Domain> domains = new LinkedList<>();
@Override
- public boolean containsDomain(Domain domain) throws DomainListException {
+ public boolean containsDomain(Domain domain) {
return domains.contains(domain);
}
@Override
- public List<Domain> getDomains() throws DomainListException {
+ public List<Domain> getDomains() {
return ImmutableList.copyOf(domains);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/9866ac38/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
----------------------------------------------------------------------
diff --git a/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java b/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
index 4f49809..83b1bbc 100644
--- a/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
+++ b/server/data/data-library/src/test/java/org/apache/james/user/lib/AbstractUsersRepositoryTest.java
@@ -39,7 +39,8 @@ public abstract class AbstractUsersRepositoryTest {
private static final Domain DOMAIN = Domain.of("domain");
- protected AbstractUsersRepository usersRepository;
+ protected AbstractUsersRepository usersRepository;
+ private SimpleDomainList domainList;
/**
* Create the repository to be tested.
@@ -56,7 +57,7 @@ public abstract class AbstractUsersRepositoryTest {
public void setUp() throws Exception {
this.usersRepository = getUsersRepository();
- SimpleDomainList domainList = new SimpleDomainList();
+ domainList = new SimpleDomainList();
domainList.addDomain(DOMAIN);
usersRepository.setDomainList(domainList);
user1 = login("username");
@@ -69,7 +70,7 @@ public abstract class AbstractUsersRepositoryTest {
disposeUsersRepository();
}
- private String login(String login) throws UsersRepositoryException {
+ private String login(String login) {
if (usersRepository.supportVirtualHosting()) {
return login + '@' + DOMAIN.name();
} else {
@@ -345,4 +346,29 @@ public abstract class AbstractUsersRepositoryTest {
assertThat(usersRepository.isAdministrator(user1)).isFalse();
}
+
+ @Test
+ public void getMailAddressForShouldBeIdentityWhenVirtualHosting() throws Exception {
+ usersRepository.setEnableVirtualHosting(true);
+
+ // Some implementations do not support changing virtual hosting value
+ Assume.assumeTrue(usersRepository.supportVirtualHosting());
+
+ String username = "user@domain";
+ assertThat(usersRepository.getMailAddressFor(org.apache.james.core.User.fromUsername(username)))
+ .isEqualTo(username);
+ }
+
+ @Test
+ public void getMailAddressForShouldAppendDefaultDomainWhenNoVirtualHosting() throws Exception {
+ usersRepository.setEnableVirtualHosting(false);
+ usersRepository.setDomainList(domainList);
+
+ // Some implementations do not support changing virtual hosting value
+ Assume.assumeFalse(usersRepository.supportVirtualHosting());
+
+ String username = "user";
+ assertThat(usersRepository.getMailAddressFor(org.apache.james.core.User.fromUsername(username)))
+ .isEqualTo(new MailAddress(username, domainList.getDefaultDomain()));
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org
[2/2] james-project git commit: JAMES-1854 Rely more on
UserRepository::getUser(MailAddress)
Posted by ma...@apache.org.
JAMES-1854 Rely more on UserRepository::getUser(MailAddress)
This limits virtualHosting knowledge spreading in the code base
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/34b2f98c
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/34b2f98c
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/34b2f98c
Branch: refs/heads/master
Commit: 34b2f98c82210d4354f7cf4df691716391a4c0f2
Parents: 5fbaeba
Author: benwa <bt...@linagora.com>
Authored: Tue Apr 3 09:26:44 2018 +0700
Committer: Matthieu Baechler <ma...@apache.org>
Committed: Thu Apr 5 15:32:08 2018 +0200
----------------------------------------------------------------------
.../james/transport/mailets/AbstractSign.java | 5 +---
...tSenderAuthIdentifyVerificationRcptHook.java | 27 +++++++++-----------
.../hook/MailboxDeliverToRecipientHandler.java | 8 +-----
.../SenderAuthIdentifyVerificationRcptHook.java | 6 ++---
.../smtpserver/fastfail/ValidRcptHandler.java | 7 +----
5 files changed, 18 insertions(+), 35 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/34b2f98c/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java
----------------------------------------------------------------------
diff --git a/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java b/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java
index 8b266a9..a81f1e6 100644
--- a/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java
+++ b/mailet/crypto/src/main/java/org/apache/james/transport/mailets/AbstractSign.java
@@ -605,10 +605,7 @@ public abstract class AbstractSign extends GenericMailet {
private String getUsername(MailAddress mailAddress) {
try {
- if (usersRepository.supportVirtualHosting()) {
- return mailAddress.asString();
- }
- return mailAddress.getLocalPart();
+ return usersRepository.getUser(mailAddress);
} catch (UsersRepositoryException e) {
throw Throwables.propagate(e);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/34b2f98c/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 754df55..de3148e 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
@@ -47,15 +47,7 @@ public abstract class AbstractSenderAuthIdentifyVerificationRcptHook implements
String authUser = (session.getUser()).toLowerCase(Locale.US);
MailAddress senderAddress = (MailAddress) session.getAttachment(
SMTPSession.SENDER, ProtocolSession.State.Transaction);
- String username = null;
-
- if (senderAddress != null && !sender.isNullSender()) {
- if (useVirtualHosting()) {
- username = senderAddress.asString();
- } else {
- username = senderAddress.getLocalPart();
- }
- }
+ String username = retrieveSender(sender, senderAddress);
// Check if the sender address is the same as the user which was used to authenticate.
// Its important to ignore case here to fix JAMES-837. This is save todo because if the handler is called
@@ -68,8 +60,14 @@ public abstract class AbstractSenderAuthIdentifyVerificationRcptHook implements
}
return HookResult.declined();
}
-
-
+
+ public String retrieveSender(MailAddress sender, MailAddress senderAddress) {
+ if (senderAddress != null && !sender.isNullSender()) {
+ return getUser(senderAddress);
+ }
+ return null;
+ }
+
/**
* Return true if the given domain is a local domain for this server
*
@@ -79,11 +77,10 @@ public abstract class AbstractSenderAuthIdentifyVerificationRcptHook implements
protected abstract boolean isLocalDomain(Domain domain);
/**
- * Return true if virtualHosting should get used. If so the full email address will get used to
- * match against the supplied auth username
+ * Return the username corresponding to the given mail address.
*
- * @return useVirtualHosting
+ * @return username corresponding to the mail address
*/
- protected abstract boolean useVirtualHosting();
+ protected abstract String getUser(MailAddress mailAddress);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/34b2f98c/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/hook/MailboxDeliverToRecipientHandler.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/hook/MailboxDeliverToRecipientHandler.java b/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/hook/MailboxDeliverToRecipientHandler.java
index 9a300ec..7d52a3a 100644
--- a/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/hook/MailboxDeliverToRecipientHandler.java
+++ b/server/protocols/protocols-lmtp/src/main/java/org/apache/james/lmtpserver/hook/MailboxDeliverToRecipientHandler.java
@@ -69,16 +69,10 @@ public class MailboxDeliverToRecipientHandler implements DeliverToRecipientHook
@Override
public HookResult deliver(SMTPSession session, MailAddress recipient, MailEnvelope envelope) {
- String username;
HookResult result;
try {
-
- if (users.supportVirtualHosting()) {
- username = recipient.toString();
- } else {
- username = recipient.getLocalPart();
- }
+ String username = users.getUser(recipient);
MailboxSession mailboxSession = mailboxManager.createSystemSession(username);
MailboxPath inbox = MailboxPath.inbox(mailboxSession);
http://git-wip-us.apache.org/repos/asf/james-project/blob/34b2f98c/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java
----------------------------------------------------------------------
diff --git a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java
index db00d42..53028a9 100644
--- a/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java
+++ b/server/protocols/protocols-smtp/src/main/java/org/apache/james/smtpserver/SenderAuthIdentifyVerificationRcptHook.java
@@ -83,12 +83,12 @@ public class SenderAuthIdentifyVerificationRcptHook extends AbstractSenderAuthId
}
@Override
- protected boolean useVirtualHosting() {
+ protected String getUser(MailAddress mailAddress) {
try {
- return users.supportVirtualHosting();
+ return users.getUser(mailAddress);
} catch (UsersRepositoryException e) {
throw Throwables.propagate(e);
}
}
-
+
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/34b2f98c/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 d79ac4c..0dddccf 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
@@ -94,15 +94,10 @@ public class ValidRcptHandler extends AbstractValidRcptHandler implements Protoc
@Override
protected boolean isValidRecipient(SMTPSession session, MailAddress recipient) {
-
- String username = recipient.toString();
-
// check if the server use virtualhosting, if not use only the localpart
// as username
try {
- if (!users.supportVirtualHosting()) {
- username = recipient.getLocalPart();
- }
+ String username = users.getUser(recipient);
if (users.contains(username)) {
return true;
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org