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>