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:16 UTC
[13/46] james-project git commit: JAMES-1854 Responsibility of
handling virtualHosting should be delegated to MailStorer
JAMES-1854 Responsibility of handling virtualHosting should be delegated to MailStorer
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/2490351e
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/2490351e
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/2490351e
Branch: refs/heads/master
Commit: 2490351ee8ddd1b4f5014c1e1e1e17160a488443
Parents: 4339c78
Author: Benoit Tellier <bt...@linagora.com>
Authored: Fri Oct 28 20:38:21 2016 +0200
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Nov 18 18:46:46 2016 +0700
----------------------------------------------------------------------
.../mailets/delivery/DeliveryUtils.java | 14 -------
.../mailets/delivery/SimpleMailStorer.java | 16 +++++++-
.../jsieve/delivery/SieveMailStorer.java | 41 +++++++++++++-------
3 files changed, 42 insertions(+), 29 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/2490351e/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/DeliveryUtils.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/DeliveryUtils.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/DeliveryUtils.java
index 72fb609..7da9657 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/DeliveryUtils.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/delivery/DeliveryUtils.java
@@ -23,20 +23,6 @@ import org.apache.mailet.MailAddress;
public class DeliveryUtils {
- public static String getUsername(MailAddress m, UsersRepository usersRepository, Log log) {
- try {
- if (usersRepository.supportVirtualHosting()) {
- return m.toString();
- } else {
- return m.getLocalPart() + "@localhost";
- }
- } catch (UsersRepositoryException e) {
- log.error("Unable to access UsersRepository", e);
- return m.getLocalPart() + "@localhost";
-
- }
- }
-
public static String prettyPrint(MailAddress mailAddress) {
if (mailAddress != null) {
return "<" + mailAddress.toString() + ">";
http://git-wip-us.apache.org/repos/asf/james-project/blob/2490351e/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 31f3251..c1b4074 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
@@ -23,6 +23,7 @@ import javax.mail.MessagingException;
import org.apache.commons.logging.Log;
import org.apache.james.user.api.UsersRepository;
+import org.apache.james.user.api.UsersRepositoryException;
import org.apache.mailet.Mail;
import org.apache.mailet.MailAddress;
@@ -83,11 +84,24 @@ public class SimpleMailStorer implements MailStorer {
@Override
public void storeMail(MailAddress sender, MailAddress recipient, Mail mail) throws MessagingException {
- String username = DeliveryUtils.getUsername(recipient, usersRepository, log);
+ String username = computeUsername(recipient);
mailboxAppender.append(mail.getMessage(), username, folder);
log.info("Local delivered mail " + mail.getName() + " sucessfully from " + DeliveryUtils.prettyPrint(sender)
+ " to " + DeliveryUtils.prettyPrint(recipient) + " in folder " + this.folder);
}
+
+ private String computeUsername(MailAddress recipient) throws MessagingException {
+ try {
+ if (usersRepository.supportVirtualHosting()) {
+ return recipient.toString();
+ } else {
+ return recipient.getLocalPart();
+ }
+ } catch (UsersRepositoryException e) {
+ log.error("Unable to access UsersRepository", e);
+ return recipient.toString();
+ }
+ }
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/2490351e/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 f4c04f2..8b28321 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
@@ -32,6 +32,7 @@ import org.apache.james.transport.mailets.jsieve.ActionDispatcher;
import org.apache.james.transport.mailets.jsieve.ResourceLocator;
import org.apache.james.transport.mailets.jsieve.SieveMailAdapter;
import org.apache.james.user.api.UsersRepository;
+import org.apache.james.user.api.UsersRepositoryException;
import org.apache.jsieve.ConfigurationManager;
import org.apache.jsieve.SieveConfigurationException;
import org.apache.jsieve.SieveFactory;
@@ -137,9 +138,8 @@ public class SieveMailStorer implements MailStorer {
}
protected void sieveMessage(MailAddress recipient, Mail aMail, Log log) throws MessagingException {
- String username = DeliveryUtils.getUsername(recipient, usersRepos, log);
try {
- final ResourceLocator.UserSieveInformation userSieveInformation = resourceLocator.get(getScriptUri(recipient, log));
+ ResourceLocator.UserSieveInformation userSieveInformation = resourceLocator.get(getScriptUri(recipient));
sieveMessageEvaluate(recipient, aMail, userSieveInformation, log);
} catch (Exception ex) {
// SIEVE is a mail filtering protocol.
@@ -147,7 +147,7 @@ public class SieveMailStorer implements MailStorer {
// seems very unfriendly.
// So just log and store in INBOX
log.error("Cannot evaluate Sieve script. Storing mail in user INBOX.", ex);
- storeMessageInbox(username, aMail.getMessage());
+ storeMessageInbox(recipient, aMail.getMessage());
}
}
@@ -158,29 +158,42 @@ public class SieveMailStorer implements MailStorer {
userSieveInformation.getScriptInterpretationDate(), recipient);
aMailAdapter.setLog(log);
// This logging operation is potentially costly
- log.debug("Evaluating " + aMailAdapter.toString() + "against \"" + getScriptUri(recipient, log) + "\"");
+ log.debug("Evaluating " + aMailAdapter.toString() + "against \"" + getScriptUri(recipient) + "\"");
factory.evaluate(aMailAdapter, factory.parse(userSieveInformation.getScriptContent()));
} catch (SieveException ex) {
- handleFailure(recipient, aMail, ex, log);
+ handleFailure(recipient, aMail, ex);
}
catch (ParseException ex) {
- handleFailure(recipient, aMail, ex, log);
+ handleFailure(recipient, aMail, ex);
}
catch (TokenMgrError ex) {
- handleFailure(recipient, aMail, new SieveException(ex), log);
+ handleFailure(recipient, aMail, new SieveException(ex));
}
}
- protected String getScriptUri(MailAddress m, Log log) {
- return "//" + DeliveryUtils.getUsername(m, usersRepos, log) + "/sieve";
+ protected String getScriptUri(MailAddress m) {
+ return "//" + retrieveUserNameUsedForScriptStorage(m) + "/sieve";
}
- protected void handleFailure(MailAddress recipient, Mail aMail, Exception ex, Log log) throws MessagingException, IOException {
- String user = DeliveryUtils.getUsername(recipient, usersRepos, log);
- storeMessageInbox(user, SieveFailureMessageComposer.composeMessage(aMail, ex, user));
+ protected void handleFailure(MailAddress recipient, Mail aMail, Exception ex) throws MessagingException, IOException {
+ storeMessageInbox(recipient, SieveFailureMessageComposer.composeMessage(aMail, ex, recipient.toString()));
}
- protected void storeMessageInbox(String username, MimeMessage message) throws MessagingException {
- sievePoster.post("mailbox://" + username + "/", message);
+ protected void storeMessageInbox(MailAddress mailAddress, MimeMessage message) throws MessagingException {
+ sievePoster.post("mailbox://" + mailAddress + "/", message);
+ }
+
+ public String retrieveUserNameUsedForScriptStorage(MailAddress m) {
+ try {
+ if (usersRepos.supportVirtualHosting()) {
+ return m.toString();
+ } else {
+ return m.getLocalPart() + "@localhost";
+ }
+ } catch (UsersRepositoryException e) {
+ log.error("Unable to access UsersRepository", e);
+ return m.getLocalPart() + "@localhost";
+
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org