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 ch...@apache.org on 2001/05/22 14:03:37 UTC
cvs commit: jakarta-james/proposals/v1.3/java/org/apache/james/userrepository DefaultJamesUser.java
charlesb 01/05/22 05:03:36
Modified: proposals/v1.3/conf james-config.xml
proposals/v1.3/java/org/apache/james James.java
proposals/v1.3/java/org/apache/james/remotemanager
RemoteManagerHandler.java
proposals/v1.3/java/org/apache/james/services JamesUser.java
proposals/v1.3/java/org/apache/james/userrepository
DefaultJamesUser.java
Log:
Implement per-user mail forwarding
Revision Changes Path
1.3 +2 -1 jakarta-james/proposals/v1.3/conf/james-config.xml
Index: james-config.xml
===================================================================
RCS file: /home/cvs/jakarta-james/proposals/v1.3/conf/james-config.xml,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- james-config.xml 2001/05/21 15:56:34 1.2
+++ james-config.xml 2001/05/22 12:02:55 1.3
@@ -37,7 +37,8 @@
<!-- Set whether user names are case sensitive or insensitive -->
<!-- Set whether to enable local aliases -->
- <usernames ignoreCase="TRUE" enableAliases="TRUE"/>
+ <usernames ignoreCase="TRUE" enableAliases="TRUE"
+ enableForwarding="TRUE"/>
<!-- Set the type of permanent mailfolders to be used.
1.3 +24 -2 jakarta-james/proposals/v1.3/java/org/apache/james/James.java
Index: James.java
===================================================================
RCS file: /home/cvs/jakarta-james/proposals/v1.3/java/org/apache/james/James.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- James.java 2001/05/21 15:56:43 1.2
+++ James.java 2001/05/22 12:03:05 1.3
@@ -75,6 +75,7 @@
private Collection serverNames;
private boolean ignoreCase;
private boolean enableAliases;
+ private boolean enableForwarding;
// this used to be long, but increment operations on long are not
// thread safe. Changed to int. 'int' should be ok, because id generation
@@ -177,6 +178,12 @@
} else {
enableAliases = false;
}
+ if (userNamesConf.getAttribute("enableForwarding").equals("TRUE")) {
+ enableForwarding = true;
+ } else {
+ enableForwarding = false;
+ }
+
//Get localusers
try {
localusers = (UsersRepository) usersStore.getRepository("LocalUsers");
@@ -482,10 +489,25 @@
username = recipient.getUser();
}
JamesUser user;
- if (enableAliases) {
+ if (enableAliases || enableForwarding) {
user = (JamesUser) localusers.getUserByName(username);
- if (user.getAliasing()) {
+ if (enableAliases && user.getAliasing()) {
username = user.getAlias();
+ }
+ if (enableForwarding && user.getForwarding()) {
+ MailAddress forwardTo = user.getForwardingDestination();
+ Collection recipients = new HashSet();
+ recipients.add(forwardTo);
+ try {
+ sendMail(sender, recipients, message);
+ getLogger().info("Mail for " + username + " forwarded to "
+ + forwardTo.toString());
+ return;
+ } catch (MessagingException me) {
+ getLogger().error("Error forwarding mail to "
+ + forwardTo.toString()
+ + "attempting local delivery");
+ }
}
}
1.3 +47 -2 jakarta-james/proposals/v1.3/java/org/apache/james/remotemanager/RemoteManagerHandler.java
Index: RemoteManagerHandler.java
===================================================================
RCS file: /home/cvs/jakarta-james/proposals/v1.3/java/org/apache/james/remotemanager/RemoteManagerHandler.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- RemoteManagerHandler.java 2001/05/21 15:56:53 1.2
+++ RemoteManagerHandler.java 2001/05/22 12:03:14 1.3
@@ -10,6 +10,7 @@
import java.io.*;
import java.net.*;
import java.util.*;
+import javax.mail.internet.ParseException;
import org.apache.avalon.framework.component.Component;
import org.apache.avalon.framework.component.ComponentException;
import org.apache.avalon.framework.component.ComponentManager;
@@ -29,6 +30,7 @@
import org.apache.james.services.JamesUser;
import org.apache.james.services.UsersRepository;
import org.apache.james.services.UsersStore;
+import org.apache.mailet.MailAddress;
/**
* Provides a really rude network interface to administer James.
@@ -41,8 +43,8 @@
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
* @author <a href="mailto:charles@benett1.demon.co.uk">Charles Benett</a>
*
- * Last changed by: $Author: charlesb $ on $Date: 2001/05/21 15:56:53 $
- * $Revision: 1.2 $
+ * Last changed by: $Author: charlesb $ on $Date: 2001/05/22 12:03:14 $
+ * $Revision: 1.3 $
*
*/
public class RemoteManagerHandler
@@ -304,6 +306,49 @@
} else {
out.println("Error setting alias");
getLogger().info("Error setting alias");
+ }
+ out.flush();
+ return true;
+ } else if (command.equalsIgnoreCase("SETFORWARDING")) {
+ if (argument == null || argument1 == null) {
+ out.println("usage: setforwarding [username] [emailaddress]");
+ return true;
+ }
+ String username = argument;
+ String forward = argument1;
+ if (username.equals("") || forward.equals("")) {
+ out.println("usage: adduser [username] [emailaddress]");
+ return true;
+ }
+ // Verify user exists
+ JamesUser user = (JamesUser) users.getUserByName(username);
+ if (user == null) {
+ out.println("No such user");
+ return true;
+ }
+ // Veriy acceptable email address
+ MailAddress forwardAddr;
+ try {
+ forwardAddr = new MailAddress(forward);
+ } catch(ParseException pe) {
+ out.println("Parse exception with that email address: "
+ + pe.getMessage());
+ out.println("Forwarding address not added for " + username);
+ return true;
+ }
+
+ boolean success;
+ success = user.setForwardingDestination(forwardAddr);
+ if (success){
+ user.setForwarding(true);
+ users.updateUser(user);
+ out.println("Forwarding destination for " + username
+ + " set to:" + forwardAddr.toString());
+ getLogger().info("Forwarding destination for " + username
+ + " set to:" + forwardAddr.toString());
+ } else {
+ out.println("Error setting forwarding");
+ getLogger().info("Error setting forwarding");
}
out.flush();
return true;
1.2 +6 -4 jakarta-james/proposals/v1.3/java/org/apache/james/services/JamesUser.java
Index: JamesUser.java
===================================================================
RCS file: /home/cvs/jakarta-james/proposals/v1.3/java/org/apache/james/services/JamesUser.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- JamesUser.java 2001/05/16 14:00:29 1.1
+++ JamesUser.java 2001/05/22 12:03:22 1.2
@@ -7,13 +7,15 @@
*/
package org.apache.james.services;
+import org.apache.mailet.MailAddress;
+
/**
* Interface for objects representing users of an email/ messaging system.
*
* @author Charles Benett <ch...@benett1.demon.co.uk>
*
- * Last changed by: $Author: charlesb $ on $Date: 2001/05/16 14:00:29 $
- * $Revision: 1.1 $
+ * Last changed by: $Author: charlesb $ on $Date: 2001/05/22 12:03:22 $
+ * $Revision: 1.2 $
*/
public interface JamesUser extends User {
@@ -38,12 +40,12 @@
* Set destination for forwading mail
* Should we use a MailAddress?
*/
- boolean setForwardingDestination(String address);
+ boolean setForwardingDestination(MailAddress address);
/**
* Return the destination to which email should be forwarded
*/
- String getForwardingDestination();
+ MailAddress getForwardingDestination();
/**
* Indicate if mail received for this user should be delivered locally to
1.2 +7 -6 jakarta-james/proposals/v1.3/java/org/apache/james/userrepository/DefaultJamesUser.java
Index: DefaultJamesUser.java
===================================================================
RCS file: /home/cvs/jakarta-james/proposals/v1.3/java/org/apache/james/userrepository/DefaultJamesUser.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultJamesUser.java 2001/05/16 14:00:35 1.1
+++ DefaultJamesUser.java 2001/05/22 12:03:32 1.2
@@ -11,14 +11,15 @@
import org.apache.avalon.framework.activity.Initializable;
import org.apache.james.services.User;
import org.apache.james.services.JamesUser;
+import org.apache.mailet.MailAddress;
/**
* Implementation of User Interface.
*
* @author Charles Benett <ch...@benett1.demon.co.uk>
*
- * Last changed by: $Author: charlesb $ on $Date: 2001/05/16 14:00:35 $
- * $Revision: 1.1 $
+ * Last changed by: $Author: charlesb $ on $Date: 2001/05/22 12:03:32 $
+ * $Revision: 1.2 $
*/
public class DefaultJamesUser
@@ -26,7 +27,7 @@
implements JamesUser, Initializable {
private boolean forwarding;
- private String forwardingDestination;
+ private MailAddress forwardingDestination;
private boolean aliasing;
private String alias;
@@ -39,7 +40,7 @@
*/
public void initialize() {
forwarding = false;
- forwardingDestination = "";
+ forwardingDestination = null;
aliasing = false;
alias = "";
}
@@ -57,13 +58,13 @@
}
- public boolean setForwardingDestination(String address) {
+ public boolean setForwardingDestination(MailAddress address) {
/* Some verification would be good */
forwardingDestination = address;
return true;
}
- public String getForwardingDestination() {
+ public MailAddress getForwardingDestination() {
return forwardingDestination;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: james-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: james-dev-help@jakarta.apache.org