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 pg...@apache.org on 2002/08/18 10:55:33 UTC
cvs commit: jakarta-james/src/java/org/apache/james/transport/mailets Forward.java
pgoldstein 2002/08/18 01:55:33
Modified: src/java/org/apache/james/transport/mailets Forward.java
Log:
Check for valid sender address before forwarding.
Thanks to Noel Bergman for the patch
Revision Changes Path
1.4 +20 -2 jakarta-james/src/java/org/apache/james/transport/mailets/Forward.java
Index: Forward.java
===================================================================
RCS file: /home/cvs/jakarta-james/src/java/org/apache/james/transport/mailets/Forward.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- Forward.java 18 Jun 2002 21:39:52 -0000 1.3
+++ Forward.java 18 Aug 2002 08:55:33 -0000 1.4
@@ -17,7 +17,7 @@
import java.util.StringTokenizer;
/**
- * Replace incoming recipient with specified ones.
+ * Replaces incoming recipients with those specified.
*
* @author Federico Barbieri <sc...@pop.systemy.it>
* @author Serge Knystautas <se...@lokitech.com>
@@ -35,7 +35,25 @@
}
public void service(Mail mail) throws MessagingException {
- getMailetContext().sendMail(mail.getSender(), newRecipients, mail.getMessage());
+ if (mail.getSender() == null || getMailetContext().getMailServers(mail.getSender().getHost()).size() != 0) {
+ // If we do not do this check, and somone uses Forward in a
+ // processor initiated by SenderInFakeDomain, then a fake
+ // sender domain will cause an infinite loop (the forwarded
+ // e-mail still appears to come from a fake domain).
+ // Although this can be viewed as a configuration error, the
+ // consequences of such a mis-configuration are severe enough
+ // to warrant protecting against the infinite loop.
+ getMailetContext().sendMail(mail.getSender(), newRecipients, mail.getMessage());
+ }
+ else {
+ StringBuffer logBuffer = new StringBuffer(256)
+ .append("Forward mailet cannot forward ")
+ .append(mail)
+ .append(". Invalid sender domain for ")
+ .append(mail.getSender())
+ .append(". Consider using the Redirect mailet.");
+ log(logBuffer.toString());
+ }
if(! (new Boolean(getInitParameter("passThrough"))).booleanValue()) {
mail.setState(Mail.GHOST);
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>