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 ro...@apache.org on 2016/11/23 13:50:25 UTC
[22/46] james-project git commit: JAMES-1854 VirtualHosting should be
managed by UsersRepository
JAMES-1854 VirtualHosting should be managed by UsersRepository
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/b4a31c76
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/b4a31c76
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/b4a31c76
Branch: refs/heads/master
Commit: b4a31c76418d05559112a3ba523432de15aac698
Parents: f719e2f
Author: Benoit Tellier <bt...@linagora.com>
Authored: Thu Nov 10 08:33:43 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Nov 18 18:46:46 2016 +0700
----------------------------------------------------------------------
.../apache/james/user/api/UsersRepository.java | 10 +++++++++
.../user/ldap/ReadOnlyUsersLDAPRepository.java | 6 +++++
.../james/user/lib/AbstractUsersRepository.java | 10 +++++++++
.../user/lib/AbstractUsersRepositoryTest.java | 23 ++++++++++++++++++++
.../impl/JamesMailetContext.java | 7 +-----
.../james/transport/mailets/ToSenderFolder.java | 20 ++++++++---------
.../mailets/delivery/MailboxAppender.java | 13 ++++++-----
.../mailets/delivery/SimpleMailStorer.java | 6 +----
.../jsieve/delivery/SieveMailStorer.java | 11 +++++-----
.../mailets/jsieve/delivery/SievePoster.java | 6 ++---
.../matchers/AbstractStorageQuota.java | 7 +-----
.../mailets/delivery/LocalDeliveryTest.java | 7 +++++-
.../mailets/delivery/SieveIntegrationTest.java | 3 +++
.../mailets/delivery/SimpleMailStorerTest.java | 11 ++++------
.../mailets/delivery/ToRecipientFolderTest.java | 4 ++++
.../james/fetchmail/MessageProcessor.java | 16 +++++---------
16 files changed, 98 insertions(+), 62 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/b4a31c76/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 b8da1eb..666fdd7 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
@@ -22,6 +22,7 @@ package org.apache.james.user.api;
import java.util.Iterator;
import org.apache.james.user.api.model.User;
+import org.apache.mailet.MailAddress;
/**
* Interface for a repository of users. A repository represents a logical
@@ -127,4 +128,13 @@ public interface UsersRepository {
*/
boolean supportVirtualHosting() throws UsersRepositoryException;
+ /**
+ * Returns username to be used for a given MailAddress
+ *
+ * @param mailAddress
+ * @return Username used by James for this mailAddress
+ * @throws UsersRepositoryException
+ */
+ String getUser(MailAddress mailAddress) throws UsersRepositoryException;
+
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b4a31c76/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 b7aca3c..056aa8b 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
@@ -51,6 +51,7 @@ import org.apache.james.user.ldap.api.LdapConstants;
import org.apache.james.util.retry.DoublingRetrySchedule;
import org.apache.james.util.retry.api.RetrySchedule;
import org.apache.james.util.retry.naming.ldap.RetryingLdapContext;
+import org.apache.mailet.MailAddress;
import org.slf4j.Logger;
/**
@@ -761,4 +762,9 @@ public class ReadOnlyUsersLDAPRepository implements UsersRepository, Configurabl
return false;
}
+
+ @Override
+ public String getUser(MailAddress mailAddress) throws UsersRepositoryException {
+ return mailAddress.getLocalPart();
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b4a31c76/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 3f57dba..87a4373 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
@@ -30,6 +30,7 @@ import org.apache.james.lifecycle.api.LogEnabled;
import org.apache.james.user.api.AlreadyExistInUsersRepositoryException;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.api.UsersRepositoryException;
+import org.apache.mailet.MailAddress;
import org.slf4j.Logger;
public abstract class AbstractUsersRepository implements UsersRepository, LogEnabled, Configurable {
@@ -132,4 +133,13 @@ public abstract class AbstractUsersRepository implements UsersRepository, LogEna
* If an error occurred
*/
protected abstract void doAddUser(String username, String password) throws UsersRepositoryException;
+
+ @Override
+ public String getUser(MailAddress mailAddress) throws UsersRepositoryException {
+ if (supportVirtualHosting()) {
+ return mailAddress.print();
+ } else {
+ return mailAddress.getLocalPart();
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b4a31c76/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 830aa4e..0a4e28b 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
@@ -23,12 +23,16 @@ import static org.assertj.core.api.Assertions.assertThat;
import java.util.ArrayList;
import java.util.Iterator;
+import org.apache.commons.lang.NotImplementedException;
import org.apache.james.domainlist.api.mock.SimpleDomainList;
import org.apache.james.lifecycle.api.LifecycleUtil;
import org.apache.james.user.api.AlreadyExistInUsersRepositoryException;
+import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.api.UsersRepositoryException;
import org.apache.james.user.api.model.User;
+import org.apache.mailet.MailAddress;
import org.junit.After;
+import org.junit.Assume;
import org.junit.Before;
import org.junit.Test;
@@ -299,6 +303,25 @@ public abstract class AbstractUsersRepositoryTest {
usersRepository.updateUser(user);
}
+ @Test
+ public void virtualHostedUsersRepositoryShouldUseFullMailAddressAsUsername() throws Exception {
+ usersRepository.setEnableVirtualHosting(true);
+
+ // Some implementations do not support changing virtual hosting value
+ Assume.assumeTrue(usersRepository.supportVirtualHosting());
+
+ assertThat(usersRepository.getUser(new MailAddress("local@domain"))).isEqualTo("local@domain");
+ }
+
+ @Test
+ public void nonVirtualHostedUsersRepositoryShouldUseLocalPartAsUsername() throws Exception {
+ usersRepository.setEnableVirtualHosting(false);
+
+ // Some implementations do not support changing virtual hosting value
+ Assume.assumeFalse(usersRepository.supportVirtualHosting());
+
+ assertThat(usersRepository.getUser(new MailAddress("local@domain"))).isEqualTo("local");
+ }
protected void disposeUsersRepository() throws UsersRepositoryException {
LifecycleUtil.dispose(this.usersRepository);
http://git-wip-us.apache.org/repos/asf/james-project/blob/b4a31c76/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 26f7d9f..983317a 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
@@ -258,16 +258,11 @@ public class JamesMailetContext implements MailetContext, LogEnabled, Configurab
@Override
public boolean isLocalEmail(MailAddress mailAddress) {
if (mailAddress != null) {
- String userName = mailAddress.toString().toLowerCase();
if (!isLocalServer(mailAddress.getDomain().toLowerCase())) {
return false;
}
try {
- if (!localusers.supportVirtualHosting()) {
- userName = mailAddress.getLocalPart().toLowerCase();
- }
- return localusers.contains(userName);
-
+ return localusers.contains(localusers.getUser(mailAddress));
} catch (UsersRepositoryException e) {
log("Unable to access UsersRepository", e);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b4a31c76/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToSenderFolder.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToSenderFolder.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToSenderFolder.java
index 222c9cf..ccaa94c 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToSenderFolder.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/ToSenderFolder.java
@@ -84,17 +84,7 @@ public class ToSenderFolder extends GenericMailet {
private void doService(Mail mail) throws MessagingException {
final MailAddress sender = mail.getSender();
- String username;
- try {
- if (usersRepository.supportVirtualHosting()) {
- username = sender.toString();
- }
- else {
- username = sender.getLocalPart();
- }
- } catch (UsersRepositoryException e) {
- throw new MessagingException(e.getMessage());
- }
+ String username = retrieveUser(sender);
final MailboxSession session;
try {
@@ -140,6 +130,14 @@ public class ToSenderFolder extends GenericMailet {
}
+ private String retrieveUser(MailAddress sender) throws MessagingException {
+ try {
+ return usersRepository.getUser(sender);
+ } catch (UsersRepositoryException e) {
+ throw new MessagingException(e.getMessage());
+ }
+ }
+
/* (non-Javadoc)
* @see org.apache.mailet.base.GenericMailet#init()
*/
http://git-wip-us.apache.org/repos/asf/james-project/blob/b4a31c76/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java
index 9c08f46..4b17263 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/MailboxAppender.java
@@ -79,11 +79,14 @@ public class MailboxAppender {
} finally {
session.close();
try {
- mailboxManager.logout(session, true);
- } catch (MailboxException e) {
- throw new MessagingException("Can logout from mailbox", e);
+ try {
+ mailboxManager.logout(session, true);
+ } catch (MailboxException e) {
+ throw new MessagingException("Can logout from mailbox", e);
+ }
+ } finally {
+ mailboxManager.endProcessingRequest(session);
}
- mailboxManager.endProcessingRequest(session);
}
}
@@ -93,7 +96,7 @@ public class MailboxAppender {
}
final MessageManager mailbox = mailboxManager.getMailbox(path, session);
if (mailbox == null) {
- throw new MessagingException("Mailbox for user " + session.getUser().getUserName() + " was not found on this server.");
+ throw new MessagingException("Mailbox " + path + " for user " + session.getUser().getUserName() + " was not found on this server.");
}
mailbox.appendMessage(new MimeMessageInputStream(mail), new Date(), session, IS_RECENT, FLAGS);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b4a31c76/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStorer.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStorer.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStorer.java
index bad7aa8..902edfd 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStorer.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/SimpleMailStorer.java
@@ -94,11 +94,7 @@ public class SimpleMailStorer implements MailStorer {
private String computeUsername(MailAddress recipient) throws MessagingException {
try {
- if (usersRepository.supportVirtualHosting()) {
- return recipient.toString();
- } else {
- return recipient.getLocalPart();
- }
+ return usersRepository.getUser(recipient);
} catch (UsersRepositoryException e) {
log.error("Unable to access UsersRepository", e);
return recipient.toString();
http://git-wip-us.apache.org/repos/asf/james-project/blob/b4a31c76/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveMailStorer.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveMailStorer.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveMailStorer.java
index 8b28321..1ec3489 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveMailStorer.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SieveMailStorer.java
@@ -180,20 +180,19 @@ public class SieveMailStorer implements MailStorer {
}
protected void storeMessageInbox(MailAddress mailAddress, MimeMessage message) throws MessagingException {
- sievePoster.post("mailbox://" + mailAddress + "/", message);
+ sievePoster.post("mailbox://" + retrieveUserNameUsedForScriptStorage(mailAddress) + "/", message);
}
- public String retrieveUserNameUsedForScriptStorage(MailAddress m) {
+ public String retrieveUserNameUsedForScriptStorage(MailAddress mailAddress) {
try {
if (usersRepos.supportVirtualHosting()) {
- return m.toString();
+ return mailAddress.print();
} else {
- return m.getLocalPart() + "@localhost";
+ return mailAddress.getLocalPart() + "@localhost";
}
} catch (UsersRepositoryException e) {
log.error("Unable to access UsersRepository", e);
- return m.getLocalPart() + "@localhost";
-
+ return mailAddress.getLocalPart() + "@localhost";
}
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b4a31c76/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SievePoster.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SievePoster.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SievePoster.java
index 3caae1f..7a71930 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SievePoster.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/jsieve/delivery/SievePoster.java
@@ -26,6 +26,7 @@ import org.apache.james.transport.mailets.delivery.MailboxAppender;
import org.apache.james.transport.mailets.jsieve.Poster;
import org.apache.james.user.api.UsersRepository;
import org.apache.james.user.api.UsersRepositoryException;
+import org.apache.mailet.MailAddress;
public class SievePoster implements Poster {
@@ -86,10 +87,7 @@ public class SievePoster implements Poster {
String user = url.substring(startOfUser, endOfUser).toLowerCase();
// Check if we should use the full email address as username
try {
- if (usersRepos.supportVirtualHosting()) {
- return user + "@" + host;
- }
- return user;
+ return usersRepos.getUser(new MailAddress(user, host));
} catch (UsersRepositoryException e) {
throw new MessagingException("Unable to accessUsersRepository", e);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/b4a31c76/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/AbstractStorageQuota.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/AbstractStorageQuota.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/AbstractStorageQuota.java
index 6ea1350..62ae3ad 100755
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/AbstractStorageQuota.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/matchers/AbstractStorageQuota.java
@@ -112,12 +112,7 @@ abstract public class AbstractStorageQuota extends AbstractQuotaMatcher {
try {
// see if we need use the full email address as username or not.
// See JAMES-1197
- if (localUsers.supportVirtualHosting()) {
- username = recipient.toString().toLowerCase(Locale.US);
- }
- else {
- username = recipient.getLocalPart().toLowerCase(Locale.US);
- }
+ username = localUsers.getUser(recipient).toLowerCase(Locale.US);
}
catch (UsersRepositoryException e) {
throw new MessagingException("Unable to access UsersRepository", e);
http://git-wip-us.apache.org/repos/asf/james-project/blob/b4a31c76/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
index 89a89a2..cebf75d 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/LocalDeliveryTest.java
@@ -72,6 +72,8 @@ import com.google.common.collect.ImmutableList;
@RunWith(Parameterized.class)
public class LocalDeliveryTest {
+ public static final String RECEIVER_DOMAIN_COM = "receiver@domain.com";
+
public static class Parameter {
private final UsersRepository usersRepository;
private final MailboxManager mailboxManager;
@@ -163,6 +165,7 @@ public class LocalDeliveryTest {
MessageManager messageManager = mock(MessageManager.class);
when(parameter.getUsersRepository().supportVirtualHosting()).thenReturn(true);
+ when(parameter.getUsersRepository().getUser(new MailAddress(username))).thenReturn(username);
doThrow(new ScriptNotFoundException()).when(parameter.getSieveRepository()).getActive(username);
when(parameter.getMailboxManager().getMailbox(eq(inbox), any(MailboxSession.class))).thenReturn(messageManager);
when(parameter.getUser().getUserName()).thenReturn(username);
@@ -183,6 +186,8 @@ public class LocalDeliveryTest {
MailboxPath inbox = new MailboxPath("#private", username, "INBOX");
MessageManager messageManager = mock(MessageManager.class);
when(parameter.getUsersRepository().supportVirtualHosting()).thenReturn(false);
+ when(parameter.getUsersRepository().getUser(new MailAddress("receiver@localhost"))).thenReturn(username);
+ when(parameter.getUsersRepository().getUser(new MailAddress(RECEIVER_DOMAIN_COM))).thenReturn(username);
doThrow(new ScriptNotFoundException()).when(parameter.getSieveRepository()).getActive(username);
when(parameter.getMailboxManager().getMailbox(eq(inbox), any(MailboxSession.class))).thenReturn(messageManager);
when(parameter.getUser().getUserName()).thenReturn(username);
@@ -200,7 +205,7 @@ public class LocalDeliveryTest {
MimeMessage message = new MimeMessage(Session.getDefaultInstance(new Properties()));
message.setSubject("Subject");
message.setSender(new InternetAddress("sender@any.com"));
- message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress("receiver@domain.com"));
+ message.setRecipient(MimeMessage.RecipientType.TO, new InternetAddress(RECEIVER_DOMAIN_COM));
MimeMultipart multipart = new MimeMultipart();
MimeBodyPart scriptPart = new MimeBodyPart();
scriptPart.setDataHandler(
http://git-wip-us.apache.org/repos/asf/james-project/blob/b4a31c76/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
index 3b88303..3aaaf68 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SieveIntegrationTest.java
@@ -118,6 +118,7 @@ public class SieveIntegrationTest {
@Test
public void mailShouldBeWellDeliveredByDefaultToUserWhenVirtualHostingIsTurnedOn() throws Exception {
when(usersRepository.supportVirtualHosting()).thenReturn(true);
+ when(usersRepository.getUser(new MailAddress(RECEIVER_DOMAIN_COM))).thenReturn(RECEIVER_DOMAIN_COM);
when(resourceLocator.get(RECEIVER_DOMAIN_COM)).thenThrow(new ScriptNotFoundException());
final MessageManager messageManager = prepareMessageManagerOn(new MailboxPath("#private", RECEIVER_DOMAIN_COM, "INBOX"));
@@ -129,6 +130,7 @@ public class SieveIntegrationTest {
@Test
public void mailShouldBeWellDeliveredByDefaultToUserWhenvirtualHostingIsTurnedOff() throws Exception {
when(usersRepository.supportVirtualHosting()).thenReturn(false);
+ when(usersRepository.getUser(new MailAddress("receiver@localhost"))).thenReturn("receiver");
when(resourceLocator.get("receiver")).thenThrow(new ScriptNotFoundException());
final MessageManager messageManager = prepareMessageManagerOn(INBOX);
@@ -964,6 +966,7 @@ public class SieveIntegrationTest {
private void prepareTestUsingScriptAndDates(String script, DateTime scriptCreationDate, DateTime scriptExecutionDate) throws Exception {
when(usersRepository.supportVirtualHosting()).thenReturn(false);
+ when(usersRepository.getUser(new MailAddress("receiver@localhost"))).thenReturn("receiver");
when(resourceLocator.get("//receiver@localhost/sieve")).thenReturn(new ResourceLocator.UserSieveInformation(scriptCreationDate,
scriptExecutionDate,
ClassLoader.getSystemResourceAsStream(script)));
http://git-wip-us.apache.org/repos/asf/james-project/blob/b4a31c76/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStorerTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStorerTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStorerTest.java
index 1f25190..42e831a 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStorerTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/SimpleMailStorerTest.java
@@ -79,24 +79,22 @@ public class SimpleMailStorerTest {
@Test
public void storeMailShouldUseFullMailAddressWhenSupportsVirtualHosting() throws Exception {
- when(usersRepository.supportVirtualHosting()).thenReturn(true);
-
MailAddress sender = MailAddressFixture.ANY_AT_JAMES;
MailAddress recipient = MailAddressFixture.OTHER_AT_JAMES;
+ when(usersRepository.getUser(recipient)).thenReturn(recipient.print());
FakeMail mail = FakeMail.builder()
.mimeMessage(mimeMessage)
.build();
testee.storeMail(sender, recipient, mail);
- verify(mailboxAppender).append(any(MimeMessage.class), eq(recipient.toString()), eq(FOLDER));
+ verify(mailboxAppender).append(any(MimeMessage.class), eq(recipient.print()), eq(FOLDER));
}
@Test
public void storeMailShouldUseLocalPartWhenSupportsVirtualHosting() throws Exception {
- when(usersRepository.supportVirtualHosting()).thenReturn(false);
-
MailAddress sender = MailAddressFixture.ANY_AT_JAMES;
MailAddress recipient = MailAddressFixture.OTHER_AT_JAMES;
+ when(usersRepository.getUser(recipient)).thenReturn(recipient.getLocalPart());
FakeMail mail = FakeMail.builder()
.mimeMessage(mimeMessage)
.build();
@@ -107,10 +105,9 @@ public class SimpleMailStorerTest {
@Test
public void storeMailShouldUseFullMailAddressWhenErrorReadingUsersRepository() throws Exception {
- when(usersRepository.supportVirtualHosting()).thenThrow(new UsersRepositoryException("Any message"));
-
MailAddress sender = MailAddressFixture.ANY_AT_JAMES;
MailAddress recipient = MailAddressFixture.OTHER_AT_JAMES;
+ when(usersRepository.getUser(recipient)).thenThrow(new UsersRepositoryException("Any message"));
FakeMail mail = FakeMail.builder()
.mimeMessage(mimeMessage)
.build();
http://git-wip-us.apache.org/repos/asf/james-project/blob/b4a31c76/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
index e2f3d27..7d67292 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/ToRecipientFolderTest.java
@@ -187,6 +187,7 @@ public class ToRecipientFolderTest {
@Test
public void folderParameterShouldIndicateDestinationFolder() throws Exception {
when(parameter.getUsersRepository().supportVirtualHosting()).thenReturn(true);
+ when(parameter.getUsersRepository().getUser(new MailAddress(USER))).thenReturn(USER);
when(parameter.getMailboxManager().getMailbox(eq(JUNK_VIRTUAL_HOSTING), any(MailboxSession.class))).thenReturn(messageManager);
when(parameter.getUser().getUserName()).thenReturn(USER);
@@ -200,6 +201,7 @@ public class ToRecipientFolderTest {
@Test
public void folderParameterShouldBeInboxByDefault() throws Exception {
when(parameter.getUsersRepository().supportVirtualHosting()).thenReturn(true);
+ when(parameter.getUsersRepository().getUser(new MailAddress(USER))).thenReturn(USER);
when(parameter.getMailboxManager().getMailbox(eq(INBOX), any(MailboxSession.class))).thenReturn(messageManager);
when(parameter.getUser().getUserName()).thenReturn(USER);
@@ -212,6 +214,8 @@ public class ToRecipientFolderTest {
@Test
public void folderParameterShouldWorkWhenVirtualHostingIsTurnedOff() throws Exception {
when(parameter.getUsersRepository().supportVirtualHosting()).thenReturn(false);
+ when(parameter.getUsersRepository().getUser(new MailAddress(USER_LOCAL_PART + "@localhost"))).thenReturn(USER_LOCAL_PART);
+ when(parameter.getUsersRepository().getUser(new MailAddress(USER))).thenReturn(USER_LOCAL_PART);
when(parameter.getMailboxManager().getMailbox(eq(JUNK), any(MailboxSession.class))).thenReturn(messageManager);
when(parameter.getUser().getUserName()).thenReturn(USER_LOCAL_PART);
http://git-wip-us.apache.org/repos/asf/james-project/blob/b4a31c76/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 2d2134d..c272284 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
@@ -832,17 +832,11 @@ public class MessageProcessor extends ProcessorAbstract {
* @throws UsersRepositoryException
*/
protected boolean isLocalRecipient(MailAddress recipient) throws UsersRepositoryException {
- if (isLocalServer(recipient)) {
- // check if we use virtualhosting or not and use the right part of
- // the recipient in respect of this
- // See JAMES-1135
- if (getConfiguration().getLocalUsers().supportVirtualHosting()) {
- return getLocalUsers().contains(recipient.toString());
- } else {
- return getLocalUsers().contains(recipient.getLocalPart());
- }
- }
- return false;
+ // check if we use virtualhosting or not and use the right part of
+ // the recipient in respect of this
+ // See JAMES-1135
+ return isLocalServer(recipient)
+ && getLocalUsers().contains(getLocalUsers().getUser(recipient));
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org